[Polly] Remove autotools build systems from Externals. NFC.
authorMichael Kruse <llvm-project@meinersbur.de>
Wed, 15 Sep 2021 21:37:29 +0000 (16:37 -0500)
committerMichael Kruse <llvm-project@meinersbur.de>
Wed, 15 Sep 2021 22:11:15 +0000 (17:11 -0500)
Building a source distribution using autotools adds GPL-licenced
files into the the sources. Although redistribution of theses files is
explicitly allowed with an exception, these are not used by Polly
which uses a CMake replacement. Use the direct source checkout
instead (replacing the output of 'make dist').

Some m4 scripts with the same licence are also included in isl/ppcg
repository. Removing them renders the autotools-based build scipts
inoperable, so remove the autotools build system altogether.

181 files changed:
polly/lib/External/isl/.gitignore [new file with mode: 0644]
polly/lib/External/isl/.gitmodules [new file with mode: 0644]
polly/lib/External/isl/Makefile.am [deleted file]
polly/lib/External/isl/Makefile.in [deleted file]
polly/lib/External/isl/aclocal.m4 [deleted file]
polly/lib/External/isl/compile [deleted file]
polly/lib/External/isl/config.guess [deleted file]
polly/lib/External/isl/config.sub [deleted file]
polly/lib/External/isl/configure [deleted file]
polly/lib/External/isl/configure.ac [deleted file]
polly/lib/External/isl/depcomp [deleted file]
polly/lib/External/isl/doc/Makefile.am [deleted file]
polly/lib/External/isl/doc/Makefile.in [deleted file]
polly/lib/External/isl/doc/interface [new file with mode: 0644]
polly/lib/External/isl/imath/.dockerignore [new file with mode: 0644]
polly/lib/External/isl/imath/.gitattributes [new file with mode: 0644]
polly/lib/External/isl/imath/.travis.yml [new file with mode: 0644]
polly/lib/External/isl/imath/ChangeLog [new file with mode: 0644]
polly/lib/External/isl/imath/LICENSE [new file with mode: 0644]
polly/lib/External/isl/imath/Makefile [new file with mode: 0644]
polly/lib/External/isl/imath/README.md [new file with mode: 0644]
polly/lib/External/isl/imath/contrib/Makefile.msvc [new file with mode: 0644]
polly/lib/External/isl/imath/contrib/README [new file with mode: 0644]
polly/lib/External/isl/imath/doc.md [new file with mode: 0644]
polly/lib/External/isl/imath/doc.md.in [new file with mode: 0644]
polly/lib/External/isl/imath/examples/basecvt.c [new file with mode: 0644]
polly/lib/External/isl/imath/examples/findprime.c [new file with mode: 0644]
polly/lib/External/isl/imath/examples/imcalc.c [new file with mode: 0644]
polly/lib/External/isl/imath/examples/input.c [new file with mode: 0644]
polly/lib/External/isl/imath/examples/pi.c [new file with mode: 0644]
polly/lib/External/isl/imath/examples/randprime.c [new file with mode: 0644]
polly/lib/External/isl/imath/examples/rounding.c [new file with mode: 0644]
polly/lib/External/isl/imath/examples/rsakey.c [new file with mode: 0644]
polly/lib/External/isl/imath/imdrover.c [new file with mode: 0644]
polly/lib/External/isl/imath/imdrover.h [new file with mode: 0644]
polly/lib/External/isl/imath/imtest.c [new file with mode: 0644]
polly/lib/External/isl/imath/imtimer.c [new file with mode: 0644]
polly/lib/External/isl/imath/iprime.c [new file with mode: 0644]
polly/lib/External/isl/imath/iprime.h [new file with mode: 0644]
polly/lib/External/isl/imath/rsamath.c [new file with mode: 0644]
polly/lib/External/isl/imath/rsamath.h [new file with mode: 0644]
polly/lib/External/isl/imath/tests/add.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/bigmul.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/bigsqr.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/bintest.c [new file with mode: 0644]
polly/lib/External/isl/imath/tests/bug-swap.c [new file with mode: 0644]
polly/lib/External/isl/imath/tests/compare.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/conv.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/div.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/egcd.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/emod.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/emodv.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/expt.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gcd.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gmp-compat-test/.gitignore [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gmp-compat-test/Makefile [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gmp-compat-test/README [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gmp-compat-test/genctest.py [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gmp-compat-test/gendata.py [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gmp-compat-test/genpytest.py [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gmp-compat-test/gmp_custom_test.c [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gmp-compat-test/gmpapi.py [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gmp-compat-test/imath_custom_test.c [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gmp-compat-test/runtest [new file with mode: 0644]
polly/lib/External/isl/imath/tests/gmp-compat-test/runtest.py [new file with mode: 0644]
polly/lib/External/isl/imath/tests/imath-test.scm [new file with mode: 0644]
polly/lib/External/isl/imath/tests/init.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/invmod.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/isprime.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/lcm.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/linux/Dockerfile [new file with mode: 0644]
polly/lib/External/isl/imath/tests/mod.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/mul.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/neg.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/pi1024.txt [new file with mode: 0644]
polly/lib/External/isl/imath/tests/pi1500-10.txt [new file with mode: 0644]
polly/lib/External/isl/imath/tests/pi1698-16.txt [new file with mode: 0644]
polly/lib/External/isl/imath/tests/qadd.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/qaddz.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/qdiv.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/qdivz.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/qmisc.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/qmul.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/qmulz.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/qsub.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/qsubz.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/qtodec.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/root.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/rtest.c [new file with mode: 0644]
polly/lib/External/isl/imath/tests/set.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/sqr.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/sub.tc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/test.bc [new file with mode: 0644]
polly/lib/External/isl/imath/tests/test.sh [new file with mode: 0644]
polly/lib/External/isl/imath/tools/findthreshold.py [new file with mode: 0644]
polly/lib/External/isl/imath/tools/mkdoc.py [new file with mode: 0644]
polly/lib/External/isl/include/isl/cpp-checked-conversion.h [deleted file]
polly/lib/External/isl/include/isl/cpp-checked.h [deleted file]
polly/lib/External/isl/include/isl/cpp.h [deleted file]
polly/lib/External/isl/include/isl/typed_cpp.h [deleted file]
polly/lib/External/isl/install-sh [deleted file]
polly/lib/External/isl/interface/Makefile.am [deleted file]
polly/lib/External/isl/interface/Makefile.in [deleted file]
polly/lib/External/isl/interface/aclocal.m4 [deleted file]
polly/lib/External/isl/interface/compile [deleted file]
polly/lib/External/isl/interface/config.guess [deleted file]
polly/lib/External/isl/interface/config.sub [deleted file]
polly/lib/External/isl/interface/configure [deleted file]
polly/lib/External/isl/interface/depcomp [deleted file]
polly/lib/External/isl/interface/install-sh [deleted file]
polly/lib/External/isl/interface/isl.py [deleted file]
polly/lib/External/isl/interface/isl_config.h.in [deleted file]
polly/lib/External/isl/interface/ltmain.sh [deleted file]
polly/lib/External/isl/interface/missing [deleted file]
polly/lib/External/isl/isl_config.h.in [deleted file]
polly/lib/External/isl/ltmain.sh [deleted file]
polly/lib/External/isl/m4/ax_c___attribute__.m4 [deleted file]
polly/lib/External/isl/m4/ax_cc_maxopt.m4 [deleted file]
polly/lib/External/isl/m4/ax_check_compiler_flags.m4 [deleted file]
polly/lib/External/isl/m4/ax_compiler_vendor.m4 [deleted file]
polly/lib/External/isl/m4/ax_create_pkgconfig_info.m4 [deleted file]
polly/lib/External/isl/m4/ax_create_stdint_h.m4 [deleted file]
polly/lib/External/isl/m4/ax_cxx_compile_stdcxx.m4 [deleted file]
polly/lib/External/isl/m4/ax_cxx_compile_stdcxx_11.m4 [deleted file]
polly/lib/External/isl/m4/ax_cxx_compile_stdcxx_11_no_override.m4 [deleted file]
polly/lib/External/isl/m4/ax_detect_clang.m4 [deleted file]
polly/lib/External/isl/m4/ax_detect_git_head.m4 [deleted file]
polly/lib/External/isl/m4/ax_detect_gmp.m4 [deleted file]
polly/lib/External/isl/m4/ax_detect_imath.m4 [deleted file]
polly/lib/External/isl/m4/ax_gcc_archflag.m4 [deleted file]
polly/lib/External/isl/m4/ax_gcc_warn_unused_result.m4 [deleted file]
polly/lib/External/isl/m4/ax_gcc_x86_cpuid.m4 [deleted file]
polly/lib/External/isl/m4/ax_prog_cc_for_build.m4 [deleted file]
polly/lib/External/isl/m4/ax_prog_cxx_for_build.m4 [deleted file]
polly/lib/External/isl/m4/ax_set_warning_flags.m4 [deleted file]
polly/lib/External/isl/m4/ax_submodule.m4 [deleted file]
polly/lib/External/isl/m4/libtool.m4 [deleted file]
polly/lib/External/isl/m4/ltoptions.m4 [deleted file]
polly/lib/External/isl/m4/ltsugar.m4 [deleted file]
polly/lib/External/isl/m4/ltversion.m4 [deleted file]
polly/lib/External/isl/m4/lt~obsolete.m4 [deleted file]
polly/lib/External/isl/missing [deleted file]
polly/lib/External/isl/py-compile [deleted file]
polly/lib/External/isl/test-driver [deleted file]
polly/lib/External/isl/testsets/pip/bouleti.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/cnt_sum2.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/difficult.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/jcomplex.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/phideo.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/seghir-e1.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/seghir-e3.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/seghir-e4.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/seghir-e5.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/seghir-e6.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/seghir-e7.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/seghir-e8.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/seghir-e9.pip [new file with mode: 0644]
polly/lib/External/isl/testsets/pip/seghir-vd.pip [new file with mode: 0644]
polly/lib/External/ppcg/Makefile.am [deleted file]
polly/lib/External/ppcg/Makefile.in [deleted file]
polly/lib/External/ppcg/aclocal.m4 [deleted file]
polly/lib/External/ppcg/compile [deleted file]
polly/lib/External/ppcg/config.guess [deleted file]
polly/lib/External/ppcg/config.sub [deleted file]
polly/lib/External/ppcg/configure [deleted file]
polly/lib/External/ppcg/configure.ac [deleted file]
polly/lib/External/ppcg/depcomp [deleted file]
polly/lib/External/ppcg/install-sh [deleted file]
polly/lib/External/ppcg/ltmain.sh [deleted file]
polly/lib/External/ppcg/m4/ax_check_opencl.m4 [deleted file]
polly/lib/External/ppcg/m4/ax_check_openmp.m4 [deleted file]
polly/lib/External/ppcg/m4/ax_detect_git_head.m4 [deleted file]
polly/lib/External/ppcg/m4/ax_submodule.m4 [deleted file]
polly/lib/External/ppcg/m4/libtool.m4 [deleted file]
polly/lib/External/ppcg/m4/ltoptions.m4 [deleted file]
polly/lib/External/ppcg/m4/ltsugar.m4 [deleted file]
polly/lib/External/ppcg/m4/ltversion.m4 [deleted file]
polly/lib/External/ppcg/m4/lt~obsolete.m4 [deleted file]
polly/lib/External/ppcg/missing [deleted file]
polly/lib/External/ppcg/test-driver [deleted file]
polly/lib/External/update-isl.sh

diff --git a/polly/lib/External/isl/.gitignore b/polly/lib/External/isl/.gitignore
new file mode 100644 (file)
index 0000000..c76dc58
--- /dev/null
@@ -0,0 +1,58 @@
+# ignore objects and archives
+*.[oa]
+*.lo
+*.la
+
+.deps/
+.libs/
+Makefile
+Makefile.in
+aclocal.m4
+autom4te.cache/
+config.guess
+isl_config.h
+isl_config.h.in
+isl_config.h.in~
+compile
+config.log
+config.status
+config.sub
+configure
+depcomp
+doc/Makefile
+doc/Makefile.in
+gitversion.h
+include/isl/config.h
+include/isl/stdint.h
+include/stamp-h2
+include/isl/stamp-h2
+install-sh
+isl-uninstalled.pc
+isl-uninstalled.sh
+isl.pc
+isl.pc.in
+isl_bound
+isl_cat
+isl_closure
+isl_pip
+isl_polyhedron_detect_equalities
+isl_polyhedron_minimize
+isl_polyhedron_sample
+isl_polytope_scan
+isl_test
+libtool
+ltmain.sh
+m4/libtool.m4
+m4/ltoptions.m4
+m4/ltsugar.m4
+m4/ltversion.m4
+m4/lt~obsolete.m4
+missing
+piplib
+py-compile
+stamp-h1
+test-driver
+
+isl_srcdir.c
+bound_test.sh
+pip_test.sh
diff --git a/polly/lib/External/isl/.gitmodules b/polly/lib/External/isl/.gitmodules
new file mode 100644 (file)
index 0000000..90aadaf
--- /dev/null
@@ -0,0 +1,3 @@
+[submodule "imath"]
+       path = imath
+       url = https://github.com/creachadair/imath.git
diff --git a/polly/lib/External/isl/Makefile.am b/polly/lib/External/isl/Makefile.am
deleted file mode 100644 (file)
index 3e7d7b1..0000000
+++ /dev/null
@@ -1,666 +0,0 @@
-if HAVE_CLANG
-if HAVE_CXX11
-MAYBE_INTERFACE = interface
-FORCE:
-interface/extract_interface$(BUILD_EXEEXT): FORCE
-       $(MAKE) $(AM_MAKEFLAGS) -C interface extract_interface$(BUILD_EXEEXT)
-endif
-endif
-SUBDIRS = . $(MAYBE_INTERFACE) doc
-DIST_SUBDIRS = $(MAYBE_INTERFACE) doc
-
-ACLOCAL_AMFLAGS = -I m4
-AUTOMAKE_OPTIONS = nostdinc subdir-objects
-
-lib_LTLIBRARIES = libisl.la
-noinst_PROGRAMS = isl_test isl_polyhedron_sample isl_pip \
-       isl_polyhedron_minimize isl_polytope_scan \
-       isl_polyhedron_detect_equalities \
-       isl_polyhedron_remove_redundant_equalities isl_cat \
-       isl_closure isl_bound isl_schedule isl_codegen isl_test_int \
-       isl_flow isl_flow_cmp isl_schedule_cmp
-TESTS = isl_test codegen_test.sh pip_test.sh bound_test.sh isl_test_int \
-       flow_test.sh schedule_test.sh
-if HAVE_CPP_ISL_H
-  CPP_H = include/isl/cpp.h include/isl/typed_cpp.h
-if HAVE_CXX11
-  noinst_PROGRAMS += isl_test2 isl_test_cpp
-  TESTS += isl_test2 isl_test_cpp isl_test_cpp_failed.sh
-endif
-endif
-if HAVE_CLANG
-if HAVE_CXX11
-  noinst_PROGRAMS += isl_test_cpp-checked isl_test_cpp-checked-conversion
-  TESTS += isl_test_cpp-checked isl_test_cpp-checked-conversion
-if HAVE_PYTHON
-  TESTS += isl_test_python.py
-  noinst_PYTHON = interface/isl.py
-  isl_test_python.py: interface/isl.py libisl.la
-endif
-endif
-endif
-TEST_EXTENSIONS = .py
-AM_TESTS_ENVIRONMENT = \
-       export PYTHONPATH=interface; \
-       export ISL_DYLD_LIBRARY_PATH=.libs; \
-       export LD_LIBRARY_PATH=".libs:$(LD_LIBRARY_PATH)";
-PY_LOG_COMPILER = $(PYTHON)
-
-if IMATH_FOR_MP
-
-MP_SRC = \
-       isl_imath.c \
-       isl_imath.h \
-       isl_int_imath.h \
-       imath_wrap/gmp_compat.h \
-       imath_wrap/imath.h \
-       imath_wrap/imrat.h \
-       imath_wrap/wrap.h \
-       imath_wrap/gmp_compat.c \
-       imath_wrap/imath.c \
-       imath_wrap/imrat.c
-
-noinst_PROGRAMS += isl_test_imath
-TESTS += isl_test_imath
-
-if SMALL_INT_OPT
-MP_SRC += isl_int_sioimath.h \
-       isl_int_sioimath.c \
-       isl_val_sioimath.c
-else
-MP_SRC += isl_val_imath.c
-endif
-
-MP_INCLUDE_H =
-endif
-
-if GMP_FOR_MP
-if NEED_GET_MEMORY_FUNCTIONS
-GET_MEMORY_FUNCTIONS=mp_get_memory_functions.c
-endif
-
-MP_SRC = \
-       $(GET_MEMORY_FUNCTIONS) \
-       isl_int_gmp.h \
-       isl_gmp.c \
-       isl_val_gmp.c
-
-MP_INCLUDE_H = include/isl/val_gmp.h
-endif
-
-includes = -I. -I$(srcdir) -I$(srcdir)/include -Iinclude/
-AM_CPPFLAGS = $(includes) @MP_CPPFLAGS@
-AM_CFLAGS = @WARNING_FLAGS@ @MP_CFLAGS@
-
-libisl_la_SOURCES = \
-       $(MP_SRC) \
-       isl_aff.c \
-       isl_aff_map.c \
-       isl_aff_private.h \
-       isl_affine_hull.c \
-       isl_arg.c \
-       isl_ast.c \
-       isl_ast_private.h \
-       isl_ast_build.c \
-       isl_ast_build_private.h \
-       isl_ast_build_expr.c \
-       isl_ast_build_expr.h \
-       isl_ast_codegen.c \
-       isl_ast_graft.c \
-       isl_ast_graft_private.h \
-       isl_basis_reduction.h \
-       basis_reduction_tab.c \
-       isl_bernstein.c \
-       isl_bernstein.h \
-       isl_blk.c \
-       isl_blk.h \
-       isl_bound.c \
-       isl_bound.h \
-       isl_box.c \
-       isl_coalesce.c \
-       isl_constraint.c \
-       isl_constraint_private.h \
-       isl_convex_hull.c \
-       isl_ctx.c \
-       isl_ctx_private.h \
-       isl_deprecated.c \
-       isl_dim_map.h \
-       isl_dim_map.c \
-       isl_equalities.c \
-       isl_equalities.h \
-       isl_factorization.c \
-       isl_factorization.h \
-       isl_farkas.c \
-       isl_ffs.c \
-       isl_flow.c \
-       isl_fold.c \
-       isl_hash.c \
-       isl_id_to_ast_expr.c \
-       isl_id_to_id.c \
-       isl_id_to_pw_aff.c \
-       isl_ilp.c \
-       isl_ilp_private.h \
-       isl_input.c \
-       isl_int.h \
-       isl_list_private.h \
-       isl_local_private.h \
-       isl_local.h \
-       isl_local.c \
-       isl_local_space_private.h \
-       isl_local_space.c \
-       isl_lp.c \
-       isl_lp_private.h \
-       isl_map.c \
-       isl_map_list.c \
-       isl_map_simplify.c \
-       isl_map_subtract.c \
-       isl_map_private.h \
-       isl_map_to_basic_set.c \
-       isl_mat.c \
-       isl_mat_private.h \
-       isl_morph.c \
-       isl_morph.h \
-       isl_id.c \
-       isl_id_private.h \
-       isl_obj.c \
-       isl_options.c \
-       isl_options_private.h \
-       isl_output.c \
-       isl_output_private.h \
-       isl_point_private.h \
-       isl_point.c \
-       isl_polynomial_private.h \
-       isl_polynomial.c \
-       isl_printer_private.h \
-       isl_printer.c \
-       print.c \
-       isl_range.c \
-       isl_range.h \
-       isl_reordering.c \
-       isl_reordering.h \
-       isl_sample.h \
-       isl_sample.c \
-       isl_scan.c \
-       isl_scan.h \
-       isl_schedule.c \
-       isl_schedule_band.c \
-       isl_schedule_band.h \
-       isl_schedule_node.c \
-       isl_schedule_node_private.h \
-       isl_schedule_read.c \
-       isl_schedule_tree.c \
-       isl_schedule_tree.h \
-       isl_schedule_private.h \
-       isl_schedule_constraints.c \
-       isl_schedule_constraints.h \
-       isl_scheduler.c \
-       isl_set_list.c \
-       isl_sort.c \
-       isl_sort.h \
-       isl_space.c \
-       isl_space_private.h \
-       isl_stream.c \
-       isl_stream_private.h \
-       isl_seq.c \
-       isl_seq.h \
-       isl_set_to_ast_graft_list.c \
-       isl_set_to_ast_graft_list.h \
-       isl_stride.c \
-       isl_tab.c \
-       isl_tab.h \
-       isl_tab_pip.c \
-       isl_tarjan.c \
-       isl_tarjan.h \
-       isl_transitive_closure.c \
-       isl_union_map.c \
-       isl_union_map_private.h \
-       isl_union_set_private.h \
-       isl_val.c \
-       isl_val_private.h \
-       isl_vec_private.h \
-       isl_vec.c \
-       isl_version.c \
-       isl_vertices_private.h \
-       isl_vertices.c \
-       isl_yaml.h
-libisl_la_LIBADD = @MP_LIBS@
-libisl_la_LDFLAGS = -version-info @versioninfo@ \
-       @MP_LDFLAGS@
-
-isl_test_LDFLAGS = @MP_LDFLAGS@
-isl_test_LDADD = libisl.la @MP_LIBS@
-
-isl_test2_SOURCES = \
-       isl_test2.cc \
-       include/isl/cpp.h
-isl_test2_LDFLAGS = @MP_LDFLAGS@
-isl_test2_LDADD = libisl.la @MP_LIBS@
-
-isl_test_int_LDFLAGS = @MP_LDFLAGS@
-isl_test_int_LDADD = libisl.la @MP_LIBS@
-
-if IMATH_FOR_MP
-isl_test_imath_LDFLAGS = @MP_LDFLAGS@
-isl_test_imath_LDADD = libisl.la @MP_LIBS@
-endif
-
-isl_polyhedron_sample_LDADD = libisl.la
-isl_polyhedron_sample_SOURCES = \
-       polyhedron_sample.c
-
-isl_pip_LDFLAGS = @MP_LDFLAGS@
-isl_pip_LDADD = libisl.la @MP_LIBS@
-isl_pip_SOURCES = \
-       pip.c
-
-isl_schedule_LDFLAGS = @MP_LDFLAGS@
-isl_schedule_LDADD = libisl.la @MP_LIBS@
-isl_schedule_SOURCES = \
-       schedule.c
-
-isl_schedule_cmp_LDFLAGS = @MP_LDFLAGS@
-isl_schedule_cmp_LDADD = libisl.la @MP_LIBS@
-isl_schedule_cmp_SOURCES = \
-       schedule_cmp.c
-
-isl_flow_LDFLAGS = @MP_LDFLAGS@
-isl_flow_LDADD = libisl.la @MP_LIBS@
-isl_flow_SOURCES = \
-       flow.c
-
-isl_flow_cmp_LDFLAGS = @MP_LDFLAGS@
-isl_flow_cmp_LDADD = libisl.la @MP_LIBS@
-isl_flow_cmp_SOURCES = \
-       flow_cmp.c
-
-isl_codegen_LDFLAGS = @MP_LDFLAGS@
-isl_codegen_LDADD = libisl.la @MP_LIBS@
-isl_codegen_SOURCES = \
-       codegen.c
-
-isl_bound_LDFLAGS = @MP_LDFLAGS@
-isl_bound_LDADD = libisl.la @MP_LIBS@
-isl_bound_SOURCES = \
-       bound.c
-
-isl_polyhedron_minimize_LDFLAGS = @MP_LDFLAGS@
-isl_polyhedron_minimize_LDADD = libisl.la @MP_LIBS@
-isl_polyhedron_minimize_SOURCES = \
-       polyhedron_minimize.c
-
-isl_polytope_scan_LDADD = libisl.la
-isl_polytope_scan_SOURCES = \
-       polytope_scan.c
-
-isl_polyhedron_detect_equalities_LDADD = libisl.la
-isl_polyhedron_detect_equalities_SOURCES = \
-       polyhedron_detect_equalities.c
-
-isl_polyhedron_remove_redundant_equalities_LDADD = libisl.la
-isl_polyhedron_remove_redundant_equalities_SOURCES = \
-       polyhedron_remove_redundant_equalities.c
-
-isl_cat_LDADD = libisl.la
-isl_cat_SOURCES = \
-       cat.c
-
-isl_closure_LDADD = libisl.la
-isl_closure_SOURCES = \
-       closure.c
-
-isl_test_cpp_CPPFLAGS = $(AM_CPPFLAGS) -UCOMPILE_ERROR
-isl_test_cpp_SOURCES = \
-       isl_test_cpp.cc \
-       include/isl/cpp.h
-isl_test_cpp_LDFLAGS = @MP_LDFLAGS@
-isl_test_cpp_LDADD = libisl.la @MP_LIBS@
-
-# This program is not meant to be compiled by default.
-# In fact it is meant not to be compilable.
-# It is identical to isl_test_cpp, except that it gets compiled
-# with the COMPILE_ERROR flag set.
-EXTRA_PROGRAMS = isl_test_cpp_failed
-isl_test_cpp_failed_CPPFLAGS = $(AM_CPPFLAGS) -DCOMPILE_ERROR
-isl_test_cpp_failed_SOURCES = \
-       isl_test_cpp.cc \
-       include/isl/cpp.h
-isl_test_cpp_failed_LDFLAGS = @MP_LDFLAGS@
-isl_test_cpp_failed_LDADD = libisl.la @MP_LIBS@
-
-isl_test_cpp_checked_SOURCES = \
-       isl_test_cpp-checked.cc \
-       include/isl/cpp-checked.h
-isl_test_cpp_checked_LDFLAGS = @MP_LDFLAGS@
-isl_test_cpp_checked_LDADD = libisl.la @MP_LIBS@
-
-isl_test_cpp_checked_conversion_SOURCES = \
-       isl_test_cpp-checked-conversion.cc \
-       include/isl/cpp-checked-conversion.h
-isl_test_cpp_checked_conversion_LDFLAGS = @MP_LDFLAGS@
-isl_test_cpp_checked_conversion_LDADD = libisl.la @MP_LIBS@
-
-# dummy library that captures the dependencies on all headers
-# that are relevant for the bindings
-noinst_LIBRARIES = libdep.a
-libdep_a_SOURCES = dep.c
-
-if HAVE_CLANG
-if HAVE_CXX11
-interface/isldlname.py: libisl.la
-       $(AM_V_GEN) $(GREP) dlname $< | $(SED) -e 's/dlname/isl_dlname/' > $@
-interface/isl.py: interface/extract_interface$(BUILD_EXEEXT) libdep.a \
-               python/isl.py.top interface/isldlname.py
-       (cat interface/isldlname.py $(srcdir)/python/isl.py.top && \
-               interface/extract_interface$(BUILD_EXEEXT) --language=python \
-                       $(includes) $(srcdir)/all.h) \
-                       > $@ || (rm $@ && false)
-
-include/isl/cpp.h: interface/extract_interface$(BUILD_EXEEXT) libdep.a \
-               cpp/cpp.h.top cpp/cpp.h.bot
-       $(MKDIR_P) "include/isl" && \
-       (cat $(srcdir)/cpp/cpp.h.top $(srcdir)/all.h && \
-               interface/extract_interface$(BUILD_EXEEXT) --language=cpp \
-                       $(includes) $(srcdir)/all.h && \
-               cat $(srcdir)/cpp/cpp.h.bot) \
-                       > $@ || (rm $@ && false)
-
-include/isl/cpp-checked.h: interface/extract_interface$(BUILD_EXEEXT) libdep.a \
-               cpp/cpp-checked.h.top cpp/cpp-checked.h.bot
-       $(MKDIR_P) "include/isl" && \
-       (cat $(srcdir)/cpp/cpp-checked.h.top $(srcdir)/all.h && \
-               interface/extract_interface$(BUILD_EXEEXT) \
-                       --language=cpp-checked \
-                       $(includes) $(srcdir)/all.h && \
-               cat $(srcdir)/cpp/cpp-checked.h.bot) \
-                       > $@ || (rm $@ && false)
-
-include/isl/cpp-checked-conversion.h: \
-               interface/extract_interface$(BUILD_EXEEXT) \
-               libdep.a \
-               cpp/cpp-checked-conversion.h.top \
-               cpp/cpp-checked-conversion.h.bot
-       $(MKDIR_P) "include/isl" && \
-       (cat $(srcdir)/cpp/cpp-checked-conversion.h.top && \
-               interface/extract_interface$(BUILD_EXEEXT) \
-                       --language=cpp-checked-conversion \
-                       $(includes) $(srcdir)/all.h && \
-               cat $(srcdir)/cpp/cpp-checked-conversion.h.bot) \
-                       > $@ || (rm $@ && false)
-
-include/isl/typed_cpp.h: interface/extract_interface$(BUILD_EXEEXT) \
-               libdep.a cpp/typed_cpp.h.top cpp/typed_cpp.h.bot
-       $(MKDIR_P) "include/isl" && \
-       (cat $(srcdir)/cpp/typed_cpp.h.top && \
-               interface/extract_interface$(BUILD_EXEEXT) \
-                       --language=template-cpp \
-                       $(includes) $(srcdir)/all.h && \
-               cat $(srcdir)/cpp/typed_cpp.h.bot) \
-                       > $@ || (rm $@ && false)
-endif
-endif
-
-nodist_pkginclude_HEADERS = \
-       include/isl/stdint.h
-pkginclude_HEADERS = \
-       $(CPP_H) \
-       $(MP_INCLUDE_H) \
-       include/isl/aff.h \
-       include/isl/aff_type.h \
-       include/isl/arg.h \
-       include/isl/ast.h \
-       include/isl/ast_type.h \
-       include/isl/ast_build.h \
-       include/isl/constraint.h \
-       include/isl/ctx.h \
-       include/isl/fixed_box.h \
-       include/isl/flow.h \
-       include/isl/id.h \
-       include/isl/id_type.h \
-       include/isl/id_to_ast_expr.h \
-       include/isl/id_to_id.h \
-       include/isl/id_to_pw_aff.h \
-       include/isl/ilp.h \
-       include/isl/hash.h \
-       include/isl/hmap.h \
-       include/isl/hmap_templ.c \
-       include/isl/list.h \
-       include/isl/local_space.h \
-       include/isl/lp.h \
-       include/isl/mat.h \
-       include/isl/map.h \
-       include/isl/map_to_basic_set.h \
-       include/isl/map_type.h \
-       include/isl/maybe.h \
-       include/isl/maybe_ast_expr.h \
-       include/isl/maybe_basic_set.h \
-       include/isl/maybe_id.h \
-       include/isl/maybe_pw_aff.h \
-       include/isl/maybe_templ.h \
-       include/isl/multi.h \
-       include/isl/obj.h \
-       include/isl/options.h \
-       include/isl/point.h \
-       include/isl/polynomial.h \
-       include/isl/polynomial_type.h \
-       include/isl/printer.h \
-       include/isl/printer_type.h \
-       include/isl/schedule.h \
-       include/isl/schedule_node.h \
-       include/isl/schedule_type.h \
-       include/isl/set.h \
-       include/isl/set_type.h \
-       include/isl/space.h \
-       include/isl/space_type.h \
-       include/isl/stream.h \
-       include/isl/stride_info.h \
-       include/isl/union_map.h \
-       include/isl/union_map_type.h \
-       include/isl/union_set.h \
-       include/isl/union_set_type.h \
-       include/isl/val.h \
-       include/isl/val_type.h \
-       include/isl/vec.h \
-       include/isl/version.h \
-       include/isl/vertices.h
-
-if HAVE_CLANG
-if HAVE_CXX11
-    CPP_INTERFACES = \
-       include/isl/cpp.h \
-       include/isl/cpp-checked.h \
-       include/isl/cpp-checked-conversion.h \
-       include/isl/typed_cpp.h
-endif
-endif
-BUILT_SOURCES = gitversion.h $(CPP_INTERFACES)
-CLEANFILES = \
-       gitversion.h \
-       interface/isldlname.py \
-       interface/isl.py \
-       interface/isl.pyc \
-       $(CPP_INTERFACES)
-
-DISTCLEANFILES = \
-       isl-uninstalled.sh \
-       isl-uninstalled.pc \
-       isl.pc \
-       isl.pc.in \
-       include/isl/stdint.h
-
-EXTRA_DIST = \
-       LICENSE \
-       isl_config_post.h \
-       isl_aff_lex_templ.c \
-       isl_align_params_templ.c \
-       isl_align_params_bin_templ.c \
-       basis_reduction_templ.c \
-       isl_bind_domain_templ.c \
-       bset_to_bmap.c \
-       bset_from_bmap.c \
-       isl_check_named_params_templ.c \
-       check_parse_fail_test_templ.c \
-       check_reparse_templ.c \
-       check_reparse_test_templ.c \
-       check_single_reference_templ.c \
-       check_type_range_templ.c \
-       isl_copy_tuple_id_templ.c \
-       isl_domain_factor_templ.c \
-       extract_key.c \
-       isl_ilp_opt_multi_val_templ.c \
-       isl_ilp_opt_val_templ.c \
-       has_single_reference_templ.c \
-       isl_insert_domain_templ.c \
-       isl_list_macro.h \
-       isl_list_templ.c \
-       isl_list_templ.h \
-       isl_list_read_templ.c \
-       isl_map_bound_templ.c \
-       isl_map_lexopt_templ.c \
-       isl_maybe_ast_graft_list.h \
-       isl_maybe_map.h \
-       isl_multi_macro.h \
-       isl_multi_bind_templ.c \
-       isl_multi_explicit_domain.c \
-       isl_multi_pw_aff_explicit_domain.c \
-       isl_multi_union_pw_aff_explicit_domain.c \
-       isl_multi_no_explicit_domain.c \
-       isl_multi_no_domain_templ.c \
-       isl_multi_templ.c \
-       isl_multi_templ.h \
-       isl_multi_add_constant_templ.c \
-       isl_multi_align_templ.c \
-       isl_multi_align_set.c \
-       isl_multi_align_union_set.c \
-       isl_multi_apply_templ.c \
-       isl_multi_apply_set.c \
-       isl_multi_apply_union_set.c \
-       isl_multi_arith_templ.c \
-       isl_multi_bind_domain_templ.c \
-       isl_multi_cmp.c \
-       isl_multi_coalesce.c \
-       isl_multi_dim_id_templ.c \
-       isl_multi_dims.c \
-       isl_multi_domain_templ.c \
-       isl_multi_floor.c \
-       isl_multi_from_base_templ.c \
-       isl_multi_gist.c \
-       isl_multi_hash.c \
-       isl_multi_insert_domain_templ.c \
-       isl_multi_intersect.c \
-       isl_multi_identity_templ.c \
-       isl_multi_locals_templ.c \
-       isl_multi_min_max_templ.c \
-       isl_multi_move_dims_templ.c \
-       isl_multi_nan_templ.c \
-       isl_multi_param_templ.c \
-       isl_multi_product_templ.c \
-       isl_multi_read_no_explicit_domain_templ.c \
-       isl_multi_splice_templ.c \
-       isl_multi_tuple_id_templ.c \
-       isl_multi_unbind_params_templ.c \
-       isl_multi_union_add_templ.c \
-       isl_multi_zero_templ.c \
-       isl_multi_zero_space_templ.c \
-       isl_opt_mpa_templ.c \
-       opt_type.h \
-       print_templ.c \
-       print_templ_yaml.c \
-       print_yaml_field_templ.c \
-       isl_power_templ.c \
-       isl_project_out_all_params_templ.c \
-       isl_pw_macro.h \
-       isl_pw_templ.c \
-       isl_pw_templ.h \
-       isl_pw_add_constant_templ.c \
-       isl_pw_add_constant_multi_val_templ.c \
-       isl_pw_add_constant_val_templ.c \
-       isl_pw_bind_domain_templ.c \
-       isl_pw_eval.c \
-       isl_pw_hash.c \
-       isl_pw_insert_dims_templ.c \
-       isl_pw_insert_domain_templ.c \
-       isl_pw_lift_templ.c \
-       isl_pw_locals_templ.c \
-       isl_pw_morph_templ.c \
-       isl_pw_move_dims_templ.c \
-       isl_pw_neg_templ.c \
-       isl_pw_opt_templ.c \
-       isl_pw_pullback_templ.c \
-       isl_pw_range_tuple_id_templ.c \
-       isl_pw_sub_templ.c \
-       isl_pw_union_opt.c \
-       read_in_string_templ.c \
-       set_to_map.c \
-       set_from_map.c \
-       set_list_from_map_list_inl.c \
-       isl_tab_lexopt_templ.c \
-       isl_test_list_templ.c \
-       isl_test_plain_equal_templ.c \
-       isl_type_check_equal_space_templ.c \
-       isl_type_has_equal_space_bin_templ.c \
-       isl_type_has_equal_space_templ.c \
-       isl_type_has_space_templ.c \
-       isl_unbind_params_templ.c \
-       uset_to_umap.c \
-       uset_from_umap.c \
-       isl_union_macro.h \
-       isl_union_templ.c \
-       isl_union_single.c \
-       isl_union_multi.c \
-       isl_union_eval.c \
-       isl_union_locals_templ.c \
-       isl_union_map_lex_templ.c \
-       isl_union_neg.c \
-       isl_union_pw_templ.c \
-       libisl-gdb.py \
-       doc/CodingStyle \
-       doc/SubmittingPatches \
-       doc/implementation.tex \
-       doc/isl.bib \
-       doc/mypod2latex \
-       doc/manual.tex \
-       doc/reading.tex \
-       doc/user.pod \
-       imath/gmp_compat.c \
-       imath/gmp_compat.h \
-       imath/imath.c \
-       imath/imath.h \
-       imath/imrat.c \
-       imath/imrat.h \
-       all.h \
-       cpp \
-       python \
-       isl_test_cpp-generic.cc \
-       isl_test_cpp_failed.sh \
-       isl_test_python.py \
-       test_inputs
-
-dist-hook:
-       echo @GIT_HEAD_VERSION@ > $(distdir)/GIT_HEAD_ID
-       (cd doc; make manual.pdf)
-       cp doc/manual.pdf $(distdir)/doc/
-
-pkgconfigdir=$(pkgconfig_libdir)
-pkgconfig_DATA = $(pkgconfig_libfile)
-
-gitversion.h: @GIT_HEAD@
-       $(AM_V_GEN)echo '#define GIT_HEAD_ID "'@GIT_HEAD_VERSION@'"' > $@
-
-install-data-local: $(srcdir)/libisl-gdb.py
-       @libisl=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \
-                $(builddir)/libisl.la`; \
-       case $$libisl in \
-       '') echo Cannot find isl library name. GDB bindings not installed.;; \
-       *) echo $(INSTALL_DATA) $(srcdir)/libisl-gdb.py \
-               $(DESTDIR)$(libdir)/$$libisl-gdb.py; \
-       test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"; \
-       $(INSTALL_DATA) $(srcdir)/libisl-gdb.py \
-           $(DESTDIR)$(libdir)/$$libisl-gdb.py; \
-       esac
-
-uninstall-local:
-       @libisl=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \
-                $(builddir)/libisl.la`; \
-       if test -n "$${libisl}"; then \
-               rm -f $(DESTDIR)$(libdir)/$$libisl-gdb.py; \
-       fi
diff --git a/polly/lib/External/isl/Makefile.in b/polly/lib/External/isl/Makefile.in
deleted file mode 100644 (file)
index a2e96d6..0000000
+++ /dev/null
@@ -1,3049 +0,0 @@
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-
-
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-noinst_PROGRAMS = isl_test$(EXEEXT) isl_polyhedron_sample$(EXEEXT) \
-       isl_pip$(EXEEXT) isl_polyhedron_minimize$(EXEEXT) \
-       isl_polytope_scan$(EXEEXT) \
-       isl_polyhedron_detect_equalities$(EXEEXT) \
-       isl_polyhedron_remove_redundant_equalities$(EXEEXT) \
-       isl_cat$(EXEEXT) isl_closure$(EXEEXT) isl_bound$(EXEEXT) \
-       isl_schedule$(EXEEXT) isl_codegen$(EXEEXT) \
-       isl_test_int$(EXEEXT) isl_flow$(EXEEXT) isl_flow_cmp$(EXEEXT) \
-       isl_schedule_cmp$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \
-       $(am__EXEEXT_3)
-TESTS = isl_test$(EXEEXT) codegen_test.sh pip_test.sh bound_test.sh \
-       isl_test_int$(EXEEXT) flow_test.sh schedule_test.sh \
-       $(am__EXEEXT_4) $(am__EXEEXT_2) $(am__append_5) \
-       $(am__EXEEXT_3)
-@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@am__append_1 = isl_test2 isl_test_cpp
-@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@am__append_2 = isl_test2 isl_test_cpp isl_test_cpp_failed.sh
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@am__append_3 = isl_test_cpp-checked isl_test_cpp-checked-conversion
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@am__append_4 = isl_test_cpp-checked isl_test_cpp-checked-conversion
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@@HAVE_PYTHON_TRUE@am__append_5 = isl_test_python.py
-@IMATH_FOR_MP_TRUE@am__append_6 = isl_test_imath
-@IMATH_FOR_MP_TRUE@am__append_7 = isl_test_imath
-@IMATH_FOR_MP_TRUE@@SMALL_INT_OPT_TRUE@am__append_8 = isl_int_sioimath.h \
-@IMATH_FOR_MP_TRUE@@SMALL_INT_OPT_TRUE@        isl_int_sioimath.c \
-@IMATH_FOR_MP_TRUE@@SMALL_INT_OPT_TRUE@        isl_val_sioimath.c
-
-@IMATH_FOR_MP_TRUE@@SMALL_INT_OPT_FALSE@am__append_9 = isl_val_imath.c
-EXTRA_PROGRAMS = isl_test_cpp_failed$(EXEEXT)
-subdir = .
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_c___attribute__.m4 \
-       $(top_srcdir)/m4/ax_cc_maxopt.m4 \
-       $(top_srcdir)/m4/ax_check_compiler_flags.m4 \
-       $(top_srcdir)/m4/ax_compiler_vendor.m4 \
-       $(top_srcdir)/m4/ax_create_pkgconfig_info.m4 \
-       $(top_srcdir)/m4/ax_create_stdint_h.m4 \
-       $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
-       $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
-       $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11_no_override.m4 \
-       $(top_srcdir)/m4/ax_detect_git_head.m4 \
-       $(top_srcdir)/m4/ax_detect_gmp.m4 \
-       $(top_srcdir)/m4/ax_detect_imath.m4 \
-       $(top_srcdir)/m4/ax_gcc_archflag.m4 \
-       $(top_srcdir)/m4/ax_gcc_warn_unused_result.m4 \
-       $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
-       $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
-       $(top_srcdir)/m4/ax_set_warning_flags.m4 \
-       $(top_srcdir)/m4/ax_submodule.m4 $(top_srcdir)/m4/libtool.m4 \
-       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-       $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
-       $(am__configure_deps) $(am__noinst_PYTHON_DIST) \
-       $(am__pkginclude_HEADERS_DIST) $(am__DIST_COMMON)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = isl_config.h
-CONFIG_CLEAN_FILES = isl_srcdir.c bound_test.sh codegen_test.sh \
-       pip_test.sh flow_test.sh schedule_test.sh
-CONFIG_CLEAN_VPATH_FILES =
-@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@am__EXEEXT_1 =  \
-@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@ isl_test2$(EXEEXT) \
-@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@ isl_test_cpp$(EXEEXT)
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@am__EXEEXT_2 = isl_test_cpp-checked$(EXEEXT) \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     isl_test_cpp-checked-conversion$(EXEEXT)
-@IMATH_FOR_MP_TRUE@am__EXEEXT_3 = isl_test_imath$(EXEEXT)
-PROGRAMS = $(noinst_PROGRAMS)
-LIBRARIES = $(noinst_LIBRARIES)
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
-       "$(DESTDIR)$(pkgincludedir)" "$(DESTDIR)$(pkgincludedir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-ARFLAGS = cru
-AM_V_AR = $(am__v_AR_@AM_V@)
-am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
-am__v_AR_0 = @echo "  AR      " $@;
-am__v_AR_1 = 
-libdep_a_AR = $(AR) $(ARFLAGS)
-libdep_a_LIBADD =
-am_libdep_a_OBJECTS = dep.$(OBJEXT)
-libdep_a_OBJECTS = $(am_libdep_a_OBJECTS)
-libisl_la_DEPENDENCIES =
-am__libisl_la_SOURCES_DIST = mp_get_memory_functions.c isl_int_gmp.h \
-       isl_gmp.c isl_val_gmp.c isl_imath.c isl_imath.h \
-       isl_int_imath.h imath_wrap/gmp_compat.h imath_wrap/imath.h \
-       imath_wrap/imrat.h imath_wrap/wrap.h imath_wrap/gmp_compat.c \
-       imath_wrap/imath.c imath_wrap/imrat.c isl_int_sioimath.h \
-       isl_int_sioimath.c isl_val_sioimath.c isl_val_imath.c \
-       isl_aff.c isl_aff_map.c isl_aff_private.h isl_affine_hull.c \
-       isl_arg.c isl_ast.c isl_ast_private.h isl_ast_build.c \
-       isl_ast_build_private.h isl_ast_build_expr.c \
-       isl_ast_build_expr.h isl_ast_codegen.c isl_ast_graft.c \
-       isl_ast_graft_private.h isl_basis_reduction.h \
-       basis_reduction_tab.c isl_bernstein.c isl_bernstein.h \
-       isl_blk.c isl_blk.h isl_bound.c isl_bound.h isl_box.c \
-       isl_coalesce.c isl_constraint.c isl_constraint_private.h \
-       isl_convex_hull.c isl_ctx.c isl_ctx_private.h isl_deprecated.c \
-       isl_dim_map.h isl_dim_map.c isl_equalities.c isl_equalities.h \
-       isl_factorization.c isl_factorization.h isl_farkas.c isl_ffs.c \
-       isl_flow.c isl_fold.c isl_hash.c isl_id_to_ast_expr.c \
-       isl_id_to_id.c isl_id_to_pw_aff.c isl_ilp.c isl_ilp_private.h \
-       isl_input.c isl_int.h isl_list_private.h isl_local_private.h \
-       isl_local.h isl_local.c isl_local_space_private.h \
-       isl_local_space.c isl_lp.c isl_lp_private.h isl_map.c \
-       isl_map_list.c isl_map_simplify.c isl_map_subtract.c \
-       isl_map_private.h isl_map_to_basic_set.c isl_mat.c \
-       isl_mat_private.h isl_morph.c isl_morph.h isl_id.c \
-       isl_id_private.h isl_obj.c isl_options.c isl_options_private.h \
-       isl_output.c isl_output_private.h isl_point_private.h \
-       isl_point.c isl_polynomial_private.h isl_polynomial.c \
-       isl_printer_private.h isl_printer.c print.c isl_range.c \
-       isl_range.h isl_reordering.c isl_reordering.h isl_sample.h \
-       isl_sample.c isl_scan.c isl_scan.h isl_schedule.c \
-       isl_schedule_band.c isl_schedule_band.h isl_schedule_node.c \
-       isl_schedule_node_private.h isl_schedule_read.c \
-       isl_schedule_tree.c isl_schedule_tree.h isl_schedule_private.h \
-       isl_schedule_constraints.c isl_schedule_constraints.h \
-       isl_scheduler.c isl_set_list.c isl_sort.c isl_sort.h \
-       isl_space.c isl_space_private.h isl_stream.c \
-       isl_stream_private.h isl_seq.c isl_seq.h \
-       isl_set_to_ast_graft_list.c isl_set_to_ast_graft_list.h \
-       isl_stride.c isl_tab.c isl_tab.h isl_tab_pip.c isl_tarjan.c \
-       isl_tarjan.h isl_transitive_closure.c isl_union_map.c \
-       isl_union_map_private.h isl_union_set_private.h isl_val.c \
-       isl_val_private.h isl_vec_private.h isl_vec.c isl_version.c \
-       isl_vertices_private.h isl_vertices.c isl_yaml.h
-@GMP_FOR_MP_TRUE@@NEED_GET_MEMORY_FUNCTIONS_TRUE@am__objects_1 = mp_get_memory_functions.lo
-am__dirstamp = $(am__leading_dot)dirstamp
-@IMATH_FOR_MP_TRUE@@SMALL_INT_OPT_TRUE@am__objects_2 =  \
-@IMATH_FOR_MP_TRUE@@SMALL_INT_OPT_TRUE@        isl_int_sioimath.lo \
-@IMATH_FOR_MP_TRUE@@SMALL_INT_OPT_TRUE@        isl_val_sioimath.lo
-@IMATH_FOR_MP_TRUE@@SMALL_INT_OPT_FALSE@am__objects_3 =  \
-@IMATH_FOR_MP_TRUE@@SMALL_INT_OPT_FALSE@       isl_val_imath.lo
-@GMP_FOR_MP_FALSE@@IMATH_FOR_MP_TRUE@am__objects_4 = isl_imath.lo \
-@GMP_FOR_MP_FALSE@@IMATH_FOR_MP_TRUE@  imath_wrap/gmp_compat.lo \
-@GMP_FOR_MP_FALSE@@IMATH_FOR_MP_TRUE@  imath_wrap/imath.lo \
-@GMP_FOR_MP_FALSE@@IMATH_FOR_MP_TRUE@  imath_wrap/imrat.lo \
-@GMP_FOR_MP_FALSE@@IMATH_FOR_MP_TRUE@  $(am__objects_2) \
-@GMP_FOR_MP_FALSE@@IMATH_FOR_MP_TRUE@  $(am__objects_3)
-@GMP_FOR_MP_TRUE@am__objects_4 = $(am__objects_1) isl_gmp.lo \
-@GMP_FOR_MP_TRUE@      isl_val_gmp.lo
-am_libisl_la_OBJECTS = $(am__objects_4) isl_aff.lo isl_aff_map.lo \
-       isl_affine_hull.lo isl_arg.lo isl_ast.lo isl_ast_build.lo \
-       isl_ast_build_expr.lo isl_ast_codegen.lo isl_ast_graft.lo \
-       basis_reduction_tab.lo isl_bernstein.lo isl_blk.lo \
-       isl_bound.lo isl_box.lo isl_coalesce.lo isl_constraint.lo \
-       isl_convex_hull.lo isl_ctx.lo isl_deprecated.lo isl_dim_map.lo \
-       isl_equalities.lo isl_factorization.lo isl_farkas.lo \
-       isl_ffs.lo isl_flow.lo isl_fold.lo isl_hash.lo \
-       isl_id_to_ast_expr.lo isl_id_to_id.lo isl_id_to_pw_aff.lo \
-       isl_ilp.lo isl_input.lo isl_local.lo isl_local_space.lo \
-       isl_lp.lo isl_map.lo isl_map_list.lo isl_map_simplify.lo \
-       isl_map_subtract.lo isl_map_to_basic_set.lo isl_mat.lo \
-       isl_morph.lo isl_id.lo isl_obj.lo isl_options.lo isl_output.lo \
-       isl_point.lo isl_polynomial.lo isl_printer.lo print.lo \
-       isl_range.lo isl_reordering.lo isl_sample.lo isl_scan.lo \
-       isl_schedule.lo isl_schedule_band.lo isl_schedule_node.lo \
-       isl_schedule_read.lo isl_schedule_tree.lo \
-       isl_schedule_constraints.lo isl_scheduler.lo isl_set_list.lo \
-       isl_sort.lo isl_space.lo isl_stream.lo isl_seq.lo \
-       isl_set_to_ast_graft_list.lo isl_stride.lo isl_tab.lo \
-       isl_tab_pip.lo isl_tarjan.lo isl_transitive_closure.lo \
-       isl_union_map.lo isl_val.lo isl_vec.lo isl_version.lo \
-       isl_vertices.lo
-libisl_la_OBJECTS = $(am_libisl_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-libisl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(libisl_la_LDFLAGS) $(LDFLAGS) -o $@
-am_isl_bound_OBJECTS = bound.$(OBJEXT)
-isl_bound_OBJECTS = $(am_isl_bound_OBJECTS)
-isl_bound_DEPENDENCIES = libisl.la
-isl_bound_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(isl_bound_LDFLAGS) $(LDFLAGS) -o $@
-am_isl_cat_OBJECTS = cat.$(OBJEXT)
-isl_cat_OBJECTS = $(am_isl_cat_OBJECTS)
-isl_cat_DEPENDENCIES = libisl.la
-am_isl_closure_OBJECTS = closure.$(OBJEXT)
-isl_closure_OBJECTS = $(am_isl_closure_OBJECTS)
-isl_closure_DEPENDENCIES = libisl.la
-am_isl_codegen_OBJECTS = codegen.$(OBJEXT)
-isl_codegen_OBJECTS = $(am_isl_codegen_OBJECTS)
-isl_codegen_DEPENDENCIES = libisl.la
-isl_codegen_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(isl_codegen_LDFLAGS) $(LDFLAGS) -o $@
-am_isl_flow_OBJECTS = flow.$(OBJEXT)
-isl_flow_OBJECTS = $(am_isl_flow_OBJECTS)
-isl_flow_DEPENDENCIES = libisl.la
-isl_flow_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(isl_flow_LDFLAGS) $(LDFLAGS) -o $@
-am_isl_flow_cmp_OBJECTS = flow_cmp.$(OBJEXT)
-isl_flow_cmp_OBJECTS = $(am_isl_flow_cmp_OBJECTS)
-isl_flow_cmp_DEPENDENCIES = libisl.la
-isl_flow_cmp_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(isl_flow_cmp_LDFLAGS) $(LDFLAGS) -o $@
-am_isl_pip_OBJECTS = pip.$(OBJEXT)
-isl_pip_OBJECTS = $(am_isl_pip_OBJECTS)
-isl_pip_DEPENDENCIES = libisl.la
-isl_pip_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(isl_pip_LDFLAGS) $(LDFLAGS) -o $@
-am_isl_polyhedron_detect_equalities_OBJECTS =  \
-       polyhedron_detect_equalities.$(OBJEXT)
-isl_polyhedron_detect_equalities_OBJECTS =  \
-       $(am_isl_polyhedron_detect_equalities_OBJECTS)
-isl_polyhedron_detect_equalities_DEPENDENCIES = libisl.la
-am_isl_polyhedron_minimize_OBJECTS = polyhedron_minimize.$(OBJEXT)
-isl_polyhedron_minimize_OBJECTS =  \
-       $(am_isl_polyhedron_minimize_OBJECTS)
-isl_polyhedron_minimize_DEPENDENCIES = libisl.la
-isl_polyhedron_minimize_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-       $(AM_CFLAGS) $(CFLAGS) $(isl_polyhedron_minimize_LDFLAGS) \
-       $(LDFLAGS) -o $@
-am_isl_polyhedron_remove_redundant_equalities_OBJECTS =  \
-       polyhedron_remove_redundant_equalities.$(OBJEXT)
-isl_polyhedron_remove_redundant_equalities_OBJECTS =  \
-       $(am_isl_polyhedron_remove_redundant_equalities_OBJECTS)
-isl_polyhedron_remove_redundant_equalities_DEPENDENCIES = libisl.la
-am_isl_polyhedron_sample_OBJECTS = polyhedron_sample.$(OBJEXT)
-isl_polyhedron_sample_OBJECTS = $(am_isl_polyhedron_sample_OBJECTS)
-isl_polyhedron_sample_DEPENDENCIES = libisl.la
-am_isl_polytope_scan_OBJECTS = polytope_scan.$(OBJEXT)
-isl_polytope_scan_OBJECTS = $(am_isl_polytope_scan_OBJECTS)
-isl_polytope_scan_DEPENDENCIES = libisl.la
-am_isl_schedule_OBJECTS = schedule.$(OBJEXT)
-isl_schedule_OBJECTS = $(am_isl_schedule_OBJECTS)
-isl_schedule_DEPENDENCIES = libisl.la
-isl_schedule_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(isl_schedule_LDFLAGS) $(LDFLAGS) -o $@
-am_isl_schedule_cmp_OBJECTS = schedule_cmp.$(OBJEXT)
-isl_schedule_cmp_OBJECTS = $(am_isl_schedule_cmp_OBJECTS)
-isl_schedule_cmp_DEPENDENCIES = libisl.la
-isl_schedule_cmp_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-       $(AM_CFLAGS) $(CFLAGS) $(isl_schedule_cmp_LDFLAGS) $(LDFLAGS) \
-       -o $@
-isl_test_SOURCES = isl_test.c
-isl_test_OBJECTS = isl_test.$(OBJEXT)
-isl_test_DEPENDENCIES = libisl.la
-isl_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(isl_test_LDFLAGS) $(LDFLAGS) -o $@
-am_isl_test2_OBJECTS = isl_test2.$(OBJEXT)
-isl_test2_OBJECTS = $(am_isl_test2_OBJECTS)
-isl_test2_DEPENDENCIES = libisl.la
-isl_test2_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-       $(CXXFLAGS) $(isl_test2_LDFLAGS) $(LDFLAGS) -o $@
-am_isl_test_cpp_OBJECTS = isl_test_cpp-isl_test_cpp.$(OBJEXT)
-isl_test_cpp_OBJECTS = $(am_isl_test_cpp_OBJECTS)
-isl_test_cpp_DEPENDENCIES = libisl.la
-isl_test_cpp_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-       $(CXXFLAGS) $(isl_test_cpp_LDFLAGS) $(LDFLAGS) -o $@
-am_isl_test_cpp_checked_OBJECTS = isl_test_cpp-checked.$(OBJEXT)
-isl_test_cpp_checked_OBJECTS = $(am_isl_test_cpp_checked_OBJECTS)
-isl_test_cpp_checked_DEPENDENCIES = libisl.la
-isl_test_cpp_checked_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-       $(AM_CXXFLAGS) $(CXXFLAGS) $(isl_test_cpp_checked_LDFLAGS) \
-       $(LDFLAGS) -o $@
-am_isl_test_cpp_checked_conversion_OBJECTS =  \
-       isl_test_cpp-checked-conversion.$(OBJEXT)
-isl_test_cpp_checked_conversion_OBJECTS =  \
-       $(am_isl_test_cpp_checked_conversion_OBJECTS)
-isl_test_cpp_checked_conversion_DEPENDENCIES = libisl.la
-isl_test_cpp_checked_conversion_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-       $(AM_CXXFLAGS) $(CXXFLAGS) \
-       $(isl_test_cpp_checked_conversion_LDFLAGS) $(LDFLAGS) -o $@
-am_isl_test_cpp_failed_OBJECTS =  \
-       isl_test_cpp_failed-isl_test_cpp.$(OBJEXT)
-isl_test_cpp_failed_OBJECTS = $(am_isl_test_cpp_failed_OBJECTS)
-isl_test_cpp_failed_DEPENDENCIES = libisl.la
-isl_test_cpp_failed_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-       $(AM_CXXFLAGS) $(CXXFLAGS) $(isl_test_cpp_failed_LDFLAGS) \
-       $(LDFLAGS) -o $@
-isl_test_imath_SOURCES = isl_test_imath.c
-isl_test_imath_OBJECTS = isl_test_imath.$(OBJEXT)
-@IMATH_FOR_MP_TRUE@isl_test_imath_DEPENDENCIES = libisl.la
-isl_test_imath_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-       $(AM_CFLAGS) $(CFLAGS) $(isl_test_imath_LDFLAGS) $(LDFLAGS) -o \
-       $@
-isl_test_int_SOURCES = isl_test_int.c
-isl_test_int_OBJECTS = isl_test_int.$(OBJEXT)
-isl_test_int_DEPENDENCIES = libisl.la
-isl_test_int_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(isl_test_int_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = 
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ./$(DEPDIR)/basis_reduction_tab.Plo \
-       ./$(DEPDIR)/bound.Po ./$(DEPDIR)/cat.Po ./$(DEPDIR)/closure.Po \
-       ./$(DEPDIR)/codegen.Po ./$(DEPDIR)/dep.Po ./$(DEPDIR)/flow.Po \
-       ./$(DEPDIR)/flow_cmp.Po ./$(DEPDIR)/isl_aff.Plo \
-       ./$(DEPDIR)/isl_aff_map.Plo ./$(DEPDIR)/isl_affine_hull.Plo \
-       ./$(DEPDIR)/isl_arg.Plo ./$(DEPDIR)/isl_ast.Plo \
-       ./$(DEPDIR)/isl_ast_build.Plo \
-       ./$(DEPDIR)/isl_ast_build_expr.Plo \
-       ./$(DEPDIR)/isl_ast_codegen.Plo ./$(DEPDIR)/isl_ast_graft.Plo \
-       ./$(DEPDIR)/isl_bernstein.Plo ./$(DEPDIR)/isl_blk.Plo \
-       ./$(DEPDIR)/isl_bound.Plo ./$(DEPDIR)/isl_box.Plo \
-       ./$(DEPDIR)/isl_coalesce.Plo ./$(DEPDIR)/isl_constraint.Plo \
-       ./$(DEPDIR)/isl_convex_hull.Plo ./$(DEPDIR)/isl_ctx.Plo \
-       ./$(DEPDIR)/isl_deprecated.Plo ./$(DEPDIR)/isl_dim_map.Plo \
-       ./$(DEPDIR)/isl_equalities.Plo \
-       ./$(DEPDIR)/isl_factorization.Plo ./$(DEPDIR)/isl_farkas.Plo \
-       ./$(DEPDIR)/isl_ffs.Plo ./$(DEPDIR)/isl_flow.Plo \
-       ./$(DEPDIR)/isl_fold.Plo ./$(DEPDIR)/isl_gmp.Plo \
-       ./$(DEPDIR)/isl_hash.Plo ./$(DEPDIR)/isl_id.Plo \
-       ./$(DEPDIR)/isl_id_to_ast_expr.Plo \
-       ./$(DEPDIR)/isl_id_to_id.Plo ./$(DEPDIR)/isl_id_to_pw_aff.Plo \
-       ./$(DEPDIR)/isl_ilp.Plo ./$(DEPDIR)/isl_imath.Plo \
-       ./$(DEPDIR)/isl_input.Plo ./$(DEPDIR)/isl_int_sioimath.Plo \
-       ./$(DEPDIR)/isl_local.Plo ./$(DEPDIR)/isl_local_space.Plo \
-       ./$(DEPDIR)/isl_lp.Plo ./$(DEPDIR)/isl_map.Plo \
-       ./$(DEPDIR)/isl_map_list.Plo ./$(DEPDIR)/isl_map_simplify.Plo \
-       ./$(DEPDIR)/isl_map_subtract.Plo \
-       ./$(DEPDIR)/isl_map_to_basic_set.Plo ./$(DEPDIR)/isl_mat.Plo \
-       ./$(DEPDIR)/isl_morph.Plo ./$(DEPDIR)/isl_obj.Plo \
-       ./$(DEPDIR)/isl_options.Plo ./$(DEPDIR)/isl_output.Plo \
-       ./$(DEPDIR)/isl_point.Plo ./$(DEPDIR)/isl_polynomial.Plo \
-       ./$(DEPDIR)/isl_printer.Plo ./$(DEPDIR)/isl_range.Plo \
-       ./$(DEPDIR)/isl_reordering.Plo ./$(DEPDIR)/isl_sample.Plo \
-       ./$(DEPDIR)/isl_scan.Plo ./$(DEPDIR)/isl_schedule.Plo \
-       ./$(DEPDIR)/isl_schedule_band.Plo \
-       ./$(DEPDIR)/isl_schedule_constraints.Plo \
-       ./$(DEPDIR)/isl_schedule_node.Plo \
-       ./$(DEPDIR)/isl_schedule_read.Plo \
-       ./$(DEPDIR)/isl_schedule_tree.Plo \
-       ./$(DEPDIR)/isl_scheduler.Plo ./$(DEPDIR)/isl_seq.Plo \
-       ./$(DEPDIR)/isl_set_list.Plo \
-       ./$(DEPDIR)/isl_set_to_ast_graft_list.Plo \
-       ./$(DEPDIR)/isl_sort.Plo ./$(DEPDIR)/isl_space.Plo \
-       ./$(DEPDIR)/isl_stream.Plo ./$(DEPDIR)/isl_stride.Plo \
-       ./$(DEPDIR)/isl_tab.Plo ./$(DEPDIR)/isl_tab_pip.Plo \
-       ./$(DEPDIR)/isl_tarjan.Plo ./$(DEPDIR)/isl_test.Po \
-       ./$(DEPDIR)/isl_test2.Po \
-       ./$(DEPDIR)/isl_test_cpp-checked-conversion.Po \
-       ./$(DEPDIR)/isl_test_cpp-checked.Po \
-       ./$(DEPDIR)/isl_test_cpp-isl_test_cpp.Po \
-       ./$(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po \
-       ./$(DEPDIR)/isl_test_imath.Po ./$(DEPDIR)/isl_test_int.Po \
-       ./$(DEPDIR)/isl_transitive_closure.Plo \
-       ./$(DEPDIR)/isl_union_map.Plo ./$(DEPDIR)/isl_val.Plo \
-       ./$(DEPDIR)/isl_val_gmp.Plo ./$(DEPDIR)/isl_val_imath.Plo \
-       ./$(DEPDIR)/isl_val_sioimath.Plo ./$(DEPDIR)/isl_vec.Plo \
-       ./$(DEPDIR)/isl_version.Plo ./$(DEPDIR)/isl_vertices.Plo \
-       ./$(DEPDIR)/mp_get_memory_functions.Plo ./$(DEPDIR)/pip.Po \
-       ./$(DEPDIR)/polyhedron_detect_equalities.Po \
-       ./$(DEPDIR)/polyhedron_minimize.Po \
-       ./$(DEPDIR)/polyhedron_remove_redundant_equalities.Po \
-       ./$(DEPDIR)/polyhedron_sample.Po ./$(DEPDIR)/polytope_scan.Po \
-       ./$(DEPDIR)/print.Plo ./$(DEPDIR)/schedule.Po \
-       ./$(DEPDIR)/schedule_cmp.Po \
-       imath_wrap/$(DEPDIR)/gmp_compat.Plo \
-       imath_wrap/$(DEPDIR)/imath.Plo imath_wrap/$(DEPDIR)/imrat.Plo
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-       $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-       $(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-       $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(libdep_a_SOURCES) $(libisl_la_SOURCES) \
-       $(isl_bound_SOURCES) $(isl_cat_SOURCES) $(isl_closure_SOURCES) \
-       $(isl_codegen_SOURCES) $(isl_flow_SOURCES) \
-       $(isl_flow_cmp_SOURCES) $(isl_pip_SOURCES) \
-       $(isl_polyhedron_detect_equalities_SOURCES) \
-       $(isl_polyhedron_minimize_SOURCES) \
-       $(isl_polyhedron_remove_redundant_equalities_SOURCES) \
-       $(isl_polyhedron_sample_SOURCES) $(isl_polytope_scan_SOURCES) \
-       $(isl_schedule_SOURCES) $(isl_schedule_cmp_SOURCES) isl_test.c \
-       $(isl_test2_SOURCES) $(isl_test_cpp_SOURCES) \
-       $(isl_test_cpp_checked_SOURCES) \
-       $(isl_test_cpp_checked_conversion_SOURCES) \
-       $(isl_test_cpp_failed_SOURCES) isl_test_imath.c isl_test_int.c
-DIST_SOURCES = $(libdep_a_SOURCES) $(am__libisl_la_SOURCES_DIST) \
-       $(isl_bound_SOURCES) $(isl_cat_SOURCES) $(isl_closure_SOURCES) \
-       $(isl_codegen_SOURCES) $(isl_flow_SOURCES) \
-       $(isl_flow_cmp_SOURCES) $(isl_pip_SOURCES) \
-       $(isl_polyhedron_detect_equalities_SOURCES) \
-       $(isl_polyhedron_minimize_SOURCES) \
-       $(isl_polyhedron_remove_redundant_equalities_SOURCES) \
-       $(isl_polyhedron_sample_SOURCES) $(isl_polytope_scan_SOURCES) \
-       $(isl_schedule_SOURCES) $(isl_schedule_cmp_SOURCES) isl_test.c \
-       $(isl_test2_SOURCES) $(isl_test_cpp_SOURCES) \
-       $(isl_test_cpp_checked_SOURCES) \
-       $(isl_test_cpp_checked_conversion_SOURCES) \
-       $(isl_test_cpp_failed_SOURCES) isl_test_imath.c isl_test_int.c
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-       ctags-recursive dvi-recursive html-recursive info-recursive \
-       install-data-recursive install-dvi-recursive \
-       install-exec-recursive install-html-recursive \
-       install-info-recursive install-pdf-recursive \
-       install-ps-recursive install-recursive installcheck-recursive \
-       installdirs-recursive pdf-recursive ps-recursive \
-       tags-recursive uninstall-recursive
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__noinst_PYTHON_DIST = interface/isl.py
-am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
-py_compile = $(top_srcdir)/py-compile
-DATA = $(pkgconfig_DATA)
-am__pkginclude_HEADERS_DIST = include/isl/cpp.h \
-       include/isl/typed_cpp.h include/isl/val_gmp.h \
-       include/isl/aff.h include/isl/aff_type.h include/isl/arg.h \
-       include/isl/ast.h include/isl/ast_type.h \
-       include/isl/ast_build.h include/isl/constraint.h \
-       include/isl/ctx.h include/isl/fixed_box.h include/isl/flow.h \
-       include/isl/id.h include/isl/id_type.h \
-       include/isl/id_to_ast_expr.h include/isl/id_to_id.h \
-       include/isl/id_to_pw_aff.h include/isl/ilp.h \
-       include/isl/hash.h include/isl/hmap.h include/isl/hmap_templ.c \
-       include/isl/list.h include/isl/local_space.h include/isl/lp.h \
-       include/isl/mat.h include/isl/map.h \
-       include/isl/map_to_basic_set.h include/isl/map_type.h \
-       include/isl/maybe.h include/isl/maybe_ast_expr.h \
-       include/isl/maybe_basic_set.h include/isl/maybe_id.h \
-       include/isl/maybe_pw_aff.h include/isl/maybe_templ.h \
-       include/isl/multi.h include/isl/obj.h include/isl/options.h \
-       include/isl/point.h include/isl/polynomial.h \
-       include/isl/polynomial_type.h include/isl/printer.h \
-       include/isl/printer_type.h include/isl/schedule.h \
-       include/isl/schedule_node.h include/isl/schedule_type.h \
-       include/isl/set.h include/isl/set_type.h include/isl/space.h \
-       include/isl/space_type.h include/isl/stream.h \
-       include/isl/stride_info.h include/isl/union_map.h \
-       include/isl/union_map_type.h include/isl/union_set.h \
-       include/isl/union_set_type.h include/isl/val.h \
-       include/isl/val_type.h include/isl/vec.h include/isl/version.h \
-       include/isl/vertices.h
-HEADERS = $(nodist_pkginclude_HEADERS) $(pkginclude_HEADERS)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
-  distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-       cscope check recheck distdir distdir-am dist dist-all \
-       distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
-       isl_config.h.in
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
-am__tty_colors_dummy = \
-  mgn= red= grn= lgn= blu= brg= std=; \
-  am__color_tests=no
-am__tty_colors = { \
-  $(am__tty_colors_dummy); \
-  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-    am__color_tests=no; \
-  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-    am__color_tests=yes; \
-  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-    am__color_tests=yes; \
-  fi; \
-  if test $$am__color_tests = yes; then \
-    red='\e[0;31m'; \
-    grn='\e[0;32m'; \
-    lgn='\e[1;32m'; \
-    blu='\e[1;34m'; \
-    mgn='\e[0;35m'; \
-    brg='\e[1m'; \
-    std='\e[m'; \
-  fi; \
-}
-am__recheck_rx = ^[    ]*:recheck:[    ]*
-am__global_test_result_rx = ^[         ]*:global-test-result:[         ]*
-am__copy_in_global_log_rx = ^[         ]*:copy-in-global-log:[         ]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
-  recheck = 1; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-        { \
-          if ((getline line2 < ($$0 ".log")) < 0) \
-           recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-        { \
-          recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-        { \
-          break; \
-        } \
-    }; \
-  if (recheck) \
-    print $$0; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
-  print "fatal: making $@: " msg | "cat >&2"; \
-  exit 1; \
-} \
-function rst_section(header) \
-{ \
-  print header; \
-  len = length(header); \
-  for (i = 1; i <= len; i = i + 1) \
-    printf "="; \
-  printf "\n\n"; \
-} \
-{ \
-  copy_in_global_log = 1; \
-  global_test_result = "RUN"; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-         fatal("failed to read from " $$0 ".trs"); \
-      if (line ~ /$(am__global_test_result_rx)/) \
-        { \
-          sub("$(am__global_test_result_rx)", "", line); \
-          sub("[       ]*$$", "", line); \
-          global_test_result = line; \
-        } \
-      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-        copy_in_global_log = 0; \
-    }; \
-  if (copy_in_global_log) \
-    { \
-      rst_section(global_test_result ": " $$0); \
-      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-      { \
-        if (rc < 0) \
-          fatal("failed to read from " $$0 ".log"); \
-        print line; \
-      }; \
-      printf "\n"; \
-    }; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
-  --color-tests "$$am__color_tests" \
-  --enable-hard-errors "$$am__enable_hard_errors" \
-  --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test.  Creates the
-# directory for the log if needed.  Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log.  Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup);                                     \
-$(am__vpath_adj_setup) $(am__vpath_adj)                        \
-$(am__tty_colors);                                     \
-srcdir=$(srcdir); export srcdir;                       \
-case "$@" in                                           \
-  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;   \
-    *) am__odir=.;;                                    \
-esac;                                                  \
-test "x$$am__odir" = x"." || test -d "$$am__odir"      \
-  || $(MKDIR_P) "$$am__odir" || exit $$?;              \
-if test -f "./$$f"; then dir=./;                       \
-elif test -f "$$f"; then dir=;                         \
-else dir="$(srcdir)/"; fi;                             \
-tst=$$dir$$f; log='$@';                                \
-if test -n '$(DISABLE_HARD_ERRORS)'; then              \
-  am__enable_hard_errors=no;                           \
-else                                                   \
-  am__enable_hard_errors=yes;                          \
-fi;                                                    \
-case " $(XFAIL_TESTS) " in                             \
-  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
-    am__expect_failure=yes;;                           \
-  *)                                                   \
-    am__expect_failure=no;;                            \
-esac;                                                  \
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed).  The result is saved in the shell variable
-# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
-  bases='$(TEST_LOGS)'; \
-  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-  bases=`echo $$bases`
-AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
-RECHECK_LOGS = $(TEST_LOGS)
-@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@am__EXEEXT_4 =  \
-@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@ isl_test2$(EXEEXT) \
-@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@ isl_test_cpp$(EXEEXT) \
-@HAVE_CPP_ISL_H_TRUE@@HAVE_CXX11_TRUE@ isl_test_cpp_failed.sh
-TEST_SUITE_LOG = test-suite.log
-LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
-  case '$@' in \
-    */*) \
-      case '$*' in \
-        */*) b='$*';; \
-          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-       esac;; \
-    *) \
-      b='$*';; \
-  esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
-TEST_LOGS = $(am__test_logs2:.py.log=.log)
-PY_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
-PY_LOG_COMPILE = $(PY_LOG_COMPILER) $(AM_PY_LOG_FLAGS) $(PY_LOG_FLAGS)
-am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/bound_test.sh.in \
-       $(srcdir)/codegen_test.sh.in $(srcdir)/flow_test.sh.in \
-       $(srcdir)/isl_config.h.in $(srcdir)/isl_srcdir.c.in \
-       $(srcdir)/pip_test.sh.in $(srcdir)/schedule_test.sh.in AUTHORS \
-       ChangeLog README compile config.guess config.sub depcomp \
-       install-sh ltmain.sh missing py-compile test-driver
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  if test -d "$(distdir)"; then \
-    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-      && rm -rf "$(distdir)" \
-      || { sleep 5 && rm -rf "$(distdir)"; }; \
-  else :; fi
-am__post_remove_distdir = $(am__remove_distdir)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-DIST_TARGETS = dist-gzip
-# Exists only to be overridden by the user if desired.
-AM_DISTCHECK_DVI_TARGET = dvi
-distuninstallcheck_listfiles = find . -type f -print
-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
-  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BUILD_EXEEXT = @BUILD_EXEEXT@
-BUILD_OBJEXT = @BUILD_OBJEXT@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_FOR_BUILD = @CC_FOR_BUILD@
-CFLAGS = @CFLAGS@
-CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
-CPP_FOR_BUILD = @CPP_FOR_BUILD@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH = @CYGPATH@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT_HEAD = @GIT_HEAD@
-GIT_HEAD_ID = @GIT_HEAD_ID@
-GIT_HEAD_VERSION = @GIT_HEAD_VERSION@
-GREP = @GREP@
-HAVE_CXX11 = @HAVE_CXX11@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MP_CFLAGS = @MP_CFLAGS@
-MP_CPPFLAGS = @MP_CPPFLAGS@
-MP_LDFLAGS = @MP_LDFLAGS@
-MP_LIBS = @MP_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OS_SRCDIR = @OS_SRCDIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PERL = @PERL@
-POD2HTML = @POD2HTML@
-PRTDIAG = @PRTDIAG@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARNING_FLAGS = @WARNING_FLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgconfig_libdir = @pkgconfig_libdir@
-pkgconfig_libfile = @pkgconfig_libfile@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-versioninfo = @versioninfo@
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@MAYBE_INTERFACE = interface
-SUBDIRS = . $(MAYBE_INTERFACE) doc
-DIST_SUBDIRS = $(MAYBE_INTERFACE) doc
-ACLOCAL_AMFLAGS = -I m4
-AUTOMAKE_OPTIONS = nostdinc subdir-objects
-lib_LTLIBRARIES = libisl.la
-@HAVE_CPP_ISL_H_TRUE@CPP_H = include/isl/cpp.h include/isl/typed_cpp.h
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@@HAVE_PYTHON_TRUE@noinst_PYTHON = interface/isl.py
-TEST_EXTENSIONS = .py
-AM_TESTS_ENVIRONMENT = \
-       export PYTHONPATH=interface; \
-       export ISL_DYLD_LIBRARY_PATH=.libs; \
-       export LD_LIBRARY_PATH=".libs:$(LD_LIBRARY_PATH)";
-
-PY_LOG_COMPILER = $(PYTHON)
-@GMP_FOR_MP_TRUE@MP_SRC = \
-@GMP_FOR_MP_TRUE@      $(GET_MEMORY_FUNCTIONS) \
-@GMP_FOR_MP_TRUE@      isl_int_gmp.h \
-@GMP_FOR_MP_TRUE@      isl_gmp.c \
-@GMP_FOR_MP_TRUE@      isl_val_gmp.c
-
-@IMATH_FOR_MP_TRUE@MP_SRC = isl_imath.c isl_imath.h isl_int_imath.h \
-@IMATH_FOR_MP_TRUE@    imath_wrap/gmp_compat.h imath_wrap/imath.h \
-@IMATH_FOR_MP_TRUE@    imath_wrap/imrat.h imath_wrap/wrap.h \
-@IMATH_FOR_MP_TRUE@    imath_wrap/gmp_compat.c imath_wrap/imath.c \
-@IMATH_FOR_MP_TRUE@    imath_wrap/imrat.c $(am__append_8) \
-@IMATH_FOR_MP_TRUE@    $(am__append_9)
-@GMP_FOR_MP_TRUE@MP_INCLUDE_H = include/isl/val_gmp.h
-@IMATH_FOR_MP_TRUE@MP_INCLUDE_H = 
-@GMP_FOR_MP_TRUE@@NEED_GET_MEMORY_FUNCTIONS_TRUE@GET_MEMORY_FUNCTIONS = mp_get_memory_functions.c
-includes = -I. -I$(srcdir) -I$(srcdir)/include -Iinclude/
-AM_CPPFLAGS = $(includes) @MP_CPPFLAGS@
-AM_CFLAGS = @WARNING_FLAGS@ @MP_CFLAGS@
-libisl_la_SOURCES = \
-       $(MP_SRC) \
-       isl_aff.c \
-       isl_aff_map.c \
-       isl_aff_private.h \
-       isl_affine_hull.c \
-       isl_arg.c \
-       isl_ast.c \
-       isl_ast_private.h \
-       isl_ast_build.c \
-       isl_ast_build_private.h \
-       isl_ast_build_expr.c \
-       isl_ast_build_expr.h \
-       isl_ast_codegen.c \
-       isl_ast_graft.c \
-       isl_ast_graft_private.h \
-       isl_basis_reduction.h \
-       basis_reduction_tab.c \
-       isl_bernstein.c \
-       isl_bernstein.h \
-       isl_blk.c \
-       isl_blk.h \
-       isl_bound.c \
-       isl_bound.h \
-       isl_box.c \
-       isl_coalesce.c \
-       isl_constraint.c \
-       isl_constraint_private.h \
-       isl_convex_hull.c \
-       isl_ctx.c \
-       isl_ctx_private.h \
-       isl_deprecated.c \
-       isl_dim_map.h \
-       isl_dim_map.c \
-       isl_equalities.c \
-       isl_equalities.h \
-       isl_factorization.c \
-       isl_factorization.h \
-       isl_farkas.c \
-       isl_ffs.c \
-       isl_flow.c \
-       isl_fold.c \
-       isl_hash.c \
-       isl_id_to_ast_expr.c \
-       isl_id_to_id.c \
-       isl_id_to_pw_aff.c \
-       isl_ilp.c \
-       isl_ilp_private.h \
-       isl_input.c \
-       isl_int.h \
-       isl_list_private.h \
-       isl_local_private.h \
-       isl_local.h \
-       isl_local.c \
-       isl_local_space_private.h \
-       isl_local_space.c \
-       isl_lp.c \
-       isl_lp_private.h \
-       isl_map.c \
-       isl_map_list.c \
-       isl_map_simplify.c \
-       isl_map_subtract.c \
-       isl_map_private.h \
-       isl_map_to_basic_set.c \
-       isl_mat.c \
-       isl_mat_private.h \
-       isl_morph.c \
-       isl_morph.h \
-       isl_id.c \
-       isl_id_private.h \
-       isl_obj.c \
-       isl_options.c \
-       isl_options_private.h \
-       isl_output.c \
-       isl_output_private.h \
-       isl_point_private.h \
-       isl_point.c \
-       isl_polynomial_private.h \
-       isl_polynomial.c \
-       isl_printer_private.h \
-       isl_printer.c \
-       print.c \
-       isl_range.c \
-       isl_range.h \
-       isl_reordering.c \
-       isl_reordering.h \
-       isl_sample.h \
-       isl_sample.c \
-       isl_scan.c \
-       isl_scan.h \
-       isl_schedule.c \
-       isl_schedule_band.c \
-       isl_schedule_band.h \
-       isl_schedule_node.c \
-       isl_schedule_node_private.h \
-       isl_schedule_read.c \
-       isl_schedule_tree.c \
-       isl_schedule_tree.h \
-       isl_schedule_private.h \
-       isl_schedule_constraints.c \
-       isl_schedule_constraints.h \
-       isl_scheduler.c \
-       isl_set_list.c \
-       isl_sort.c \
-       isl_sort.h \
-       isl_space.c \
-       isl_space_private.h \
-       isl_stream.c \
-       isl_stream_private.h \
-       isl_seq.c \
-       isl_seq.h \
-       isl_set_to_ast_graft_list.c \
-       isl_set_to_ast_graft_list.h \
-       isl_stride.c \
-       isl_tab.c \
-       isl_tab.h \
-       isl_tab_pip.c \
-       isl_tarjan.c \
-       isl_tarjan.h \
-       isl_transitive_closure.c \
-       isl_union_map.c \
-       isl_union_map_private.h \
-       isl_union_set_private.h \
-       isl_val.c \
-       isl_val_private.h \
-       isl_vec_private.h \
-       isl_vec.c \
-       isl_version.c \
-       isl_vertices_private.h \
-       isl_vertices.c \
-       isl_yaml.h
-
-libisl_la_LIBADD = @MP_LIBS@
-libisl_la_LDFLAGS = -version-info @versioninfo@ \
-       @MP_LDFLAGS@
-
-isl_test_LDFLAGS = @MP_LDFLAGS@
-isl_test_LDADD = libisl.la @MP_LIBS@
-isl_test2_SOURCES = \
-       isl_test2.cc \
-       include/isl/cpp.h
-
-isl_test2_LDFLAGS = @MP_LDFLAGS@
-isl_test2_LDADD = libisl.la @MP_LIBS@
-isl_test_int_LDFLAGS = @MP_LDFLAGS@
-isl_test_int_LDADD = libisl.la @MP_LIBS@
-@IMATH_FOR_MP_TRUE@isl_test_imath_LDFLAGS = @MP_LDFLAGS@
-@IMATH_FOR_MP_TRUE@isl_test_imath_LDADD = libisl.la @MP_LIBS@
-isl_polyhedron_sample_LDADD = libisl.la
-isl_polyhedron_sample_SOURCES = \
-       polyhedron_sample.c
-
-isl_pip_LDFLAGS = @MP_LDFLAGS@
-isl_pip_LDADD = libisl.la @MP_LIBS@
-isl_pip_SOURCES = \
-       pip.c
-
-isl_schedule_LDFLAGS = @MP_LDFLAGS@
-isl_schedule_LDADD = libisl.la @MP_LIBS@
-isl_schedule_SOURCES = \
-       schedule.c
-
-isl_schedule_cmp_LDFLAGS = @MP_LDFLAGS@
-isl_schedule_cmp_LDADD = libisl.la @MP_LIBS@
-isl_schedule_cmp_SOURCES = \
-       schedule_cmp.c
-
-isl_flow_LDFLAGS = @MP_LDFLAGS@
-isl_flow_LDADD = libisl.la @MP_LIBS@
-isl_flow_SOURCES = \
-       flow.c
-
-isl_flow_cmp_LDFLAGS = @MP_LDFLAGS@
-isl_flow_cmp_LDADD = libisl.la @MP_LIBS@
-isl_flow_cmp_SOURCES = \
-       flow_cmp.c
-
-isl_codegen_LDFLAGS = @MP_LDFLAGS@
-isl_codegen_LDADD = libisl.la @MP_LIBS@
-isl_codegen_SOURCES = \
-       codegen.c
-
-isl_bound_LDFLAGS = @MP_LDFLAGS@
-isl_bound_LDADD = libisl.la @MP_LIBS@
-isl_bound_SOURCES = \
-       bound.c
-
-isl_polyhedron_minimize_LDFLAGS = @MP_LDFLAGS@
-isl_polyhedron_minimize_LDADD = libisl.la @MP_LIBS@
-isl_polyhedron_minimize_SOURCES = \
-       polyhedron_minimize.c
-
-isl_polytope_scan_LDADD = libisl.la
-isl_polytope_scan_SOURCES = \
-       polytope_scan.c
-
-isl_polyhedron_detect_equalities_LDADD = libisl.la
-isl_polyhedron_detect_equalities_SOURCES = \
-       polyhedron_detect_equalities.c
-
-isl_polyhedron_remove_redundant_equalities_LDADD = libisl.la
-isl_polyhedron_remove_redundant_equalities_SOURCES = \
-       polyhedron_remove_redundant_equalities.c
-
-isl_cat_LDADD = libisl.la
-isl_cat_SOURCES = \
-       cat.c
-
-isl_closure_LDADD = libisl.la
-isl_closure_SOURCES = \
-       closure.c
-
-isl_test_cpp_CPPFLAGS = $(AM_CPPFLAGS) -UCOMPILE_ERROR
-isl_test_cpp_SOURCES = \
-       isl_test_cpp.cc \
-       include/isl/cpp.h
-
-isl_test_cpp_LDFLAGS = @MP_LDFLAGS@
-isl_test_cpp_LDADD = libisl.la @MP_LIBS@
-isl_test_cpp_failed_CPPFLAGS = $(AM_CPPFLAGS) -DCOMPILE_ERROR
-isl_test_cpp_failed_SOURCES = \
-       isl_test_cpp.cc \
-       include/isl/cpp.h
-
-isl_test_cpp_failed_LDFLAGS = @MP_LDFLAGS@
-isl_test_cpp_failed_LDADD = libisl.la @MP_LIBS@
-isl_test_cpp_checked_SOURCES = \
-       isl_test_cpp-checked.cc \
-       include/isl/cpp-checked.h
-
-isl_test_cpp_checked_LDFLAGS = @MP_LDFLAGS@
-isl_test_cpp_checked_LDADD = libisl.la @MP_LIBS@
-isl_test_cpp_checked_conversion_SOURCES = \
-       isl_test_cpp-checked-conversion.cc \
-       include/isl/cpp-checked-conversion.h
-
-isl_test_cpp_checked_conversion_LDFLAGS = @MP_LDFLAGS@
-isl_test_cpp_checked_conversion_LDADD = libisl.la @MP_LIBS@
-
-# dummy library that captures the dependencies on all headers
-# that are relevant for the bindings
-noinst_LIBRARIES = libdep.a
-libdep_a_SOURCES = dep.c
-nodist_pkginclude_HEADERS = \
-       include/isl/stdint.h
-
-pkginclude_HEADERS = \
-       $(CPP_H) \
-       $(MP_INCLUDE_H) \
-       include/isl/aff.h \
-       include/isl/aff_type.h \
-       include/isl/arg.h \
-       include/isl/ast.h \
-       include/isl/ast_type.h \
-       include/isl/ast_build.h \
-       include/isl/constraint.h \
-       include/isl/ctx.h \
-       include/isl/fixed_box.h \
-       include/isl/flow.h \
-       include/isl/id.h \
-       include/isl/id_type.h \
-       include/isl/id_to_ast_expr.h \
-       include/isl/id_to_id.h \
-       include/isl/id_to_pw_aff.h \
-       include/isl/ilp.h \
-       include/isl/hash.h \
-       include/isl/hmap.h \
-       include/isl/hmap_templ.c \
-       include/isl/list.h \
-       include/isl/local_space.h \
-       include/isl/lp.h \
-       include/isl/mat.h \
-       include/isl/map.h \
-       include/isl/map_to_basic_set.h \
-       include/isl/map_type.h \
-       include/isl/maybe.h \
-       include/isl/maybe_ast_expr.h \
-       include/isl/maybe_basic_set.h \
-       include/isl/maybe_id.h \
-       include/isl/maybe_pw_aff.h \
-       include/isl/maybe_templ.h \
-       include/isl/multi.h \
-       include/isl/obj.h \
-       include/isl/options.h \
-       include/isl/point.h \
-       include/isl/polynomial.h \
-       include/isl/polynomial_type.h \
-       include/isl/printer.h \
-       include/isl/printer_type.h \
-       include/isl/schedule.h \
-       include/isl/schedule_node.h \
-       include/isl/schedule_type.h \
-       include/isl/set.h \
-       include/isl/set_type.h \
-       include/isl/space.h \
-       include/isl/space_type.h \
-       include/isl/stream.h \
-       include/isl/stride_info.h \
-       include/isl/union_map.h \
-       include/isl/union_map_type.h \
-       include/isl/union_set.h \
-       include/isl/union_set_type.h \
-       include/isl/val.h \
-       include/isl/val_type.h \
-       include/isl/vec.h \
-       include/isl/version.h \
-       include/isl/vertices.h
-
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@CPP_INTERFACES = \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     include/isl/cpp.h \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     include/isl/cpp-checked.h \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     include/isl/cpp-checked-conversion.h \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     include/isl/typed_cpp.h
-
-BUILT_SOURCES = gitversion.h $(CPP_INTERFACES)
-CLEANFILES = \
-       gitversion.h \
-       interface/isldlname.py \
-       interface/isl.py \
-       interface/isl.pyc \
-       $(CPP_INTERFACES)
-
-DISTCLEANFILES = \
-       isl-uninstalled.sh \
-       isl-uninstalled.pc \
-       isl.pc \
-       isl.pc.in \
-       include/isl/stdint.h
-
-EXTRA_DIST = \
-       LICENSE \
-       isl_config_post.h \
-       isl_aff_lex_templ.c \
-       isl_align_params_templ.c \
-       isl_align_params_bin_templ.c \
-       basis_reduction_templ.c \
-       isl_bind_domain_templ.c \
-       bset_to_bmap.c \
-       bset_from_bmap.c \
-       isl_check_named_params_templ.c \
-       check_parse_fail_test_templ.c \
-       check_reparse_templ.c \
-       check_reparse_test_templ.c \
-       check_single_reference_templ.c \
-       check_type_range_templ.c \
-       isl_copy_tuple_id_templ.c \
-       isl_domain_factor_templ.c \
-       extract_key.c \
-       isl_ilp_opt_multi_val_templ.c \
-       isl_ilp_opt_val_templ.c \
-       has_single_reference_templ.c \
-       isl_insert_domain_templ.c \
-       isl_list_macro.h \
-       isl_list_templ.c \
-       isl_list_templ.h \
-       isl_list_read_templ.c \
-       isl_map_bound_templ.c \
-       isl_map_lexopt_templ.c \
-       isl_maybe_ast_graft_list.h \
-       isl_maybe_map.h \
-       isl_multi_macro.h \
-       isl_multi_bind_templ.c \
-       isl_multi_explicit_domain.c \
-       isl_multi_pw_aff_explicit_domain.c \
-       isl_multi_union_pw_aff_explicit_domain.c \
-       isl_multi_no_explicit_domain.c \
-       isl_multi_no_domain_templ.c \
-       isl_multi_templ.c \
-       isl_multi_templ.h \
-       isl_multi_add_constant_templ.c \
-       isl_multi_align_templ.c \
-       isl_multi_align_set.c \
-       isl_multi_align_union_set.c \
-       isl_multi_apply_templ.c \
-       isl_multi_apply_set.c \
-       isl_multi_apply_union_set.c \
-       isl_multi_arith_templ.c \
-       isl_multi_bind_domain_templ.c \
-       isl_multi_cmp.c \
-       isl_multi_coalesce.c \
-       isl_multi_dim_id_templ.c \
-       isl_multi_dims.c \
-       isl_multi_domain_templ.c \
-       isl_multi_floor.c \
-       isl_multi_from_base_templ.c \
-       isl_multi_gist.c \
-       isl_multi_hash.c \
-       isl_multi_insert_domain_templ.c \
-       isl_multi_intersect.c \
-       isl_multi_identity_templ.c \
-       isl_multi_locals_templ.c \
-       isl_multi_min_max_templ.c \
-       isl_multi_move_dims_templ.c \
-       isl_multi_nan_templ.c \
-       isl_multi_param_templ.c \
-       isl_multi_product_templ.c \
-       isl_multi_read_no_explicit_domain_templ.c \
-       isl_multi_splice_templ.c \
-       isl_multi_tuple_id_templ.c \
-       isl_multi_unbind_params_templ.c \
-       isl_multi_union_add_templ.c \
-       isl_multi_zero_templ.c \
-       isl_multi_zero_space_templ.c \
-       isl_opt_mpa_templ.c \
-       opt_type.h \
-       print_templ.c \
-       print_templ_yaml.c \
-       print_yaml_field_templ.c \
-       isl_power_templ.c \
-       isl_project_out_all_params_templ.c \
-       isl_pw_macro.h \
-       isl_pw_templ.c \
-       isl_pw_templ.h \
-       isl_pw_add_constant_templ.c \
-       isl_pw_add_constant_multi_val_templ.c \
-       isl_pw_add_constant_val_templ.c \
-       isl_pw_bind_domain_templ.c \
-       isl_pw_eval.c \
-       isl_pw_hash.c \
-       isl_pw_insert_dims_templ.c \
-       isl_pw_insert_domain_templ.c \
-       isl_pw_lift_templ.c \
-       isl_pw_locals_templ.c \
-       isl_pw_morph_templ.c \
-       isl_pw_move_dims_templ.c \
-       isl_pw_neg_templ.c \
-       isl_pw_opt_templ.c \
-       isl_pw_pullback_templ.c \
-       isl_pw_range_tuple_id_templ.c \
-       isl_pw_sub_templ.c \
-       isl_pw_union_opt.c \
-       read_in_string_templ.c \
-       set_to_map.c \
-       set_from_map.c \
-       set_list_from_map_list_inl.c \
-       isl_tab_lexopt_templ.c \
-       isl_test_list_templ.c \
-       isl_test_plain_equal_templ.c \
-       isl_type_check_equal_space_templ.c \
-       isl_type_has_equal_space_bin_templ.c \
-       isl_type_has_equal_space_templ.c \
-       isl_type_has_space_templ.c \
-       isl_unbind_params_templ.c \
-       uset_to_umap.c \
-       uset_from_umap.c \
-       isl_union_macro.h \
-       isl_union_templ.c \
-       isl_union_single.c \
-       isl_union_multi.c \
-       isl_union_eval.c \
-       isl_union_locals_templ.c \
-       isl_union_map_lex_templ.c \
-       isl_union_neg.c \
-       isl_union_pw_templ.c \
-       libisl-gdb.py \
-       doc/CodingStyle \
-       doc/SubmittingPatches \
-       doc/implementation.tex \
-       doc/isl.bib \
-       doc/mypod2latex \
-       doc/manual.tex \
-       doc/reading.tex \
-       doc/user.pod \
-       imath/gmp_compat.c \
-       imath/gmp_compat.h \
-       imath/imath.c \
-       imath/imath.h \
-       imath/imrat.c \
-       imath/imrat.h \
-       all.h \
-       cpp \
-       python \
-       isl_test_cpp-generic.cc \
-       isl_test_cpp_failed.sh \
-       isl_test_python.py \
-       test_inputs
-
-pkgconfigdir = $(pkgconfig_libdir)
-pkgconfig_DATA = $(pkgconfig_libfile)
-all: $(BUILT_SOURCES) isl_config.h
-       $(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-.SUFFIXES: .c .cc .lo .log .o .obj .py .py$(EXEEXT) .trs
-am--refresh: Makefile
-       @:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
-             $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
-               && exit 0; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
-       $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --foreign Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           echo ' $(SHELL) ./config.status'; \
-           $(SHELL) ./config.status;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-       $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-isl_config.h: stamp-h1
-       @test -f $@ || rm -f stamp-h1
-       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
-
-stamp-h1: $(srcdir)/isl_config.h.in $(top_builddir)/config.status
-       @rm -f stamp-h1
-       cd $(top_builddir) && $(SHELL) ./config.status isl_config.h
-$(srcdir)/isl_config.h.in:  $(am__configure_deps) 
-       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
-       rm -f stamp-h1
-       touch $@
-
-distclean-hdr:
-       -rm -f isl_config.h stamp-h1
-isl_srcdir.c: $(top_builddir)/config.status $(srcdir)/isl_srcdir.c.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
-bound_test.sh: $(top_builddir)/config.status $(srcdir)/bound_test.sh.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
-codegen_test.sh: $(top_builddir)/config.status $(srcdir)/codegen_test.sh.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
-pip_test.sh: $(top_builddir)/config.status $(srcdir)/pip_test.sh.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
-flow_test.sh: $(top_builddir)/config.status $(srcdir)/flow_test.sh.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
-schedule_test.sh: $(top_builddir)/config.status $(srcdir)/schedule_test.sh.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
-
-clean-noinstPROGRAMS:
-       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-       echo " rm -f" $$list; \
-       rm -f $$list || exit $$?; \
-       test -n "$(EXEEXT)" || exit 0; \
-       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-       echo " rm -f" $$list; \
-       rm -f $$list
-
-clean-noinstLIBRARIES:
-       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-       @$(NORMAL_INSTALL)
-       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-       list2=; for p in $$list; do \
-         if test -f $$p; then \
-           list2="$$list2 $$p"; \
-         else :; fi; \
-       done; \
-       test -z "$$list2" || { \
-         echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-       }
-
-uninstall-libLTLIBRARIES:
-       @$(NORMAL_UNINSTALL)
-       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-       for p in $$list; do \
-         $(am__strip_dir) \
-         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-       done
-
-clean-libLTLIBRARIES:
-       -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-       @list='$(lib_LTLIBRARIES)'; \
-       locs=`for p in $$list; do echo $$p; done | \
-             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-             sort -u`; \
-       test -z "$$locs" || { \
-         echo rm -f $${locs}; \
-         rm -f $${locs}; \
-       }
-
-libdep.a: $(libdep_a_OBJECTS) $(libdep_a_DEPENDENCIES) $(EXTRA_libdep_a_DEPENDENCIES) 
-       $(AM_V_at)-rm -f libdep.a
-       $(AM_V_AR)$(libdep_a_AR) libdep.a $(libdep_a_OBJECTS) $(libdep_a_LIBADD)
-       $(AM_V_at)$(RANLIB) libdep.a
-imath_wrap/$(am__dirstamp):
-       @$(MKDIR_P) imath_wrap
-       @: > imath_wrap/$(am__dirstamp)
-imath_wrap/$(DEPDIR)/$(am__dirstamp):
-       @$(MKDIR_P) imath_wrap/$(DEPDIR)
-       @: > imath_wrap/$(DEPDIR)/$(am__dirstamp)
-imath_wrap/gmp_compat.lo: imath_wrap/$(am__dirstamp) \
-       imath_wrap/$(DEPDIR)/$(am__dirstamp)
-imath_wrap/imath.lo: imath_wrap/$(am__dirstamp) \
-       imath_wrap/$(DEPDIR)/$(am__dirstamp)
-imath_wrap/imrat.lo: imath_wrap/$(am__dirstamp) \
-       imath_wrap/$(DEPDIR)/$(am__dirstamp)
-
-libisl.la: $(libisl_la_OBJECTS) $(libisl_la_DEPENDENCIES) $(EXTRA_libisl_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(libisl_la_LINK) -rpath $(libdir) $(libisl_la_OBJECTS) $(libisl_la_LIBADD) $(LIBS)
-
-isl_bound$(EXEEXT): $(isl_bound_OBJECTS) $(isl_bound_DEPENDENCIES) $(EXTRA_isl_bound_DEPENDENCIES) 
-       @rm -f isl_bound$(EXEEXT)
-       $(AM_V_CCLD)$(isl_bound_LINK) $(isl_bound_OBJECTS) $(isl_bound_LDADD) $(LIBS)
-
-isl_cat$(EXEEXT): $(isl_cat_OBJECTS) $(isl_cat_DEPENDENCIES) $(EXTRA_isl_cat_DEPENDENCIES) 
-       @rm -f isl_cat$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(isl_cat_OBJECTS) $(isl_cat_LDADD) $(LIBS)
-
-isl_closure$(EXEEXT): $(isl_closure_OBJECTS) $(isl_closure_DEPENDENCIES) $(EXTRA_isl_closure_DEPENDENCIES) 
-       @rm -f isl_closure$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(isl_closure_OBJECTS) $(isl_closure_LDADD) $(LIBS)
-
-isl_codegen$(EXEEXT): $(isl_codegen_OBJECTS) $(isl_codegen_DEPENDENCIES) $(EXTRA_isl_codegen_DEPENDENCIES) 
-       @rm -f isl_codegen$(EXEEXT)
-       $(AM_V_CCLD)$(isl_codegen_LINK) $(isl_codegen_OBJECTS) $(isl_codegen_LDADD) $(LIBS)
-
-isl_flow$(EXEEXT): $(isl_flow_OBJECTS) $(isl_flow_DEPENDENCIES) $(EXTRA_isl_flow_DEPENDENCIES) 
-       @rm -f isl_flow$(EXEEXT)
-       $(AM_V_CCLD)$(isl_flow_LINK) $(isl_flow_OBJECTS) $(isl_flow_LDADD) $(LIBS)
-
-isl_flow_cmp$(EXEEXT): $(isl_flow_cmp_OBJECTS) $(isl_flow_cmp_DEPENDENCIES) $(EXTRA_isl_flow_cmp_DEPENDENCIES) 
-       @rm -f isl_flow_cmp$(EXEEXT)
-       $(AM_V_CCLD)$(isl_flow_cmp_LINK) $(isl_flow_cmp_OBJECTS) $(isl_flow_cmp_LDADD) $(LIBS)
-
-isl_pip$(EXEEXT): $(isl_pip_OBJECTS) $(isl_pip_DEPENDENCIES) $(EXTRA_isl_pip_DEPENDENCIES) 
-       @rm -f isl_pip$(EXEEXT)
-       $(AM_V_CCLD)$(isl_pip_LINK) $(isl_pip_OBJECTS) $(isl_pip_LDADD) $(LIBS)
-
-isl_polyhedron_detect_equalities$(EXEEXT): $(isl_polyhedron_detect_equalities_OBJECTS) $(isl_polyhedron_detect_equalities_DEPENDENCIES) $(EXTRA_isl_polyhedron_detect_equalities_DEPENDENCIES) 
-       @rm -f isl_polyhedron_detect_equalities$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(isl_polyhedron_detect_equalities_OBJECTS) $(isl_polyhedron_detect_equalities_LDADD) $(LIBS)
-
-isl_polyhedron_minimize$(EXEEXT): $(isl_polyhedron_minimize_OBJECTS) $(isl_polyhedron_minimize_DEPENDENCIES) $(EXTRA_isl_polyhedron_minimize_DEPENDENCIES) 
-       @rm -f isl_polyhedron_minimize$(EXEEXT)
-       $(AM_V_CCLD)$(isl_polyhedron_minimize_LINK) $(isl_polyhedron_minimize_OBJECTS) $(isl_polyhedron_minimize_LDADD) $(LIBS)
-
-isl_polyhedron_remove_redundant_equalities$(EXEEXT): $(isl_polyhedron_remove_redundant_equalities_OBJECTS) $(isl_polyhedron_remove_redundant_equalities_DEPENDENCIES) $(EXTRA_isl_polyhedron_remove_redundant_equalities_DEPENDENCIES) 
-       @rm -f isl_polyhedron_remove_redundant_equalities$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(isl_polyhedron_remove_redundant_equalities_OBJECTS) $(isl_polyhedron_remove_redundant_equalities_LDADD) $(LIBS)
-
-isl_polyhedron_sample$(EXEEXT): $(isl_polyhedron_sample_OBJECTS) $(isl_polyhedron_sample_DEPENDENCIES) $(EXTRA_isl_polyhedron_sample_DEPENDENCIES) 
-       @rm -f isl_polyhedron_sample$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(isl_polyhedron_sample_OBJECTS) $(isl_polyhedron_sample_LDADD) $(LIBS)
-
-isl_polytope_scan$(EXEEXT): $(isl_polytope_scan_OBJECTS) $(isl_polytope_scan_DEPENDENCIES) $(EXTRA_isl_polytope_scan_DEPENDENCIES) 
-       @rm -f isl_polytope_scan$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(isl_polytope_scan_OBJECTS) $(isl_polytope_scan_LDADD) $(LIBS)
-
-isl_schedule$(EXEEXT): $(isl_schedule_OBJECTS) $(isl_schedule_DEPENDENCIES) $(EXTRA_isl_schedule_DEPENDENCIES) 
-       @rm -f isl_schedule$(EXEEXT)
-       $(AM_V_CCLD)$(isl_schedule_LINK) $(isl_schedule_OBJECTS) $(isl_schedule_LDADD) $(LIBS)
-
-isl_schedule_cmp$(EXEEXT): $(isl_schedule_cmp_OBJECTS) $(isl_schedule_cmp_DEPENDENCIES) $(EXTRA_isl_schedule_cmp_DEPENDENCIES) 
-       @rm -f isl_schedule_cmp$(EXEEXT)
-       $(AM_V_CCLD)$(isl_schedule_cmp_LINK) $(isl_schedule_cmp_OBJECTS) $(isl_schedule_cmp_LDADD) $(LIBS)
-
-isl_test$(EXEEXT): $(isl_test_OBJECTS) $(isl_test_DEPENDENCIES) $(EXTRA_isl_test_DEPENDENCIES) 
-       @rm -f isl_test$(EXEEXT)
-       $(AM_V_CCLD)$(isl_test_LINK) $(isl_test_OBJECTS) $(isl_test_LDADD) $(LIBS)
-
-isl_test2$(EXEEXT): $(isl_test2_OBJECTS) $(isl_test2_DEPENDENCIES) $(EXTRA_isl_test2_DEPENDENCIES) 
-       @rm -f isl_test2$(EXEEXT)
-       $(AM_V_CXXLD)$(isl_test2_LINK) $(isl_test2_OBJECTS) $(isl_test2_LDADD) $(LIBS)
-
-isl_test_cpp$(EXEEXT): $(isl_test_cpp_OBJECTS) $(isl_test_cpp_DEPENDENCIES) $(EXTRA_isl_test_cpp_DEPENDENCIES) 
-       @rm -f isl_test_cpp$(EXEEXT)
-       $(AM_V_CXXLD)$(isl_test_cpp_LINK) $(isl_test_cpp_OBJECTS) $(isl_test_cpp_LDADD) $(LIBS)
-
-isl_test_cpp-checked$(EXEEXT): $(isl_test_cpp_checked_OBJECTS) $(isl_test_cpp_checked_DEPENDENCIES) $(EXTRA_isl_test_cpp_checked_DEPENDENCIES) 
-       @rm -f isl_test_cpp-checked$(EXEEXT)
-       $(AM_V_CXXLD)$(isl_test_cpp_checked_LINK) $(isl_test_cpp_checked_OBJECTS) $(isl_test_cpp_checked_LDADD) $(LIBS)
-
-isl_test_cpp-checked-conversion$(EXEEXT): $(isl_test_cpp_checked_conversion_OBJECTS) $(isl_test_cpp_checked_conversion_DEPENDENCIES) $(EXTRA_isl_test_cpp_checked_conversion_DEPENDENCIES) 
-       @rm -f isl_test_cpp-checked-conversion$(EXEEXT)
-       $(AM_V_CXXLD)$(isl_test_cpp_checked_conversion_LINK) $(isl_test_cpp_checked_conversion_OBJECTS) $(isl_test_cpp_checked_conversion_LDADD) $(LIBS)
-
-isl_test_cpp_failed$(EXEEXT): $(isl_test_cpp_failed_OBJECTS) $(isl_test_cpp_failed_DEPENDENCIES) $(EXTRA_isl_test_cpp_failed_DEPENDENCIES) 
-       @rm -f isl_test_cpp_failed$(EXEEXT)
-       $(AM_V_CXXLD)$(isl_test_cpp_failed_LINK) $(isl_test_cpp_failed_OBJECTS) $(isl_test_cpp_failed_LDADD) $(LIBS)
-
-isl_test_imath$(EXEEXT): $(isl_test_imath_OBJECTS) $(isl_test_imath_DEPENDENCIES) $(EXTRA_isl_test_imath_DEPENDENCIES) 
-       @rm -f isl_test_imath$(EXEEXT)
-       $(AM_V_CCLD)$(isl_test_imath_LINK) $(isl_test_imath_OBJECTS) $(isl_test_imath_LDADD) $(LIBS)
-
-isl_test_int$(EXEEXT): $(isl_test_int_OBJECTS) $(isl_test_int_DEPENDENCIES) $(EXTRA_isl_test_int_DEPENDENCIES) 
-       @rm -f isl_test_int$(EXEEXT)
-       $(AM_V_CCLD)$(isl_test_int_LINK) $(isl_test_int_OBJECTS) $(isl_test_int_LDADD) $(LIBS)
-
-mostlyclean-compile:
-       -rm -f *.$(OBJEXT)
-       -rm -f imath_wrap/*.$(OBJEXT)
-       -rm -f imath_wrap/*.lo
-
-distclean-compile:
-       -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basis_reduction_tab.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bound.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/closure.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codegen.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dep.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flow.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flow_cmp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_aff.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_aff_map.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_affine_hull.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_arg.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_ast.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_ast_build.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_ast_build_expr.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_ast_codegen.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_ast_graft.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_bernstein.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_blk.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_bound.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_box.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_coalesce.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_constraint.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_convex_hull.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_ctx.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_deprecated.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_dim_map.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_equalities.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_factorization.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_farkas.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_ffs.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_flow.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_fold.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_gmp.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_hash.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_id.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_id_to_ast_expr.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_id_to_id.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_id_to_pw_aff.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_ilp.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_imath.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_input.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_int_sioimath.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_local.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_local_space.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_lp.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_map.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_map_list.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_map_simplify.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_map_subtract.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_map_to_basic_set.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_mat.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_morph.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_obj.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_options.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_output.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_point.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_polynomial.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_printer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_range.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_reordering.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_sample.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_scan.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_schedule.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_schedule_band.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_schedule_constraints.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_schedule_node.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_schedule_read.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_schedule_tree.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_scheduler.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_seq.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_set_list.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_set_to_ast_graft_list.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_sort.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_space.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_stream.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_stride.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_tab.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_tab_pip.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_tarjan.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test2.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_cpp-checked-conversion.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_cpp-checked.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_cpp-isl_test_cpp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_imath.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_test_int.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_transitive_closure.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_union_map.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_val.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_val_gmp.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_val_imath.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_val_sioimath.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_vec.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_version.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isl_vertices.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mp_get_memory_functions.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pip.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polyhedron_detect_equalities.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polyhedron_minimize.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polyhedron_remove_redundant_equalities.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polyhedron_sample.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polytope_scan.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/schedule.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/schedule_cmp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@imath_wrap/$(DEPDIR)/gmp_compat.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@imath_wrap/$(DEPDIR)/imath.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@imath_wrap/$(DEPDIR)/imrat.Plo@am__quote@ # am--include-marker
-
-$(am__depfiles_remade):
-       @$(MKDIR_P) $(@D)
-       @echo '# dummy' >$@-t && $(am__mv) $@-t $@
-
-am--depfiles: $(am__depfiles_remade)
-
-.c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-.cc.o:
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCXX_TRUE@  $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-isl_test_cpp-isl_test_cpp.o: isl_test_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isl_test_cpp-isl_test_cpp.o -MD -MP -MF $(DEPDIR)/isl_test_cpp-isl_test_cpp.Tpo -c -o isl_test_cpp-isl_test_cpp.o `test -f 'isl_test_cpp.cc' || echo '$(srcdir)/'`isl_test_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/isl_test_cpp-isl_test_cpp.Tpo $(DEPDIR)/isl_test_cpp-isl_test_cpp.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='isl_test_cpp.cc' object='isl_test_cpp-isl_test_cpp.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isl_test_cpp-isl_test_cpp.o `test -f 'isl_test_cpp.cc' || echo '$(srcdir)/'`isl_test_cpp.cc
-
-isl_test_cpp-isl_test_cpp.obj: isl_test_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isl_test_cpp-isl_test_cpp.obj -MD -MP -MF $(DEPDIR)/isl_test_cpp-isl_test_cpp.Tpo -c -o isl_test_cpp-isl_test_cpp.obj `if test -f 'isl_test_cpp.cc'; then $(CYGPATH_W) 'isl_test_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/isl_test_cpp.cc'; fi`
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/isl_test_cpp-isl_test_cpp.Tpo $(DEPDIR)/isl_test_cpp-isl_test_cpp.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='isl_test_cpp.cc' object='isl_test_cpp-isl_test_cpp.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isl_test_cpp-isl_test_cpp.obj `if test -f 'isl_test_cpp.cc'; then $(CYGPATH_W) 'isl_test_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/isl_test_cpp.cc'; fi`
-
-isl_test_cpp_failed-isl_test_cpp.o: isl_test_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_failed_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isl_test_cpp_failed-isl_test_cpp.o -MD -MP -MF $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Tpo -c -o isl_test_cpp_failed-isl_test_cpp.o `test -f 'isl_test_cpp.cc' || echo '$(srcdir)/'`isl_test_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Tpo $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='isl_test_cpp.cc' object='isl_test_cpp_failed-isl_test_cpp.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_failed_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isl_test_cpp_failed-isl_test_cpp.o `test -f 'isl_test_cpp.cc' || echo '$(srcdir)/'`isl_test_cpp.cc
-
-isl_test_cpp_failed-isl_test_cpp.obj: isl_test_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_failed_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isl_test_cpp_failed-isl_test_cpp.obj -MD -MP -MF $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Tpo -c -o isl_test_cpp_failed-isl_test_cpp.obj `if test -f 'isl_test_cpp.cc'; then $(CYGPATH_W) 'isl_test_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/isl_test_cpp.cc'; fi`
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Tpo $(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='isl_test_cpp.cc' object='isl_test_cpp_failed-isl_test_cpp.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(isl_test_cpp_failed_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isl_test_cpp_failed-isl_test_cpp.obj `if test -f 'isl_test_cpp.cc'; then $(CYGPATH_W) 'isl_test_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/isl_test_cpp.cc'; fi`
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-       -rm -rf imath_wrap/.libs imath_wrap/_libs
-
-distclean-libtool:
-       -rm -f libtool config.lt
-install-pkgconfigDATA: $(pkgconfig_DATA)
-       @$(NORMAL_INSTALL)
-       @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
-       fi; \
-       for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         echo "$$d$$p"; \
-       done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
-         $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
-       done
-
-uninstall-pkgconfigDATA:
-       @$(NORMAL_UNINSTALL)
-       @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
-install-nodist_pkgincludeHEADERS: $(nodist_pkginclude_HEADERS)
-       @$(NORMAL_INSTALL)
-       @list='$(nodist_pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
-       fi; \
-       for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         echo "$$d$$p"; \
-       done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
-         $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
-       done
-
-uninstall-nodist_pkgincludeHEADERS:
-       @$(NORMAL_UNINSTALL)
-       @list='$(nodist_pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
-install-pkgincludeHEADERS: $(pkginclude_HEADERS)
-       @$(NORMAL_INSTALL)
-       @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
-       fi; \
-       for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         echo "$$d$$p"; \
-       done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
-         $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
-       done
-
-uninstall-pkgincludeHEADERS:
-       @$(NORMAL_UNINSTALL)
-       @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-       @fail=; \
-       if $(am__make_keepgoing); then \
-         failcom='fail=yes'; \
-       else \
-         failcom='exit 1'; \
-       fi; \
-       dot_seen=no; \
-       target=`echo $@ | sed s/-recursive//`; \
-       case "$@" in \
-         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-         *) list='$(SUBDIRS)' ;; \
-       esac; \
-       for subdir in $$list; do \
-         echo "Making $$target in $$subdir"; \
-         if test "$$subdir" = "."; then \
-           dot_seen=yes; \
-           local_target="$$target-am"; \
-         else \
-           local_target="$$target"; \
-         fi; \
-         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-         || eval $$failcom; \
-       done; \
-       if test "$$dot_seen" = "no"; then \
-         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-       fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
-       $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       set x; \
-       here=`pwd`; \
-       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-         include_option=--etags-include; \
-         empty_fix=.; \
-       else \
-         include_option=--include; \
-         empty_fix=; \
-       fi; \
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         if test "$$subdir" = .; then :; else \
-           test ! -f $$subdir/TAGS || \
-             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-         fi; \
-       done; \
-       $(am__define_uniq_tagged_files); \
-       shift; \
-       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-         test -n "$$unique" || unique=$$empty_fix; \
-         if test $$# -gt 0; then \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             "$$@" $$unique; \
-         else \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             $$unique; \
-         fi; \
-       fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       $(am__define_uniq_tagged_files); \
-       test -z "$(CTAGS_ARGS)$$unique" \
-         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$unique
-
-GTAGS:
-       here=`$(am__cd) $(top_builddir) && pwd` \
-         && $(am__cd) $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) "$$here"
-cscope: cscope.files
-       test ! -s cscope.files \
-         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-clean-cscope:
-       -rm -f cscope.files
-cscope.files: clean-cscope cscopelist
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-       list='$(am__tagged_files)'; \
-       case "$(srcdir)" in \
-         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-         *) sdir=$(subdir)/$(srcdir) ;; \
-       esac; \
-       for i in $$list; do \
-         if test -f "$$i"; then \
-           echo "$(subdir)/$$i"; \
-         else \
-           echo "$$sdir/$$i"; \
-         fi; \
-       done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
-       rm -f $< $@
-       $(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
-       @:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
-       @$(am__set_TESTS_bases); \
-       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-       redo_bases=`for i in $$bases; do \
-                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-                   done`; \
-       if test -n "$$redo_bases"; then \
-         redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-         redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-         if $(am__make_dryrun); then :; else \
-           rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-         fi; \
-       fi; \
-       if test -n "$$am__remaking_logs"; then \
-         echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-              "recursion detected" >&2; \
-       elif test -n "$$redo_logs"; then \
-         am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-       fi; \
-       if $(am__make_dryrun); then :; else \
-         st=0;  \
-         errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-         for i in $$redo_bases; do \
-           test -f $$i.trs && test -r $$i.trs \
-             || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-           test -f $$i.log && test -r $$i.log \
-             || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-         done; \
-         test $$st -eq 0 || exit 1; \
-       fi
-       @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-       ws='[   ]'; \
-       results=`for b in $$bases; do echo $$b.trs; done`; \
-       test -n "$$results" || results=/dev/null; \
-       all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-       pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-       fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-       skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-       xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-       xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-       error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-       if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-         success=true; \
-       else \
-         success=false; \
-       fi; \
-       br='==================='; br=$$br$$br$$br$$br; \
-       result_count () \
-       { \
-           if test x"$$1" = x"--maybe-color"; then \
-             maybe_colorize=yes; \
-           elif test x"$$1" = x"--no-color"; then \
-             maybe_colorize=no; \
-           else \
-             echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-           fi; \
-           shift; \
-           desc=$$1 count=$$2; \
-           if test $$maybe_colorize = yes && test $$count -gt 0; then \
-             color_start=$$3 color_end=$$std; \
-           else \
-             color_start= color_end=; \
-           fi; \
-           echo "$${color_start}# $$desc $$count$${color_end}"; \
-       }; \
-       create_testsuite_report () \
-       { \
-         result_count $$1 "TOTAL:" $$all   "$$brg"; \
-         result_count $$1 "PASS: " $$pass  "$$grn"; \
-         result_count $$1 "SKIP: " $$skip  "$$blu"; \
-         result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-         result_count $$1 "FAIL: " $$fail  "$$red"; \
-         result_count $$1 "XPASS:" $$xpass "$$red"; \
-         result_count $$1 "ERROR:" $$error "$$mgn"; \
-       }; \
-       {                                                               \
-         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
-           $(am__rst_title);                                           \
-         create_testsuite_report --no-color;                           \
-         echo;                                                         \
-         echo ".. contents:: :depth: 2";                               \
-         echo;                                                         \
-         for b in $$bases; do echo $$b; done                           \
-           | $(am__create_global_log);                                 \
-       } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
-       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
-       if $$success; then                                              \
-         col="$$grn";                                                  \
-        else                                                           \
-         col="$$red";                                                  \
-         test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
-       fi;                                                             \
-       echo "$${col}$$br$${std}";                                      \
-       echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
-       echo "$${col}$$br$${std}";                                      \
-       create_testsuite_report --maybe-color;                          \
-       echo "$$col$$br$$std";                                          \
-       if $$success; then :; else                                      \
-         echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
-         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
-           echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
-         fi;                                                           \
-         echo "$$col$$br$$std";                                        \
-       fi;                                                             \
-       $$success || exit 1
-
-check-TESTS: 
-       @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-       @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-       @set +e; $(am__set_TESTS_bases); \
-       log_list=`for i in $$bases; do echo $$i.log; done`; \
-       trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-       log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-       exit $$?;
-recheck: all 
-       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-       @set +e; $(am__set_TESTS_bases); \
-       bases=`for i in $$bases; do echo $$i; done \
-                | $(am__list_recheck_tests)` || exit 1; \
-       log_list=`for i in $$bases; do echo $$i.log; done`; \
-       log_list=`echo $$log_list`; \
-       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-               am__force_recheck=am--force-recheck \
-               TEST_LOGS="$$log_list"; \
-       exit $$?
-isl_test.log: isl_test$(EXEEXT)
-       @p='isl_test$(EXEEXT)'; \
-       b='isl_test'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-codegen_test.sh.log: codegen_test.sh
-       @p='codegen_test.sh'; \
-       b='codegen_test.sh'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-pip_test.sh.log: pip_test.sh
-       @p='pip_test.sh'; \
-       b='pip_test.sh'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-bound_test.sh.log: bound_test.sh
-       @p='bound_test.sh'; \
-       b='bound_test.sh'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-isl_test_int.log: isl_test_int$(EXEEXT)
-       @p='isl_test_int$(EXEEXT)'; \
-       b='isl_test_int'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-flow_test.sh.log: flow_test.sh
-       @p='flow_test.sh'; \
-       b='flow_test.sh'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-schedule_test.sh.log: schedule_test.sh
-       @p='schedule_test.sh'; \
-       b='schedule_test.sh'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-isl_test2.log: isl_test2$(EXEEXT)
-       @p='isl_test2$(EXEEXT)'; \
-       b='isl_test2'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-isl_test_cpp.log: isl_test_cpp$(EXEEXT)
-       @p='isl_test_cpp$(EXEEXT)'; \
-       b='isl_test_cpp'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-isl_test_cpp_failed.sh.log: isl_test_cpp_failed.sh
-       @p='isl_test_cpp_failed.sh'; \
-       b='isl_test_cpp_failed.sh'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-isl_test_cpp-checked.log: isl_test_cpp-checked$(EXEEXT)
-       @p='isl_test_cpp-checked$(EXEEXT)'; \
-       b='isl_test_cpp-checked'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-isl_test_cpp-checked-conversion.log: isl_test_cpp-checked-conversion$(EXEEXT)
-       @p='isl_test_cpp-checked-conversion$(EXEEXT)'; \
-       b='isl_test_cpp-checked-conversion'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-isl_test_imath.log: isl_test_imath$(EXEEXT)
-       @p='isl_test_imath$(EXEEXT)'; \
-       b='isl_test_imath'; \
-       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-.py.log:
-       @p='$<'; \
-       $(am__set_b); \
-       $(am__check_pre) $(PY_LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_PY_LOG_DRIVER_FLAGS) $(PY_LOG_DRIVER_FLAGS) -- $(PY_LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-@am__EXEEXT_TRUE@.py$(EXEEXT).log:
-@am__EXEEXT_TRUE@      @p='$<'; \
-@am__EXEEXT_TRUE@      $(am__set_b); \
-@am__EXEEXT_TRUE@      $(am__check_pre) $(PY_LOG_DRIVER) --test-name "$$f" \
-@am__EXEEXT_TRUE@      --log-file $$b.log --trs-file $$b.trs \
-@am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_PY_LOG_DRIVER_FLAGS) $(PY_LOG_DRIVER_FLAGS) -- $(PY_LOG_COMPILE) \
-@am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
-       $(am__remove_distdir)
-       test -d "$(distdir)" || mkdir "$(distdir)"
-       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       list='$(DISTFILES)'; \
-         dist_files=`for file in $$list; do echo $$file; done | \
-         sed -e "s|^$$srcdirstrip/||;t" \
-             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-       case $$dist_files in \
-         */*) $(MKDIR_P) `echo "$$dist_files" | \
-                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-                          sort -u` ;; \
-       esac; \
-       for file in $$dist_files; do \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-           if test -d "$(distdir)/$$file"; then \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-         if test "$$subdir" = .; then :; else \
-           $(am__make_dryrun) \
-             || test -d "$(distdir)/$$subdir" \
-             || $(MKDIR_P) "$(distdir)/$$subdir" \
-             || exit 1; \
-           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-           $(am__relativize); \
-           new_distdir=$$reldir; \
-           dir1=$$subdir; dir2="$(top_distdir)"; \
-           $(am__relativize); \
-           new_top_distdir=$$reldir; \
-           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-           ($(am__cd) $$subdir && \
-             $(MAKE) $(AM_MAKEFLAGS) \
-               top_distdir="$$new_top_distdir" \
-               distdir="$$new_distdir" \
-               am__remove_distdir=: \
-               am__skip_length_check=: \
-               am__skip_mode_fix=: \
-               distdir) \
-             || exit 1; \
-         fi; \
-       done
-       $(MAKE) $(AM_MAKEFLAGS) \
-         top_distdir="$(top_distdir)" distdir="$(distdir)" \
-         dist-hook
-       -test -n "$(am__skip_mode_fix)" \
-       || find "$(distdir)" -type d ! -perm -755 \
-               -exec chmod u+rwx,go+rx {} \; -o \
-         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-       || chmod -R a+r "$(distdir)"
-dist-gzip: distdir
-       tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
-       $(am__post_remove_distdir)
-
-dist-bzip2: distdir
-       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-       $(am__post_remove_distdir)
-
-dist-lzip: distdir
-       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-       $(am__post_remove_distdir)
-
-dist-xz: distdir
-       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-       $(am__post_remove_distdir)
-
-dist-zstd: distdir
-       tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
-       $(am__post_remove_distdir)
-
-dist-tarZ: distdir
-       @echo WARNING: "Support for distribution archives compressed with" \
-                      "legacy program 'compress' is deprecated." >&2
-       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
-       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-       $(am__post_remove_distdir)
-
-dist-shar: distdir
-       @echo WARNING: "Support for shar distribution archives is" \
-                      "deprecated." >&2
-       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
-       shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
-       $(am__post_remove_distdir)
-
-dist-zip: distdir
-       -rm -f $(distdir).zip
-       zip -rq $(distdir).zip $(distdir)
-       $(am__post_remove_distdir)
-
-dist dist-all:
-       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
-       $(am__post_remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-       case '$(DIST_ARCHIVES)' in \
-       *.tar.gz*) \
-         eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
-       *.tar.bz2*) \
-         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-       *.tar.lz*) \
-         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
-       *.tar.xz*) \
-         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
-       *.tar.Z*) \
-         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-       *.shar.gz*) \
-         eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
-       *.zip*) \
-         unzip $(distdir).zip ;;\
-       *.tar.zst*) \
-         zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
-       esac
-       chmod -R a-w $(distdir)
-       chmod u+w $(distdir)
-       mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
-       chmod a-w $(distdir)
-       test -d $(distdir)/_build || exit 0; \
-       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-         && am__cwd=`pwd` \
-         && $(am__cd) $(distdir)/_build/sub \
-         && ../../configure \
-           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
-           $(DISTCHECK_CONFIGURE_FLAGS) \
-           --srcdir=../.. --prefix="$$dc_install_base" \
-         && $(MAKE) $(AM_MAKEFLAGS) \
-         && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
-         && $(MAKE) $(AM_MAKEFLAGS) check \
-         && $(MAKE) $(AM_MAKEFLAGS) install \
-         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-               distuninstallcheck \
-         && chmod -R a-w "$$dc_install_base" \
-         && ({ \
-              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-             } || { rm -rf "$$dc_destdir"; exit 1; }) \
-         && rm -rf "$$dc_destdir" \
-         && $(MAKE) $(AM_MAKEFLAGS) dist \
-         && rm -rf $(DIST_ARCHIVES) \
-         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
-         && cd "$$am__cwd" \
-         || exit 1
-       $(am__post_remove_distdir)
-       @(echo "$(distdir) archives ready for distribution: "; \
-         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
-       @test -n '$(distuninstallcheck_dir)' || { \
-         echo 'ERROR: trying to run $@ with an empty' \
-              '$$(distuninstallcheck_dir)' >&2; \
-         exit 1; \
-       }; \
-       $(am__cd) '$(distuninstallcheck_dir)' || { \
-         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
-         exit 1; \
-       }; \
-       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
-          || { echo "ERROR: files left after uninstall:" ; \
-               if test -n "$(DESTDIR)"; then \
-                 echo "  (check DESTDIR support)"; \
-               fi ; \
-               $(distuninstallcheck_listfiles) ; \
-               exit 1; } >&2
-distcleancheck: distclean
-       @if test '$(srcdir)' = . ; then \
-         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-         exit 1 ; \
-       fi
-       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-         || { echo "ERROR: files left in build directory after distclean:" ; \
-              $(distcleancheck_listfiles) ; \
-              exit 1; } >&2
-check-am: all-am
-       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) check-recursive
-all-am: Makefile $(PROGRAMS) $(LIBRARIES) $(LTLIBRARIES) $(DATA) \
-               $(HEADERS) isl_config.h
-installdirs: installdirs-recursive
-installdirs-am:
-       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(pkgincludedir)" "$(DESTDIR)$(pkgincludedir)"; do \
-         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-       done
-install: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) install-recursive
-install-exec: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-       if test -z '$(STRIP)'; then \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-             install; \
-       else \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-       fi
-mostlyclean-generic:
-       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-       -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-       -rm -f imath_wrap/$(DEPDIR)/$(am__dirstamp)
-       -rm -f imath_wrap/$(am__dirstamp)
-       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-
-maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-clean: clean-recursive
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-       clean-noinstLIBRARIES clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-recursive
-       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-               -rm -f ./$(DEPDIR)/basis_reduction_tab.Plo
-       -rm -f ./$(DEPDIR)/bound.Po
-       -rm -f ./$(DEPDIR)/cat.Po
-       -rm -f ./$(DEPDIR)/closure.Po
-       -rm -f ./$(DEPDIR)/codegen.Po
-       -rm -f ./$(DEPDIR)/dep.Po
-       -rm -f ./$(DEPDIR)/flow.Po
-       -rm -f ./$(DEPDIR)/flow_cmp.Po
-       -rm -f ./$(DEPDIR)/isl_aff.Plo
-       -rm -f ./$(DEPDIR)/isl_aff_map.Plo
-       -rm -f ./$(DEPDIR)/isl_affine_hull.Plo
-       -rm -f ./$(DEPDIR)/isl_arg.Plo
-       -rm -f ./$(DEPDIR)/isl_ast.Plo
-       -rm -f ./$(DEPDIR)/isl_ast_build.Plo
-       -rm -f ./$(DEPDIR)/isl_ast_build_expr.Plo
-       -rm -f ./$(DEPDIR)/isl_ast_codegen.Plo
-       -rm -f ./$(DEPDIR)/isl_ast_graft.Plo
-       -rm -f ./$(DEPDIR)/isl_bernstein.Plo
-       -rm -f ./$(DEPDIR)/isl_blk.Plo
-       -rm -f ./$(DEPDIR)/isl_bound.Plo
-       -rm -f ./$(DEPDIR)/isl_box.Plo
-       -rm -f ./$(DEPDIR)/isl_coalesce.Plo
-       -rm -f ./$(DEPDIR)/isl_constraint.Plo
-       -rm -f ./$(DEPDIR)/isl_convex_hull.Plo
-       -rm -f ./$(DEPDIR)/isl_ctx.Plo
-       -rm -f ./$(DEPDIR)/isl_deprecated.Plo
-       -rm -f ./$(DEPDIR)/isl_dim_map.Plo
-       -rm -f ./$(DEPDIR)/isl_equalities.Plo
-       -rm -f ./$(DEPDIR)/isl_factorization.Plo
-       -rm -f ./$(DEPDIR)/isl_farkas.Plo
-       -rm -f ./$(DEPDIR)/isl_ffs.Plo
-       -rm -f ./$(DEPDIR)/isl_flow.Plo
-       -rm -f ./$(DEPDIR)/isl_fold.Plo
-       -rm -f ./$(DEPDIR)/isl_gmp.Plo
-       -rm -f ./$(DEPDIR)/isl_hash.Plo
-       -rm -f ./$(DEPDIR)/isl_id.Plo
-       -rm -f ./$(DEPDIR)/isl_id_to_ast_expr.Plo
-       -rm -f ./$(DEPDIR)/isl_id_to_id.Plo
-       -rm -f ./$(DEPDIR)/isl_id_to_pw_aff.Plo
-       -rm -f ./$(DEPDIR)/isl_ilp.Plo
-       -rm -f ./$(DEPDIR)/isl_imath.Plo
-       -rm -f ./$(DEPDIR)/isl_input.Plo
-       -rm -f ./$(DEPDIR)/isl_int_sioimath.Plo
-       -rm -f ./$(DEPDIR)/isl_local.Plo
-       -rm -f ./$(DEPDIR)/isl_local_space.Plo
-       -rm -f ./$(DEPDIR)/isl_lp.Plo
-       -rm -f ./$(DEPDIR)/isl_map.Plo
-       -rm -f ./$(DEPDIR)/isl_map_list.Plo
-       -rm -f ./$(DEPDIR)/isl_map_simplify.Plo
-       -rm -f ./$(DEPDIR)/isl_map_subtract.Plo
-       -rm -f ./$(DEPDIR)/isl_map_to_basic_set.Plo
-       -rm -f ./$(DEPDIR)/isl_mat.Plo
-       -rm -f ./$(DEPDIR)/isl_morph.Plo
-       -rm -f ./$(DEPDIR)/isl_obj.Plo
-       -rm -f ./$(DEPDIR)/isl_options.Plo
-       -rm -f ./$(DEPDIR)/isl_output.Plo
-       -rm -f ./$(DEPDIR)/isl_point.Plo
-       -rm -f ./$(DEPDIR)/isl_polynomial.Plo
-       -rm -f ./$(DEPDIR)/isl_printer.Plo
-       -rm -f ./$(DEPDIR)/isl_range.Plo
-       -rm -f ./$(DEPDIR)/isl_reordering.Plo
-       -rm -f ./$(DEPDIR)/isl_sample.Plo
-       -rm -f ./$(DEPDIR)/isl_scan.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule_band.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule_constraints.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule_node.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule_read.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule_tree.Plo
-       -rm -f ./$(DEPDIR)/isl_scheduler.Plo
-       -rm -f ./$(DEPDIR)/isl_seq.Plo
-       -rm -f ./$(DEPDIR)/isl_set_list.Plo
-       -rm -f ./$(DEPDIR)/isl_set_to_ast_graft_list.Plo
-       -rm -f ./$(DEPDIR)/isl_sort.Plo
-       -rm -f ./$(DEPDIR)/isl_space.Plo
-       -rm -f ./$(DEPDIR)/isl_stream.Plo
-       -rm -f ./$(DEPDIR)/isl_stride.Plo
-       -rm -f ./$(DEPDIR)/isl_tab.Plo
-       -rm -f ./$(DEPDIR)/isl_tab_pip.Plo
-       -rm -f ./$(DEPDIR)/isl_tarjan.Plo
-       -rm -f ./$(DEPDIR)/isl_test.Po
-       -rm -f ./$(DEPDIR)/isl_test2.Po
-       -rm -f ./$(DEPDIR)/isl_test_cpp-checked-conversion.Po
-       -rm -f ./$(DEPDIR)/isl_test_cpp-checked.Po
-       -rm -f ./$(DEPDIR)/isl_test_cpp-isl_test_cpp.Po
-       -rm -f ./$(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po
-       -rm -f ./$(DEPDIR)/isl_test_imath.Po
-       -rm -f ./$(DEPDIR)/isl_test_int.Po
-       -rm -f ./$(DEPDIR)/isl_transitive_closure.Plo
-       -rm -f ./$(DEPDIR)/isl_union_map.Plo
-       -rm -f ./$(DEPDIR)/isl_val.Plo
-       -rm -f ./$(DEPDIR)/isl_val_gmp.Plo
-       -rm -f ./$(DEPDIR)/isl_val_imath.Plo
-       -rm -f ./$(DEPDIR)/isl_val_sioimath.Plo
-       -rm -f ./$(DEPDIR)/isl_vec.Plo
-       -rm -f ./$(DEPDIR)/isl_version.Plo
-       -rm -f ./$(DEPDIR)/isl_vertices.Plo
-       -rm -f ./$(DEPDIR)/mp_get_memory_functions.Plo
-       -rm -f ./$(DEPDIR)/pip.Po
-       -rm -f ./$(DEPDIR)/polyhedron_detect_equalities.Po
-       -rm -f ./$(DEPDIR)/polyhedron_minimize.Po
-       -rm -f ./$(DEPDIR)/polyhedron_remove_redundant_equalities.Po
-       -rm -f ./$(DEPDIR)/polyhedron_sample.Po
-       -rm -f ./$(DEPDIR)/polytope_scan.Po
-       -rm -f ./$(DEPDIR)/print.Plo
-       -rm -f ./$(DEPDIR)/schedule.Po
-       -rm -f ./$(DEPDIR)/schedule_cmp.Po
-       -rm -f imath_wrap/$(DEPDIR)/gmp_compat.Plo
-       -rm -f imath_wrap/$(DEPDIR)/imath.Plo
-       -rm -f imath_wrap/$(DEPDIR)/imrat.Plo
-       -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-hdr distclean-libtool distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-data-local install-nodist_pkgincludeHEADERS \
-       install-pkgconfigDATA install-pkgincludeHEADERS
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-       -rm -rf $(top_srcdir)/autom4te.cache
-               -rm -f ./$(DEPDIR)/basis_reduction_tab.Plo
-       -rm -f ./$(DEPDIR)/bound.Po
-       -rm -f ./$(DEPDIR)/cat.Po
-       -rm -f ./$(DEPDIR)/closure.Po
-       -rm -f ./$(DEPDIR)/codegen.Po
-       -rm -f ./$(DEPDIR)/dep.Po
-       -rm -f ./$(DEPDIR)/flow.Po
-       -rm -f ./$(DEPDIR)/flow_cmp.Po
-       -rm -f ./$(DEPDIR)/isl_aff.Plo
-       -rm -f ./$(DEPDIR)/isl_aff_map.Plo
-       -rm -f ./$(DEPDIR)/isl_affine_hull.Plo
-       -rm -f ./$(DEPDIR)/isl_arg.Plo
-       -rm -f ./$(DEPDIR)/isl_ast.Plo
-       -rm -f ./$(DEPDIR)/isl_ast_build.Plo
-       -rm -f ./$(DEPDIR)/isl_ast_build_expr.Plo
-       -rm -f ./$(DEPDIR)/isl_ast_codegen.Plo
-       -rm -f ./$(DEPDIR)/isl_ast_graft.Plo
-       -rm -f ./$(DEPDIR)/isl_bernstein.Plo
-       -rm -f ./$(DEPDIR)/isl_blk.Plo
-       -rm -f ./$(DEPDIR)/isl_bound.Plo
-       -rm -f ./$(DEPDIR)/isl_box.Plo
-       -rm -f ./$(DEPDIR)/isl_coalesce.Plo
-       -rm -f ./$(DEPDIR)/isl_constraint.Plo
-       -rm -f ./$(DEPDIR)/isl_convex_hull.Plo
-       -rm -f ./$(DEPDIR)/isl_ctx.Plo
-       -rm -f ./$(DEPDIR)/isl_deprecated.Plo
-       -rm -f ./$(DEPDIR)/isl_dim_map.Plo
-       -rm -f ./$(DEPDIR)/isl_equalities.Plo
-       -rm -f ./$(DEPDIR)/isl_factorization.Plo
-       -rm -f ./$(DEPDIR)/isl_farkas.Plo
-       -rm -f ./$(DEPDIR)/isl_ffs.Plo
-       -rm -f ./$(DEPDIR)/isl_flow.Plo
-       -rm -f ./$(DEPDIR)/isl_fold.Plo
-       -rm -f ./$(DEPDIR)/isl_gmp.Plo
-       -rm -f ./$(DEPDIR)/isl_hash.Plo
-       -rm -f ./$(DEPDIR)/isl_id.Plo
-       -rm -f ./$(DEPDIR)/isl_id_to_ast_expr.Plo
-       -rm -f ./$(DEPDIR)/isl_id_to_id.Plo
-       -rm -f ./$(DEPDIR)/isl_id_to_pw_aff.Plo
-       -rm -f ./$(DEPDIR)/isl_ilp.Plo
-       -rm -f ./$(DEPDIR)/isl_imath.Plo
-       -rm -f ./$(DEPDIR)/isl_input.Plo
-       -rm -f ./$(DEPDIR)/isl_int_sioimath.Plo
-       -rm -f ./$(DEPDIR)/isl_local.Plo
-       -rm -f ./$(DEPDIR)/isl_local_space.Plo
-       -rm -f ./$(DEPDIR)/isl_lp.Plo
-       -rm -f ./$(DEPDIR)/isl_map.Plo
-       -rm -f ./$(DEPDIR)/isl_map_list.Plo
-       -rm -f ./$(DEPDIR)/isl_map_simplify.Plo
-       -rm -f ./$(DEPDIR)/isl_map_subtract.Plo
-       -rm -f ./$(DEPDIR)/isl_map_to_basic_set.Plo
-       -rm -f ./$(DEPDIR)/isl_mat.Plo
-       -rm -f ./$(DEPDIR)/isl_morph.Plo
-       -rm -f ./$(DEPDIR)/isl_obj.Plo
-       -rm -f ./$(DEPDIR)/isl_options.Plo
-       -rm -f ./$(DEPDIR)/isl_output.Plo
-       -rm -f ./$(DEPDIR)/isl_point.Plo
-       -rm -f ./$(DEPDIR)/isl_polynomial.Plo
-       -rm -f ./$(DEPDIR)/isl_printer.Plo
-       -rm -f ./$(DEPDIR)/isl_range.Plo
-       -rm -f ./$(DEPDIR)/isl_reordering.Plo
-       -rm -f ./$(DEPDIR)/isl_sample.Plo
-       -rm -f ./$(DEPDIR)/isl_scan.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule_band.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule_constraints.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule_node.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule_read.Plo
-       -rm -f ./$(DEPDIR)/isl_schedule_tree.Plo
-       -rm -f ./$(DEPDIR)/isl_scheduler.Plo
-       -rm -f ./$(DEPDIR)/isl_seq.Plo
-       -rm -f ./$(DEPDIR)/isl_set_list.Plo
-       -rm -f ./$(DEPDIR)/isl_set_to_ast_graft_list.Plo
-       -rm -f ./$(DEPDIR)/isl_sort.Plo
-       -rm -f ./$(DEPDIR)/isl_space.Plo
-       -rm -f ./$(DEPDIR)/isl_stream.Plo
-       -rm -f ./$(DEPDIR)/isl_stride.Plo
-       -rm -f ./$(DEPDIR)/isl_tab.Plo
-       -rm -f ./$(DEPDIR)/isl_tab_pip.Plo
-       -rm -f ./$(DEPDIR)/isl_tarjan.Plo
-       -rm -f ./$(DEPDIR)/isl_test.Po
-       -rm -f ./$(DEPDIR)/isl_test2.Po
-       -rm -f ./$(DEPDIR)/isl_test_cpp-checked-conversion.Po
-       -rm -f ./$(DEPDIR)/isl_test_cpp-checked.Po
-       -rm -f ./$(DEPDIR)/isl_test_cpp-isl_test_cpp.Po
-       -rm -f ./$(DEPDIR)/isl_test_cpp_failed-isl_test_cpp.Po
-       -rm -f ./$(DEPDIR)/isl_test_imath.Po
-       -rm -f ./$(DEPDIR)/isl_test_int.Po
-       -rm -f ./$(DEPDIR)/isl_transitive_closure.Plo
-       -rm -f ./$(DEPDIR)/isl_union_map.Plo
-       -rm -f ./$(DEPDIR)/isl_val.Plo
-       -rm -f ./$(DEPDIR)/isl_val_gmp.Plo
-       -rm -f ./$(DEPDIR)/isl_val_imath.Plo
-       -rm -f ./$(DEPDIR)/isl_val_sioimath.Plo
-       -rm -f ./$(DEPDIR)/isl_vec.Plo
-       -rm -f ./$(DEPDIR)/isl_version.Plo
-       -rm -f ./$(DEPDIR)/isl_vertices.Plo
-       -rm -f ./$(DEPDIR)/mp_get_memory_functions.Plo
-       -rm -f ./$(DEPDIR)/pip.Po
-       -rm -f ./$(DEPDIR)/polyhedron_detect_equalities.Po
-       -rm -f ./$(DEPDIR)/polyhedron_minimize.Po
-       -rm -f ./$(DEPDIR)/polyhedron_remove_redundant_equalities.Po
-       -rm -f ./$(DEPDIR)/polyhedron_sample.Po
-       -rm -f ./$(DEPDIR)/polytope_scan.Po
-       -rm -f ./$(DEPDIR)/print.Plo
-       -rm -f ./$(DEPDIR)/schedule.Po
-       -rm -f ./$(DEPDIR)/schedule_cmp.Po
-       -rm -f imath_wrap/$(DEPDIR)/gmp_compat.Plo
-       -rm -f imath_wrap/$(DEPDIR)/imath.Plo
-       -rm -f imath_wrap/$(DEPDIR)/imrat.Plo
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-       mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES uninstall-local \
-       uninstall-nodist_pkgincludeHEADERS uninstall-pkgconfigDATA \
-       uninstall-pkgincludeHEADERS
-
-.MAKE: $(am__recursive_targets) all check check-am install install-am \
-       install-exec install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
-       am--depfiles am--refresh check check-TESTS check-am clean \
-       clean-cscope clean-generic clean-libLTLIBRARIES clean-libtool \
-       clean-noinstLIBRARIES clean-noinstPROGRAMS cscope \
-       cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
-       dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
-       dist-zip dist-zstd distcheck distclean distclean-compile \
-       distclean-generic distclean-hdr distclean-libtool \
-       distclean-tags distcleancheck distdir distuninstallcheck dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-data-local install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am \
-       install-libLTLIBRARIES install-man \
-       install-nodist_pkgincludeHEADERS install-pdf install-pdf-am \
-       install-pkgconfigDATA install-pkgincludeHEADERS install-ps \
-       install-ps-am install-strip installcheck installcheck-am \
-       installdirs installdirs-am maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-compile \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       recheck tags tags-am uninstall uninstall-am \
-       uninstall-libLTLIBRARIES uninstall-local \
-       uninstall-nodist_pkgincludeHEADERS uninstall-pkgconfigDATA \
-       uninstall-pkgincludeHEADERS
-
-.PRECIOUS: Makefile
-
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@FORCE:
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@interface/extract_interface$(BUILD_EXEEXT): FORCE
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     $(MAKE) $(AM_MAKEFLAGS) -C interface extract_interface$(BUILD_EXEEXT)
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@@HAVE_PYTHON_TRUE@  isl_test_python.py: interface/isl.py libisl.la
-
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@interface/isldlname.py: libisl.la
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     $(AM_V_GEN) $(GREP) dlname $< | $(SED) -e 's/dlname/isl_dlname/' > $@
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@interface/isl.py: interface/extract_interface$(BUILD_EXEEXT) libdep.a \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             python/isl.py.top interface/isldlname.py
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     (cat interface/isldlname.py $(srcdir)/python/isl.py.top && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             interface/extract_interface$(BUILD_EXEEXT) --language=python \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     $(includes) $(srcdir)/all.h) \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     > $@ || (rm $@ && false)
-
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@include/isl/cpp.h: interface/extract_interface$(BUILD_EXEEXT) libdep.a \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             cpp/cpp.h.top cpp/cpp.h.bot
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     $(MKDIR_P) "include/isl" && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     (cat $(srcdir)/cpp/cpp.h.top $(srcdir)/all.h && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             interface/extract_interface$(BUILD_EXEEXT) --language=cpp \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     $(includes) $(srcdir)/all.h && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             cat $(srcdir)/cpp/cpp.h.bot) \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     > $@ || (rm $@ && false)
-
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@include/isl/cpp-checked.h: interface/extract_interface$(BUILD_EXEEXT) libdep.a \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             cpp/cpp-checked.h.top cpp/cpp-checked.h.bot
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     $(MKDIR_P) "include/isl" && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     (cat $(srcdir)/cpp/cpp-checked.h.top $(srcdir)/all.h && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             interface/extract_interface$(BUILD_EXEEXT) \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     --language=cpp-checked \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     $(includes) $(srcdir)/all.h && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             cat $(srcdir)/cpp/cpp-checked.h.bot) \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     > $@ || (rm $@ && false)
-
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@include/isl/cpp-checked-conversion.h: \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             interface/extract_interface$(BUILD_EXEEXT) \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             libdep.a \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             cpp/cpp-checked-conversion.h.top \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             cpp/cpp-checked-conversion.h.bot
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     $(MKDIR_P) "include/isl" && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     (cat $(srcdir)/cpp/cpp-checked-conversion.h.top && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             interface/extract_interface$(BUILD_EXEEXT) \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     --language=cpp-checked-conversion \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     $(includes) $(srcdir)/all.h && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             cat $(srcdir)/cpp/cpp-checked-conversion.h.bot) \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     > $@ || (rm $@ && false)
-
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@include/isl/typed_cpp.h: interface/extract_interface$(BUILD_EXEEXT) \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             libdep.a cpp/typed_cpp.h.top cpp/typed_cpp.h.bot
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     $(MKDIR_P) "include/isl" && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@     (cat $(srcdir)/cpp/typed_cpp.h.top && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             interface/extract_interface$(BUILD_EXEEXT) \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     --language=template-cpp \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     $(includes) $(srcdir)/all.h && \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@             cat $(srcdir)/cpp/typed_cpp.h.bot) \
-@HAVE_CLANG_TRUE@@HAVE_CXX11_TRUE@                     > $@ || (rm $@ && false)
-
-dist-hook:
-       echo @GIT_HEAD_VERSION@ > $(distdir)/GIT_HEAD_ID
-       (cd doc; make manual.pdf)
-       cp doc/manual.pdf $(distdir)/doc/
-
-gitversion.h: @GIT_HEAD@
-       $(AM_V_GEN)echo '#define GIT_HEAD_ID "'@GIT_HEAD_VERSION@'"' > $@
-
-install-data-local: $(srcdir)/libisl-gdb.py
-       @libisl=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \
-                $(builddir)/libisl.la`; \
-       case $$libisl in \
-       '') echo Cannot find isl library name. GDB bindings not installed.;; \
-       *) echo $(INSTALL_DATA) $(srcdir)/libisl-gdb.py \
-               $(DESTDIR)$(libdir)/$$libisl-gdb.py; \
-       test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"; \
-       $(INSTALL_DATA) $(srcdir)/libisl-gdb.py \
-           $(DESTDIR)$(libdir)/$$libisl-gdb.py; \
-       esac
-
-uninstall-local:
-       @libisl=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \
-                $(builddir)/libisl.la`; \
-       if test -n "$${libisl}"; then \
-               rm -f $(DESTDIR)$(libdir)/$$libisl-gdb.py; \
-       fi
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/polly/lib/External/isl/aclocal.m4 b/polly/lib/External/isl/aclocal.m4
deleted file mode 100644 (file)
index 8791b10..0000000
+++ /dev/null
@@ -1,1433 +0,0 @@
-# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
-
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
-[m4_warning([this file was generated for autoconf 2.69.
-You have another version of autoconf.  It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-
-# ===========================================================================
-#    https://www.gnu.org/software/autoconf-archive/ax_require_defined.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_REQUIRE_DEFINED(MACRO)
-#
-# DESCRIPTION
-#
-#   AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
-#   been defined and thus are available for use.  This avoids random issues
-#   where a macro isn't expanded.  Instead the configure script emits a
-#   non-fatal:
-#
-#     ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
-#
-#   It's like AC_REQUIRE except it doesn't expand the required macro.
-#
-#   Here's an example:
-#
-#     AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
-#
-# LICENSE
-#
-#   Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved. This file is offered as-is, without any
-#   warranty.
-
-#serial 2
-
-AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
-  m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
-])dnl AX_REQUIRE_DEFINED
-
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.16'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.16.3], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too.  Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.3])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
-# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is '.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-# Expand $ac_aux_dir to an absolute path.
-am_aux_dir=`cd "$ac_aux_dir" && pwd`
-])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
-      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
-      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                    [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  am__universal=false
-  m4_case([$1], [CC],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac],
-    [CXX],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac])
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
-  [--enable-dependency-tracking],
-  [do not reject slow dependency extractors])
-AS_HELP_STRING(
-  [--disable-dependency-tracking],
-  [speeds up one-time build])])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  # TODO: see whether this extra hack can be removed once we start
-  # requiring Autoconf 2.70 or later.
-  AS_CASE([$CONFIG_FILES],
-          [*\'*], [eval set x "$CONFIG_FILES"],
-          [*], [set x $CONFIG_FILES])
-  shift
-  # Used to flag and report bootstrapping failures.
-  am_rc=0
-  for am_mf
-  do
-    # Strip MF so we end up with the name of the file.
-    am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile which includes
-    # dependency-tracking related rules and includes.
-    # Grep'ing the whole file directly is not great: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
-      || continue
-    am_dirpart=`AS_DIRNAME(["$am_mf"])`
-    am_filepart=`AS_BASENAME(["$am_mf"])`
-    AM_RUN_LOG([cd "$am_dirpart" \
-      && sed -e '/# am--include-marker/d' "$am_filepart" \
-        | $MAKE -f - am--depfiles]) || am_rc=$?
-  done
-  if test $am_rc -ne 0; then
-    AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
-    for automatic dependency tracking.  If GNU make was not used, consider
-    re-running the configure script with MAKE="gmake" (or whatever is
-    necessary).  You can also try re-running configure with the
-    '--disable-dependency-tracking' option to at least be able to build
-    the package (albeit without support for automatic dependency tracking).])
-  fi
-  AS_UNSET([am_dirpart])
-  AS_UNSET([am_filepart])
-  AS_UNSET([am_mf])
-  AS_UNSET([am_rc])
-  rm -f conftest-deps.mk
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking is enabled.
-# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
-# order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
-
-dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
-m4_define([AC_PROG_CC],
-m4_defn([AC_PROG_CC])
-[_AM_PROG_CC_C_O
-])
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.65])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
-             [$0: two- and three-arguments forms are deprecated.])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(
-  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-  [ok:ok],,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target (and possibly the TAP driver).  The
-# system "awk" is bad on some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-                            [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-                 [_AM_DEPENDENCIES([CC])],
-                 [m4_define([AC_PROG_CC],
-                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                 [_AM_DEPENDENCIES([CXX])],
-                 [m4_define([AC_PROG_CXX],
-                            m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                 [_AM_DEPENDENCIES([OBJC])],
-                 [m4_define([AC_PROG_OBJC],
-                            m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-                 [_AM_DEPENDENCIES([OBJCXX])],
-                 [m4_define([AC_PROG_OBJCXX],
-                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
-])
-AC_REQUIRE([AM_SILENT_RULES])dnl
-dnl The testsuite driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <https://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
-  fi
-fi
-dnl The trailing newline in this macro's definition is deliberate, for
-dnl backward compatibility and to allow trailing 'dnl'-style comments
-dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
-])
-
-dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-AC_SUBST([install_sh])])
-
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes.                 -*- Autoconf -*-
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check whether make has an 'include' directive that can support all
-# the idioms we need for our automatic dependency tracking code.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
-cat > confinc.mk << 'END'
-am__doit:
-       @echo this is the am__doit target >confinc.out
-.PHONY: am__doit
-END
-am__include="#"
-am__quote=
-# BSD make does it like this.
-echo '.include "confinc.mk" # ignored' > confmf.BSD
-# Other make implementations (GNU, Solaris 10, AIX) do it like this.
-echo 'include confinc.mk # ignored' > confmf.GNU
-_am_result=no
-for s in GNU BSD; do
-  AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
-  AS_CASE([$?:`cat confinc.out 2>/dev/null`],
-      ['0:this is the am__doit target'],
-      [AS_CASE([$s],
-          [BSD], [am__include='.include' am__quote='"'],
-          [am__include='include' am__quote=''])])
-  if test "$am__include" != "#"; then
-    _am_result="yes ($s style)"
-    break
-  fi
-done
-rm -f confinc.* confmf.*
-AC_MSG_RESULT([${_am_result}])
-AC_SUBST([am__include])])
-AC_SUBST([am__quote])])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it is modern enough.
-# If it is, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
-  MISSING="\${SHELL} '$am_aux_dir/missing'"
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  AC_MSG_WARN(['missing' script is too old or missing])
-fi
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# --------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_CC_C_O
-# ---------------
-# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
-# to automatically call this.
-AC_DEFUN([_AM_PROG_CC_C_O],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-AC_LANG_PUSH([C])dnl
-AC_CACHE_CHECK(
-  [whether $CC understands -c and -o together],
-  [am_cv_prog_cc_c_o],
-  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i])
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-AC_LANG_POP([C])])
-
-# For backward compatibility.
-AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-# ---------------------------------------------------------------------------
-# Adds support for distributing Python modules and packages.  To
-# install modules, copy them to $(pythondir), using the python_PYTHON
-# automake variable.  To install a package with the same name as the
-# automake package, install to $(pkgpythondir), or use the
-# pkgpython_PYTHON automake variable.
-#
-# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
-# locations to install python extension modules (shared libraries).
-# Another macro is required to find the appropriate flags to compile
-# extension modules.
-#
-# If your package is configured with a different prefix to python,
-# users will have to add the install directory to the PYTHONPATH
-# environment variable, or create a .pth file (see the python
-# documentation for details).
-#
-# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
-# cause an error if the version of python installed on the system
-# doesn't meet the requirement.  MINIMUM-VERSION should consist of
-# numbers and dots only.
-AC_DEFUN([AM_PATH_PYTHON],
- [
-  dnl Find a Python interpreter.  Python versions prior to 2.0 are not
-  dnl supported. (2.0 was released on October 16, 2000).
-  m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-[python python2 python3 dnl
- python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 dnl
- python3.2 python3.1 python3.0 dnl
- python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 dnl
- python2.0])
-
-  AC_ARG_VAR([PYTHON], [the Python interpreter])
-
-  m4_if([$1],[],[
-    dnl No version check is needed.
-    # Find any Python interpreter.
-    if test -z "$PYTHON"; then
-      AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
-    fi
-    am_display_PYTHON=python
-  ], [
-    dnl A version check is needed.
-    if test -n "$PYTHON"; then
-      # If the user set $PYTHON, use it and don't search something else.
-      AC_MSG_CHECKING([whether $PYTHON version is >= $1])
-      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
-                             [AC_MSG_RESULT([yes])],
-                             [AC_MSG_RESULT([no])
-                              AC_MSG_ERROR([Python interpreter is too old])])
-      am_display_PYTHON=$PYTHON
-    else
-      # Otherwise, try each interpreter until we find one that satisfies
-      # VERSION.
-      AC_CACHE_CHECK([for a Python interpreter with version >= $1],
-       [am_cv_pathless_PYTHON],[
-       for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
-         test "$am_cv_pathless_PYTHON" = none && break
-         AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
-       done])
-      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-       PYTHON=:
-      else
-        AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
-      fi
-      am_display_PYTHON=$am_cv_pathless_PYTHON
-    fi
-  ])
-
-  if test "$PYTHON" = :; then
-  dnl Run any user-specified action, or abort.
-    m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
-  else
-
-  dnl Query Python for its version number.  Although site.py simply uses
-  dnl sys.version[:3], printing that failed with Python 3.10, since the
-  dnl trailing zero was eliminated. So now we output just the major
-  dnl and minor version numbers, as numbers. Apparently the tertiary
-  dnl version is not of interest.
-
-  AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
-    [am_cv_python_version=`$PYTHON -c "import sys; print('%u.%u' % sys.version_info[[:2]])"`])
-  AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
-
-  dnl Use the values of $prefix and $exec_prefix for the corresponding
-  dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX.  These are made
-  dnl distinct variables so they can be overridden if need be.  However,
-  dnl general consensus is that you shouldn't need this ability.
-
-  AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
-  AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
-
-  dnl At times (like when building shared libraries) you may want
-  dnl to know which OS platform Python thinks this is.
-
-  AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
-    [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
-  AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
-
-  # Just factor out some code duplication.
-  am_python_setup_sysconfig="\
-import sys
-# Prefer sysconfig over distutils.sysconfig, for better compatibility
-# with python 3.x.  See automake bug#10227.
-try:
-    import sysconfig
-except ImportError:
-    can_use_sysconfig = 0
-else:
-    can_use_sysconfig = 1
-# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
-# <https://github.com/pypa/virtualenv/issues/118>
-try:
-    from platform import python_implementation
-    if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
-        can_use_sysconfig = 0
-except ImportError:
-    pass"
-
-  dnl Set up 4 directories:
-
-  dnl pythondir -- where to install python scripts.  This is the
-  dnl   site-packages directory, not the python standard library
-  dnl   directory like in previous automake betas.  This behavior
-  dnl   is more consistent with lispdir.m4 for example.
-  dnl Query distutils for this directory.
-  AC_CACHE_CHECK([for $am_display_PYTHON script directory],
-    [am_cv_python_pythondir],
-    [if test "x$prefix" = xNONE
-     then
-       am_py_prefix=$ac_default_prefix
-     else
-       am_py_prefix=$prefix
-     fi
-     am_cv_python_pythondir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pythondir in
-     $am_py_prefix*)
-       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
-       ;;
-     *)
-       case $am_py_prefix in
-         /usr|/System*) ;;
-         *)
-         am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-         ;;
-       esac
-       ;;
-     esac
-    ])
-  AC_SUBST([pythondir], [$am_cv_python_pythondir])
-
-  dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
-  dnl   PYTHON_SITE_PACKAGE in previous betas, but this naming is
-  dnl   more consistent with the rest of automake.
-
-  AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
-
-  dnl pyexecdir -- directory for installing python extension modules
-  dnl   (shared libraries)
-  dnl Query distutils for this directory.
-  AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
-    [am_cv_python_pyexecdir],
-    [if test "x$exec_prefix" = xNONE
-     then
-       am_py_exec_prefix=$am_py_prefix
-     else
-       am_py_exec_prefix=$exec_prefix
-     fi
-     am_cv_python_pyexecdir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pyexecdir in
-     $am_py_exec_prefix*)
-       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
-       ;;
-     *)
-       case $am_py_exec_prefix in
-         /usr|/System*) ;;
-         *)
-          am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-          ;;
-       esac
-       ;;
-     esac
-    ])
-  AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
-
-  dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
-
-  AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
-
-  dnl Run any user-specified action.
-  $2
-  fi
-
-])
-
-
-# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
-# ---------------------------------------------------------------------------
-# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
-# Run ACTION-IF-FALSE otherwise.
-# This test uses sys.hexversion instead of the string equivalent (first
-# word of sys.version), in order to cope with versions such as 2.2c1.
-# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
-AC_DEFUN([AM_PYTHON_CHECK_VERSION],
- [prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
-sys.exit(sys.hexversion < minverhex)"
-  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_RUN_LOG(COMMAND)
-# -------------------
-# Run COMMAND, save the exit status in ac_status, and log it.
-# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
-AC_DEFUN([AM_RUN_LOG],
-[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   (exit $ac_status); }])
-
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[[\\\"\#\$\&\'\`$am_lf]]*)
-    AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
-  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
-    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$[*]" = "X"; then
-       # -L didn't work.
-       set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$[*]" != "X $srcdir/configure conftest.file" \
-       && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-       # If neither matched, then we have a broken ls.  This can happen
-       # if, for instance, CONFIG_SHELL is bash and it inherits a
-       # broken ls alias from the environment.  This has actually
-       # happened.  Such a system could not be considered "sane".
-       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment])
-     fi
-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
-  [AC_MSG_CHECKING([that generated files are newer than configure])
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
-
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SILENT_RULES([DEFAULT])
-# --------------------------
-# Enable less verbose build rules; with the default set to DEFAULT
-# ("yes" being less verbose, "no" or empty being verbose).
-AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules], [dnl
-AS_HELP_STRING(
-  [--enable-silent-rules],
-  [less verbose build output (undo: "make V=1")])
-AS_HELP_STRING(
-  [--disable-silent-rules],
-  [verbose build output (undo: "make V=0")])dnl
-])
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
-dnl
-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
-dnl do not support nested variable expansions.
-dnl See automake bug#9928 and bug#10237.
-am_make=${MAKE-make}
-AC_CACHE_CHECK([whether $am_make supports nested variables],
-   [am_cv_make_support_nested_variables],
-   [if AS_ECHO([['TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi])
-if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
-  AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AC_SUBST([AM_V])dnl
-AM_SUBST_NOTMAKE([AM_V])dnl
-AC_SUBST([AM_DEFAULT_V])dnl
-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor 'install' (even GNU) is that you can't
-# specify the program used to strip binaries.  This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in "make install-strip", and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# --------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball.                            -*- Autoconf -*-
-
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of 'v7', 'ustar', or 'pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-#     tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-#     $(am__untar) < result.tar
-#
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-
-m4_if([$1], [v7],
-  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-
-  [m4_case([$1],
-    [ustar],
-     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
-      # There is notably a 21 bits limit for the UID and the GID.  In fact,
-      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
-      # and bug#13588).
-      am_max_uid=2097151 # 2^21 - 1
-      am_max_gid=$am_max_uid
-      # The $UID and $GID variables are not portable, so we need to resort
-      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
-      # below are definitely unexpected, so allow the users to see them
-      # (that is, avoid stderr redirection).
-      am_uid=`id -u || echo unknown`
-      am_gid=`id -g || echo unknown`
-      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
-      if test $am_uid -le $am_max_uid; then
-         AC_MSG_RESULT([yes])
-      else
-         AC_MSG_RESULT([no])
-         _am_tools=none
-      fi
-      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
-      if test $am_gid -le $am_max_gid; then
-         AC_MSG_RESULT([yes])
-      else
-        AC_MSG_RESULT([no])
-        _am_tools=none
-      fi],
-
-  [pax],
-    [],
-
-  [m4_fatal([Unknown tar format])])
-
-  AC_MSG_CHECKING([how to create a $1 tar archive])
-
-  # Go ahead even if we have the value already cached.  We do so because we
-  # need to set the values for the 'am__tar' and 'am__untar' variables.
-  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
-
-  for _am_tool in $_am_tools; do
-    case $_am_tool in
-    gnutar)
-      for _am_tar in tar gnutar gtar; do
-        AM_RUN_LOG([$_am_tar --version]) && break
-      done
-      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-      am__untar="$_am_tar -xf -"
-      ;;
-    plaintar)
-      # Must skip GNU tar: if it does not support --format= it doesn't create
-      # ustar tarball either.
-      (tar --version) >/dev/null 2>&1 && continue
-      am__tar='tar chf - "$$tardir"'
-      am__tar_='tar chf - "$tardir"'
-      am__untar='tar xf -'
-      ;;
-    pax)
-      am__tar='pax -L -x $1 -w "$$tardir"'
-      am__tar_='pax -L -x $1 -w "$tardir"'
-      am__untar='pax -r'
-      ;;
-    cpio)
-      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-      am__untar='cpio -i -H $1 -d'
-      ;;
-    none)
-      am__tar=false
-      am__tar_=false
-      am__untar=false
-      ;;
-    esac
-
-    # If the value was cached, stop now.  We just wanted to have am__tar
-    # and am__untar set.
-    test -n "${am_cv_prog_tar_$1}" && break
-
-    # tar/untar a dummy directory, and stop if the command works.
-    rm -rf conftest.dir
-    mkdir conftest.dir
-    echo GrepMe > conftest.dir/file
-    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-    rm -rf conftest.dir
-    if test -s conftest.tar; then
-      AM_RUN_LOG([$am__untar <conftest.tar])
-      AM_RUN_LOG([cat conftest.dir/file])
-      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-    fi
-  done
-  rm -rf conftest.dir
-
-  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
-m4_include([m4/ax_c___attribute__.m4])
-m4_include([m4/ax_cc_maxopt.m4])
-m4_include([m4/ax_check_compiler_flags.m4])
-m4_include([m4/ax_compiler_vendor.m4])
-m4_include([m4/ax_create_pkgconfig_info.m4])
-m4_include([m4/ax_create_stdint_h.m4])
-m4_include([m4/ax_cxx_compile_stdcxx.m4])
-m4_include([m4/ax_cxx_compile_stdcxx_11.m4])
-m4_include([m4/ax_cxx_compile_stdcxx_11_no_override.m4])
-m4_include([m4/ax_detect_git_head.m4])
-m4_include([m4/ax_detect_gmp.m4])
-m4_include([m4/ax_detect_imath.m4])
-m4_include([m4/ax_gcc_archflag.m4])
-m4_include([m4/ax_gcc_warn_unused_result.m4])
-m4_include([m4/ax_gcc_x86_cpuid.m4])
-m4_include([m4/ax_prog_cc_for_build.m4])
-m4_include([m4/ax_set_warning_flags.m4])
-m4_include([m4/ax_submodule.m4])
-m4_include([m4/libtool.m4])
-m4_include([m4/ltoptions.m4])
-m4_include([m4/ltsugar.m4])
-m4_include([m4/ltversion.m4])
-m4_include([m4/lt~obsolete.m4])
diff --git a/polly/lib/External/isl/compile b/polly/lib/External/isl/compile
deleted file mode 100755 (executable)
index 23fcba0..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-#! /bin/sh
-# Wrapper for compilers which do not understand '-c -o'.
-
-scriptversion=2018-03-07.03; # UTC
-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey@cygnus.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-nl='
-'
-
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent tools from complaining about whitespace usage.
-IFS=" ""       $nl"
-
-file_conv=
-
-# func_file_conv build_file lazy
-# Convert a $build file to $host form and store it in $file
-# Currently only supports Windows hosts. If the determined conversion
-# type is listed in (the comma separated) LAZY, no conversion will
-# take place.
-func_file_conv ()
-{
-  file=$1
-  case $file in
-    / | /[!/]*) # absolute file, and not a UNC file
-      if test -z "$file_conv"; then
-       # lazily determine how to convert abs files
-       case `uname -s` in
-         MINGW*)
-           file_conv=mingw
-           ;;
-         CYGWIN* | MSYS*)
-           file_conv=cygwin
-           ;;
-         *)
-           file_conv=wine
-           ;;
-       esac
-      fi
-      case $file_conv/,$2, in
-       *,$file_conv,*)
-         ;;
-       mingw/*)
-         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
-         ;;
-       cygwin/* | msys/*)
-         file=`cygpath -m "$file" || echo "$file"`
-         ;;
-       wine/*)
-         file=`winepath -w "$file" || echo "$file"`
-         ;;
-      esac
-      ;;
-  esac
-}
-
-# func_cl_dashL linkdir
-# Make cl look for libraries in LINKDIR
-func_cl_dashL ()
-{
-  func_file_conv "$1"
-  if test -z "$lib_path"; then
-    lib_path=$file
-  else
-    lib_path="$lib_path;$file"
-  fi
-  linker_opts="$linker_opts -LIBPATH:$file"
-}
-
-# func_cl_dashl library
-# Do a library search-path lookup for cl
-func_cl_dashl ()
-{
-  lib=$1
-  found=no
-  save_IFS=$IFS
-  IFS=';'
-  for dir in $lib_path $LIB
-  do
-    IFS=$save_IFS
-    if $shared && test -f "$dir/$lib.dll.lib"; then
-      found=yes
-      lib=$dir/$lib.dll.lib
-      break
-    fi
-    if test -f "$dir/$lib.lib"; then
-      found=yes
-      lib=$dir/$lib.lib
-      break
-    fi
-    if test -f "$dir/lib$lib.a"; then
-      found=yes
-      lib=$dir/lib$lib.a
-      break
-    fi
-  done
-  IFS=$save_IFS
-
-  if test "$found" != yes; then
-    lib=$lib.lib
-  fi
-}
-
-# func_cl_wrapper cl arg...
-# Adjust compile command to suit cl
-func_cl_wrapper ()
-{
-  # Assume a capable shell
-  lib_path=
-  shared=:
-  linker_opts=
-  for arg
-  do
-    if test -n "$eat"; then
-      eat=
-    else
-      case $1 in
-       -o)
-         # configure might choose to run compile as 'compile cc -o foo foo.c'.
-         eat=1
-         case $2 in
-           *.o | *.[oO][bB][jJ])
-             func_file_conv "$2"
-             set x "$@" -Fo"$file"
-             shift
-             ;;
-           *)
-             func_file_conv "$2"
-             set x "$@" -Fe"$file"
-             shift
-             ;;
-         esac
-         ;;
-       -I)
-         eat=1
-         func_file_conv "$2" mingw
-         set x "$@" -I"$file"
-         shift
-         ;;
-       -I*)
-         func_file_conv "${1#-I}" mingw
-         set x "$@" -I"$file"
-         shift
-         ;;
-       -l)
-         eat=1
-         func_cl_dashl "$2"
-         set x "$@" "$lib"
-         shift
-         ;;
-       -l*)
-         func_cl_dashl "${1#-l}"
-         set x "$@" "$lib"
-         shift
-         ;;
-       -L)
-         eat=1
-         func_cl_dashL "$2"
-         ;;
-       -L*)
-         func_cl_dashL "${1#-L}"
-         ;;
-       -static)
-         shared=false
-         ;;
-       -Wl,*)
-         arg=${1#-Wl,}
-         save_ifs="$IFS"; IFS=','
-         for flag in $arg; do
-           IFS="$save_ifs"
-           linker_opts="$linker_opts $flag"
-         done
-         IFS="$save_ifs"
-         ;;
-       -Xlinker)
-         eat=1
-         linker_opts="$linker_opts $2"
-         ;;
-       -*)
-         set x "$@" "$1"
-         shift
-         ;;
-       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
-         func_file_conv "$1"
-         set x "$@" -Tp"$file"
-         shift
-         ;;
-       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
-         func_file_conv "$1" mingw
-         set x "$@" "$file"
-         shift
-         ;;
-       *)
-         set x "$@" "$1"
-         shift
-         ;;
-      esac
-    fi
-    shift
-  done
-  if test -n "$linker_opts"; then
-    linker_opts="-link$linker_opts"
-  fi
-  exec "$@" $linker_opts
-  exit 1
-}
-
-eat=
-
-case $1 in
-  '')
-     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: compile [--help] [--version] PROGRAM [ARGS]
-
-Wrapper for compilers which do not understand '-c -o'.
-Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
-arguments, and rename the output as expected.
-
-If you are trying to build a whole package this is not the
-right script to run: please start by reading the file 'INSTALL'.
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "compile $scriptversion"
-    exit $?
-    ;;
-  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
-  icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
-    func_cl_wrapper "$@"      # Doesn't return...
-    ;;
-esac
-
-ofile=
-cfile=
-
-for arg
-do
-  if test -n "$eat"; then
-    eat=
-  else
-    case $1 in
-      -o)
-       # configure might choose to run compile as 'compile cc -o foo foo.c'.
-       # So we strip '-o arg' only if arg is an object.
-       eat=1
-       case $2 in
-         *.o | *.obj)
-           ofile=$2
-           ;;
-         *)
-           set x "$@" -o "$2"
-           shift
-           ;;
-       esac
-       ;;
-      *.c)
-       cfile=$1
-       set x "$@" "$1"
-       shift
-       ;;
-      *)
-       set x "$@" "$1"
-       shift
-       ;;
-    esac
-  fi
-  shift
-done
-
-if test -z "$ofile" || test -z "$cfile"; then
-  # If no '-o' option was seen then we might have been invoked from a
-  # pattern rule where we don't need one.  That is ok -- this is a
-  # normal compilation that the losing compiler can handle.  If no
-  # '.c' file was seen then we are probably linking.  That is also
-  # ok.
-  exec "$@"
-fi
-
-# Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
-
-# Create the lock directory.
-# Note: use '[/\\:.-]' here to ensure that we don't use the same name
-# that we are using for the .o file.  Also, base the name on the expected
-# object file name, since that is what matters with a parallel build.
-lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
-while true; do
-  if mkdir "$lockdir" >/dev/null 2>&1; then
-    break
-  fi
-  sleep 1
-done
-# FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir '$lockdir'; exit 1" 1 2 15
-
-# Run the compile.
-"$@"
-ret=$?
-
-if test -f "$cofile"; then
-  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
-  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
-fi
-
-rmdir "$lockdir"
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/isl/config.guess b/polly/lib/External/isl/config.guess
deleted file mode 100755 (executable)
index 0fc11ed..0000000
+++ /dev/null
@@ -1,1686 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2020 Free Software Foundation, Inc.
-
-timestamp='2020-11-07'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
-#
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-#
-# Please send patches to <config-patches@gnu.org>.
-
-
-me=$(echo "$0" | sed -e 's,.*/,,')
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2020 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-tmp=
-# shellcheck disable=SC2172
-trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
-
-set_cc_for_build() {
-    # prevent multiple calls if $tmp is already set
-    test "$tmp" && return 0
-    : "${TMPDIR=/tmp}"
-    # shellcheck disable=SC2039
-    { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } ||
-       { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
-       { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
-       { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
-    dummy=$tmp/dummy
-    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
-       ,,)    echo "int x;" > "$dummy.c"
-              for driver in cc gcc c89 c99 ; do
-                  if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
-                      CC_FOR_BUILD="$driver"
-                      break
-                  fi
-              done
-              if test x"$CC_FOR_BUILD" = x ; then
-                  CC_FOR_BUILD=no_compiler_found
-              fi
-              ;;
-       ,,*)   CC_FOR_BUILD=$CC ;;
-       ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-    esac
-}
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if test -f /.attbin/uname ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
-UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
-UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
-UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
-
-case "$UNAME_SYSTEM" in
-Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
-
-       set_cc_for_build
-       cat <<-EOF > "$dummy.c"
-       #include <features.h>
-       #if defined(__UCLIBC__)
-       LIBC=uclibc
-       #elif defined(__dietlibc__)
-       LIBC=dietlibc
-       #else
-       #include <stdarg.h>
-       #ifdef __DEFINED_va_list
-       LIBC=musl
-       #else
-       LIBC=gnu
-       #endif
-       #endif
-       EOF
-       eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
-       ;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
-    *:NetBSD:*:*)
-       # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-       # switched to ELF, *-*-netbsd* would select the old
-       # object file format.  This provides both forward
-       # compatibility and a consistent mechanism for selecting the
-       # object file format.
-       #
-       # Note: NetBSD doesn't particularly care about the vendor
-       # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
-           "/sbin/$sysctl" 2>/dev/null || \
-           "/usr/sbin/$sysctl" 2>/dev/null || \
-           echo unknown))
-       case "$UNAME_MACHINE_ARCH" in
-           aarch64eb) machine=aarch64_be-unknown ;;
-           armeb) machine=armeb-unknown ;;
-           arm*) machine=arm-unknown ;;
-           sh3el) machine=shl-unknown ;;
-           sh3eb) machine=sh-unknown ;;
-           sh5el) machine=sh5le-unknown ;;
-           earmv*)
-               arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,')
-               endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p')
-               machine="${arch}${endian}"-unknown
-               ;;
-           *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
-       esac
-       # The Operating System including object format, if it has switched
-       # to ELF recently (or will in the future) and ABI.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               os=netbsdelf
-               ;;
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               set_cc_for_build
-               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
-               then
-                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-                   # Return netbsd for either.  FIX?
-                   os=netbsd
-               else
-                   os=netbsdelf
-               fi
-               ;;
-           *)
-               os=netbsd
-               ;;
-       esac
-       # Determine ABI tags.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-               abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
-               ;;
-       esac
-       # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "$UNAME_VERSION" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
-               ;;
-       esac
-       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-       # contains redundant information, the shorter form:
-       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "$machine-${os}${release}${abi-}"
-       exit ;;
-    *:Bitrig:*:*)
-       UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
-       echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
-       exit ;;
-    *:OpenBSD:*:*)
-       UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
-       echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
-       exit ;;
-    *:LibertyBSD:*:*)
-       UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
-       echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
-       exit ;;
-    *:MidnightBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
-       exit ;;
-    *:ekkoBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
-       exit ;;
-    *:SolidBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
-       exit ;;
-    *:OS108:*:*)
-       echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
-       exit ;;
-    macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:MirBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:Sortix:*:*)
-       echo "$UNAME_MACHINE"-unknown-sortix
-       exit ;;
-    *:Twizzler:*:*)
-       echo "$UNAME_MACHINE"-unknown-twizzler
-       exit ;;
-    *:Redox:*:*)
-       echo "$UNAME_MACHINE"-unknown-redox
-       exit ;;
-    mips:OSF1:*.*)
-       echo mips-dec-osf1
-       exit ;;
-    alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
-               UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
-               ;;
-       *5.*)
-               UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1)
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE=alpha ;;
-           "EV5 (21164)")
-               UNAME_MACHINE=alphaev5 ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE=alphaev56 ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE=alphapca56 ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE=alphapca57 ;;
-           "EV6 (21264)")
-               UNAME_MACHINE=alphaev6 ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE=alphaev67 ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE=alphaev69 ;;
-           "EV7 (21364)")
-               UNAME_MACHINE=alphaev7 ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE=alphaev79 ;;
-       esac
-       # A Pn.n version is a patched version.
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)"
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-amigaos
-       exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-morphos
-       exit ;;
-    *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
-    *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix"$UNAME_RELEASE"
-       exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "$( (/bin/universe) 2>/dev/null)" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
-    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-       case $(/usr/bin/uname -p) in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
-    s390x:SunOS:*:*)
-       echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
-       exit ;;
-    sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
-       exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux"$UNAME_RELEASE"
-       exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       set_cc_for_build
-       SUN_ARCH=i386
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if test "$CC_FOR_BUILD" != no_compiler_found; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH=x86_64
-           fi
-       fi
-       echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    sun4*:SunOS:*:*)
-       case "$(/usr/bin/arch -k)" in
-           Series*|S4*)
-               UNAME_RELEASE=$(uname -v)
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
-       exit ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos"$UNAME_RELEASE"
-       exit ;;
-    sun*:*:4.2BSD:*)
-       UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
-       test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
-       case "$(/bin/arch)" in
-           sun3)
-               echo m68k-sun-sunos"$UNAME_RELEASE"
-               ;;
-           sun4)
-               echo sparc-sun-sunos"$UNAME_RELEASE"
-               ;;
-       esac
-       exit ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos"$UNAME_RELEASE"
-       exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint"$UNAME_RELEASE"
-       exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint"$UNAME_RELEASE"
-       exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint"$UNAME_RELEASE"
-       exit ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix"$UNAME_RELEASE"
-       exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       set_cc_for_build
-       sed 's/^        //' << EOF > "$dummy.c"
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
-         dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
-         SYSTEM_NAME=$("$dummy" "$dummyarg") &&
-           { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos"$UNAME_RELEASE"
-       exit ;;
-    Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
-    AViiON:dgux:*:*)
-       # DG/UX returns AViiON for all architectures
-       UNAME_PROCESSOR=$(/usr/bin/uname -p)
-       if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
-       then
-           if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
-              test "$TARGET_BINARY_INTERFACE"x = x
-           then
-               echo m88k-dg-dgux"$UNAME_RELEASE"
-           else
-               echo m88k-dg-dguxbcs"$UNAME_RELEASE"
-           fi
-       else
-           echo i586-dg-dgux"$UNAME_RELEASE"
-       fi
-       exit ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
-       exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'$(uname -s)'" gives 'AIX '
-    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
-    ia64:AIX:*:*)
-       if test -x /usr/bin/oslevel ; then
-               IBM_REV=$(/usr/bin/oslevel)
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               set_cc_for_build
-               sed 's/^                //' << EOF > "$dummy.c"
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
-               then
-                       echo "$SYSTEM_NAME"
-               else
-                       echo rs6000-ibm-aix3.2.5
-               fi
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit ;;
-    *:AIX:*:[4567])
-       IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
-       if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if test -x /usr/bin/lslpp ; then
-               IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc |
-                          awk -F: '{ print $3 }' | sed s/[0-9]*$/0/)
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
-    9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
-       case "$UNAME_MACHINE" in
-           9000/31?)            HP_ARCH=m68000 ;;
-           9000/[34]??)         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9])
-               if test -x /usr/bin/getconf; then
-                   sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
-                   sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
-                   case "$sc_cpu_version" in
-                     523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
-                     532)                      # CPU_PA_RISC2_0
-                       case "$sc_kernel_bits" in
-                         32) HP_ARCH=hppa2.0n ;;
-                         64) HP_ARCH=hppa2.0w ;;
-                         '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
-                       esac ;;
-                   esac
-               fi
-               if test "$HP_ARCH" = ""; then
-                   set_cc_for_build
-                   sed 's/^            //' << EOF > "$dummy.c"
-
-               #define _HPUX_SOURCE
-               #include <stdlib.h>
-               #include <unistd.h>
-
-               int main ()
-               {
-               #if defined(_SC_KERNEL_BITS)
-                   long bits = sysconf(_SC_KERNEL_BITS);
-               #endif
-                   long cpu  = sysconf (_SC_CPU_VERSION);
-
-                   switch (cpu)
-                       {
-                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-                       case CPU_PA_RISC2_0:
-               #if defined(_SC_KERNEL_BITS)
-                           switch (bits)
-                               {
-                               case 64: puts ("hppa2.0w"); break;
-                               case 32: puts ("hppa2.0n"); break;
-                               default: puts ("hppa2.0"); break;
-                               } break;
-               #else  /* !defined(_SC_KERNEL_BITS) */
-                           puts ("hppa2.0"); break;
-               #endif
-                       default: puts ("hppa1.0"); break;
-                       }
-                   exit (0);
-               }
-EOF
-                   (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy")
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
-               fi ;;
-       esac
-       if test "$HP_ARCH" = hppa2.0w
-       then
-           set_cc_for_build
-
-           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-           # generating 64-bit code.  GNU and HP use different nomenclature:
-           #
-           # $ CC_FOR_BUILD=cc ./config.guess
-           # => hppa2.0w-hp-hpux11.23
-           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-           # => hppa64-hp-hpux11.23
-
-           if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
-           then
-               HP_ARCH=hppa2.0w
-           else
-               HP_ARCH=hppa64
-           fi
-       fi
-       echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
-       exit ;;
-    ia64:HP-UX:*:*)
-       HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
-       echo ia64-hp-hpux"$HPUX_REV"
-       exit ;;
-    3050*:HI-UX:*:*)
-       set_cc_for_build
-       sed 's/^        //' << EOF > "$dummy.c"
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
-               { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
-       echo hppa1.1-hp-bsd
-       exit ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
-       echo hppa1.1-hp-osf
-       exit ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
-    i*86:OSF1:*:*)
-       if test -x /usr/sbin/sysversion ; then
-           echo "$UNAME_MACHINE"-unknown-osf1mk
-       else
-           echo "$UNAME_MACHINE"-unknown-osf1
-       fi
-       exit ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-             -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
-       FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
-       FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/')
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
-       FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/')
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
-       exit ;;
-    sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    *:BSD/OS:*:*)
-       echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    arm:FreeBSD:*:*)
-       UNAME_PROCESSOR=$(uname -p)
-       set_cc_for_build
-       if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_PCS_VFP
-       then
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
-       else
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
-       fi
-       exit ;;
-    *:FreeBSD:*:*)
-       UNAME_PROCESSOR=$(/usr/bin/uname -p)
-       case "$UNAME_PROCESSOR" in
-           amd64)
-               UNAME_PROCESSOR=x86_64 ;;
-           i386)
-               UNAME_PROCESSOR=i586 ;;
-       esac
-       echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
-       exit ;;
-    i*:CYGWIN*:*)
-       echo "$UNAME_MACHINE"-pc-cygwin
-       exit ;;
-    *:MINGW64*:*)
-       echo "$UNAME_MACHINE"-pc-mingw64
-       exit ;;
-    *:MINGW*:*)
-       echo "$UNAME_MACHINE"-pc-mingw32
-       exit ;;
-    *:MSYS*:*)
-       echo "$UNAME_MACHINE"-pc-msys
-       exit ;;
-    i*:PW*:*)
-       echo "$UNAME_MACHINE"-pc-pw32
-       exit ;;
-    *:Interix*:*)
-       case "$UNAME_MACHINE" in
-           x86)
-               echo i586-pc-interix"$UNAME_RELEASE"
-               exit ;;
-           authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-           IA64)
-               echo ia64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-       esac ;;
-    i*:UWIN*:*)
-       echo "$UNAME_MACHINE"-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-pc-cygwin
-       exit ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    *:GNU:*:*)
-       # the GNU system
-       echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')"
-       exit ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
-       exit ;;
-    *:Minix:*:*)
-       echo "$UNAME_MACHINE"-unknown-minix
-       exit ;;
-    aarch64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    aarch64_be:Linux:*:*)
-       UNAME_MACHINE=aarch64_be
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    alpha:Linux:*:*)
-       case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-       esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arm*:Linux:*:*)
-       set_cc_for_build
-       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_EABI__
-       then
-           echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       else
-           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep -q __ARM_PCS_VFP
-           then
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
-           else
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
-           fi
-       fi
-       exit ;;
-    avr32*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    cris:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    crisv32:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    e2k:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    frv:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    hexagon:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:Linux:*:*)
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-       exit ;;
-    ia64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    k1om:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m32r*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m68*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-       set_cc_for_build
-       IS_GLIBC=0
-       test x"${LIBC}" = xgnu && IS_GLIBC=1
-       sed 's/^        //' << EOF > "$dummy.c"
-       #undef CPU
-       #undef mips
-       #undef mipsel
-       #undef mips64
-       #undef mips64el
-       #if ${IS_GLIBC} && defined(_ABI64)
-       LIBCABI=gnuabi64
-       #else
-       #if ${IS_GLIBC} && defined(_ABIN32)
-       LIBCABI=gnuabin32
-       #else
-       LIBCABI=${LIBC}
-       #endif
-       #endif
-
-       #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
-       CPU=mipsisa64r6
-       #else
-       #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
-       CPU=mipsisa32r6
-       #else
-       #if defined(__mips64)
-       CPU=mips64
-       #else
-       CPU=mips
-       #endif
-       #endif
-       #endif
-
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       MIPS_ENDIAN=el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       MIPS_ENDIAN=
-       #else
-       MIPS_ENDIAN=
-       #endif
-       #endif
-EOF
-       eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
-       test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
-       ;;
-    mips64el:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-"$LIBC"
-       exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-"$LIBC"
-       exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-"$LIBC"
-       exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-       # Look for CPU level
-       case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
-         PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
-         PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
-         *)    echo hppa-unknown-linux-"$LIBC" ;;
-       esac
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-"$LIBC"
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-"$LIBC"
-       exit ;;
-    ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-"$LIBC"
-       exit ;;
-    ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-"$LIBC"
-       exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-       echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
-       exit ;;
-    sh64*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sh*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    tile*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    vax:Linux:*:*)
-       echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
-       exit ;;
-    x86_64:Linux:*:*)
-       set_cc_for_build
-       LIBCABI=$LIBC
-       if test "$CC_FOR_BUILD" != no_compiler_found; then
-           if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_X32 >/dev/null
-           then
-               LIBCABI="$LIBC"x32
-           fi
-       fi
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
-       exit ;;
-    xtensa*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:DYNIX/ptx:4*:*)
-       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-       # earlier versions are messed up and put the nodename in both
-       # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-       # Unixware is an offshoot of SVR4, but it has its own version
-       # number series starting with 2...
-       # I am not positive that other SVR4 systems won't match this,
-       # I just have to hope.  -- rms.
-       # Use sysv4.2uw... so that sysv4* matches it.
-       echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
-       exit ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo "$UNAME_MACHINE"-pc-os2-emx
-       exit ;;
-    i*86:XTS-300:*:STOP)
-       echo "$UNAME_MACHINE"-unknown-stop
-       exit ;;
-    i*86:atheos:*:*)
-       echo "$UNAME_MACHINE"-unknown-atheos
-       exit ;;
-    i*86:syllable:*:*)
-       echo "$UNAME_MACHINE"-pc-syllable
-       exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    i*86:*DOS:*:*)
-       echo "$UNAME_MACHINE"-pc-msdosdjgpp
-       exit ;;
-    i*86:*:4.*:*)
-       UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
-       fi
-       exit ;;
-    i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
-       case $(/bin/uname -X | grep "^Machine") in
-           *486*)           UNAME_MACHINE=i486 ;;
-           *Pentium)        UNAME_MACHINE=i586 ;;
-           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-       esac
-       echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
-       exit ;;
-    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
-               echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
-               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv32
-       fi
-       exit ;;
-    pc:*:*:*)
-       # Left here for compatibility:
-       # uname -m prints for DJGPP always 'pc', but it prints nothing about
-       # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configure will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
-       fi
-       exit ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
-    M68*:*:R3V[5678]*:*)
-       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv"$UNAME_RELEASE"
-       exit ;;
-    RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=$( (uname -p) 2>/dev/null)
-               echo "$UNAME_MACHINE"-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                       # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo "$UNAME_MACHINE"-stratus-vos
-       exit ;;
-    *:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux"$UNAME_RELEASE"
-       exit ;;
-    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if test -d /usr/nec; then
-               echo mips-nec-sysv"$UNAME_RELEASE"
-       else
-               echo mips-unknown-sysv"$UNAME_RELEASE"
-       fi
-       exit ;;
-    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
-    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
-    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
-    x86_64:Haiku:*:*)
-       echo x86_64-unknown-haiku
-       exit ;;
-    SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-ACE:SUPER-UX:*:*)
-       echo sxace-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    *:Rhapsody:*:*)
-       echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    arm64:Darwin:*:*)
-       echo aarch64-apple-darwin"$UNAME_RELEASE"
-       exit ;;
-    *:Darwin:*:*)
-       UNAME_PROCESSOR=$(uname -p)
-       case $UNAME_PROCESSOR in
-           unknown) UNAME_PROCESSOR=powerpc ;;
-       esac
-       if command -v xcode-select > /dev/null 2> /dev/null && \
-               ! xcode-select --print-path > /dev/null 2> /dev/null ; then
-           # Avoid executing cc if there is no toolchain installed as
-           # cc will be a stub that puts up a graphical alert
-           # prompting the user to install developer tools.
-           CC_FOR_BUILD=no_compiler_found
-       else
-           set_cc_for_build
-       fi
-       if test "$CC_FOR_BUILD" != no_compiler_found; then
-           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                  (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                  grep IS_64BIT_ARCH >/dev/null
-           then
-               case $UNAME_PROCESSOR in
-                   i386) UNAME_PROCESSOR=x86_64 ;;
-                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
-               esac
-           fi
-           # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
-           if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
-                  (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                  grep IS_PPC >/dev/null
-           then
-               UNAME_PROCESSOR=powerpc
-           fi
-       elif test "$UNAME_PROCESSOR" = i386 ; then
-           # uname -m returns i386 or x86_64
-           UNAME_PROCESSOR=$UNAME_MACHINE
-       fi
-       echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
-       exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-       UNAME_PROCESSOR=$(uname -p)
-       if test "$UNAME_PROCESSOR" = x86; then
-               UNAME_PROCESSOR=i386
-               UNAME_MACHINE=pc
-       fi
-       echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
-       exit ;;
-    *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
-    NEO-*:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSR-*:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSV-*:NONSTOP_KERNEL:*:*)
-       echo nsv-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSX-*:NONSTOP_KERNEL:*:*)
-       echo nsx-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
-    BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
-    DS/*:UNIX_System_V:*:*)
-       echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
-       exit ;;
-    *:Plan9:*:*)
-       # "uname -m" is not consistent, so use $cputype instead. 386
-       # is converted to i386 for consistency with other x86
-       # operating systems.
-       # shellcheck disable=SC2154
-       if test "$cputype" = 386; then
-           UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
-       fi
-       echo "$UNAME_MACHINE"-unknown-plan9
-       exit ;;
-    *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
-    *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
-    *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
-    *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
-    SEI:*:*:SEIUX)
-       echo mips-sei-seiux"$UNAME_RELEASE"
-       exit ;;
-    *:DragonFly:*:*)
-       echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
-       exit ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=$( (uname -p) 2>/dev/null)
-       case "$UNAME_MACHINE" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
-    i*86:skyos:*:*)
-       echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')"
-       exit ;;
-    i*86:rdos:*:*)
-       echo "$UNAME_MACHINE"-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo "$UNAME_MACHINE"-pc-aros
-       exit ;;
-    x86_64:VMkernel:*:*)
-       echo "$UNAME_MACHINE"-unknown-esx
-       exit ;;
-    amd64:Isilon\ OneFS:*:*)
-       echo x86_64-unknown-onefs
-       exit ;;
-    *:Unleashed:*:*)
-       echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
-       exit ;;
-esac
-
-# No uname command or uname output not recognized.
-set_cc_for_build
-cat > "$dummy.c" <<EOF
-#ifdef _SEQUENT_
-#include <sys/types.h>
-#include <sys/utsname.h>
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#include <signal.h>
-#if defined(_SIZE_T_) || defined(SIGLOST)
-#include <sys/utsname.h>
-#endif
-#endif
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-  "4"
-#else
-  ""
-#endif
-  ); exit (0);
-#endif
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null);
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-  struct utsname un;
-
-  uname(&un);
-  if (strncmp(un.version, "V2", 2) == 0) {
-    printf ("i386-sequent-ptx2\n"); exit (0);
-  }
-  if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-    printf ("i386-sequent-ptx1\n"); exit (0);
-  }
-  printf ("i386-sequent-ptx\n"); exit (0);
-#endif
-
-#if defined (vax)
-#if !defined (ultrix)
-#include <sys/param.h>
-#if defined (BSD)
-#if BSD == 43
-  printf ("vax-dec-bsd4.3\n"); exit (0);
-#else
-#if BSD == 199006
-  printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#else
-  printf ("vax-dec-bsd\n"); exit (0);
-#endif
-#endif
-#else
-  printf ("vax-dec-bsd\n"); exit (0);
-#endif
-#else
-#if defined(_SIZE_T_) || defined(SIGLOST)
-  struct utsname un;
-  uname (&un);
-  printf ("vax-dec-ultrix%s\n", un.release); exit (0);
-#else
-  printf ("vax-dec-ultrix\n"); exit (0);
-#endif
-#endif
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#if defined(_SIZE_T_) || defined(SIGLOST)
-  struct utsname *un;
-  uname (&un);
-  printf ("mips-dec-ultrix%s\n", un.release); exit (0);
-#else
-  printf ("mips-dec-ultrix\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
-
-echo "$0: unable to guess system type" >&2
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
-    mips:Linux | mips64:Linux)
-       # If we got here on MIPS GNU/Linux, output extra information.
-       cat >&2 <<EOF
-
-NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
-the system type. Please install a C compiler and try again.
-EOF
-       ;;
-esac
-
-cat >&2 <<EOF
-
-This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite *all*
-copies of config.guess and config.sub with the latest versions from:
-
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-and
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-EOF
-
-year=$(echo $timestamp | sed 's,-.*,,')
-# shellcheck disable=SC2003
-if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
-   cat >&2 <<EOF
-
-If $0 has already been updated, send the following data and any
-information you think might be pertinent to config-patches@gnu.org to
-provide the necessary information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = $( (uname -m) 2>/dev/null || echo unknown)
-uname -r = $( (uname -r) 2>/dev/null || echo unknown)
-uname -s = $( (uname -s) 2>/dev/null || echo unknown)
-uname -v = $( (uname -v) 2>/dev/null || echo unknown)
-
-/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
-/bin/uname -X     = $( (/bin/uname -X) 2>/dev/null)
-
-hostinfo               = $( (hostinfo) 2>/dev/null)
-/bin/universe          = $( (/bin/universe) 2>/dev/null)
-/usr/bin/arch -k       = $( (/usr/bin/arch -k) 2>/dev/null)
-/bin/arch              = $( (/bin/arch) 2>/dev/null)
-/usr/bin/oslevel       = $( (/usr/bin/oslevel) 2>/dev/null)
-/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
-
-UNAME_MACHINE = "$UNAME_MACHINE"
-UNAME_RELEASE = "$UNAME_RELEASE"
-UNAME_SYSTEM  = "$UNAME_SYSTEM"
-UNAME_VERSION = "$UNAME_VERSION"
-EOF
-fi
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/polly/lib/External/isl/config.sub b/polly/lib/External/isl/config.sub
deleted file mode 100755 (executable)
index c874b7a..0000000
+++ /dev/null
@@ -1,1853 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2020 Free Software Foundation, Inc.
-
-timestamp='2020-11-07'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches to <config-patches@gnu.org>.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=$(echo "$0" | sed -e 's,.*/,,')
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
-
-Canonicalize a configuration name.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2020 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo "$1"
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Split fields of configuration type
-# shellcheck disable=SC2162
-IFS="-" read field1 field2 field3 field4 <<EOF
-$1
-EOF
-
-# Separate into logical components for further validation
-case $1 in
-       *-*-*-*-*)
-               echo Invalid configuration \`"$1"\': more than four components >&2
-               exit 1
-               ;;
-       *-*-*-*)
-               basic_machine=$field1-$field2
-               basic_os=$field3-$field4
-               ;;
-       *-*-*)
-               # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
-               # parts
-               maybe_os=$field2-$field3
-               case $maybe_os in
-                       nto-qnx* | linux-* | uclinux-uclibc* \
-                       | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
-                       | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-                       | storm-chaos* | os2-emx* | rtmk-nova*)
-                               basic_machine=$field1
-                               basic_os=$maybe_os
-                               ;;
-                       android-linux)
-                               basic_machine=$field1-unknown
-                               basic_os=linux-android
-                               ;;
-                       *)
-                               basic_machine=$field1-$field2
-                               basic_os=$field3
-                               ;;
-               esac
-               ;;
-       *-*)
-               # A lone config we happen to match not fitting any pattern
-               case $field1-$field2 in
-                       decstation-3100)
-                               basic_machine=mips-dec
-                               basic_os=
-                               ;;
-                       *-*)
-                               # Second component is usually, but not always the OS
-                               case $field2 in
-                                       # Prevent following clause from handling this valid os
-                                       sun*os*)
-                                               basic_machine=$field1
-                                               basic_os=$field2
-                                               ;;
-                                       # Manufacturers
-                                       dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
-                                       | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
-                                       | unicom* | ibm* | next | hp | isi* | apollo | altos* \
-                                       | convergent* | ncr* | news | 32* | 3600* | 3100* \
-                                       | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
-                                       | ultra | tti* | harris | dolphin | highlevel | gould \
-                                       | cbm | ns | masscomp | apple | axis | knuth | cray \
-                                       | microblaze* | sim | cisco \
-                                       | oki | wec | wrs | winbond)
-                                               basic_machine=$field1-$field2
-                                               basic_os=
-                                               ;;
-                                       *)
-                                               basic_machine=$field1
-                                               basic_os=$field2
-                                               ;;
-                               esac
-                       ;;
-               esac
-               ;;
-       *)
-               # Convert single-component short-hands not valid as part of
-               # multi-component configurations.
-               case $field1 in
-                       386bsd)
-                               basic_machine=i386-pc
-                               basic_os=bsd
-                               ;;
-                       a29khif)
-                               basic_machine=a29k-amd
-                               basic_os=udi
-                               ;;
-                       adobe68k)
-                               basic_machine=m68010-adobe
-                               basic_os=scout
-                               ;;
-                       alliant)
-                               basic_machine=fx80-alliant
-                               basic_os=
-                               ;;
-                       altos | altos3068)
-                               basic_machine=m68k-altos
-                               basic_os=
-                               ;;
-                       am29k)
-                               basic_machine=a29k-none
-                               basic_os=bsd
-                               ;;
-                       amdahl)
-                               basic_machine=580-amdahl
-                               basic_os=sysv
-                               ;;
-                       amiga)
-                               basic_machine=m68k-unknown
-                               basic_os=
-                               ;;
-                       amigaos | amigados)
-                               basic_machine=m68k-unknown
-                               basic_os=amigaos
-                               ;;
-                       amigaunix | amix)
-                               basic_machine=m68k-unknown
-                               basic_os=sysv4
-                               ;;
-                       apollo68)
-                               basic_machine=m68k-apollo
-                               basic_os=sysv
-                               ;;
-                       apollo68bsd)
-                               basic_machine=m68k-apollo
-                               basic_os=bsd
-                               ;;
-                       aros)
-                               basic_machine=i386-pc
-                               basic_os=aros
-                               ;;
-                       aux)
-                               basic_machine=m68k-apple
-                               basic_os=aux
-                               ;;
-                       balance)
-                               basic_machine=ns32k-sequent
-                               basic_os=dynix
-                               ;;
-                       blackfin)
-                               basic_machine=bfin-unknown
-                               basic_os=linux
-                               ;;
-                       cegcc)
-                               basic_machine=arm-unknown
-                               basic_os=cegcc
-                               ;;
-                       convex-c1)
-                               basic_machine=c1-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c2)
-                               basic_machine=c2-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c32)
-                               basic_machine=c32-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c34)
-                               basic_machine=c34-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c38)
-                               basic_machine=c38-convex
-                               basic_os=bsd
-                               ;;
-                       cray)
-                               basic_machine=j90-cray
-                               basic_os=unicos
-                               ;;
-                       crds | unos)
-                               basic_machine=m68k-crds
-                               basic_os=
-                               ;;
-                       da30)
-                               basic_machine=m68k-da30
-                               basic_os=
-                               ;;
-                       decstation | pmax | pmin | dec3100 | decstatn)
-                               basic_machine=mips-dec
-                               basic_os=
-                               ;;
-                       delta88)
-                               basic_machine=m88k-motorola
-                               basic_os=sysv3
-                               ;;
-                       dicos)
-                               basic_machine=i686-pc
-                               basic_os=dicos
-                               ;;
-                       djgpp)
-                               basic_machine=i586-pc
-                               basic_os=msdosdjgpp
-                               ;;
-                       ebmon29k)
-                               basic_machine=a29k-amd
-                               basic_os=ebmon
-                               ;;
-                       es1800 | OSE68k | ose68k | ose | OSE)
-                               basic_machine=m68k-ericsson
-                               basic_os=ose
-                               ;;
-                       gmicro)
-                               basic_machine=tron-gmicro
-                               basic_os=sysv
-                               ;;
-                       go32)
-                               basic_machine=i386-pc
-                               basic_os=go32
-                               ;;
-                       h8300hms)
-                               basic_machine=h8300-hitachi
-                               basic_os=hms
-                               ;;
-                       h8300xray)
-                               basic_machine=h8300-hitachi
-                               basic_os=xray
-                               ;;
-                       h8500hms)
-                               basic_machine=h8500-hitachi
-                               basic_os=hms
-                               ;;
-                       harris)
-                               basic_machine=m88k-harris
-                               basic_os=sysv3
-                               ;;
-                       hp300 | hp300hpux)
-                               basic_machine=m68k-hp
-                               basic_os=hpux
-                               ;;
-                       hp300bsd)
-                               basic_machine=m68k-hp
-                               basic_os=bsd
-                               ;;
-                       hppaosf)
-                               basic_machine=hppa1.1-hp
-                               basic_os=osf
-                               ;;
-                       hppro)
-                               basic_machine=hppa1.1-hp
-                               basic_os=proelf
-                               ;;
-                       i386mach)
-                               basic_machine=i386-mach
-                               basic_os=mach
-                               ;;
-                       isi68 | isi)
-                               basic_machine=m68k-isi
-                               basic_os=sysv
-                               ;;
-                       m68knommu)
-                               basic_machine=m68k-unknown
-                               basic_os=linux
-                               ;;
-                       magnum | m3230)
-                               basic_machine=mips-mips
-                               basic_os=sysv
-                               ;;
-                       merlin)
-                               basic_machine=ns32k-utek
-                               basic_os=sysv
-                               ;;
-                       mingw64)
-                               basic_machine=x86_64-pc
-                               basic_os=mingw64
-                               ;;
-                       mingw32)
-                               basic_machine=i686-pc
-                               basic_os=mingw32
-                               ;;
-                       mingw32ce)
-                               basic_machine=arm-unknown
-                               basic_os=mingw32ce
-                               ;;
-                       monitor)
-                               basic_machine=m68k-rom68k
-                               basic_os=coff
-                               ;;
-                       morphos)
-                               basic_machine=powerpc-unknown
-                               basic_os=morphos
-                               ;;
-                       moxiebox)
-                               basic_machine=moxie-unknown
-                               basic_os=moxiebox
-                               ;;
-                       msdos)
-                               basic_machine=i386-pc
-                               basic_os=msdos
-                               ;;
-                       msys)
-                               basic_machine=i686-pc
-                               basic_os=msys
-                               ;;
-                       mvs)
-                               basic_machine=i370-ibm
-                               basic_os=mvs
-                               ;;
-                       nacl)
-                               basic_machine=le32-unknown
-                               basic_os=nacl
-                               ;;
-                       ncr3000)
-                               basic_machine=i486-ncr
-                               basic_os=sysv4
-                               ;;
-                       netbsd386)
-                               basic_machine=i386-pc
-                               basic_os=netbsd
-                               ;;
-                       netwinder)
-                               basic_machine=armv4l-rebel
-                               basic_os=linux
-                               ;;
-                       news | news700 | news800 | news900)
-                               basic_machine=m68k-sony
-                               basic_os=newsos
-                               ;;
-                       news1000)
-                               basic_machine=m68030-sony
-                               basic_os=newsos
-                               ;;
-                       necv70)
-                               basic_machine=v70-nec
-                               basic_os=sysv
-                               ;;
-                       nh3000)
-                               basic_machine=m68k-harris
-                               basic_os=cxux
-                               ;;
-                       nh[45]000)
-                               basic_machine=m88k-harris
-                               basic_os=cxux
-                               ;;
-                       nindy960)
-                               basic_machine=i960-intel
-                               basic_os=nindy
-                               ;;
-                       mon960)
-                               basic_machine=i960-intel
-                               basic_os=mon960
-                               ;;
-                       nonstopux)
-                               basic_machine=mips-compaq
-                               basic_os=nonstopux
-                               ;;
-                       os400)
-                               basic_machine=powerpc-ibm
-                               basic_os=os400
-                               ;;
-                       OSE68000 | ose68000)
-                               basic_machine=m68000-ericsson
-                               basic_os=ose
-                               ;;
-                       os68k)
-                               basic_machine=m68k-none
-                               basic_os=os68k
-                               ;;
-                       paragon)
-                               basic_machine=i860-intel
-                               basic_os=osf
-                               ;;
-                       parisc)
-                               basic_machine=hppa-unknown
-                               basic_os=linux
-                               ;;
-                       psp)
-                               basic_machine=mipsallegrexel-sony
-                               basic_os=psp
-                               ;;
-                       pw32)
-                               basic_machine=i586-unknown
-                               basic_os=pw32
-                               ;;
-                       rdos | rdos64)
-                               basic_machine=x86_64-pc
-                               basic_os=rdos
-                               ;;
-                       rdos32)
-                               basic_machine=i386-pc
-                               basic_os=rdos
-                               ;;
-                       rom68k)
-                               basic_machine=m68k-rom68k
-                               basic_os=coff
-                               ;;
-                       sa29200)
-                               basic_machine=a29k-amd
-                               basic_os=udi
-                               ;;
-                       sei)
-                               basic_machine=mips-sei
-                               basic_os=seiux
-                               ;;
-                       sequent)
-                               basic_machine=i386-sequent
-                               basic_os=
-                               ;;
-                       sps7)
-                               basic_machine=m68k-bull
-                               basic_os=sysv2
-                               ;;
-                       st2000)
-                               basic_machine=m68k-tandem
-                               basic_os=
-                               ;;
-                       stratus)
-                               basic_machine=i860-stratus
-                               basic_os=sysv4
-                               ;;
-                       sun2)
-                               basic_machine=m68000-sun
-                               basic_os=
-                               ;;
-                       sun2os3)
-                               basic_machine=m68000-sun
-                               basic_os=sunos3
-                               ;;
-                       sun2os4)
-                               basic_machine=m68000-sun
-                               basic_os=sunos4
-                               ;;
-                       sun3)
-                               basic_machine=m68k-sun
-                               basic_os=
-                               ;;
-                       sun3os3)
-                               basic_machine=m68k-sun
-                               basic_os=sunos3
-                               ;;
-                       sun3os4)
-                               basic_machine=m68k-sun
-                               basic_os=sunos4
-                               ;;
-                       sun4)
-                               basic_machine=sparc-sun
-                               basic_os=
-                               ;;
-                       sun4os3)
-                               basic_machine=sparc-sun
-                               basic_os=sunos3
-                               ;;
-                       sun4os4)
-                               basic_machine=sparc-sun
-                               basic_os=sunos4
-                               ;;
-                       sun4sol2)
-                               basic_machine=sparc-sun
-                               basic_os=solaris2
-                               ;;
-                       sun386 | sun386i | roadrunner)
-                               basic_machine=i386-sun
-                               basic_os=
-                               ;;
-                       sv1)
-                               basic_machine=sv1-cray
-                               basic_os=unicos
-                               ;;
-                       symmetry)
-                               basic_machine=i386-sequent
-                               basic_os=dynix
-                               ;;
-                       t3e)
-                               basic_machine=alphaev5-cray
-                               basic_os=unicos
-                               ;;
-                       t90)
-                               basic_machine=t90-cray
-                               basic_os=unicos
-                               ;;
-                       toad1)
-                               basic_machine=pdp10-xkl
-                               basic_os=tops20
-                               ;;
-                       tpf)
-                               basic_machine=s390x-ibm
-                               basic_os=tpf
-                               ;;
-                       udi29k)
-                               basic_machine=a29k-amd
-                               basic_os=udi
-                               ;;
-                       ultra3)
-                               basic_machine=a29k-nyu
-                               basic_os=sym1
-                               ;;
-                       v810 | necv810)
-                               basic_machine=v810-nec
-                               basic_os=none
-                               ;;
-                       vaxv)
-                               basic_machine=vax-dec
-                               basic_os=sysv
-                               ;;
-                       vms)
-                               basic_machine=vax-dec
-                               basic_os=vms
-                               ;;
-                       vsta)
-                               basic_machine=i386-pc
-                               basic_os=vsta
-                               ;;
-                       vxworks960)
-                               basic_machine=i960-wrs
-                               basic_os=vxworks
-                               ;;
-                       vxworks68)
-                               basic_machine=m68k-wrs
-                               basic_os=vxworks
-                               ;;
-                       vxworks29k)
-                               basic_machine=a29k-wrs
-                               basic_os=vxworks
-                               ;;
-                       xbox)
-                               basic_machine=i686-pc
-                               basic_os=mingw32
-                               ;;
-                       ymp)
-                               basic_machine=ymp-cray
-                               basic_os=unicos
-                               ;;
-                       *)
-                               basic_machine=$1
-                               basic_os=
-                               ;;
-               esac
-               ;;
-esac
-
-# Decode 1-component or ad-hoc basic machines
-case $basic_machine in
-       # Here we handle the default manufacturer of certain CPU types.  It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               cpu=hppa1.1
-               vendor=winbond
-               ;;
-       op50n)
-               cpu=hppa1.1
-               vendor=oki
-               ;;
-       op60c)
-               cpu=hppa1.1
-               vendor=oki
-               ;;
-       ibm*)
-               cpu=i370
-               vendor=ibm
-               ;;
-       orion105)
-               cpu=clipper
-               vendor=highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               cpu=m68k
-               vendor=apple
-               ;;
-       pmac | pmac-mpw)
-               cpu=powerpc
-               vendor=apple
-               ;;
-
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               cpu=m68000
-               vendor=att
-               ;;
-       3b*)
-               cpu=we32k
-               vendor=att
-               ;;
-       bluegene*)
-               cpu=powerpc
-               vendor=ibm
-               basic_os=cnk
-               ;;
-       decsystem10* | dec10*)
-               cpu=pdp10
-               vendor=dec
-               basic_os=tops10
-               ;;
-       decsystem20* | dec20*)
-               cpu=pdp10
-               vendor=dec
-               basic_os=tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               cpu=m68k
-               vendor=motorola
-               ;;
-       dpx2*)
-               cpu=m68k
-               vendor=bull
-               basic_os=sysv3
-               ;;
-       encore | umax | mmax)
-               cpu=ns32k
-               vendor=encore
-               ;;
-       elxsi)
-               cpu=elxsi
-               vendor=elxsi
-               basic_os=${basic_os:-bsd}
-               ;;
-       fx2800)
-               cpu=i860
-               vendor=alliant
-               ;;
-       genix)
-               cpu=ns32k
-               vendor=ns
-               ;;
-       h3050r* | hiux*)
-               cpu=hppa1.1
-               vendor=hitachi
-               basic_os=hiuxwe2
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               cpu=m68000
-               vendor=hp
-               ;;
-       hp9k3[2-9][0-9])
-               cpu=m68k
-               vendor=hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       i*86v32)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=sysv32
-               ;;
-       i*86v4*)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=sysv4
-               ;;
-       i*86v)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=sysv
-               ;;
-       i*86sol2)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=solaris2
-               ;;
-       j90 | j90-cray)
-               cpu=j90
-               vendor=cray
-               basic_os=${basic_os:-unicos}
-               ;;
-       iris | iris4d)
-               cpu=mips
-               vendor=sgi
-               case $basic_os in
-                   irix*)
-                       ;;
-                   *)
-                       basic_os=irix4
-                       ;;
-               esac
-               ;;
-       miniframe)
-               cpu=m68000
-               vendor=convergent
-               ;;
-       *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               cpu=m68k
-               vendor=atari
-               basic_os=mint
-               ;;
-       news-3600 | risc-news)
-               cpu=mips
-               vendor=sony
-               basic_os=newsos
-               ;;
-       next | m*-next)
-               cpu=m68k
-               vendor=next
-               case $basic_os in
-                   openstep*)
-                       ;;
-                   nextstep*)
-                       ;;
-                   ns2*)
-                     basic_os=nextstep2
-                       ;;
-                   *)
-                     basic_os=nextstep3
-                       ;;
-               esac
-               ;;
-       np1)
-               cpu=np1
-               vendor=gould
-               ;;
-       op50n-* | op60c-*)
-               cpu=hppa1.1
-               vendor=oki
-               basic_os=proelf
-               ;;
-       pa-hitachi)
-               cpu=hppa1.1
-               vendor=hitachi
-               basic_os=hiuxwe2
-               ;;
-       pbd)
-               cpu=sparc
-               vendor=tti
-               ;;
-       pbb)
-               cpu=m68k
-               vendor=tti
-               ;;
-       pc532)
-               cpu=ns32k
-               vendor=pc532
-               ;;
-       pn)
-               cpu=pn
-               vendor=gould
-               ;;
-       power)
-               cpu=power
-               vendor=ibm
-               ;;
-       ps2)
-               cpu=i386
-               vendor=ibm
-               ;;
-       rm[46]00)
-               cpu=mips
-               vendor=siemens
-               ;;
-       rtpc | rtpc-*)
-               cpu=romp
-               vendor=ibm
-               ;;
-       sde)
-               cpu=mipsisa32
-               vendor=sde
-               basic_os=${basic_os:-elf}
-               ;;
-       simso-wrs)
-               cpu=sparclite
-               vendor=wrs
-               basic_os=vxworks
-               ;;
-       tower | tower-32)
-               cpu=m68k
-               vendor=ncr
-               ;;
-       vpp*|vx|vx-*)
-               cpu=f301
-               vendor=fujitsu
-               ;;
-       w65)
-               cpu=w65
-               vendor=wdc
-               ;;
-       w89k-*)
-               cpu=hppa1.1
-               vendor=winbond
-               basic_os=proelf
-               ;;
-       none)
-               cpu=none
-               vendor=none
-               ;;
-       leon|leon[3-9])
-               cpu=sparc
-               vendor=$basic_machine
-               ;;
-       leon-*|leon[3-9]-*)
-               cpu=sparc
-               vendor=$(echo "$basic_machine" | sed 's/-.*//')
-               ;;
-
-       *-*)
-               # shellcheck disable=SC2162
-               IFS="-" read cpu vendor <<EOF
-$basic_machine
-EOF
-               ;;
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-               cpu=$basic_machine
-               vendor=pc
-               ;;
-       # These rules are duplicated from below for sake of the special case above;
-       # i.e. things that normalized to x86 arches should also default to "pc"
-       pc98)
-               cpu=i386
-               vendor=pc
-               ;;
-       x64 | amd64)
-               cpu=x86_64
-               vendor=pc
-               ;;
-       # Recognize the basic CPU types without company name.
-       *)
-               cpu=$basic_machine
-               vendor=unknown
-               ;;
-esac
-
-unset -v basic_machine
-
-# Decode basic machines in the full and proper CPU-Company form.
-case $cpu-$vendor in
-       # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       craynv-unknown)
-               vendor=cray
-               basic_os=${basic_os:-unicosmp}
-               ;;
-       c90-unknown | c90-cray)
-               vendor=cray
-               basic_os=${Basic_os:-unicos}
-               ;;
-       fx80-unknown)
-               vendor=alliant
-               ;;
-       romp-unknown)
-               vendor=ibm
-               ;;
-       mmix-unknown)
-               vendor=knuth
-               ;;
-       microblaze-unknown | microblazeel-unknown)
-               vendor=xilinx
-               ;;
-       rs6000-unknown)
-               vendor=ibm
-               ;;
-       vax-unknown)
-               vendor=dec
-               ;;
-       pdp11-unknown)
-               vendor=dec
-               ;;
-       we32k-unknown)
-               vendor=att
-               ;;
-       cydra-unknown)
-               vendor=cydrome
-               ;;
-       i370-ibm*)
-               vendor=ibm
-               ;;
-       orion-unknown)
-               vendor=highlevel
-               ;;
-       xps-unknown | xps100-unknown)
-               cpu=xps100
-               vendor=honeywell
-               ;;
-
-       # Here we normalize CPU types with a missing or matching vendor
-       dpx20-unknown | dpx20-bull)
-               cpu=rs6000
-               vendor=bull
-               basic_os=${basic_os:-bosx}
-               ;;
-
-       # Here we normalize CPU types irrespective of the vendor
-       amd64-*)
-               cpu=x86_64
-               ;;
-       blackfin-*)
-               cpu=bfin
-               basic_os=linux
-               ;;
-       c54x-*)
-               cpu=tic54x
-               ;;
-       c55x-*)
-               cpu=tic55x
-               ;;
-       c6x-*)
-               cpu=tic6x
-               ;;
-       e500v[12]-*)
-               cpu=powerpc
-               basic_os=${basic_os}"spe"
-               ;;
-       mips3*-*)
-               cpu=mips64
-               ;;
-       ms1-*)
-               cpu=mt
-               ;;
-       m68knommu-*)
-               cpu=m68k
-               basic_os=linux
-               ;;
-       m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
-               cpu=s12z
-               ;;
-       openrisc-*)
-               cpu=or32
-               ;;
-       parisc-*)
-               cpu=hppa
-               basic_os=linux
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               cpu=i586
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
-               cpu=i686
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               cpu=i686
-               ;;
-       pentium4-*)
-               cpu=i786
-               ;;
-       pc98-*)
-               cpu=i386
-               ;;
-       ppc-* | ppcbe-*)
-               cpu=powerpc
-               ;;
-       ppcle-* | powerpclittle-*)
-               cpu=powerpcle
-               ;;
-       ppc64-*)
-               cpu=powerpc64
-               ;;
-       ppc64le-* | powerpc64little-*)
-               cpu=powerpc64le
-               ;;
-       sb1-*)
-               cpu=mipsisa64sb1
-               ;;
-       sb1el-*)
-               cpu=mipsisa64sb1el
-               ;;
-       sh5e[lb]-*)
-               cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
-               ;;
-       spur-*)
-               cpu=spur
-               ;;
-       strongarm-* | thumb-*)
-               cpu=arm
-               ;;
-       tx39-*)
-               cpu=mipstx39
-               ;;
-       tx39el-*)
-               cpu=mipstx39el
-               ;;
-       x64-*)
-               cpu=x86_64
-               ;;
-       xscale-* | xscalee[bl]-*)
-               cpu=$(echo "$cpu" | sed 's/^xscale/arm/')
-               ;;
-       arm64-*)
-               cpu=aarch64
-               ;;
-
-       # Recognize the canonical CPU Types that limit and/or modify the
-       # company names they are paired with.
-       cr16-*)
-               basic_os=${basic_os:-elf}
-               ;;
-       crisv32-* | etraxfs*-*)
-               cpu=crisv32
-               vendor=axis
-               ;;
-       cris-* | etrax*-*)
-               cpu=cris
-               vendor=axis
-               ;;
-       crx-*)
-               basic_os=${basic_os:-elf}
-               ;;
-       neo-tandem)
-               cpu=neo
-               vendor=tandem
-               ;;
-       nse-tandem)
-               cpu=nse
-               vendor=tandem
-               ;;
-       nsr-tandem)
-               cpu=nsr
-               vendor=tandem
-               ;;
-       nsv-tandem)
-               cpu=nsv
-               vendor=tandem
-               ;;
-       nsx-tandem)
-               cpu=nsx
-               vendor=tandem
-               ;;
-       mipsallegrexel-sony)
-               cpu=mipsallegrexel
-               vendor=sony
-               ;;
-       tile*-*)
-               basic_os=${basic_os:-linux-gnu}
-               ;;
-
-       *)
-               # Recognize the canonical CPU types that are allowed with any
-               # company name.
-               case $cpu in
-                       1750a | 580 \
-                       | a29k \
-                       | aarch64 | aarch64_be \
-                       | abacus \
-                       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
-                       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
-                       | alphapca5[67] | alpha64pca5[67] \
-                       | am33_2.0 \
-                       | amdgcn \
-                       | arc | arceb \
-                       | arm | arm[lb]e | arme[lb] | armv* \
-                       | avr | avr32 \
-                       | asmjs \
-                       | ba \
-                       | be32 | be64 \
-                       | bfin | bpf | bs2000 \
-                       | c[123]* | c30 | [cjt]90 | c4x \
-                       | c8051 | clipper | craynv | csky | cydra \
-                       | d10v | d30v | dlx | dsp16xx \
-                       | e2k | elxsi | epiphany \
-                       | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
-                       | h8300 | h8500 \
-                       | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-                       | hexagon \
-                       | i370 | i*86 | i860 | i960 | ia16 | ia64 \
-                       | ip2k | iq2000 \
-                       | k1om \
-                       | le32 | le64 \
-                       | lm32 \
-                       | m32c | m32r | m32rle \
-                       | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
-                       | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
-                       | m88110 | m88k | maxq | mb | mcore | mep | metag \
-                       | microblaze | microblazeel \
-                       | mips | mipsbe | mipseb | mipsel | mipsle \
-                       | mips16 \
-                       | mips64 | mips64eb | mips64el \
-                       | mips64octeon | mips64octeonel \
-                       | mips64orion | mips64orionel \
-                       | mips64r5900 | mips64r5900el \
-                       | mips64vr | mips64vrel \
-                       | mips64vr4100 | mips64vr4100el \
-                       | mips64vr4300 | mips64vr4300el \
-                       | mips64vr5000 | mips64vr5000el \
-                       | mips64vr5900 | mips64vr5900el \
-                       | mipsisa32 | mipsisa32el \
-                       | mipsisa32r2 | mipsisa32r2el \
-                       | mipsisa32r6 | mipsisa32r6el \
-                       | mipsisa64 | mipsisa64el \
-                       | mipsisa64r2 | mipsisa64r2el \
-                       | mipsisa64r6 | mipsisa64r6el \
-                       | mipsisa64sb1 | mipsisa64sb1el \
-                       | mipsisa64sr71k | mipsisa64sr71kel \
-                       | mipsr5900 | mipsr5900el \
-                       | mipstx39 | mipstx39el \
-                       | mmix \
-                       | mn10200 | mn10300 \
-                       | moxie \
-                       | mt \
-                       | msp430 \
-                       | nds32 | nds32le | nds32be \
-                       | nfp \
-                       | nios | nios2 | nios2eb | nios2el \
-                       | none | np1 | ns16k | ns32k | nvptx \
-                       | open8 \
-                       | or1k* \
-                       | or32 \
-                       | orion \
-                       | picochip \
-                       | pdp10 | pdp11 | pj | pjl | pn | power \
-                       | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
-                       | pru \
-                       | pyramid \
-                       | riscv | riscv32 | riscv64 \
-                       | rl78 | romp | rs6000 | rx \
-                       | s390 | s390x \
-                       | score \
-                       | sh | shl \
-                       | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
-                       | sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
-                       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
-                       | sparclite \
-                       | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
-                       | spu \
-                       | tahoe \
-                       | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
-                       | tron \
-                       | ubicom32 \
-                       | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
-                       | vax \
-                       | visium \
-                       | w65 \
-                       | wasm32 | wasm64 \
-                       | we32k \
-                       | x86 | x86_64 | xc16x | xgate | xps100 \
-                       | xstormy16 | xtensa* \
-                       | ymp \
-                       | z8k | z80)
-                               ;;
-
-                       *)
-                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
-                               exit 1
-                               ;;
-               esac
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $vendor in
-       digital*)
-               vendor=dec
-               ;;
-       commodore*)
-               vendor=cbm
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if test x$basic_os != x
-then
-
-# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
-# set os.
-case $basic_os in
-       gnu/linux*)
-               kernel=linux
-               os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|')
-               ;;
-       os2-emx)
-               kernel=os2
-               os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
-               ;;
-       nto-qnx*)
-               kernel=nto
-               os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
-               ;;
-       *-*)
-               # shellcheck disable=SC2162
-               IFS="-" read kernel os <<EOF
-$basic_os
-EOF
-               ;;
-       # Default OS when just kernel was specified
-       nto*)
-               kernel=nto
-               os=$(echo $basic_os | sed -e 's|nto|qnx|')
-               ;;
-       linux*)
-               kernel=linux
-               os=$(echo $basic_os | sed -e 's|linux|gnu|')
-               ;;
-       *)
-               kernel=
-               os=$basic_os
-               ;;
-esac
-
-# Now, normalize the OS (knowing we just have one component, it's not a kernel,
-# etc.)
-case $os in
-       # First match some system type aliases that might get confused
-       # with valid system types.
-       # solaris* is a basic system type, with this one exception.
-       auroraux)
-               os=auroraux
-               ;;
-       bluegene*)
-               os=cnk
-               ;;
-       solaris1 | solaris1.*)
-               os=$(echo $os | sed -e 's|solaris1|sunos4|')
-               ;;
-       solaris)
-               os=solaris2
-               ;;
-       unixware*)
-               os=sysv4.2uw
-               ;;
-       # es1800 is here to avoid being matched by es* (a different OS)
-       es1800*)
-               os=ose
-               ;;
-       # Some version numbers need modification
-       chorusos*)
-               os=chorusos
-               ;;
-       isc)
-               os=isc2.2
-               ;;
-       sco6)
-               os=sco5v6
-               ;;
-       sco5)
-               os=sco3.2v5
-               ;;
-       sco4)
-               os=sco3.2v4
-               ;;
-       sco3.2.[4-9]*)
-               os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
-               ;;
-       sco*v* | scout)
-               # Don't match below
-               ;;
-       sco*)
-               os=sco3.2v2
-               ;;
-       psos*)
-               os=psos
-               ;;
-       qnx*)
-               os=qnx
-               ;;
-       hiux*)
-               os=hiuxwe2
-               ;;
-       lynx*178)
-               os=lynxos178
-               ;;
-       lynx*5)
-               os=lynxos5
-               ;;
-       lynxos*)
-               # don't get caught up in next wildcard
-               ;;
-       lynx*)
-               os=lynxos
-               ;;
-       mac[0-9]*)
-               os=$(echo "$os" | sed -e 's|mac|macos|')
-               ;;
-       opened*)
-               os=openedition
-               ;;
-       os400*)
-               os=os400
-               ;;
-       sunos5*)
-               os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
-               ;;
-       sunos6*)
-               os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
-               ;;
-       wince*)
-               os=wince
-               ;;
-       utek*)
-               os=bsd
-               ;;
-       dynix*)
-               os=bsd
-               ;;
-       acis*)
-               os=aos
-               ;;
-       atheos*)
-               os=atheos
-               ;;
-       syllable*)
-               os=syllable
-               ;;
-       386bsd)
-               os=bsd
-               ;;
-       ctix* | uts*)
-               os=sysv
-               ;;
-       nova*)
-               os=rtmk-nova
-               ;;
-       ns2)
-               os=nextstep2
-               ;;
-       # Preserve the version number of sinix5.
-       sinix5.*)
-               os=$(echo $os | sed -e 's|sinix|sysv|')
-               ;;
-       sinix*)
-               os=sysv4
-               ;;
-       tpf*)
-               os=tpf
-               ;;
-       triton*)
-               os=sysv3
-               ;;
-       oss*)
-               os=sysv3
-               ;;
-       svr4*)
-               os=sysv4
-               ;;
-       svr3)
-               os=sysv3
-               ;;
-       sysvr4)
-               os=sysv4
-               ;;
-       ose*)
-               os=ose
-               ;;
-       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
-               os=mint
-               ;;
-       dicos*)
-               os=dicos
-               ;;
-       pikeos*)
-               # Until real need of OS specific support for
-               # particular features comes up, bare metal
-               # configurations are quite functional.
-               case $cpu in
-                   arm*)
-                       os=eabi
-                       ;;
-                   *)
-                       os=elf
-                       ;;
-               esac
-               ;;
-       *)
-               # No normalization, but not necessarily accepted, that comes below.
-               ;;
-esac
-
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-kernel=
-case $cpu-$vendor in
-       score-*)
-               os=elf
-               ;;
-       spu-*)
-               os=elf
-               ;;
-       *-acorn)
-               os=riscix1.2
-               ;;
-       arm*-rebel)
-               kernel=linux
-               os=gnu
-               ;;
-       arm*-semi)
-               os=aout
-               ;;
-       c4x-* | tic4x-*)
-               os=coff
-               ;;
-       c8051-*)
-               os=elf
-               ;;
-       clipper-intergraph)
-               os=clix
-               ;;
-       hexagon-*)
-               os=elf
-               ;;
-       tic54x-*)
-               os=coff
-               ;;
-       tic55x-*)
-               os=coff
-               ;;
-       tic6x-*)
-               os=coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=tops20
-               ;;
-       pdp11-*)
-               os=none
-               ;;
-       *-dec | vax-*)
-               os=ultrix4.2
-               ;;
-       m68*-apollo)
-               os=domain
-               ;;
-       i386-sun)
-               os=sunos4.0.2
-               ;;
-       m68000-sun)
-               os=sunos3
-               ;;
-       m68*-cisco)
-               os=aout
-               ;;
-       mep-*)
-               os=elf
-               ;;
-       mips*-cisco)
-               os=elf
-               ;;
-       mips*-*)
-               os=elf
-               ;;
-       or32-*)
-               os=coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=sysv3
-               ;;
-       sparc-* | *-sun)
-               os=sunos4.1.1
-               ;;
-       pru-*)
-               os=elf
-               ;;
-       *-be)
-               os=beos
-               ;;
-       *-ibm)
-               os=aix
-               ;;
-       *-knuth)
-               os=mmixware
-               ;;
-       *-wec)
-               os=proelf
-               ;;
-       *-winbond)
-               os=proelf
-               ;;
-       *-oki)
-               os=proelf
-               ;;
-       *-hp)
-               os=hpux
-               ;;
-       *-hitachi)
-               os=hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=sysv
-               ;;
-       *-cbm)
-               os=amigaos
-               ;;
-       *-dg)
-               os=dgux
-               ;;
-       *-dolphin)
-               os=sysv3
-               ;;
-       m68k-ccur)
-               os=rtu
-               ;;
-       m88k-omron*)
-               os=luna
-               ;;
-       *-next)
-               os=nextstep
-               ;;
-       *-sequent)
-               os=ptx
-               ;;
-       *-crds)
-               os=unos
-               ;;
-       *-ns)
-               os=genix
-               ;;
-       i370-*)
-               os=mvs
-               ;;
-       *-gould)
-               os=sysv
-               ;;
-       *-highlevel)
-               os=bsd
-               ;;
-       *-encore)
-               os=bsd
-               ;;
-       *-sgi)
-               os=irix
-               ;;
-       *-siemens)
-               os=sysv4
-               ;;
-       *-masscomp)
-               os=rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=uxpv
-               ;;
-       *-rom68k)
-               os=coff
-               ;;
-       *-*bug)
-               os=coff
-               ;;
-       *-apple)
-               os=macos
-               ;;
-       *-atari*)
-               os=mint
-               ;;
-       *-wrs)
-               os=vxworks
-               ;;
-       *)
-               os=none
-               ;;
-esac
-
-fi
-
-# Now, validate our (potentially fixed-up) OS.
-case $os in
-       # Sometimes we do "kernel-abi", so those need to count as OSes.
-       musl* | newlib* | uclibc*)
-               ;;
-       # Likewise for "kernel-libc"
-       eabi | eabihf | gnueabi | gnueabihf)
-               ;;
-       # Now accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST end in a * to match a version number.
-       gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
-            | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
-            | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
-            | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
-            | hiux* | abug | nacl* | netware* | windows* \
-            | os9* | macos* | osx* | ios* \
-            | mpw* | magic* | mmixware* | mon960* | lnews* \
-            | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
-            | aos* | aros* | cloudabi* | sortix* | twizzler* \
-            | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
-            | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
-            | mirbsd* | netbsd* | dicos* | openedition* | ose* \
-            | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
-            | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
-            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
-            | udi* | lites* | ieee* | go32* | aux* | hcos* \
-            | chorusrdb* | cegcc* | glidix* \
-            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
-            | midipix* | mingw32* | mingw64* | mint* \
-            | uxpv* | beos* | mpeix* | udk* | moxiebox* \
-            | interix* | uwin* | mks* | rhapsody* | darwin* \
-            | openstep* | oskit* | conix* | pw32* | nonstopux* \
-            | storm-chaos* | tops10* | tenex* | tops20* | its* \
-            | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
-            | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
-            | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
-            | skyos* | haiku* | rdos* | toppers* | drops* | es* \
-            | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
-            | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
-            | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
-               ;;
-       # This one is extra strict with allowed versions
-       sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               ;;
-       none)
-               ;;
-       *)
-               echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-
-# As a final step for OS-related things, validate the OS-kernel combination
-# (given a valid OS), if there is a kernel.
-case $kernel-$os in
-       linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
-               ;;
-       uclinux-uclibc* )
-               ;;
-       -dietlibc* | -newlib* | -musl* | -uclibc* )
-               # These are just libc implementations, not actual OSes, and thus
-               # require a kernel.
-               echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
-               exit 1
-               ;;
-       kfreebsd*-gnu* | kopensolaris*-gnu*)
-               ;;
-       nto-qnx*)
-               ;;
-       os2-emx)
-               ;;
-       *-eabi* | *-gnueabi*)
-               ;;
-       -*)
-               # Blank kernel with real OS is always fine.
-               ;;
-       *-*)
-               echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
-               exit 1
-               ;;
-esac
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-case $vendor in
-       unknown)
-               case $cpu-$os in
-                       *-riscix*)
-                               vendor=acorn
-                               ;;
-                       *-sunos*)
-                               vendor=sun
-                               ;;
-                       *-cnk* | *-aix*)
-                               vendor=ibm
-                               ;;
-                       *-beos*)
-                               vendor=be
-                               ;;
-                       *-hpux*)
-                               vendor=hp
-                               ;;
-                       *-mpeix*)
-                               vendor=hp
-                               ;;
-                       *-hiux*)
-                               vendor=hitachi
-                               ;;
-                       *-unos*)
-                               vendor=crds
-                               ;;
-                       *-dgux*)
-                               vendor=dg
-                               ;;
-                       *-luna*)
-                               vendor=omron
-                               ;;
-                       *-genix*)
-                               vendor=ns
-                               ;;
-                       *-clix*)
-                               vendor=intergraph
-                               ;;
-                       *-mvs* | *-opened*)
-                               vendor=ibm
-                               ;;
-                       *-os400*)
-                               vendor=ibm
-                               ;;
-                       s390-* | s390x-*)
-                               vendor=ibm
-                               ;;
-                       *-ptx*)
-                               vendor=sequent
-                               ;;
-                       *-tpf*)
-                               vendor=ibm
-                               ;;
-                       *-vxsim* | *-vxworks* | *-windiss*)
-                               vendor=wrs
-                               ;;
-                       *-aux*)
-                               vendor=apple
-                               ;;
-                       *-hms*)
-                               vendor=hitachi
-                               ;;
-                       *-mpw* | *-macos*)
-                               vendor=apple
-                               ;;
-                       *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       *-vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               ;;
-esac
-
-echo "$cpu-$vendor-${kernel:+$kernel-}$os"
-exit
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/polly/lib/External/isl/configure b/polly/lib/External/isl/configure
deleted file mode 100755 (executable)
index 63f8c4d..0000000
+++ /dev/null
@@ -1,24567 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for isl 0.24.
-#
-# Report bugs to <isl-development@googlegroups.com>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1
-
-  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-        /*)
-          for as_base in sh bash ksh sh5; do
-            # Try only shells that exist, to save several forks.
-            as_shell=$as_dir/$as_base
-            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-          done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org and
-$0: isl-development@googlegroups.com about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='        ';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='isl'
-PACKAGE_TARNAME='isl'
-PACKAGE_VERSION='0.24'
-PACKAGE_STRING='isl 0.24'
-PACKAGE_BUGREPORT='isl-development@googlegroups.com'
-PACKAGE_URL=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-enable_option_checking=no
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIBOBJS
-subdirs
-GIT_HEAD_VERSION
-GIT_HEAD
-GIT_HEAD_ID
-pkgconfig_libfile
-pkgconfig_libdir
-WARNING_FLAGS
-HAVE_CPP_ISL_H_FALSE
-HAVE_CPP_ISL_H_TRUE
-HAVE_CLANG_FALSE
-HAVE_CLANG_TRUE
-SMALL_INT_OPT_FALSE
-SMALL_INT_OPT_TRUE
-HAVE_CXX11_FALSE
-HAVE_CXX11_TRUE
-GMP_FOR_MP_FALSE
-GMP_FOR_MP_TRUE
-IMATH_FOR_MP_FALSE
-IMATH_FOR_MP_TRUE
-NEED_GET_MEMORY_FUNCTIONS_FALSE
-NEED_GET_MEMORY_FUNCTIONS_TRUE
-MP_LIBS
-MP_LDFLAGS
-MP_CFLAGS
-MP_CPPFLAGS
-GENERATE_DOC_FALSE
-GENERATE_DOC_TRUE
-OS_SRCDIR
-POD2HTML
-PDFLATEX
-PERL
-CYGPATH
-HAVE_PYTHON_FALSE
-HAVE_PYTHON_TRUE
-pkgpyexecdir
-pyexecdir
-pkgpythondir
-pythondir
-PYTHON_PLATFORM
-PYTHON_EXEC_PREFIX
-PYTHON_PREFIX
-PYTHON_VERSION
-PYTHON
-CXXCPP
-LT_SYS_LIBRARY_PATH
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-RANLIB
-ac_ct_AR
-AR
-DLLTOOL
-OBJDUMP
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-EGREP
-SED
-LIBTOOL
-HAVE_CXX11
-GREP
-PRTDIAG
-host_os
-host_vendor
-host_cpu
-host
-LDFLAGS_FOR_BUILD
-CPPFLAGS_FOR_BUILD
-CFLAGS_FOR_BUILD
-BUILD_OBJEXT
-BUILD_EXEEXT
-CPP_FOR_BUILD
-ac_ct_CC_FOR_BUILD
-CC_FOR_BUILD
-build_os
-build_vendor
-build_cpu
-build
-CPP
-am__fastdepCXX_FALSE
-am__fastdepCXX_TRUE
-CXXDEPMODE
-ac_ct_CXX
-CXXFLAGS
-CXX
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-versioninfo
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL
-am__quote'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_silent_rules
-enable_dependency_tracking
-enable_portable_binary
-with_gcc_arch
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_aix_soname
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-with_int
-with_gmp
-with_gmp_prefix
-with_gmp_exec_prefix
-with_gmp_builddir
-with_clang
-with_clang_prefix
-with_clang_exec_prefix
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CXX
-CXXFLAGS
-CCC
-CPP
-LT_SYS_LIBRARY_PATH
-CXXCPP
-PYTHON'
-ac_subdirs_all='interface'
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
-               datadir sysconfdir sharedstatedir localstatedir includedir \
-               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_myself" : 'X\(//\)[^/]' \| \
-        X"$as_myself" : 'X\(//\)$' \| \
-        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-       pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures isl 0.24 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/isl]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of isl 0.24:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-silent-rules   less verbose build output (undo: "make V=1")
-  --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-dependency-tracking
-                          do not reject slow dependency extractors
-  --disable-dependency-tracking
-                          speeds up one-time build
-  --enable-portable-binary
-                          disable compiler optimizations that would produce
-                          unportable binaries
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-gcc-arch=<arch>  use architecture <arch> for gcc -march/-mtune,
-                          instead of guessing
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-aix-soname=aix|svr4|both
-                          shared library versioning (aka "SONAME") variant to
-                          provide on AIX, [default=aix].
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
-                          compiler's sysroot if not specified).
-  --with-int=gmp|imath|imath-32
-                          Which package to use to represent multi-precision
-                          integers [default=gmp]
-  --with-gmp=system|build Which gmp to use [default=system]
-  --with-gmp-prefix=DIR   Prefix of gmp installation
-  --with-gmp-exec-prefix=DIR
-                          Exec prefix of gmp installation
-  --with-gmp-builddir=DIR Location of gmp builddir
-  --with-clang=system|no  Which clang to use [default=no]
-  --with-clang-prefix=DIR Prefix of clang installation
-  --with-clang-exec-prefix=DIR
-                          Exec prefix of clang installation
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  CPP         C preprocessor
-  LT_SYS_LIBRARY_PATH
-              User-defined run-time library search path.
-  CXXCPP      C++ preprocessor
-  PYTHON      the Python interpreter
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <isl-development@googlegroups.com>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-isl configure 0.24
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_cxx_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_func
-
-# ac_fn_cxx_try_cpp LINENO
-# ------------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_cpp
-
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_link
-
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-        return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-           return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_type
-
-# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-# --------------------------------------------
-# Tries to find the compile-time value of EXPR in a program that includes
-# INCLUDES, setting VAR accordingly. Returns whether the value could be
-# computed
-ac_fn_c_compute_int ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if test "$cross_compiling" = yes; then
-    # Depending upon the size, compute the lo and hi bounds.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=$ac_mid; break
-else
-  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
-                       if test $ac_lo -le $ac_mid; then
-                         ac_lo= ac_hi=
-                         break
-                       fi
-                       as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_lo=$ac_mid; break
-else
-  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
-                       if test $ac_mid -le $ac_hi; then
-                         ac_lo= ac_hi=
-                         break
-                       fi
-                       as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  ac_lo= ac_hi=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=$ac_mid
-else
-  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in #((
-?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
-'') ac_retval=1 ;;
-esac
-  else
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (($2) < 0)
-    {
-      long int i = longval ();
-      if (i != ($2))
-       return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ($2))
-       return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
-  ac_retval=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-rm -f conftest.val
-
-  fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_compute_int
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ----------------------------------------------- ##
-## Report this to isl-development@googlegroups.com ##
-## ----------------------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
-# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  as_decl_name=`echo $2|sed 's/ *(.*//'`
-  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-#ifndef $as_decl_name
-#ifdef __cplusplus
-  (void) $as_decl_use;
-#else
-  (void) $as_decl_name;
-#endif
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_decl
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by isl $as_me 0.24, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-       ac_must_keep_next=false # Got value, back to normal.
-      else
-       case $ac_arg in
-         *=* | --config-cache | -C | -disable-* | --disable-* \
-         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-         | -with-* | --with-* | -without-* | --without-* | --x)
-           case "$ac_configure_args0 " in
-             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-           esac
-           ;;
-         -* ) ac_must_keep_next=true ;;
-       esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-       "s/'\''/'\''\\\\'\'''\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-       eval ac_val=\$$ac_var
-       case $ac_val in
-       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-       esac
-       $as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-       # differences in whitespace do not lead to failure.
-       ac_old_val_w=`echo x $ac_old_val`
-       ac_new_val_w=`echo x $ac_new_val`
-       if test "$ac_old_val_w" != "$ac_new_val_w"; then
-         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-         ac_cache_corrupted=:
-       else
-         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-         eval $ac_var=\$ac_old_val
-       fi
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_aux_dir=
-for ac_dir in . "$srcdir"/.; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in . \"$srcdir\"/." "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-
-am__api_version='1.16'
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-         if test $ac_prog = install &&
-           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         elif test $ac_prog = install &&
-           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # program-specific install script used by HP pwplus--don't use.
-           :
-         else
-           rm -rf conftest.one conftest.two conftest.dir
-           echo one > conftest.one
-           echo two > conftest.two
-           mkdir conftest.dir
-           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-             test -s conftest.one && test -s conftest.two &&
-             test -s conftest.dir/conftest.one &&
-             test -s conftest.dir/conftest.two
-           then
-             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-             break 3
-           fi
-         fi
-       fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
-    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$*" = "X"; then
-       # -L didn't work.
-       set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$*" != "X $srcdir/configure conftest.file" \
-       && test "$*" != "X conftest.file $srcdir/configure"; then
-
-       # If neither matched, then we have a broken ls.  This can happen
-       # if, for instance, CONFIG_SHELL is bash and it inherits a
-       # broken ls alias from the environment.  This has actually
-       # happened.  Such a system could not be considered "sane".
-       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment" "$LINENO" 5
-     fi
-     if test "$2" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   as_fn_error $? "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-
-rm -f conftest.file
-
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# Expand $ac_aux_dir to an absolute path.
-am_aux_dir=`cd "$ac_aux_dir" && pwd`
-
-if test x"${MISSING+set}" != xset; then
-  MISSING="\${SHELL} '$am_aux_dir/missing'"
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if ${ac_cv_path_mkdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in mkdir gmkdir; do
-        for ac_exec_ext in '' $ac_executable_extensions; do
-          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
-          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-            'mkdir (GNU coreutils) '* | \
-            'mkdir (coreutils) '* | \
-            'mkdir (fileutils) '4.1*)
-              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-              break 3;;
-          esac
-        done
-       done
-  done
-IFS=$as_save_IFS
-
-fi
-
-  test -d ./--version && rmdir ./--version
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-       @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='isl'
- VERSION='0.24'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-mkdir_p='$(MKDIR_P)'
-
-# We need awk for the "check" target (and possibly the TAP driver).  The
-# system "awk" is bad on some platforms.
-# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
-
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar  pax cpio none'
-
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-
-
-
-
-
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <https://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
-  fi
-fi
-
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=0;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-
-versioninfo=24:0:1
-
-if test "x$prefix" != "xNONE"; then
-       prefix_wd=`cd $prefix && pwd`
-       srcdir_wd=`cd $srcdir && pwd`
-       wd=`pwd`
-       if test "x$prefix_wd" = "x$srcdir_wd"; then
-               as_fn_error $? "Installation in source directory not supported" "$LINENO" 5
-       fi
-       if test "x$prefix_wd" = "x$wd"; then
-               as_fn_error $? "Installation in build directory not supported" "$LINENO" 5
-       fi
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-       ;;
-    [ab].out )
-       # We found the default executable, but exeext='' is most
-       # certainly right.
-       break;;
-    *.* )
-       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-       then :; else
-          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-       fi
-       # We set ac_cv_exeext here because the later test for it is not
-       # safe: cross compilers may not add the suffix if given an `-o'
-       # argument, so we may need to know it at that point already.
-       # Even if this section looks crufty: it has the advantage of
-       # actually working.
-       break;;
-    * )
-       break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-         break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-       cross_compiling=yes
-    else
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
-   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
-$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
-cat > confinc.mk << 'END'
-am__doit:
-       @echo this is the am__doit target >confinc.out
-.PHONY: am__doit
-END
-am__include="#"
-am__quote=
-# BSD make does it like this.
-echo '.include "confinc.mk" # ignored' > confmf.BSD
-# Other make implementations (GNU, Solaris 10, AIX) do it like this.
-echo 'include confinc.mk # ignored' > confmf.GNU
-_am_result=no
-for s in GNU BSD; do
-  { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
-   (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }
-  case $?:`cat confinc.out 2>/dev/null` in #(
-  '0:this is the am__doit target') :
-    case $s in #(
-  BSD) :
-    am__include='.include' am__quote='"' ;; #(
-  *) :
-    am__include='include' am__quote='' ;;
-esac ;; #(
-  *) :
-     ;;
-esac
-  if test "$am__include" != "#"; then
-    _am_result="yes ($s style)"
-    break
-  fi
-done
-rm -f confinc.* confmf.*
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
-$as_echo "${_am_result}" >&6; }
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX=$ac_ct_CXX
-  fi
-fi
-
-  fi
-fi
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if ${ac_cv_cxx_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if ${ac_cv_prog_cxx_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-        CXXFLAGS="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-depcc="$CXX"  am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CXX_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CXX_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
-else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-
-
-cross_compiling_build=no
-
-ac_build_tool_prefix=
-if test -n "$build"; then :
-  ac_build_tool_prefix="$build-"
-elif test -n "$build_alias"; then :
-  ac_build_tool_prefix="$build_alias-"
-fi
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-if test -n "$ac_build_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_build_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC_FOR_BUILD="${ac_build_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC_FOR_BUILD"; then
-  ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC_FOR_BUILD"; then
-  ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC_FOR_BUILD="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD
-if test -n "$ac_ct_CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5
-$as_echo "$ac_ct_CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC_FOR_BUILD" = x; then
-    CC_FOR_BUILD=""
-  else
-    case $cross_compiling_build:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD
-  fi
-else
-  CC_FOR_BUILD="$ac_cv_prog_CC_FOR_BUILD"
-fi
-
-if test -z "$CC_FOR_BUILD"; then
-          if test -n "$ac_build_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_build_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC_FOR_BUILD="${ac_build_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC_FOR_BUILD"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC_FOR_BUILD="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC_FOR_BUILD
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC_FOR_BUILD to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC_FOR_BUILD="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC_FOR_BUILD"; then
-  if test -n "$ac_build_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_build_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC_FOR_BUILD="$ac_build_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC_FOR_BUILD" && break
-  done
-fi
-if test -z "$CC_FOR_BUILD"; then
-  ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC_FOR_BUILD"; then
-  ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD
-if test -n "$ac_ct_CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5
-$as_echo "$ac_ct_CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC_FOR_BUILD" && break
-done
-
-  if test "x$ac_ct_CC_FOR_BUILD" = x; then
-    CC_FOR_BUILD=""
-  else
-    case $cross_compiling_build:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD
-  fi
-fi
-
-fi
-
-
-test -z "$CC_FOR_BUILD" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC_FOR_BUILD=yes
-else
-  GCC_FOR_BUILD=
-fi
-ac_test_CFLAGS=${CFLAGS_FOR_BUILD+set}
-ac_save_CFLAGS=$CFLAGS_FOR_BUILD
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD accepts -g" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD accepts -g... " >&6; }
-if ${ac_cv_build_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_build_prog_cc_g=no
-   CFLAGS_FOR_BUILD="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_build_prog_cc_g=yes
-else
-  CFLAGS_FOR_BUILD=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS_FOR_BUILD="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_build_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_g" >&5
-$as_echo "$ac_cv_build_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS_FOR_BUILD=$ac_save_CFLAGS
-elif test $ac_cv_build_prog_cc_g = yes; then
-  if test "$GCC_FOR_BUILD" = yes; then
-    CFLAGS_FOR_BUILD="-g -O2"
-  else
-    CFLAGS_FOR_BUILD="-g"
-  fi
-else
-  if test "$GCC_FOR_BUILD" = yes; then
-    CFLAGS_FOR_BUILD="-O2"
-  else
-    CFLAGS_FOR_BUILD=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to accept ISO C89" >&5
-$as_echo_n "checking for $CC_FOR_BUILD option to accept ISO C89... " >&6; }
-if ${ac_cv_build_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_build_prog_cc_c89=no
-ac_save_CC=$CC_FOR_BUILD
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC_FOR_BUILD="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_build_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_build_objext
-  test "x$ac_cv_build_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC_FOR_BUILD=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_build_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c89" >&5
-$as_echo "$ac_cv_build_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_build_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD understands -c and -o together" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD understands -c and -o together... " >&6; }
-if ${am_cv_build_prog_cc_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_build_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if { echo "$as_me:$LINENO: $CC_FOR_BUILD -c conftest.$ac_ext -o conftest2.$ac_build_objext" >&5
-   ($CC_FOR_BUILD -c conftest.$ac_ext -o conftest2.$ac_build_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && test -f conftest2.$ac_build_objext; then
-      : OK
-    else
-      am_cv_build_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_build_prog_cc_c_o" >&5
-$as_echo "$am_cv_build_prog_cc_c_o" >&6; }
-if test "$am_cv_build_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC_FOR_BUILD="$am_aux_dir/compile $CC_FOR_BUILD"
-fi
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-
-
-depcc="$CC_FOR_BUILD"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_build_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_build_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${BUILD_OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${BUILD_OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_build_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_build_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_build_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_build_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE_FOR_BUILD=depmode=$am_cv_build_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_build_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_build_TRUE=
-  am__fastdepCC_build_FALSE='#'
-else
-  am__fastdepCC_build_TRUE='#'
-  am__fastdepCC_build_FALSE=
-fi
-
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-       ;;
-    [ab].out )
-       # We found the default executable, but exeext='' is most
-       # certainly right.
-       break;;
-    *.* )
-       if test "${ac_cv_build_exeext+set}" = set && test "$ac_cv_build_exeext" != no;
-       then :; else
-          ac_cv_build_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-       fi
-       # We set ac_cv_exeext here because the later test for it is not
-       # safe: cross compilers may not add the suffix if given an `-o'
-       # argument, so we may need to know it at that point already.
-       # Even if this section looks crufty: it has the advantage of
-       # actually working.
-       break;;
-    * )
-       break;;
-  esac
-done
-test "$ac_cv_build_exeext" = no && ac_cv_build_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_build_exeext=$ac_cv_build_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_build_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_build_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-         break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_build_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_exeext" >&5
-$as_echo "$ac_cv_build_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-BUILD_EXEEXT=$ac_cv_build_exeext
-ac_build_exeext=$BUILD_EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling_build" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_build_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling_build=no
-  else
-    if test "$cross_compiling_build" = maybe; then
-       cross_compiling_build=yes
-    else
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--build'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling_build" >&5
-$as_echo "$cross_compiling_build" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_build_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_build_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_build_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_build_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_objext" >&5
-$as_echo "$ac_cv_build_objext" >&6; }
-BUILD_OBJEXT=$ac_cv_build_objext
-ac_build_objext=$BUILD_OBJEXT
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP_FOR_BUILD" && test -d "$CPP_FOR_BUILD"; then
-  CPP_FOR_BUILD=
-fi
-if test -z "$CPP_FOR_BUILD"; then
-  if ${ac_cv_build_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP_FOR_BUILD in "$CC_FOR_BUILD -E" "$CC_FOR_BUILD -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_build_prog_CPP=$CPP_FOR_BUILD
-
-fi
-  CPP_FOR_BUILD=$ac_cv_build_prog_CPP
-else
-  ac_cv_build_prog_CPP=$CPP_FOR_BUILD
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP_FOR_BUILD" >&5
-$as_echo "$CPP_FOR_BUILD" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP_FOR_BUILD\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5
-$as_echo_n "checking for C compiler vendor... " >&6; }
-if ${ax_cv_c_compiler_vendor+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ax_cv_c_compiler_vendor=unknown
-  # note: don't check for gcc first since some other compilers define __GNUC__
-  for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale:__PATHCC__,__PATHSCALE__ clang:__clang__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
-    vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-#if !($vencpp)
-      thisisanerror;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ax_cv_c_compiler_vendor=`echo $ventest | cut -d: -f1`; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5
-$as_echo "$ax_cv_c_compiler_vendor" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-
-
-
-
-
-# Check whether --enable-portable-binary was given.
-if test "${enable_portable_binary+set}" = set; then :
-  enableval=$enable_portable_binary; acx_maxopt_portable=$withval
-else
-  acx_maxopt_portable=no
-fi
-
-
-# Try to determine "good" native compiler flags if none specified via CFLAGS
-if test "$ac_test_CFLAGS" != "set"; then
-  CFLAGS=""
-  case $ax_cv_c_compiler_vendor in
-    dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host"
-        if test "x$acx_maxopt_portable" = xno; then
-           CFLAGS="$CFLAGS -arch host"
-         fi;;
-
-    sun) CFLAGS="-native -fast -xO5 -dalign"
-        if test "x$acx_maxopt_portable" = xyes; then
-          CFLAGS="$CFLAGS -xarch=generic"
-         fi;;
-
-    hp)  CFLAGS="+Oall +Optrs_ansi +DSnative"
-        if test "x$acx_maxopt_portable" = xyes; then
-          CFLAGS="$CFLAGS +DAportable"
-        fi;;
-
-    ibm) if test "x$acx_maxopt_portable" = xno; then
-           xlc_opt="-qarch=auto -qtune=auto"
-        else
-           xlc_opt="-qtune=auto"
-        fi
-          { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $xlc_opt" >&5
-$as_echo_n "checking whether C compiler accepts $xlc_opt... " >&6; }
-ax_save_FLAGS=$CFLAGS
-   CFLAGS="$xlc_opt"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval `$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`=yes
-else
-  eval `$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   CFLAGS=$ax_save_FLAGS
-eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
-       CFLAGS="-O3 -qansialias -w $xlc_opt"
-else
-       CFLAGS="-O3 -qansialias -w"
-                echo "******************************************************"
-                echo "*  You seem to have the IBM  C compiler.  It is      *"
-                echo "*  recommended for best performance that you use:    *"
-                echo "*                                                    *"
-                echo "*    CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *"
-                echo "*                      ^^^        ^^^                *"
-                echo "*  where xxx is pwr2, pwr3, 604, or whatever kind of *"
-                echo "*  CPU you have.  (Set the CFLAGS environment var.   *"
-                echo "*  and re-run configure.)  For more info, man cc.    *"
-                echo "******************************************************"
-fi
-
-         ;;
-
-    intel) CFLAGS="-O3 -ansi_alias"
-       if test "x$acx_maxopt_portable" = xno; then
-         icc_archflag=unknown
-         icc_flags=""
-         case $host_cpu in
-           i686*|x86_64*)
-              # icc accepts gcc assembly syntax, so these should work:
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
-$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
-if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ax_cv_gcc_x86_cpuid_0=unknown
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-
-     int op = 0, eax, ebx, ecx, edx;
-     FILE *f;
-      __asm__("cpuid"
-        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-        : "a" (op));
-     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-     fclose(f);
-     return 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
-else
-  ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
-$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
-$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
-if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ax_cv_gcc_x86_cpuid_1=unknown
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-
-     int op = 1, eax, ebx, ecx, edx;
-     FILE *f;
-      __asm__("cpuid"
-        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-        : "a" (op));
-     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-     fclose(f);
-     return 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
-else
-  ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
-$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-             case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG
-                *:756e6547:*:*) # Intel
-                  case $ax_cv_gcc_x86_cpuid_1 in
-                    *6a?:*[234]:*:*|*6[789b]?:*:*:*) icc_flags="-xK";;
-                    *f3[347]:*:*:*|*f41347:*:*:*) icc_flags="-xP -xN -xW -xK";;
-                    *f??:*:*:*) icc_flags="-xN -xW -xK";;
-                  esac ;;
-              esac ;;
-          esac
-          if test "x$icc_flags" != x; then
-            for flag in $icc_flags; do
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-ax_save_FLAGS=$CFLAGS
-   CFLAGS="$flag"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=yes
-else
-  eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   CFLAGS=$ax_save_FLAGS
-eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
-       icc_archflag=$flag; break
-else
-       :
-fi
-
-            done
-          fi
-          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc architecture flag" >&5
-$as_echo_n "checking for icc architecture flag... " >&6; }
-         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icc_archflag" >&5
-$as_echo "$icc_archflag" >&6; }
-          if test "x$icc_archflag" != xunknown; then
-            CFLAGS="$CFLAGS $icc_archflag"
-          fi
-        fi
-       ;;
-
-    gnu)
-     # default optimization flags for gcc on all systems
-     CFLAGS="-O3 -fomit-frame-pointer"
-
-     # -malign-double for x86 systems
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -malign-double" >&5
-$as_echo_n "checking whether C compiler accepts -malign-double... " >&6; }
-if ${ax_cv_c_flags__malign_double+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-      ax_save_FLAGS=$CFLAGS
-      CFLAGS="-malign-double"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ax_cv_c_flags__malign_double=yes
-else
-  ax_cv_c_flags__malign_double=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-      CFLAGS=$ax_save_FLAGS
-fi
-
-eval ax_check_compiler_flags=$ax_cv_c_flags__malign_double
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
-       CFLAGS="$CFLAGS -malign-double"
-else
-       :
-fi
-
-
-     #  -fstrict-aliasing for gcc-2.95+
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5
-$as_echo_n "checking whether C compiler accepts -fstrict-aliasing... " >&6; }
-if ${ax_cv_c_flags__fstrict_aliasing+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-      ax_save_FLAGS=$CFLAGS
-      CFLAGS="-fstrict-aliasing"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ax_cv_c_flags__fstrict_aliasing=yes
-else
-  ax_cv_c_flags__fstrict_aliasing=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-      CFLAGS=$ax_save_FLAGS
-fi
-
-eval ax_check_compiler_flags=$ax_cv_c_flags__fstrict_aliasing
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
-       CFLAGS="$CFLAGS -fstrict-aliasing"
-else
-       :
-fi
-
-
-     # note that we enable "unsafe" fp optimization with other compilers, too
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5
-$as_echo_n "checking whether C compiler accepts -ffast-math... " >&6; }
-if ${ax_cv_c_flags__ffast_math+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-      ax_save_FLAGS=$CFLAGS
-      CFLAGS="-ffast-math"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ax_cv_c_flags__ffast_math=yes
-else
-  ax_cv_c_flags__ffast_math=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-      CFLAGS=$ax_save_FLAGS
-fi
-
-eval ax_check_compiler_flags=$ax_cv_c_flags__ffast_math
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
-       CFLAGS="$CFLAGS -ffast-math"
-else
-       :
-fi
-
-
-
-
-
-
-# Check whether --with-gcc-arch was given.
-if test "${with_gcc_arch+set}" = set; then :
-  withval=$with_gcc_arch; ax_gcc_arch=$withval
-else
-  ax_gcc_arch=yes
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
-$as_echo_n "checking for gcc architecture flag... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-$as_echo "" >&6; }
-if ${ax_cv_gcc_archflag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-ax_cv_gcc_archflag="unknown"
-
-if test "$GCC" = yes; then
-
-if test "x$ax_gcc_arch" = xyes; then
-ax_gcc_arch=""
-if test "$cross_compiling" = no; then
-case $host_cpu in
-  i[3456]86*|x86_64*) # use cpuid codes, in part from x86info-1.7 by D. Jones
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
-$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
-if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ax_cv_gcc_x86_cpuid_0=unknown
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-
-     int op = 0, eax, ebx, ecx, edx;
-     FILE *f;
-      __asm__("cpuid"
-        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-        : "a" (op));
-     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-     fclose(f);
-     return 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
-else
-  ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
-$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
-$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
-if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ax_cv_gcc_x86_cpuid_1=unknown
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-
-     int op = 1, eax, ebx, ecx, edx;
-     FILE *f;
-      __asm__("cpuid"
-        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-        : "a" (op));
-     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-     fclose(f);
-     return 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
-else
-  ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
-$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-     case $ax_cv_gcc_x86_cpuid_0 in
-       *:756e6547:*:*) # Intel
-          case $ax_cv_gcc_x86_cpuid_1 in
-           *5[48]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
-           *5??:*:*:*) ax_gcc_arch=pentium ;;
-           *6[3456]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
-           *6a?:*[01]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
-           *6a?:*[234]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
-           *6[9d]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
-           *6[78b]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
-           *6??:*:*:*) ax_gcc_arch=pentiumpro ;;
-            *f3[347]:*:*:*|*f41347:*:*:*)
-               case $host_cpu in
-                  x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
-                  *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
-                esac ;;
-            *f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
-          esac ;;
-       *:68747541:*:*) # AMD
-          case $ax_cv_gcc_x86_cpuid_1 in
-           *5[67]?:*:*:*) ax_gcc_arch=k6 ;;
-           *5[8d]?:*:*:*) ax_gcc_arch="k6-2 k6" ;;
-           *5[9]?:*:*:*) ax_gcc_arch="k6-3 k6" ;;
-           *60?:*:*:*) ax_gcc_arch=k7 ;;
-           *6[12]?:*:*:*) ax_gcc_arch="athlon k7" ;;
-           *6[34]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;;
-           *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;;
-           *6[68a]?:*:*:*)
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0x80000006 output" >&5
-$as_echo_n "checking for x86 cpuid 0x80000006 output... " >&6; }
-if ${ax_cv_gcc_x86_cpuid_0x80000006+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ax_cv_gcc_x86_cpuid_0x80000006=unknown
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-
-     int op = 0x80000006, eax, ebx, ecx, edx;
-     FILE *f;
-      __asm__("cpuid"
-        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-        : "a" (op));
-     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-     fclose(f);
-     return 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ax_cv_gcc_x86_cpuid_0x80000006=`cat conftest_cpuid`; rm -f conftest_cpuid
-else
-  ax_cv_gcc_x86_cpuid_0x80000006=unknown; rm -f conftest_cpuid
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x80000006" >&5
-$as_echo "$ax_cv_gcc_x86_cpuid_0x80000006" >&6; }
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- # L2 cache size
-              case $ax_cv_gcc_x86_cpuid_0x80000006 in
-                 *:*:*[1-9a-f]??????:*) # (L2 = ecx >> 16) >= 256
-                       ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
-                 *) ax_gcc_arch="athlon-4 athlon k7" ;;
-              esac ;;
-           *f[4cef8b]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
-           *f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
-           *f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
-           *f??:*:*:*) ax_gcc_arch="k8" ;;
-          esac ;;
-       *:746e6543:*:*) # IDT
-          case $ax_cv_gcc_x86_cpuid_1 in
-            *54?:*:*:*) ax_gcc_arch=winchip-c6 ;;
-            *58?:*:*:*) ax_gcc_arch=winchip2 ;;
-            *6[78]?:*:*:*) ax_gcc_arch=c3 ;;
-            *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;;
-          esac ;;
-     esac
-     if test x"$ax_gcc_arch" = x; then # fallback
-       case $host_cpu in
-         i586*) ax_gcc_arch=pentium ;;
-         i686*) ax_gcc_arch=pentiumpro ;;
-        esac
-     fi
-     ;;
-
-  sparc*)
-     # Extract the first word of "prtdiag", so it can be a program name with args.
-set dummy prtdiag; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PRTDIAG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PRTDIAG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PRTDIAG="$PRTDIAG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_dummy="$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/"
-for as_dir in $as_dummy
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PRTDIAG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_PRTDIAG" && ac_cv_path_PRTDIAG="prtdiag"
-  ;;
-esac
-fi
-PRTDIAG=$ac_cv_path_PRTDIAG
-if test -n "$PRTDIAG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRTDIAG" >&5
-$as_echo "$PRTDIAG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-     cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
-     cputype=`echo "$cputype" | tr -d ' -' |tr $as_cr_LETTERS $as_cr_letters`
-     case $cputype in
-         *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
-         *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
-         *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;;
-         *supersparc*|*tms390z5[05]*) ax_gcc_arch="supersparc v8" ;;
-         *hypersparc*|*rt62[056]*) ax_gcc_arch="hypersparc v8" ;;
-         *cypress*) ax_gcc_arch=cypress ;;
-     esac ;;
-
-  alphaev5) ax_gcc_arch=ev5 ;;
-  alphaev56) ax_gcc_arch=ev56 ;;
-  alphapca56) ax_gcc_arch="pca56 ev56" ;;
-  alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;;
-  alphaev6) ax_gcc_arch=ev6 ;;
-  alphaev67) ax_gcc_arch=ev67 ;;
-  alphaev68) ax_gcc_arch="ev68 ev67" ;;
-  alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;;
-  alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;;
-  alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;;
-
-  powerpc*)
-     cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null`
-     cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'`
-     case $cputype in
-       *750*) ax_gcc_arch="750 G3" ;;
-       *740[0-9]*) ax_gcc_arch="$cputype 7400 G4" ;;
-       *74[4-5][0-9]*) ax_gcc_arch="$cputype 7450 G4" ;;
-       *74[0-9][0-9]*) ax_gcc_arch="$cputype G4" ;;
-       *970*) ax_gcc_arch="970 G5 power4";;
-       *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";;
-       *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";;
-       603ev|8240) ax_gcc_arch="$cputype 603e 603";;
-       *) ax_gcc_arch=$cputype ;;
-     esac
-     ax_gcc_arch="$ax_gcc_arch powerpc"
-     ;;
-esac
-fi # not cross-compiling
-fi # guess arch
-
-if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
-for arch in $ax_gcc_arch; do
-  if test "x$acx_maxopt_portable" = xyes; then # if we require portable code
-    flags="-mtune=$arch"
-    # -mcpu=$arch and m$arch generate nonportable code on every arch except
-    # x86.  And some other arches (e.g. Alpha) don't accept -mtune.  Grrr.
-    case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac
-  else
-    flags="-march=$arch -mcpu=$arch -m$arch"
-  fi
-  for flag in $flags; do
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-ax_save_FLAGS=$CFLAGS
-   CFLAGS="$flag"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=yes
-else
-  eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   CFLAGS=$ax_save_FLAGS
-eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
-       ax_cv_gcc_archflag=$flag; break
-else
-       :
-fi
-
-  done
-  test "x$ax_cv_gcc_archflag" = xunknown || break
-done
-fi
-
-fi # $GCC=yes
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
-$as_echo_n "checking for gcc architecture flag... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_archflag" >&5
-$as_echo "$ax_cv_gcc_archflag" >&6; }
-if test "x$ax_cv_gcc_archflag" = xunknown; then
-  :
-else
-  CFLAGS="$CFLAGS $ax_cv_gcc_archflag"
-fi
-
-
-     # drop to -O1 for gcc 4.2
-     $CC --version |
-       sed -e 's/.* \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1 \2/' |
-       (read major minor
-           if test $major -eq 4 -a $minor -eq 2; then
-                               exit 0
-           fi
-           exit 1
-       ) && CFLAGS="-O1"
-     ;;
-  esac
-
-  if test -z "$CFLAGS"; then
-       echo ""
-       echo "********************************************************"
-        echo "* WARNING: Don't know the best CFLAGS for this system  *"
-        echo "* Use ./configure CFLAGS=... to specify your own flags *"
-       echo "* (otherwise, a default of CFLAGS=-O3 will be used)    *"
-       echo "********************************************************"
-       echo ""
-        CFLAGS="-O3"
-  fi
-
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CFLAGS" >&5
-$as_echo_n "checking whether C compiler accepts $CFLAGS... " >&6; }
-ax_save_FLAGS=$CFLAGS
-   CFLAGS="$CFLAGS"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval `$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`=yes
-else
-  eval `$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   CFLAGS=$ax_save_FLAGS
-eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
-       :
-else
-
-       echo ""
-        echo "********************************************************"
-        echo "* WARNING: The guessed CFLAGS don't seem to work with  *"
-        echo "* your compiler.                                       *"
-        echo "* Use ./configure CFLAGS=... to specify your own flags *"
-        echo "********************************************************"
-        echo ""
-        CFLAGS=""
-
-fi
-
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports function __attribute__((__warn_unused_result__))" >&5
-$as_echo_n "checking whether the compiler supports function __attribute__((__warn_unused_result__))... " >&6; }
-if ${ax_cv_gcc_warn_unused_result+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-__attribute__((__warn_unused_result__))
- int f(int i) { return i; }
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ax_cv_gcc_warn_unused_result=yes
-else
-  ax_cv_gcc_warn_unused_result=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_warn_unused_result" >&5
-$as_echo "$ax_cv_gcc_warn_unused_result" >&6; }
- if test "$ax_cv_gcc_warn_unused_result" = yes; then
-
-$as_echo "#define GCC_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))" >>confdefs.h
-
- fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__" >&5
-$as_echo_n "checking for __attribute__... " >&6; }
-if ${ax_cv___attribute__+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-         static void foo(void) __attribute__ ((unused));
-         static void
-         foo(void) {
-             exit(1);
-         }
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ax_cv___attribute__=yes
-else
-  ax_cv___attribute__=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv___attribute__" >&5
-$as_echo "$ax_cv___attribute__" >&6; }
-  if test "$ax_cv___attribute__" = "yes"; then
-
-$as_echo "#define HAVE___ATTRIBUTE__ 1" >>confdefs.h
-
-  fi
-
-
-
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-       echo $CXX | $GREP -e "-std=" > /dev/null 2> /dev/null
-       if test $? -eq 0; then
-                 ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-  ac_success=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
-$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
-if ${ax_cv_cxx_compile_cxx11+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201103L
-
-#error "This is not a C++11 compiler"
-
-#else
-
-namespace cxx11
-{
-
-  namespace test_static_assert
-  {
-
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-  }
-
-  namespace test_final_override
-  {
-
-    struct Base
-    {
-      virtual void f() {}
-    };
-
-    struct Derived : public Base
-    {
-      virtual void f() override {}
-    };
-
-  }
-
-  namespace test_double_right_angle_brackets
-  {
-
-    template < typename T >
-    struct check {};
-
-    typedef check<void> single_type;
-    typedef check<check<void>> double_type;
-    typedef check<check<check<void>>> triple_type;
-    typedef check<check<check<check<void>>>> quadruple_type;
-
-  }
-
-  namespace test_decltype
-  {
-
-    int
-    f()
-    {
-      int a = 1;
-      decltype(a) b = 2;
-      return a + b;
-    }
-
-  }
-
-  namespace test_type_deduction
-  {
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static const bool value = true;
-    };
-
-    template < typename T1, typename T2 >
-    auto
-    add(T1 a1, T2 a2) -> decltype(a1 + a2)
-    {
-      return a1 + a2;
-    }
-
-    int
-    test(const int c, volatile int v)
-    {
-      static_assert(is_same<int, decltype(0)>::value == true, "");
-      static_assert(is_same<int, decltype(c)>::value == false, "");
-      static_assert(is_same<int, decltype(v)>::value == false, "");
-      auto ac = c;
-      auto av = v;
-      auto sumi = ac + av + 'x';
-      auto sumf = ac + av + 1.0;
-      static_assert(is_same<int, decltype(ac)>::value == true, "");
-      static_assert(is_same<int, decltype(av)>::value == true, "");
-      static_assert(is_same<int, decltype(sumi)>::value == true, "");
-      static_assert(is_same<int, decltype(sumf)>::value == false, "");
-      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-      return (sumf > 0.0) ? sumi : add(c, v);
-    }
-
-  }
-
-  namespace test_noexcept
-  {
-
-    int f() { return 0; }
-    int g() noexcept { return 0; }
-
-    static_assert(noexcept(f()) == false, "");
-    static_assert(noexcept(g()) == true, "");
-
-  }
-
-  namespace test_constexpr
-  {
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-    {
-      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-    }
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
-
-  }
-
-  namespace test_rvalue_references
-  {
-
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
-
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
-
-    void
-    test()
-    {
-      int i = 0;
-      const int c = 0;
-      static_assert(decltype(f(i))::value == 1, "");
-      static_assert(decltype(f(c))::value == 2, "");
-      static_assert(decltype(f(0))::value == 3, "");
-    }
-
-  }
-
-  namespace test_uniform_initialization
-  {
-
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
-
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
-
-  }
-
-  namespace test_lambdas
-  {
-
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
-
-    int
-    test2()
-    {
-      auto a = [](int i, int j){ return i + j; }(1, 2);
-      auto b = []() -> int { return '0'; }();
-      auto c = [=](){ return a + b; }();
-      auto d = [&](){ return c; }();
-      auto e = [a, &b](int x) mutable {
-        const auto identity = [](int y){ return y; };
-        for (auto i = 0; i < a; ++i)
-          a += b--;
-        return x + identity(a + b);
-      }(0);
-      return a + b + c + d + e;
-    }
-
-    int
-    test3()
-    {
-      const auto nullary = [](){ return 0; };
-      const auto unary = [](int x){ return x; };
-      using nullary_t = decltype(nullary);
-      using unary_t = decltype(unary);
-      const auto higher1st = [](nullary_t f){ return f(); };
-      const auto higher2nd = [unary](nullary_t f1){
-        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-      };
-      return higher1st(nullary) + higher2nd(nullary)(unary);
-    }
-
-  }
-
-  namespace test_variadic_templates
-  {
-
-    template <int...>
-    struct sum;
-
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
-
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
-
-    static_assert(sum<>::value == 0, "");
-    static_assert(sum<1>::value == 1, "");
-    static_assert(sum<23>::value == 23, "");
-    static_assert(sum<1, 2>::value == 3, "");
-    static_assert(sum<5, 5, 11>::value == 21, "");
-    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-
-  }
-
-  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-  // because of this.
-  namespace test_template_alias_sfinae
-  {
-
-    struct foo {};
-
-    template<typename T>
-    using member = typename T::member_type;
-
-    template<typename T>
-    void func(...) {}
-
-    template<typename T>
-    void func(member<T>*) {}
-
-    void test();
-
-    void test() { func<foo>(0); }
-
-  }
-
-}  // namespace cxx11
-
-#endif  // __cplusplus >= 201103L
-
-
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ax_cv_cxx_compile_cxx11=yes
-else
-  ax_cv_cxx_compile_cxx11=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
-$as_echo "$ax_cv_cxx_compile_cxx11" >&6; }
-  if test x$ax_cv_cxx_compile_cxx11 = xyes; then
-    ac_success=yes
-  fi
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test x$ac_success = xno; then
-    HAVE_CXX11=0
-  else
-    HAVE_CXX11=1
-
-$as_echo "#define HAVE_CXX11 1" >>confdefs.h
-
-  fi
-
-
-       else
-                 ax_cxx_compile_alternatives="11 0x"    ax_cxx_compile_cxx11_required=false
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-  ac_success=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
-$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
-if ${ax_cv_cxx_compile_cxx11+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201103L
-
-#error "This is not a C++11 compiler"
-
-#else
-
-namespace cxx11
-{
-
-  namespace test_static_assert
-  {
-
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-  }
-
-  namespace test_final_override
-  {
-
-    struct Base
-    {
-      virtual void f() {}
-    };
-
-    struct Derived : public Base
-    {
-      virtual void f() override {}
-    };
-
-  }
-
-  namespace test_double_right_angle_brackets
-  {
-
-    template < typename T >
-    struct check {};
-
-    typedef check<void> single_type;
-    typedef check<check<void>> double_type;
-    typedef check<check<check<void>>> triple_type;
-    typedef check<check<check<check<void>>>> quadruple_type;
-
-  }
-
-  namespace test_decltype
-  {
-
-    int
-    f()
-    {
-      int a = 1;
-      decltype(a) b = 2;
-      return a + b;
-    }
-
-  }
-
-  namespace test_type_deduction
-  {
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static const bool value = true;
-    };
-
-    template < typename T1, typename T2 >
-    auto
-    add(T1 a1, T2 a2) -> decltype(a1 + a2)
-    {
-      return a1 + a2;
-    }
-
-    int
-    test(const int c, volatile int v)
-    {
-      static_assert(is_same<int, decltype(0)>::value == true, "");
-      static_assert(is_same<int, decltype(c)>::value == false, "");
-      static_assert(is_same<int, decltype(v)>::value == false, "");
-      auto ac = c;
-      auto av = v;
-      auto sumi = ac + av + 'x';
-      auto sumf = ac + av + 1.0;
-      static_assert(is_same<int, decltype(ac)>::value == true, "");
-      static_assert(is_same<int, decltype(av)>::value == true, "");
-      static_assert(is_same<int, decltype(sumi)>::value == true, "");
-      static_assert(is_same<int, decltype(sumf)>::value == false, "");
-      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-      return (sumf > 0.0) ? sumi : add(c, v);
-    }
-
-  }
-
-  namespace test_noexcept
-  {
-
-    int f() { return 0; }
-    int g() noexcept { return 0; }
-
-    static_assert(noexcept(f()) == false, "");
-    static_assert(noexcept(g()) == true, "");
-
-  }
-
-  namespace test_constexpr
-  {
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-    {
-      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-    }
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
-
-  }
-
-  namespace test_rvalue_references
-  {
-
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
-
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
-
-    void
-    test()
-    {
-      int i = 0;
-      const int c = 0;
-      static_assert(decltype(f(i))::value == 1, "");
-      static_assert(decltype(f(c))::value == 2, "");
-      static_assert(decltype(f(0))::value == 3, "");
-    }
-
-  }
-
-  namespace test_uniform_initialization
-  {
-
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
-
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
-
-  }
-
-  namespace test_lambdas
-  {
-
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
-
-    int
-    test2()
-    {
-      auto a = [](int i, int j){ return i + j; }(1, 2);
-      auto b = []() -> int { return '0'; }();
-      auto c = [=](){ return a + b; }();
-      auto d = [&](){ return c; }();
-      auto e = [a, &b](int x) mutable {
-        const auto identity = [](int y){ return y; };
-        for (auto i = 0; i < a; ++i)
-          a += b--;
-        return x + identity(a + b);
-      }(0);
-      return a + b + c + d + e;
-    }
-
-    int
-    test3()
-    {
-      const auto nullary = [](){ return 0; };
-      const auto unary = [](int x){ return x; };
-      using nullary_t = decltype(nullary);
-      using unary_t = decltype(unary);
-      const auto higher1st = [](nullary_t f){ return f(); };
-      const auto higher2nd = [unary](nullary_t f1){
-        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-      };
-      return higher1st(nullary) + higher2nd(nullary)(unary);
-    }
-
-  }
-
-  namespace test_variadic_templates
-  {
-
-    template <int...>
-    struct sum;
-
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
-
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
-
-    static_assert(sum<>::value == 0, "");
-    static_assert(sum<1>::value == 1, "");
-    static_assert(sum<23>::value == 23, "");
-    static_assert(sum<1, 2>::value == 3, "");
-    static_assert(sum<5, 5, 11>::value == 21, "");
-    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-
-  }
-
-  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-  // because of this.
-  namespace test_template_alias_sfinae
-  {
-
-    struct foo {};
-
-    template<typename T>
-    using member = typename T::member_type;
-
-    template<typename T>
-    void func(...) {}
-
-    template<typename T>
-    void func(member<T>*) {}
-
-    void test();
-
-    void test() { func<foo>(0); }
-
-  }
-
-}  // namespace cxx11
-
-#endif  // __cplusplus >= 201103L
-
-
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ax_cv_cxx_compile_cxx11=yes
-else
-  ax_cv_cxx_compile_cxx11=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
-$as_echo "$ax_cv_cxx_compile_cxx11" >&6; }
-  if test x$ax_cv_cxx_compile_cxx11 = xyes; then
-    ac_success=yes
-  fi
-
-
-
-    if test x$ac_success = xno; then
-                for alternative in ${ax_cxx_compile_alternatives}; do
-      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
-        cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
-$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
-if eval \${$cachevar+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_CXX="$CXX"
-           CXX="$CXX $switch"
-           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201103L
-
-#error "This is not a C++11 compiler"
-
-#else
-
-namespace cxx11
-{
-
-  namespace test_static_assert
-  {
-
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-  }
-
-  namespace test_final_override
-  {
-
-    struct Base
-    {
-      virtual void f() {}
-    };
-
-    struct Derived : public Base
-    {
-      virtual void f() override {}
-    };
-
-  }
-
-  namespace test_double_right_angle_brackets
-  {
-
-    template < typename T >
-    struct check {};
-
-    typedef check<void> single_type;
-    typedef check<check<void>> double_type;
-    typedef check<check<check<void>>> triple_type;
-    typedef check<check<check<check<void>>>> quadruple_type;
-
-  }
-
-  namespace test_decltype
-  {
-
-    int
-    f()
-    {
-      int a = 1;
-      decltype(a) b = 2;
-      return a + b;
-    }
-
-  }
-
-  namespace test_type_deduction
-  {
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static const bool value = true;
-    };
-
-    template < typename T1, typename T2 >
-    auto
-    add(T1 a1, T2 a2) -> decltype(a1 + a2)
-    {
-      return a1 + a2;
-    }
-
-    int
-    test(const int c, volatile int v)
-    {
-      static_assert(is_same<int, decltype(0)>::value == true, "");
-      static_assert(is_same<int, decltype(c)>::value == false, "");
-      static_assert(is_same<int, decltype(v)>::value == false, "");
-      auto ac = c;
-      auto av = v;
-      auto sumi = ac + av + 'x';
-      auto sumf = ac + av + 1.0;
-      static_assert(is_same<int, decltype(ac)>::value == true, "");
-      static_assert(is_same<int, decltype(av)>::value == true, "");
-      static_assert(is_same<int, decltype(sumi)>::value == true, "");
-      static_assert(is_same<int, decltype(sumf)>::value == false, "");
-      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-      return (sumf > 0.0) ? sumi : add(c, v);
-    }
-
-  }
-
-  namespace test_noexcept
-  {
-
-    int f() { return 0; }
-    int g() noexcept { return 0; }
-
-    static_assert(noexcept(f()) == false, "");
-    static_assert(noexcept(g()) == true, "");
-
-  }
-
-  namespace test_constexpr
-  {
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-    {
-      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-    }
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
-
-  }
-
-  namespace test_rvalue_references
-  {
-
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
-
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
-
-    void
-    test()
-    {
-      int i = 0;
-      const int c = 0;
-      static_assert(decltype(f(i))::value == 1, "");
-      static_assert(decltype(f(c))::value == 2, "");
-      static_assert(decltype(f(0))::value == 3, "");
-    }
-
-  }
-
-  namespace test_uniform_initialization
-  {
-
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
-
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
-
-  }
-
-  namespace test_lambdas
-  {
-
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
-
-    int
-    test2()
-    {
-      auto a = [](int i, int j){ return i + j; }(1, 2);
-      auto b = []() -> int { return '0'; }();
-      auto c = [=](){ return a + b; }();
-      auto d = [&](){ return c; }();
-      auto e = [a, &b](int x) mutable {
-        const auto identity = [](int y){ return y; };
-        for (auto i = 0; i < a; ++i)
-          a += b--;
-        return x + identity(a + b);
-      }(0);
-      return a + b + c + d + e;
-    }
-
-    int
-    test3()
-    {
-      const auto nullary = [](){ return 0; };
-      const auto unary = [](int x){ return x; };
-      using nullary_t = decltype(nullary);
-      using unary_t = decltype(unary);
-      const auto higher1st = [](nullary_t f){ return f(); };
-      const auto higher2nd = [unary](nullary_t f1){
-        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-      };
-      return higher1st(nullary) + higher2nd(nullary)(unary);
-    }
-
-  }
-
-  namespace test_variadic_templates
-  {
-
-    template <int...>
-    struct sum;
-
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
-
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
-
-    static_assert(sum<>::value == 0, "");
-    static_assert(sum<1>::value == 1, "");
-    static_assert(sum<23>::value == 23, "");
-    static_assert(sum<1, 2>::value == 3, "");
-    static_assert(sum<5, 5, 11>::value == 21, "");
-    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-
-  }
-
-  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-  // because of this.
-  namespace test_template_alias_sfinae
-  {
-
-    struct foo {};
-
-    template<typename T>
-    using member = typename T::member_type;
-
-    template<typename T>
-    void func(...) {}
-
-    template<typename T>
-    void func(member<T>*) {}
-
-    void test();
-
-    void test() { func<foo>(0); }
-
-  }
-
-}  // namespace cxx11
-
-#endif  // __cplusplus >= 201103L
-
-
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  eval $cachevar=yes
-else
-  eval $cachevar=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-           CXX="$ac_save_CXX"
-fi
-eval ac_res=\$$cachevar
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-        if eval test x\$$cachevar = xyes; then
-          CXX="$CXX $switch"
-          if test -n "$CXXCPP" ; then
-            CXXCPP="$CXXCPP $switch"
-          fi
-          ac_success=yes
-          break
-        fi
-      done
-      if test x$ac_success = xyes; then
-        break
-      fi
-    done
-  fi
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test x$ax_cxx_compile_cxx11_required = xtrue; then
-    if test x$ac_success = xno; then
-      as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5
-    fi
-  fi
-  if test x$ac_success = xno; then
-    HAVE_CXX11=0
-    { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
-$as_echo "$as_me: No compiler with C++11 support was found" >&6;}
-  else
-    HAVE_CXX11=1
-
-$as_echo "#define HAVE_CXX11 1" >>confdefs.h
-
-  fi
-
-
-
-       fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-case `pwd` in
-  *\ * | *\    *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4.6.42-b88ce-dirty'
-macro_revision='2.4.6.42'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain=$ac_aux_dir/ltmain.sh
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO ""
-}
-
-case $ECHO in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test yes = "$GCC"; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return, which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD=$ac_prog
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test yes = "$with_gnu_ld"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD=$ac_dir/$ac_prog
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-       test no != "$with_gnu_ld" && break
-       ;;
-      *)
-       test yes != "$with_gnu_ld" && break
-       ;;
-      esac
-    fi
-  done
-  IFS=$lt_save_ifs
-else
-  lt_cv_path_LD=$LD # Let the user override the test with a path.
-fi
-fi
-
-LD=$lt_cv_path_LD
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM=$NM
-else
-  lt_nm_to_check=${ac_tool_prefix}nm
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS=$lt_save_ifs
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm=$ac_dir/$lt_tmp_nm
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
-       # Check to see if the nm accepts a BSD-compat flag.
-       # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
-       #   nm: unknown option "B" ignored
-       # Tru64's nm complains that /dev/null is an invalid object file
-       # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
-       case $build_os in
-       mingw*) lt_bad_file=conftest.nm/nofile ;;
-       *) lt_bad_file=/dev/null ;;
-       esac
-       case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
-       *$lt_bad_file* | *'Invalid file or object type'*)
-         lt_cv_path_NM="$tmp_nm -B"
-         break 2
-         ;;
-       *)
-         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-         */dev/null*)
-           lt_cv_path_NM="$tmp_nm -p"
-           break 2
-           ;;
-         *)
-           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-           continue # so that we can try to find one that supports BSD flags
-           ;;
-         esac
-         ;;
-       esac
-      fi
-    done
-    IFS=$lt_save_ifs
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test no != "$lt_cv_path_NM"; then
-  NM=$lt_cv_path_NM
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols -headers"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-
-  if test : != "$DUMPBIN"; then
-    NM=$DUMPBIN
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring=ABCD
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len" && \
-       test undefined != "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
-                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-             test 17 != "$i" # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n "$lt_cv_sys_max_cmd_len"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-
-fi
-
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test yes != "$GCC"; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test yes = "$GCC"; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# 'unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# that responds to the $file_magic_cmd with a given extended regex.
-# If you have 'file' or equivalent on your system and you're not sure
-# whether 'pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd* | bitrig*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-os2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh;
-  # decide which one to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd=$ECHO
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$AR" && break
-  done
-fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_AR" && break
-done
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-fi
-
-: ${AR=ar}
-
-
-
-
-
-
-# Use ARFLAGS variable as AR's operation code to sync the variable naming with
-# Automake.  If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have
-# higher priority because thats what people were doing historically (setting
-# ARFLAGS for automake and AR_FLAGS for libtool).  FIXME: Make the AR_FLAGS
-# variable obsoleted/removed.
-
-test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr}
-lt_ar_flags=$AR_FLAGS
-
-
-
-
-
-
-# Make AR_FLAGS overridable by 'make ARFLAGS='.  Don't try to run-time override
-# by AR_FLAGS because that was never working and AR_FLAGS is about to die.
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test 0 -eq "$ac_status"; then
-       # Ensure the archiver fails upon bogus file names.
-       rm -f conftest.$ac_objext libconftest.a
-       { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-       if test 0 -ne "$ac_status"; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test no = "$lt_cv_ar_at_file"; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  bitrig* | openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test ia64 = "$host_cpu"; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  # Gets list of data symbols to import.
-  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
-  # Adjust the below global symbol transforms to fixup imported variables.
-  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
-  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
-  lt_c_name_lib_hook="\
-  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
-  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
-else
-  # Disable hooks by default.
-  lt_cv_sys_global_symbol_to_import=
-  lt_cdecl_hook=
-  lt_c_name_hook=
-  lt_c_name_lib_hook=
-fi
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n"\
-$lt_cdecl_hook\
-" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
-$lt_c_name_hook\
-" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
-
-# Transform an extracted symbol line into symbol name with lib prefix and
-# symbol address.
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
-$lt_c_name_lib_hook\
-" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
-" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function,
-    # D for any global variable and I for any imported variable.
-    # Also find C++ and __fastcall symbols from MSVC++ or ICC,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
-"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
-"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
-"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
-"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[     ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-       mv -f "$nlist"T "$nlist"
-      else
-       rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-         cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
-/* DATA imports from DLLs on WIN32 can't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined __osf__
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-         # Now generate the symbol file.
-         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-         cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-         $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-         cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-         # Now try linking the two files.
-         mv conftest.$ac_objext conftstm.$ac_objext
-         lt_globsym_save_LIBS=$LIBS
-         lt_globsym_save_CFLAGS=$CFLAGS
-         LIBS=conftstm.$ac_objext
-         CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest$ac_exeext; then
-           pipe_works=yes
-         fi
-         LIBS=$lt_globsym_save_LIBS
-         CFLAGS=$lt_globsym_save_CFLAGS
-       else
-         echo "cannot find nm_test_func in $nlist" >&5
-       fi
-      else
-       echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test yes = "$pipe_works"; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
-else
-  with_sysroot=no
-fi
-
-
-lt_sysroot=
-case $with_sysroot in #(
- yes)
-   if test yes = "$GCC"; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
-$as_echo "$with_sysroot" >&6; }
-   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-   ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
-$as_echo_n "checking for a working dd... " >&6; }
-if ${ac_cv_path_lt_DD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  printf 0123456789abcdef0123456789abcdef >conftest.i
-cat conftest.i conftest.i >conftest2.i
-: ${lt_DD:=$DD}
-if test -z "$lt_DD"; then
-  ac_path_lt_DD_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in dd; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_lt_DD" || continue
-if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
-  cmp -s conftest.i conftest.out \
-  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
-fi
-      $ac_path_lt_DD_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_lt_DD"; then
-    :
-  fi
-else
-  ac_cv_path_lt_DD=$lt_DD
-fi
-
-rm -f conftest.i conftest2.i conftest.out
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
-$as_echo "$ac_cv_path_lt_DD" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
-$as_echo_n "checking how to truncate binary pipes... " >&6; }
-if ${lt_cv_truncate_bin+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  printf 0123456789abcdef0123456789abcdef >conftest.i
-cat conftest.i conftest.i >conftest2.i
-lt_cv_truncate_bin=
-if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
-  cmp -s conftest.i conftest.out \
-  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
-fi
-rm -f conftest.i conftest2.i conftest.out
-test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
-$as_echo "$lt_cv_truncate_bin" >&6; }
-
-
-
-
-
-
-
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-func_cc_basename ()
-{
-    for cc_temp in $*""; do
-      case $cc_temp in
-        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-        \-*) ;;
-        *) break;;
-      esac
-    done
-    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-}
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
-fi
-
-test no = "$enable_libtool_lock" || enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out what ABI is being produced by ac_compile, and set mode
-  # options accordingly.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-       HPUX_IA64_MODE=32
-       ;;
-      *ELF-64*)
-       HPUX_IA64_MODE=64
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test yes = "$lt_cv_prog_gnu_ld"; then
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -melf32bsmip"
-         ;;
-       *N32*)
-         LD="${LD-ld} -melf32bmipn32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -melf64bmip"
-       ;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -32"
-         ;;
-       *N32*)
-         LD="${LD-ld} -n32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -64"
-         ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-mips64*-*linux*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    emul=elf
-    case `/usr/bin/file conftest.$ac_objext` in
-      *32-bit*)
-       emul="${emul}32"
-       ;;
-      *64-bit*)
-       emul="${emul}64"
-       ;;
-    esac
-    case `/usr/bin/file conftest.$ac_objext` in
-      *MSB*)
-       emul="${emul}btsmip"
-       ;;
-      *LSB*)
-       emul="${emul}ltsmip"
-       ;;
-    esac
-    case `/usr/bin/file conftest.$ac_objext` in
-      *N32*)
-       emul="${emul}n32"
-       ;;
-    esac
-    LD="${LD-ld} -m $emul"
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.  Note that the listed cases only cover the
-  # situations where additional linker options are needed (such as when
-  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
-  # vice versa); the common cases where no linker options are needed do
-  # not appear in the list.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_i386_fbsd"
-           ;;
-         x86_64-*linux*)
-           case `/usr/bin/file conftest.o` in
-             *x86-64*)
-               LD="${LD-ld} -m elf32_x86_64"
-               ;;
-             *)
-               LD="${LD-ld} -m elf_i386"
-               ;;
-           esac
-           ;;
-         powerpc64le-*linux*)
-           LD="${LD-ld} -m elf32lppclinux"
-           ;;
-         powerpc64-*linux*)
-           LD="${LD-ld} -m elf32ppclinux"
-           ;;
-         s390x-*linux*)
-           LD="${LD-ld} -m elf_s390"
-           ;;
-         sparc64-*linux*)
-           LD="${LD-ld} -m elf32_sparc"
-           ;;
-       esac
-       ;;
-      *64-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_x86_64_fbsd"
-           ;;
-         x86_64-*linux*)
-           LD="${LD-ld} -m elf_x86_64"
-           ;;
-         powerpcle-*linux*)
-           LD="${LD-ld} -m elf64lppc"
-           ;;
-         powerpc-*linux*)
-           LD="${LD-ld} -m elf64ppc"
-           ;;
-         s390*-*linux*|s390*-*tpf*)
-           LD="${LD-ld} -m elf64_s390"
-           ;;
-         sparc*-*linux*)
-           LD="${LD-ld} -m elf64_sparc"
-           ;;
-       esac
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS=$CFLAGS
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test yes != "$lt_cv_cc_needs_belf"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS=$SAVE_CFLAGS
-  fi
-  ;;
-*-*solaris*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*|x86_64-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD=${LD-ld}_sol2
-        fi
-        ;;
-      *)
-       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-         LD="${LD-ld} -64"
-       fi
-       ;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks=$enable_libtool_lock
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MANIFEST_TOOL"; then
-  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-  # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
-  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-    MANIFEST_TOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-  fi
-else
-  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-fi
-
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&5
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test yes != "$lt_cv_path_mainfest_tool"; then
-  MANIFEST_TOOL=:
-fi
-
-
-
-
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "$LT_MULTI_MODULE"; then
-       # By default we will add the -single_module flag. You can override
-       # by either setting the environment variable LT_MULTI_MODULE
-       # non-empty at configure time, or by adding -multi_module to the
-       # link flags.
-       rm -rf libconftest.dylib*
-       echo "int foo(void){return 1;}" > conftest.c
-       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-       # If there is a non-empty error log, and "single_module"
-       # appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-         cat conftest.err >&5
-       # Otherwise, if the output was created with a 0 exit code from
-       # the compiler, it worked.
-       elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
-         lt_cv_apple_cc_single_mod=yes
-       else
-         cat conftest.err >&5
-       fi
-       rm -rf libconftest.dylib*
-       rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-       LDFLAGS=$save_LDFLAGS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5
-      $AR $AR_FLAGS libconftest.a conftest.o 2>&5
-      echo "$RANLIB libconftest.a" >&5
-      $RANLIB libconftest.a 2>&5
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-       cat conftest.err >&5
-      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
-       lt_cv_ld_force_load=yes
-      else
-       cat conftest.err >&5
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-       10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-       10.[012][,.]*)
-         _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-       10.*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test yes = "$lt_cv_apple_cc_single_mod"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test yes = "$lt_cv_ld_exported_symbols_list"; then
-      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
-    fi
-    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-# func_munge_path_list VARIABLE PATH
-# -----------------------------------
-# VARIABLE is name of variable containing _space_ separated list of
-# directories to be munged by the contents of PATH, which is string
-# having a format:
-# "DIR[:DIR]:"
-#       string "DIR[ DIR]" will be prepended to VARIABLE
-# ":DIR[:DIR]"
-#       string "DIR[ DIR]" will be appended to VARIABLE
-# "DIRP[:DIRP]::[DIRA:]DIRA"
-#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
-#       "DIRA[ DIRA]" will be appended to VARIABLE
-# "DIR[:DIR]"
-#       VARIABLE will be replaced by "DIR[ DIR]"
-func_munge_path_list ()
-{
-    case x$2 in
-    x)
-        ;;
-    *:)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
-        ;;
-    x:*)
-        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    *::*)
-        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
-        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
-        ;;
-    *)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    esac
-}
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-func_stripname_cnf ()
-{
-  case $2 in
-  .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;;
-  *)  func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;;
-  esac
-} # func_stripname_cnf
-
-
-
-
-
-# Set options
-
-
-
-        enable_dlopen=no
-
-
-  enable_win32_dll=no
-
-
-            # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_shared=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
-
-
-
-
-
-
-
-
-
-  # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_static=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for lt_pkg in $withval; do
-       IFS=$lt_save_ifs
-       if test "X$lt_pkg" = "X$lt_p"; then
-         pic_mode=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
-else
-  pic_mode=default
-fi
-
-
-
-
-
-
-
-
-  # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_fast_install=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-
-
-
-
-
-  shared_archive_member_spec=
-case $host,$enable_shared in
-power*-*-aix[5-9]*,yes)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
-$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
-
-# Check whether --with-aix-soname was given.
-if test "${with_aix_soname+set}" = set; then :
-  withval=$with_aix_soname; case $withval in
-    aix|svr4|both)
-      ;;
-    *)
-      as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5
-      ;;
-    esac
-    lt_cv_with_aix_soname=$with_aix_soname
-else
-  if ${lt_cv_with_aix_soname+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_with_aix_soname=aix
-fi
-
-    with_aix_soname=$lt_cv_with_aix_soname
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
-$as_echo "$with_aix_soname" >&6; }
-  if test aix != "$with_aix_soname"; then
-    # For the AIX way of multilib, we name the shared archive member
-    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
-    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
-    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
-    # the AIX toolchain works better with OBJECT_MODE set (default 32).
-    if test 64 = "${OBJECT_MODE-32}"; then
-      shared_archive_member_spec=shr_64
-    else
-      shared_archive_member_spec=shr
-    fi
-  fi
-  ;;
-*)
-  with_aix_soname=aix
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS=$ltmain
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}"; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test set != "${COLLECT_NAMES+set}"; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a '.a' archive for static linking (except MSVC and
-# ICC, which need '.lib').
-libext=a
-
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-old_CC=$CC
-old_CFLAGS=$CFLAGS
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-func_cc_basename $compiler
-cc_basename=$func_cc_basename_result
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD=$MAGIC_CMD
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/${ac_tool_prefix}file"; then
-      lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
-  done
-  IFS=$lt_save_ifs
-  MAGIC_CMD=$lt_save_MAGIC_CMD
-  ;;
-esac
-fi
-
-MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD=$MAGIC_CMD
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/file"; then
-      lt_cv_path_MAGIC_CMD=$ac_dir/"file"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
-  done
-  IFS=$lt_save_ifs
-  MAGIC_CMD=$lt_save_MAGIC_CMD
-  ;;
-esac
-fi
-
-MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC=$CC
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-
-lt_prog_compiler_no_builtin_flag=
-
-if test yes = "$GCC"; then
-  case $cc_basename in
-  nvcc*)
-    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-  *)
-    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-  esac
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"  ## exclude from sc_useless_quotes_in_assignment
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-
-
-
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-
-  if test yes = "$GCC"; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test ia64 = "$host_cpu"; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static='-Bstatic'
-      fi
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the '-m68020' flag to GCC prevents building anything better,
-            # like '-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      case $host_os in
-      os2*)
-       lt_prog_compiler_static='$wl-static'
-       ;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-       # +Z the default
-       ;;
-      *)
-       lt_prog_compiler_pic='-fPIC'
-       ;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl='-Xlinker '
-      if test -n "$lt_prog_compiler_pic"; then
-        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test ia64 = "$host_cpu"; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static='-Bstatic'
-      else
-       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      case $cc_basename in
-      nagfor*)
-        # NAG Fortran compiler
-        lt_prog_compiler_wl='-Wl,-Wl,,'
-        lt_prog_compiler_pic='-PIC'
-        lt_prog_compiler_static='-Bstatic'
-        ;;
-      esac
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      case $host_os in
-      os2*)
-       lt_prog_compiler_static='$wl-static'
-       ;;
-      esac
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       # +Z the default
-       ;;
-      *)
-       lt_prog_compiler_pic='+Z'
-       ;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='$wl-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-      case $cc_basename in
-      # old Intel for x86_64, which still supported -KPIC.
-      ecc*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-KPIC'
-       lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fPIC'
-       lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='--shared'
-       lt_prog_compiler_static='--static'
-       ;;
-      nagfor*)
-       # NAG Fortran compiler
-       lt_prog_compiler_wl='-Wl,-Wl,,'
-       lt_prog_compiler_pic='-PIC'
-       lt_prog_compiler_static='-Bstatic'
-       ;;
-      tcc*)
-       # Fabrice Bellard et al's Tiny C Compiler
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fPIC'
-       lt_prog_compiler_static='-static'
-       ;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-       # which looks to be a dead project)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fpic'
-       lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-qpic'
-       lt_prog_compiler_static='-qstaticlink'
-       ;;
-      *)
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-         # Sun Fortran 8.3 passes all unrecognized flags to the linker
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl=''
-         ;;
-       *Sun\ F* | *Sun*Fortran*)
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl='-Qoption ld '
-         ;;
-       *Sun\ C*)
-         # Sun C 5.9
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl='-Wl,'
-         ;;
-        *Intel*\ [CF]*Compiler*)
-         lt_prog_compiler_wl='-Wl,'
-         lt_prog_compiler_pic='-fPIC'
-         lt_prog_compiler_static='-static'
-         ;;
-       *Portland\ Group*)
-         lt_prog_compiler_wl='-Wl,'
-         lt_prog_compiler_pic='-fpic'
-         lt_prog_compiler_static='-Bstatic'
-         ;;
-       esac
-       ;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-       lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-       lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       lt_prog_compiler_pic='-Kconform_pic'
-       lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms that do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"  ## exclude from sc_useless_quotes_in_assignment
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test yes = "$lt_cv_prog_compiler_pic_works"; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-
-
-
-
-
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS=$LDFLAGS
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS=$save_LDFLAGS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test yes = "$lt_cv_prog_compiler_static_works"; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links=nottested
-if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test no = "$hard_links"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ' (' and ')$', so one must not match beginning or
-  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
-  # as well as any symbol that contains 'd'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++ or Intel C++ Compiler.
-    if test yes != "$GCC"; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
-    with_gnu_ld=yes
-    ;;
-  openbsd* | bitrig*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test yes = "$with_gnu_ld"; then
-    case $host_os in
-      aix*)
-       # The AIX port of GNU ld has always aspired to compatibility
-       # with the native linker.  However, as the warning in the GNU ld
-       # block says, versions before 2.19.5* couldn't really create working
-       # shared libraries, regardless of the interface used.
-       case `$LD -v 2>&1` in
-         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-         *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-         *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-         *)
-           lt_use_gnu_ld_interface=yes
-           ;;
-       esac
-       ;;
-      *)
-       lt_use_gnu_ld_interface=yes
-       ;;
-    esac
-  fi
-
-  if test yes = "$lt_use_gnu_ld_interface"; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='$wl'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-    export_dynamic_flag_spec='$wl--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test ia64 != "$host_cpu"; then
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       allow_undefined_flag=unsupported
-       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-       # support --undefined.  This deserves some investigation.  FIXME
-       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='$wl--export-all-symbols'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-       # If the export-symbols file already is a .def file, use it as
-       # is; otherwise, prepend EXPORTS...
-       archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[   ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
-          cp $export_symbols $output_objdir/$soname.def;
-        else
-          echo EXPORTS > $output_objdir/$soname.def;
-          cat $export_symbols >> $output_objdir/$soname.def;
-        fi~
-        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-      link_all_deplibs=yes
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      shrext_cmds=.dll
-      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       prefix_cmds="$SED"~
-       if test EXPORTS = "`$SED 1q $export_symbols`"; then
-         prefix_cmds="$prefix_cmds -e 1d";
-       fi~
-       prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-       cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-      enable_shared_with_static_runtimes=yes
-      file_list_spec='@'
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='$wl-rpath,$libdir'
-      export_dynamic_flag_spec='$wl-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test linux-dietlibc = "$host_os"; then
-       case $cc_basename in
-         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
-       esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-        && test no = "$tmp_diet"
-      then
-       tmp_addflag=' $pic_flag'
-       tmp_sharedflag='-shared'
-       case $cc_basename,$host_cpu in
-        pgcc*)                         # Portland Group C compiler
-         whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         tmp_addflag=' $pic_flag'
-         ;;
-       pgf77* | pgf90* | pgf95* | pgfortran*)
-                                       # Portland Group f77 and f90 compilers
-         whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         tmp_addflag=' $pic_flag -Mnomain' ;;
-       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
-         tmp_addflag=' -i_dynamic' ;;
-       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
-         tmp_addflag=' -i_dynamic -nofor_main' ;;
-       ifc* | ifort*)                  # Intel Fortran compiler
-         tmp_addflag=' -nofor_main' ;;
-       lf95*)                          # Lahey Fortran 8.1
-         whole_archive_flag_spec=
-         tmp_sharedflag='--shared' ;;
-        nagfor*)                        # NAGFOR 5.3
-          tmp_sharedflag='-Wl,-shared' ;;
-       xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-         tmp_sharedflag='-qmkshrobj'
-         tmp_addflag= ;;
-       nvcc*)  # Cuda Compiler Driver 2.2
-         whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         compiler_needs_object=yes
-         ;;
-       esac
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ C*)                       # Sun C 5.9
-         whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         compiler_needs_object=yes
-         tmp_sharedflag='-G' ;;
-       *Sun\ F*)                       # Sun Fortran 8.3
-         tmp_sharedflag='-G' ;;
-       esac
-       archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-
-        if test yes = "$supports_anon_versioning"; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-            echo "local: *; };" >> $output_objdir/$libname.ver~
-            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
-        fi
-
-       case $cc_basename in
-       tcc*)
-         export_dynamic_flag_spec='-rdynamic'
-         ;;
-       xlf* | bgf* | bgxlf* | mpixlf*)
-         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-         whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-         hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-         archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-         if test yes = "$supports_anon_versioning"; then
-           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-              echo "local: *; };" >> $output_objdir/$libname.ver~
-              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-         fi
-         ;;
-       esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-       wlarc=
-      else
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-       ;;
-       *)
-         # For security reasons, it is highly recommended that you always
-         # use absolute paths for naming shared libraries, and exclude the
-         # DT_RUNPATH tag from executables and libraries.  But doing so
-         # requires that you compile everything twice, which is a pain.
-         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-           hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-           archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-           archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-         else
-           ld_shlibs=no
-         fi
-       ;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test no = "$ld_shlibs"; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
-       # Neither direct hardcoding nor static linking is supported with a
-       # broken collect2.
-       hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test ia64 = "$host_cpu"; then
-       # On IA64, the linker does run time linking by default, so we don't
-       # have to do anything special.
-       aix_use_runtimelinking=no
-       exp_sym_flag='-Bexport'
-       no_entry_flag=
-      else
-       # If we're using GNU nm, then we don't want the "-C" option.
-       # -C means demangle to GNU nm, but means don't demangle to AIX nm.
-       # Without the "-l" option, or with the "-B" option, AIX nm treats
-       # weak defined symbols like other global defined symbols, whereas
-       # GNU nm marks them as "W".
-       # While the 'weak' keyword is ignored in the Export File, we need
-       # it in the Import File for the 'aix-soname' feature, so we have
-       # to replace the "-B" option with "-P" for AIX nm.
-       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
-       else
-         export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
-       fi
-       aix_use_runtimelinking=no
-
-       # Test if we are trying to use run time linking or normal
-       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-       # have runtime linking enabled, and use it for executables.
-       # For shared libraries, we enable/disable runtime linking
-       # depending on the kind of the shared library created -
-       # when "with_aix_soname,aix_use_runtimelinking" is:
-       # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
-       # "aix,yes"  lib.so          shared, rtl:yes, for executables
-       #            lib.a           static archive
-       # "both,no"  lib.so.V(shr.o) shared, rtl:yes
-       #            lib.a(lib.so.V) shared, rtl:no,  for executables
-       # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
-       #            lib.a(lib.so.V) shared, rtl:no
-       # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
-       #            lib.a           static archive
-       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-         for ld_flag in $LDFLAGS; do
-         if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
-           aix_use_runtimelinking=yes
-           break
-         fi
-         done
-         if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
-           # With aix-soname=svr4, we create the lib.so.V shared archives only,
-           # so we don't have lib.a shared libs to link our executables.
-           # We have to force runtime linking in this case.
-           aix_use_runtimelinking=yes
-           LDFLAGS="$LDFLAGS -Wl,-brtl"
-         fi
-         ;;
-       esac
-
-       exp_sym_flag='-bexport'
-       no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='$wl-f,'
-      case $with_aix_soname,$aix_use_runtimelinking in
-      aix,*) ;; # traditional, no import file
-      svr4,* | *,yes) # use import file
-       # The Import File defines what to hardcode.
-       hardcode_direct=no
-       hardcode_direct_absolute=no
-       ;;
-      esac
-
-      if test yes = "$GCC"; then
-       case $host_os in aix4.[012]|aix4.[012].*)
-       # We only want to do this on AIX 4.2 and lower, the check
-       # below for broken collect2 doesn't work under 4.3+
-         collect2name=`$CC -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-         # We have reworked collect2
-         :
-         else
-         # We have old collect2
-         hardcode_direct=unsupported
-         # It fails to find uninstalled libraries when the uninstalled
-         # path is not listed in the libpath.  Setting hardcode_minus_L
-         # to unsupported forces relinking
-         hardcode_minus_L=yes
-         hardcode_libdir_flag_spec='-L$libdir'
-         hardcode_libdir_separator=
-         fi
-         ;;
-       esac
-       shared_flag='-shared'
-       if test yes = "$aix_use_runtimelinking"; then
-         shared_flag="$shared_flag "'$wl-G'
-       fi
-       # Need to ensure runtime linking is disabled for the traditional
-       # shared library, or the linker may eventually find shared libraries
-       # /with/ Import File - we do not want to mix them.
-       shared_flag_aix='-shared'
-       shared_flag_svr4='-shared $wl-G'
-      else
-       # not using gcc
-       if test ia64 = "$host_cpu"; then
-       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-       # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-       else
-         if test yes = "$aix_use_runtimelinking"; then
-           shared_flag='$wl-G'
-         else
-           shared_flag='$wl-bM:SRE'
-         fi
-         shared_flag_aix='$wl-bM:SRE'
-         shared_flag_svr4='$wl-G'
-       fi
-      fi
-
-      export_dynamic_flag_spec='$wl-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
-       # Warning - without using the other runtime loading flags (-brtl),
-       # -berok will link without error, but may produce a broken library.
-       allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test set = "${lt_cv_aix_libpath+set}"; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=/usr/lib:/lib
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
-      else
-       if test ia64 = "$host_cpu"; then
-         hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
-         allow_undefined_flag="-z nodefs"
-         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
-       else
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test set = "${lt_cv_aix_libpath+set}"; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=/usr/lib:/lib
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
-         # Warning - without using the other run time loading flags,
-         # -berok will link without error, but may produce a broken library.
-         no_undefined_flag=' $wl-bernotok'
-         allow_undefined_flag=' $wl-berok'
-         if test yes = "$with_gnu_ld"; then
-           # We only use this code for GNU lds that support --whole-archive.
-           whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
-         else
-           # Exported symbols can be pulled into shared objects from archives
-           whole_archive_flag_spec='$convenience'
-         fi
-         archive_cmds_need_lc=yes
-         archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
-         # -brtl affects multiple linker settings, -berok does not and is overridden later
-         compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
-         if test svr4 != "$with_aix_soname"; then
-           # This is similar to how AIX traditionally builds its shared libraries.
-           archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
-         fi
-         if test aix != "$with_aix_soname"; then
-           archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
-         else
-           # used by -dlpreopen to get the symbols
-           archive_expsym_cmds="$archive_expsym_cmds"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
-         fi
-         archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d'
-       fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++ or Intel C++ Compiler.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl* | icl*)
-       # Native MSVC or ICC
-       hardcode_libdir_flag_spec=' '
-       allow_undefined_flag=unsupported
-       always_export_symbols=yes
-       file_list_spec='@'
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=.dll
-       # FIXME: Setting linknames here is a bad hack.
-       archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
-       archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[   ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
-            cp "$export_symbols" "$output_objdir/$soname.def";
-            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
-          else
-            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
-          fi~
-          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-          linknames='
-       # The linker will not automatically build a static lib if we build a DLL.
-       # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-       enable_shared_with_static_runtimes=yes
-       exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-       export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-       # Don't use ranlib
-       old_postinstall_cmds='chmod 644 $oldlib'
-       postlink_cmds='lt_outputfile="@OUTPUT@"~
-          lt_tool_outputfile="@TOOL_OUTPUT@"~
-          case $lt_outputfile in
-            *.exe|*.EXE) ;;
-            *)
-              lt_outputfile=$lt_outputfile.exe
-              lt_tool_outputfile=$lt_tool_outputfile.exe
-              ;;
-          esac~
-          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
-            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-            $RM "$lt_outputfile.manifest";
-          fi'
-       ;;
-      *)
-       # Assume MSVC and ICC wrapper
-       hardcode_libdir_flag_spec=' '
-       allow_undefined_flag=unsupported
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=.dll
-       # FIXME: Setting linknames here is a bad hack.
-       archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-       # The linker will automatically build a .lib file if we build a DLL.
-       old_archive_from_new_cmds='true'
-       # FIXME: Should let the user specify the lib program.
-       old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-       enable_shared_with_static_runtimes=yes
-       ;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  if test yes = "$lt_cv_ld_force_load"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
-  else
-    whole_archive_flag_spec=''
-  fi
-  link_all_deplibs=yes
-  allow_undefined_flag=$_lt_dar_allow_undefined
-  case $cc_basename in
-     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test yes = "$_lt_dar_can_shared"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
-    archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
-    module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
-
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test yes = "$GCC"; then
-       archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-      else
-       archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='$wl+b $wl$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='$wl-E'
-      ;;
-
-    hpux10*)
-      if test yes,no = "$GCC,$with_gnu_ld"; then
-       archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test no = "$with_gnu_ld"; then
-       hardcode_libdir_flag_spec='$wl+b $wl$libdir'
-       hardcode_libdir_separator=:
-       hardcode_direct=yes
-       hardcode_direct_absolute=yes
-       export_dynamic_flag_spec='$wl-E'
-       # hardcode_minus_L: Not really in the search PATH,
-       # but as the default location of the library.
-       hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test yes,no = "$GCC,$with_gnu_ld"; then
-       case $host_cpu in
-       hppa*64*)
-         archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       esac
-      else
-       case $host_cpu in
-       hppa*64*)
-         archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-
-         # Older versions of the 11.00 compiler do not understand -b yet
-         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler__b=no
-   save_LDFLAGS=$LDFLAGS
-   LDFLAGS="$LDFLAGS -b"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler__b=yes
-       fi
-     else
-       lt_cv_prog_compiler__b=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS=$save_LDFLAGS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
-
-if test yes = "$lt_cv_prog_compiler__b"; then
-    archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-else
-    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-fi
-
-         ;;
-       esac
-      fi
-      if test no = "$with_gnu_ld"; then
-       hardcode_libdir_flag_spec='$wl+b $wl$libdir'
-       hardcode_libdir_separator=:
-
-       case $host_cpu in
-       hppa*64*|ia64*)
-         hardcode_direct=no
-         hardcode_shlibpath_var=no
-         ;;
-       *)
-         hardcode_direct=yes
-         hardcode_direct_absolute=yes
-         export_dynamic_flag_spec='$wl-E'
-
-         # hardcode_minus_L: Not really in the search PATH,
-         # but as the default location of the library.
-         hardcode_minus_L=yes
-         ;;
-       esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test yes = "$GCC"; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-       # Try to use the -exported_symbol ld option, if it does not
-       # work, assume that -exports_file does not work either and
-       # implicitly export all symbols.
-       # This should be the same for all languages, so no per-tag cache variable.
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS=$LDFLAGS
-          LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
-          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS=$save_LDFLAGS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-       if test yes = "$lt_cv_irix_exported_symbol"; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
-       fi
-      else
-       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    linux*)
-      case $cc_basename in
-      tcc*)
-       # Fabrice Bellard et al's Tiny C Compiler
-       ld_shlibs=yes
-       archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       ;;
-      esac
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd* | bitrig*)
-      if test -f /usr/libexec/ld.so; then
-       hardcode_direct=yes
-       hardcode_shlibpath_var=no
-       hardcode_direct_absolute=yes
-       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
-         hardcode_libdir_flag_spec='$wl-rpath,$libdir'
-         export_dynamic_flag_spec='$wl-E'
-       else
-         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         hardcode_libdir_flag_spec='$wl-rpath,$libdir'
-       fi
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      shrext_cmds=.dll
-      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       prefix_cmds="$SED"~
-       if test EXPORTS = "`$SED 1q $export_symbols`"; then
-         prefix_cmds="$prefix_cmds -e 1d";
-       fi~
-       prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-       cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-      enable_shared_with_static_runtimes=yes
-      file_list_spec='@'
-      ;;
-
-    osf3*)
-      if test yes = "$GCC"; then
-       allow_undefined_flag=' $wl-expect_unresolved $wl\*'
-       archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-      else
-       allow_undefined_flag=' -expect_unresolved \*'
-       archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)     # as osf3* with the addition of -msym flag
-      if test yes = "$GCC"; then
-       allow_undefined_flag=' $wl-expect_unresolved $wl\*'
-       archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-       hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      else
-       allow_undefined_flag=' -expect_unresolved \*'
-       archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
-
-       # Both c and cxx compiler support -rpath directly
-       hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test yes = "$GCC"; then
-       wlarc='$wl'
-       archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-       case `$CC -V 2>&1` in
-       *"Compilers 5.0"*)
-         wlarc=''
-         archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-         ;;
-       *)
-         wlarc='$wl'
-         archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-         ;;
-       esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-       # The compiler driver will combine and reorder linker options,
-       # but understands '-z linker_flag'.  GCC discards it without '$wl',
-       # but is careful enough not to reorder.
-       # Supported since Solaris 2.6 (maybe 2.5.1?)
-       if test yes = "$GCC"; then
-         whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
-       else
-         whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-       fi
-       ;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test sequent = "$host_vendor"; then
-       # Use $CC to link under sequent, because it throws in some extra .o
-       # files that make .init and .fini sections work.
-       archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-       sni)
-         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         hardcode_direct=yes # is this really true???
-       ;;
-       siemens)
-         ## LD is ld it makes a PLAMLIB
-         ## CC just makes a GrossModule.
-         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-         reload_cmds='$CC -r -o $output$reload_objs'
-         hardcode_direct=no
-        ;;
-       motorola)
-         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-       ;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-       hardcode_shlibpath_var=no
-       runpath_var=LD_RUN_PATH
-       hardcode_runpath_var=yes
-       ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='$wl-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test yes = "$GCC"; then
-       archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We CANNOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='$wl-z,text'
-      allow_undefined_flag='$wl-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='$wl-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='$wl-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test yes = "$GCC"; then
-       archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test sni = "$host_vendor"; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-       export_dynamic_flag_spec='$wl-Blargedynsym'
-       ;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test no = "$ld_shlibs" && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test yes,yes = "$GCC,$enable_shared"; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-         soname=conftest
-         lib=conftest
-         libobjs=conftest.$ac_objext
-         deplibs=
-         wl=$lt_prog_compiler_wl
-         pic_flag=$lt_prog_compiler_pic
-         compiler_flags=-v
-         linker_flags=-v
-         verstring=
-         output_objdir=.
-         libname=conftest
-         lt_save_allow_undefined_flag=$allow_undefined_flag
-         allow_undefined_flag=
-         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-         then
-           lt_cv_archive_cmds_need_lc=no
-         else
-           lt_cv_archive_cmds_need_lc=yes
-         fi
-         allow_undefined_flag=$lt_save_allow_undefined_flag
-       else
-         cat conftest.err 1>&5
-       fi
-       $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test yes = "$GCC"; then
-  case $host_os in
-    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
-    *) lt_awk_arg='/^libraries:/' ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
-    *) lt_sed_strip_eq='s|=/|/|g' ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary...
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  # ...but if some path component already ends with the multilib dir we assume
-  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
-  case "$lt_multi_os_dir; $lt_search_path_spec " in
-  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
-    lt_multi_os_dir=
-    ;;
-  esac
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
-    elif test -n "$lt_multi_os_dir"; then
-      test -d "$lt_sys_path" && \
-       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS = " "; FS = "/|\n";} {
-  lt_foo = "";
-  lt_count = 0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo = "/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's|/\([A-Za-z]:\)|\1|g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=.so
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='$libname$release$shared_ext$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test ia64 = "$host_cpu"; then
-    # AIX 5 supports IA64
-    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line '#! .'.  This would cause the generated library to
-    # depend on '.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-          echo ' yes '
-          echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
-       :
-      else
-       can_build_shared=no
-      fi
-      ;;
-    esac
-    # Using Import Files as archive members, it is possible to support
-    # filename-based versioning of shared library archives on AIX. While
-    # this would work for both with and without runtime linking, it will
-    # prevent static linking of such archives. So we do filename-based
-    # shared library versioning with .so extension only, which is used
-    # when both runtime linking and shared linking is enabled.
-    # Unfortunately, runtime linking may impact performance, so we do
-    # not want this to be the default eventually. Also, we use the
-    # versioned .so libs for executables only if there is the -brtl
-    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
-    # To allow for filename-based versioning support, we need to create
-    # libNAME.so.V as an archive file, containing:
-    # *) an Import File, referring to the versioned filename of the
-    #    archive as well as the shared archive member, telling the
-    #    bitwidth (32 or 64) of that shared object, and providing the
-    #    list of exported symbols of that shared object, eventually
-    #    decorated with the 'weak' keyword
-    # *) the shared object with the F_LOADONLY flag set, to really avoid
-    #    it being seen by the linker.
-    # At run time we better use the real file rather than another symlink,
-    # but for link time we create the symlink libNAME.so -> libNAME.so.V
-
-    case $with_aix_soname,$aix_use_runtimelinking in
-    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    aix,yes) # traditional libtool
-      dynamic_linker='AIX unversionable lib.so'
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      ;;
-    aix,no) # traditional AIX only
-      dynamic_linker='AIX lib.a(lib.so.V)'
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      ;;
-    svr4,*) # full svr4 only
-      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,yes) # both, prefer svr4
-      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # unpreferred sharedlib libNAME.a needs extra handling
-      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
-      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,no) # both, prefer aix
-      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
-      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
-      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
-      ;;
-    esac
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='$libname$shared_ext'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl* | *,icl*)
-    # Native MSVC or ICC
-    libname_spec='$name'
-    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-    library_names_spec='$libname.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec=$LIB
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC and ICC wrapper
-    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$major$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      soname_spec='$libname$release$shared_ext$major'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    if test 32 = "$HPUX_IA64_MODE"; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
-    fi
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-       if test yes = "$lt_cv_prog_gnu_ld"; then
-               version_type=linux # correct to gnu/linux during the next big refactor
-       else
-               version_type=irix
-       fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
-  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-linux*android*)
-  version_type=none # Android doesn't support versioned libraries.
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext'
-  soname_spec='$libname$release$shared_ext'
-  finish_cmds=
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  dynamic_linker='Android linker'
-  # Don't embed -rpath directories since the linker doesn't support them.
-  hardcode_libdir_flag_spec='-L$libdir'
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Ideally, we could use ldconfig to report *all* directores which are
-  # searched for libraries, however this is still not possible.  Aside from not
-  # being certain /sbin/ldconfig is available, command
-  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
-  # even though it is searched at run-time.  Try to do the best guess by
-  # appending ld.so.conf contents (and includes) to the search path.
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd* | bitrig*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec=/usr/lib
-  need_lib_prefix=no
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-    need_version=no
-  else
-    need_version=yes
-  fi
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-os2*)
-  libname_spec='$name'
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
-  # OS/2 can only load a DLL with a base name of 8 characters or less.
-  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
-    v=$($ECHO $release$versuffix | tr -d .-);
-    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
-    $ECHO $n$v`$shared_ext'
-  library_names_spec='${libname}_dll.$libext'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=BEGINLIBPATH
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  postinstall_cmds='base_file=`basename \$file`~
-    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
-    dldir=$destdir/`dirname \$dlpath`~
-    test -d \$dldir || mkdir -p \$dldir~
-    $install_prog $dir/$dlname \$dldir/$dlname~
-    chmod a+x \$dldir/$dlname~
-    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-    fi'
-  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
-    dlpath=$dir/\$dldll~
-    $RM \$dlpath'
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test yes = "$with_gnu_ld"; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec; then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
-    soname_spec='$libname$shared_ext.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=sco
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test yes = "$with_gnu_ld"; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-       ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test no = "$dynamic_linker" && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test yes = "$GCC"; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
-  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
-fi
-
-if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
-  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
-fi
-
-# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
-configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
-
-# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
-func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
-
-# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
-configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test yes = "$hardcode_automatic"; then
-
-  # We can hardcode non-existent directories.
-  if test no != "$hardcode_direct" &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" &&
-     test no != "$hardcode_minus_L"; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test relink = "$hardcode_action" ||
-   test yes = "$inherit_rpath"; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test yes = "$shlibpath_overrides_runpath" ||
-     test no = "$enable_shared"; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-  if test yes != "$enable_dlopen"; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen=load_add_on
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen=LoadLibrary
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen=dlopen
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-    # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
-
-    lt_cv_dlopen=dyld
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-    ;;
-
-  tpf*)
-    # Don't try to run any link tests for TPF.  We know it's impossible
-    # because TPF is a cross-compiler, and we know how we open DSOs.
-    lt_cv_dlopen=dlopen
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=no
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen=shl_load
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-    ;;
-  esac
-
-  if test no = "$lt_cv_dlopen"; then
-    enable_dlopen=no
-  else
-    enable_dlopen=yes
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS=$CPPFLAGS
-    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS=$LDFLAGS
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS=$LIBS
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-         if test yes = "$cross_compiling"; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisibility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test yes = "$lt_cv_dlopen_self"; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-         if test yes = "$cross_compiling"; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisibility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS=$save_CPPFLAGS
-    LDFLAGS=$save_LDFLAGS
-    LIBS=$save_LIBS
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -z "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-else
-  if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-    old_striplib="$STRIP --strip-debug"
-    striplib="$STRIP --strip-unneeded"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  else
-    case $host_os in
-    darwin*)
-      # FIXME - insert some real tests, host_os isn't really good enough
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-      ;;
-    freebsd*)
-      if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then
-        old_striplib="$STRIP --strip-debug"
-        striplib="$STRIP --strip-unneeded"
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-      fi
-      ;;
-    *)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-      ;;
-    esac
-  fi
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-  # Report what library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test no = "$can_build_shared" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test yes = "$enable_shared" && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test ia64 != "$host_cpu"; then
-      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
-      yes,aix,yes) ;;                  # shared object as lib.so file only
-      yes,svr4,*) ;;                   # shared object as lib.so archive member only
-      yes,*) enable_static=no ;;       # shared object in lib.a archive as well
-      esac
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test yes = "$enable_shared" || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC=$lt_save_CC
-
-      if test -n "$CXX" && ( test no != "$CXX" &&
-    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
-    (test g++ != "$CXX"))); then
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
-$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
-if test -z "$CXXCPP"; then
-  if ${ac_cv_prog_CXXCPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CXXCPP=$CXXCPP
-
-fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
-$as_echo "$CXXCPP" >&6; }
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-else
-  _lt_caught_CXX_error=yes
-fi
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-archive_cmds_need_lc_CXX=no
-allow_undefined_flag_CXX=
-always_export_symbols_CXX=no
-archive_expsym_cmds_CXX=
-compiler_needs_object_CXX=no
-export_dynamic_flag_spec_CXX=
-hardcode_direct_CXX=no
-hardcode_direct_absolute_CXX=no
-hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_separator_CXX=
-hardcode_minus_L_CXX=no
-hardcode_shlibpath_var_CXX=unsupported
-hardcode_automatic_CXX=no
-inherit_rpath_CXX=no
-module_cmds_CXX=
-module_expsym_cmds_CXX=
-link_all_deplibs_CXX=unknown
-old_archive_cmds_CXX=$old_archive_cmds
-reload_flag_CXX=$reload_flag
-reload_cmds_CXX=$reload_cmds
-no_undefined_flag_CXX=
-whole_archive_flag_spec_CXX=
-enable_shared_with_static_runtimes_CXX=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-objext_CXX=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test yes != "$_lt_caught_CXX_error"; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_CFLAGS=$CFLAGS
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  CFLAGS=$CXXFLAGS
-  compiler=$CC
-  compiler_CXX=$CC
-  func_cc_basename $compiler
-cc_basename=$func_cc_basename_result
-
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test yes = "$GXX"; then
-      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
-    else
-      lt_prog_compiler_no_builtin_flag_CXX=
-    fi
-
-    if test yes = "$GXX"; then
-      # Set up default GNU C++ configuration
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test yes = "$GCC"; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return, which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD=$ac_prog
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test yes = "$with_gnu_ld"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD=$ac_dir/$ac_prog
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-       test no != "$with_gnu_ld" && break
-       ;;
-      *)
-       test yes != "$with_gnu_ld" && break
-       ;;
-      esac
-    fi
-  done
-  IFS=$lt_save_ifs
-else
-  lt_cv_path_LD=$LD # Let the user override the test with a path.
-fi
-fi
-
-LD=$lt_cv_path_LD
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test yes = "$with_gnu_ld"; then
-        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-
-        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
-        export_dynamic_flag_spec_CXX='$wl--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='$wl'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-         $GREP 'no-whole-archive' > /dev/null; then
-          whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
-        else
-          whole_archive_flag_spec_CXX=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-    ld_shlibs_CXX=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-      aix[4-9]*)
-        if test ia64 = "$host_cpu"; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # have runtime linking enabled, and use it for executables.
-          # For shared libraries, we enable/disable runtime linking
-          # depending on the kind of the shared library created -
-          # when "with_aix_soname,aix_use_runtimelinking" is:
-          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
-          # "aix,yes"  lib.so          shared, rtl:yes, for executables
-          #            lib.a           static archive
-          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
-          #            lib.a(lib.so.V) shared, rtl:no,  for executables
-          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
-          #            lib.a(lib.so.V) shared, rtl:no
-          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
-          #            lib.a           static archive
-          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-           for ld_flag in $LDFLAGS; do
-             case $ld_flag in
-             *-brtl*)
-               aix_use_runtimelinking=yes
-               break
-               ;;
-             esac
-           done
-           if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
-             # With aix-soname=svr4, we create the lib.so.V shared archives only,
-             # so we don't have lib.a shared libs to link our executables.
-             # We have to force runtime linking in this case.
-             aix_use_runtimelinking=yes
-             LDFLAGS="$LDFLAGS -Wl,-brtl"
-           fi
-           ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        archive_cmds_CXX=''
-        hardcode_direct_CXX=yes
-        hardcode_direct_absolute_CXX=yes
-        hardcode_libdir_separator_CXX=':'
-        link_all_deplibs_CXX=yes
-        file_list_spec_CXX='$wl-f,'
-        case $with_aix_soname,$aix_use_runtimelinking in
-        aix,*) ;;      # no import file
-        svr4,* | *,yes) # use import file
-          # The Import File defines what to hardcode.
-          hardcode_direct_CXX=no
-          hardcode_direct_absolute_CXX=no
-          ;;
-        esac
-
-        if test yes = "$GXX"; then
-          case $host_os in aix4.[012]|aix4.[012].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-         collect2name=`$CC -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-            strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-           # We have reworked collect2
-           :
-         else
-           # We have old collect2
-           hardcode_direct_CXX=unsupported
-           # It fails to find uninstalled libraries when the uninstalled
-           # path is not listed in the libpath.  Setting hardcode_minus_L
-           # to unsupported forces relinking
-           hardcode_minus_L_CXX=yes
-           hardcode_libdir_flag_spec_CXX='-L$libdir'
-           hardcode_libdir_separator_CXX=
-         fi
-          esac
-          shared_flag='-shared'
-         if test yes = "$aix_use_runtimelinking"; then
-           shared_flag=$shared_flag' $wl-G'
-         fi
-         # Need to ensure runtime linking is disabled for the traditional
-         # shared library, or the linker may eventually find shared libraries
-         # /with/ Import File - we do not want to mix them.
-         shared_flag_aix='-shared'
-         shared_flag_svr4='-shared $wl-G'
-        else
-          # not using gcc
-          if test ia64 = "$host_cpu"; then
-         # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-         # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-          else
-           if test yes = "$aix_use_runtimelinking"; then
-             shared_flag='$wl-G'
-           else
-             shared_flag='$wl-bM:SRE'
-           fi
-           shared_flag_aix='$wl-bM:SRE'
-           shared_flag_svr4='$wl-G'
-          fi
-        fi
-
-        export_dynamic_flag_spec_CXX='$wl-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-       # export.
-        always_export_symbols_CXX=yes
-       if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          # The "-G" linker flag allows undefined symbols.
-          no_undefined_flag_CXX='-bernotok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          if test set = "${lt_cv_aix_libpath+set}"; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=/usr/lib:/lib
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
-
-          hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
-
-          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
-        else
-          if test ia64 = "$host_cpu"; then
-           hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib'
-           allow_undefined_flag_CXX="-z nodefs"
-           archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
-          else
-           # Determine the default libpath from the value encoded in an
-           # empty executable.
-           if test set = "${lt_cv_aix_libpath+set}"; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=/usr/lib:/lib
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
-
-           hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
-           # Warning - without using the other run time loading flags,
-           # -berok will link without error, but may produce a broken library.
-           no_undefined_flag_CXX=' $wl-bernotok'
-           allow_undefined_flag_CXX=' $wl-berok'
-           if test yes = "$with_gnu_ld"; then
-             # We only use this code for GNU lds that support --whole-archive.
-             whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
-           else
-             # Exported symbols can be pulled into shared objects from archives
-             whole_archive_flag_spec_CXX='$convenience'
-           fi
-           archive_cmds_need_lc_CXX=yes
-           archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
-           # -brtl affects multiple linker settings, -berok does not and is overridden later
-           compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
-           if test svr4 != "$with_aix_soname"; then
-             # This is similar to how AIX traditionally builds its shared
-             # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
-             archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
-           fi
-           if test aix != "$with_aix_soname"; then
-             archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
-           else
-             # used by -dlpreopen to get the symbols
-             archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
-           fi
-           archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d'
-          fi
-        fi
-        ;;
-
-      beos*)
-       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-         allow_undefined_flag_CXX=unsupported
-         # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-         # support --undefined.  This deserves some investigation.  FIXME
-         archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       else
-         ld_shlibs_CXX=no
-       fi
-       ;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-         # FIXME: insert proper C++ library support
-         ld_shlibs_CXX=no
-         ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-       case $GXX,$cc_basename in
-       ,cl* | no,cl* | ,icl* | no,icl*)
-         # Native MSVC or ICC
-         # hardcode_libdir_flag_spec is actually meaningless, as there is
-         # no search path for DLLs.
-         hardcode_libdir_flag_spec_CXX=' '
-         allow_undefined_flag_CXX=unsupported
-         always_export_symbols_CXX=yes
-         file_list_spec_CXX='@'
-         # Tell ltmain to make .lib files, not .a files.
-         libext=lib
-         # Tell ltmain to make .dll files, not .so files.
-         shrext_cmds=.dll
-         # FIXME: Setting linknames here is a bad hack.
-         archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
-         archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[     ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
-              cp "$export_symbols" "$output_objdir/$soname.def";
-              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
-            else
-              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
-            fi~
-            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-            linknames='
-         # The linker will not automatically build a static lib if we build a DLL.
-         # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
-         enable_shared_with_static_runtimes_CXX=yes
-         # Don't use ranlib
-         old_postinstall_cmds_CXX='chmod 644 $oldlib'
-         postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
-            lt_tool_outputfile="@TOOL_OUTPUT@"~
-            case $lt_outputfile in
-              *.exe|*.EXE) ;;
-              *)
-                lt_outputfile=$lt_outputfile.exe
-                lt_tool_outputfile=$lt_tool_outputfile.exe
-                ;;
-            esac~
-            func_to_tool_file "$lt_outputfile"~
-            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
-              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-              $RM "$lt_outputfile.manifest";
-            fi'
-         ;;
-       *)
-         # g++
-         # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-         # as there is no search path for DLLs.
-         hardcode_libdir_flag_spec_CXX='-L$libdir'
-         export_dynamic_flag_spec_CXX='$wl--export-all-symbols'
-         allow_undefined_flag_CXX=unsupported
-         always_export_symbols_CXX=no
-         enable_shared_with_static_runtimes_CXX=yes
-
-         if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-           archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-           # If the export-symbols file already is a .def file, use it as
-           # is; otherwise, prepend EXPORTS...
-           archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[   ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
-              cp $export_symbols $output_objdir/$soname.def;
-            else
-              echo EXPORTS > $output_objdir/$soname.def;
-              cat $export_symbols >> $output_objdir/$soname.def;
-            fi~
-            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-         else
-           ld_shlibs_CXX=no
-         fi
-         ;;
-       esac
-       ;;
-      darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc_CXX=no
-  hardcode_direct_CXX=no
-  hardcode_automatic_CXX=yes
-  hardcode_shlibpath_var_CXX=unsupported
-  if test yes = "$lt_cv_ld_force_load"; then
-    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
-  else
-    whole_archive_flag_spec_CXX=''
-  fi
-  link_all_deplibs_CXX=yes
-  allow_undefined_flag_CXX=$_lt_dar_allow_undefined
-  case $cc_basename in
-     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test yes = "$_lt_dar_can_shared"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
-    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
-    archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
-    module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
-       if test yes != "$lt_cv_apple_cc_single_mod"; then
-      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
-      archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
-    fi
-
-  else
-  ld_shlibs_CXX=no
-  fi
-
-       ;;
-
-      os2*)
-       hardcode_libdir_flag_spec_CXX='-L$libdir'
-       hardcode_minus_L_CXX=yes
-       allow_undefined_flag_CXX=unsupported
-       shrext_cmds=.dll
-       archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-         $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-         $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-         $ECHO EXPORTS >> $output_objdir/$libname.def~
-         emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-         $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-         emximp -o $lib $output_objdir/$libname.def'
-       archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-         $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-         $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-         $ECHO EXPORTS >> $output_objdir/$libname.def~
-         prefix_cmds="$SED"~
-         if test EXPORTS = "`$SED 1q $export_symbols`"; then
-           prefix_cmds="$prefix_cmds -e 1d";
-         fi~
-         prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-         cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-         $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-         emximp -o $lib $output_objdir/$libname.def'
-       old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-       enable_shared_with_static_runtimes_CXX=yes
-       file_list_spec_CXX='@'
-       ;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          ghcx*)
-           # Green Hills C++ Compiler
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-        esac
-        ;;
-
-      freebsd2.*)
-        # C++ shared libraries reported to be fairly broken before
-       # switch to ELF
-        ld_shlibs_CXX=no
-        ;;
-
-      freebsd-elf*)
-        archive_cmds_need_lc_CXX=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        ld_shlibs_CXX=yes
-        ;;
-
-      haiku*)
-        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-        link_all_deplibs_CXX=yes
-        ;;
-
-      hpux9*)
-        hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
-        hardcode_libdir_separator_CXX=:
-        export_dynamic_flag_spec_CXX='$wl-E'
-        hardcode_direct_CXX=yes
-        hardcode_minus_L_CXX=yes # Not in the search PATH,
-                                            # but as the default
-                                            # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            ld_shlibs_CXX=no
-            ;;
-          aCC*)
-            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-            ;;
-          *)
-            if test yes = "$GXX"; then
-              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              ld_shlibs_CXX=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test no = "$with_gnu_ld"; then
-         hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
-         hardcode_libdir_separator_CXX=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-             export_dynamic_flag_spec_CXX='$wl-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            hardcode_direct_CXX=no
-            hardcode_shlibpath_var_CXX=no
-            ;;
-          *)
-            hardcode_direct_CXX=yes
-            hardcode_direct_absolute_CXX=yes
-            hardcode_minus_L_CXX=yes # Not in the search PATH,
-                                                # but as the default
-                                                # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          aCC*)
-           case $host_cpu in
-             hppa*64*)
-               archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             ia64*)
-               archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             *)
-               archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-           esac
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-           ;;
-          *)
-           if test yes = "$GXX"; then
-             if test no = "$with_gnu_ld"; then
-               case $host_cpu in
-                 hppa*64*)
-                   archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 ia64*)
-                   archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 *)
-                   archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-               esac
-             fi
-           else
-             # FIXME: insert proper C++ library support
-             ld_shlibs_CXX=no
-           fi
-           ;;
-        esac
-        ;;
-
-      interix[3-9]*)
-       hardcode_direct_CXX=no
-       hardcode_shlibpath_var_CXX=no
-       hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
-       export_dynamic_flag_spec_CXX='$wl-E'
-       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-       # Instead, shared libraries are loaded at an image base (0x10000000 by
-       # default) and relocated if they conflict, which is a slow very memory
-       # consuming and fragmenting process.  To avoid this, we pick a random,
-       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-       archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       ;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-           # SGI C++
-           archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-
-           # Archives containing C++ object files must be created using
-           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
-           ;;
-          *)
-           if test yes = "$GXX"; then
-             if test no = "$with_gnu_ld"; then
-               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-             else
-               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
-             fi
-           fi
-           link_all_deplibs_CXX=yes
-           ;;
-        esac
-        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
-        hardcode_libdir_separator_CXX=:
-        inherit_rpath_CXX=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-        case $cc_basename in
-          KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-           # KCC will only create a shared library if the output file
-           # ends with ".so" (or ".sl" for HP-UX), so rename the library
-           # to its proper name (with version) after linking.
-           archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-           archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
-           hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
-           export_dynamic_flag_spec_CXX='$wl--export-dynamic'
-
-           # Archives containing C++ object files must be created using
-           # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-           old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-           ;;
-         icpc* | ecpc* )
-           # Intel C++
-           with_gnu_ld=yes
-           # version 8.0 and above of icpc choke on multiply defined symbols
-           # if we add $predep_objects and $postdep_objects, however 7.1 and
-           # earlier do not add the objects themselves.
-           case `$CC -V 2>&1` in
-             *"Version 7."*)
-               archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-               ;;
-             *)  # Version 8.0 or newer
-               tmp_idyn=
-               case $host_cpu in
-                 ia64*) tmp_idyn=' -i_dynamic';;
-               esac
-               archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-               ;;
-           esac
-           archive_cmds_need_lc_CXX=no
-           hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
-           export_dynamic_flag_spec_CXX='$wl--export-dynamic'
-           whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
-           ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-           case `$CC -V` in
-           *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
-             prelink_cmds_CXX='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
-             old_archive_cmds_CXX='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-                $RANLIB $oldlib'
-             archive_cmds_CXX='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-             archive_expsym_cmds_CXX='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-             ;;
-           *) # Version 6 and above use weak symbols
-             archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-             archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-             ;;
-           esac
-
-           hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir'
-           export_dynamic_flag_spec_CXX='$wl--export-dynamic'
-           whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-            ;;
-         cxx*)
-           # Compaq C++
-           archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-           archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
-
-           runpath_var=LD_RUN_PATH
-           hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-           hardcode_libdir_separator_CXX=:
-
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
-           ;;
-         xl* | mpixl* | bgxl*)
-           # IBM XL 8.0 on PPC, with GNU ld
-           hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
-           export_dynamic_flag_spec_CXX='$wl--export-dynamic'
-           archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-           if test yes = "$supports_anon_versioning"; then
-             archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
-                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-                echo "local: *; };" >> $output_objdir/$libname.ver~
-                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
-           fi
-           ;;
-         *)
-           case `$CC -V 2>&1 | sed 5q` in
-           *Sun\ C*)
-             # Sun C++ 5.9
-             no_undefined_flag_CXX=' -zdefs'
-             archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-             archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
-             hardcode_libdir_flag_spec_CXX='-R$libdir'
-             whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-             compiler_needs_object_CXX=yes
-
-             # Not sure whether something based on
-             # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-             # would be better.
-             output_verbose_link_cmd='func_echo_all'
-
-             # Archives containing C++ object files must be created using
-             # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-             # necessary to make sure instantiated templates are included
-             # in the archive.
-             old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-             ;;
-           esac
-           ;;
-       esac
-       ;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-       ld_shlibs_CXX=no
-       ;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-       ;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-         *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-       esac
-       ;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-         archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-         wlarc=
-         hardcode_libdir_flag_spec_CXX='-R$libdir'
-         hardcode_direct_CXX=yes
-         hardcode_shlibpath_var_CXX=no
-       fi
-       # Workaround some broken pre-1.5 toolchains
-       output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-       ;;
-
-      *nto* | *qnx*)
-        ld_shlibs_CXX=yes
-       ;;
-
-      openbsd* | bitrig*)
-       if test -f /usr/libexec/ld.so; then
-         hardcode_direct_CXX=yes
-         hardcode_shlibpath_var_CXX=no
-         hardcode_direct_absolute_CXX=yes
-         archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-         hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
-         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
-           archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
-           export_dynamic_flag_spec_CXX='$wl-E'
-           whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
-         fi
-         output_verbose_link_cmd=func_echo_all
-       else
-         ld_shlibs_CXX=no
-       fi
-       ;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-           # KCC will only create a shared library if the output file
-           # ends with ".so" (or ".sl" for HP-UX), so rename the library
-           # to its proper name (with version) after linking.
-           archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-           hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
-           hardcode_libdir_separator_CXX=:
-
-           # Archives containing C++ object files must be created using
-           # the KAI C++ compiler.
-           case $host in
-             osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
-             *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
-           esac
-           ;;
-          RCC*)
-           # Rational C++ 2.4.1
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          cxx*)
-           case $host in
-             osf3*)
-               allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
-               archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-               hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
-               ;;
-             *)
-               allow_undefined_flag_CXX=' -expect_unresolved \*'
-               archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-               archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-                  echo "-hidden">> $lib.exp~
-                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
-                  $RM $lib.exp'
-               hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-               ;;
-           esac
-
-           hardcode_libdir_separator_CXX=:
-
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-           ;;
-         *)
-           if test yes,no = "$GXX,$with_gnu_ld"; then
-             allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
-             case $host in
-               osf3*)
-                 archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-                 ;;
-               *)
-                 archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-                 ;;
-             esac
-
-             hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
-             hardcode_libdir_separator_CXX=:
-
-             # Commands to make compiler produce verbose output that lists
-             # what "hidden" libraries, object files and flags are used when
-             # linking a shared library.
-             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-           else
-             # FIXME: insert proper C++ library support
-             ld_shlibs_CXX=no
-           fi
-           ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-           # Sun C++ 4.x
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          lcc*)
-           # Lucid
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-           # Sun C++ 4.2, 5.x and Centerline C++
-            archive_cmds_need_lc_CXX=yes
-           no_undefined_flag_CXX=' -zdefs'
-           archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-           archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-           hardcode_libdir_flag_spec_CXX='-R$libdir'
-           hardcode_shlibpath_var_CXX=no
-           case $host_os in
-             solaris2.[0-5] | solaris2.[0-5].*) ;;
-             *)
-               # The compiler driver will combine and reorder linker options,
-               # but understands '-z linker_flag'.
-               # Supported since Solaris 2.6 (maybe 2.5.1?)
-               whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
-               ;;
-           esac
-           link_all_deplibs_CXX=yes
-
-           output_verbose_link_cmd='func_echo_all'
-
-           # Archives containing C++ object files must be created using
-           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-           ;;
-          gcx*)
-           # Green Hills C++ Compiler
-           archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
-
-           # The C++ compiler must be used to create the archive.
-           old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-           ;;
-          *)
-           # GNU C++ compiler with Solaris linker
-           if test yes,no = "$GXX,$with_gnu_ld"; then
-             no_undefined_flag_CXX=' $wl-z ${wl}defs'
-             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-             else
-               # g++ 2.7 appears to require '-G' NOT '-shared' on this
-               # platform.
-               archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-             fi
-
-             hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
-             case $host_os in
-               solaris2.[0-5] | solaris2.[0-5].*) ;;
-               *)
-                 whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
-                 ;;
-             esac
-           fi
-           ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_CXX='$wl-z,text'
-      archive_cmds_need_lc_CXX=no
-      hardcode_shlibpath_var_CXX=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-         archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-       # Note: We CANNOT use -z defs as we might desire, because we do not
-       # link with -lc, and that would cause any symbols used from libc to
-       # always be unresolved, which means just about no library would
-       # ever link correctly.  If we're not using GNU ld we use -z text
-       # though, which does catch some bad symbols but isn't as heavy-handed
-       # as -z defs.
-       no_undefined_flag_CXX='$wl-z,text'
-       allow_undefined_flag_CXX='$wl-z,nodefs'
-       archive_cmds_need_lc_CXX=no
-       hardcode_shlibpath_var_CXX=no
-       hardcode_libdir_flag_spec_CXX='$wl-R,$libdir'
-       hardcode_libdir_separator_CXX=':'
-       link_all_deplibs_CXX=yes
-       export_dynamic_flag_spec_CXX='$wl-Bexport'
-       runpath_var='LD_RUN_PATH'
-
-       case $cc_basename in
-          CC*)
-           archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
-              '"$old_archive_cmds_CXX"
-           reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
-              '"$reload_cmds_CXX"
-           ;;
-         *)
-           archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           ;;
-       esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-           # NonStop-UX NCC 3.20
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-    esac
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-    test no = "$ld_shlibs_CXX" && can_build_shared=no
-
-    GCC_CXX=$GXX
-    LD_CXX=$LD
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    # Dependencies to place before and after the object being linked:
-predep_objects_CXX=
-postdep_objects_CXX=
-predeps_CXX=
-postdeps_CXX=
-compiler_lib_search_path_CXX=
-
-cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case $prev$p in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test x-L = "$p" ||
-          test x-R = "$p"; then
-        prev=$p
-        continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test no = "$pre_test_object_deps_done"; then
-        case $prev in
-        -L | -R)
-          # Internal compiler library paths should come after those
-          # provided the user.  The postdeps already come after the
-          # user supplied libs so there is no need to process them.
-          if test -z "$compiler_lib_search_path_CXX"; then
-            compiler_lib_search_path_CXX=$prev$p
-          else
-            compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p"
-          fi
-          ;;
-        # The "-l" case would never come before the object being
-        # linked, so don't bother handling this case.
-        esac
-       else
-        if test -z "$postdeps_CXX"; then
-          postdeps_CXX=$prev$p
-        else
-          postdeps_CXX="${postdeps_CXX} $prev$p"
-        fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-        pre_test_object_deps_done=yes
-        continue
-       fi
-
-       if test no = "$pre_test_object_deps_done"; then
-        if test -z "$predep_objects_CXX"; then
-          predep_objects_CXX=$p
-        else
-          predep_objects_CXX="$predep_objects_CXX $p"
-        fi
-       else
-        if test -z "$postdep_objects_CXX"; then
-          postdep_objects_CXX=$p
-        else
-          postdep_objects_CXX="$postdep_objects_CXX $p"
-        fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling CXX test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-case $host_os in
-interix[3-9]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  predep_objects_CXX=
-  postdep_objects_CXX=
-  postdeps_CXX=
-  ;;
-esac
-
-
-case " $postdeps_CXX " in
-*" -lc "*) archive_cmds_need_lc_CXX=no ;;
-esac
- compiler_lib_search_dirs_CXX=
-if test -n "${compiler_lib_search_path_CXX}"; then
- compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    lt_prog_compiler_wl_CXX=
-lt_prog_compiler_pic_CXX=
-lt_prog_compiler_static_CXX=
-
-
-  # C++ specific cases for pic, static, wl, etc.
-  if test yes = "$GXX"; then
-    lt_prog_compiler_wl_CXX='-Wl,'
-    lt_prog_compiler_static_CXX='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test ia64 = "$host_cpu"; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static_CXX='-Bstatic'
-      fi
-      lt_prog_compiler_pic_CXX='-fPIC'
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_CXX='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the '-m68020' flag to GCC prevents building anything better,
-            # like '-m68040'.
-            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-      case $host_os in
-      os2*)
-       lt_prog_compiler_static_CXX='$wl-static'
-       ;;
-      esac
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_CXX='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      lt_prog_compiler_pic_CXX=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_CXX=
-      ;;
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       lt_prog_compiler_pic_CXX=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-       ;;
-      *)
-       lt_prog_compiler_pic_CXX='-fPIC'
-       ;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_CXX='-fPIC -shared'
-      ;;
-    *)
-      lt_prog_compiler_pic_CXX='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[4-9]*)
-       # All AIX code is PIC.
-       if test ia64 = "$host_cpu"; then
-         # AIX 5 now supports IA64 processor
-         lt_prog_compiler_static_CXX='-Bstatic'
-       else
-         lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
-       fi
-       ;;
-      chorus*)
-       case $cc_basename in
-       cxch68*)
-         # Green Hills C++ Compiler
-         # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-         ;;
-       esac
-       ;;
-      mingw* | cygwin* | os2* | pw32* | cegcc*)
-       # This hack is so that the source file can tell whether it is being
-       # built for inclusion in a dll (and should export symbols for example).
-       lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-       ;;
-      dgux*)
-       case $cc_basename in
-         ec++*)
-           lt_prog_compiler_pic_CXX='-KPIC'
-           ;;
-         ghcx*)
-           # Green Hills C++ Compiler
-           lt_prog_compiler_pic_CXX='-pic'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      freebsd* | dragonfly*)
-       # FreeBSD uses GNU C++
-       ;;
-      hpux9* | hpux10* | hpux11*)
-       case $cc_basename in
-         CC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
-           if test ia64 != "$host_cpu"; then
-             lt_prog_compiler_pic_CXX='+Z'
-           fi
-           ;;
-         aCC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
-           case $host_cpu in
-           hppa*64*|ia64*)
-             # +Z the default
-             ;;
-           *)
-             lt_prog_compiler_pic_CXX='+Z'
-             ;;
-           esac
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      interix*)
-       # This is c89, which is MS Visual C++ (no shared libs)
-       # Anyone wants to do a port?
-       ;;
-      irix5* | irix6* | nonstopux*)
-       case $cc_basename in
-         CC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_static_CXX='-non_shared'
-           # CC pic flag -KPIC is the default.
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-       case $cc_basename in
-         KCC*)
-           # KAI C++ Compiler
-           lt_prog_compiler_wl_CXX='--backend -Wl,'
-           lt_prog_compiler_pic_CXX='-fPIC'
-           ;;
-         ecpc* )
-           # old Intel C++ for x86_64, which still supported -KPIC.
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-KPIC'
-           lt_prog_compiler_static_CXX='-static'
-           ;;
-         icpc* )
-           # Intel C++, used to be incompatible with GCC.
-           # ICC 10 doesn't accept -KPIC any more.
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-fPIC'
-           lt_prog_compiler_static_CXX='-static'
-           ;;
-         pgCC* | pgcpp*)
-           # Portland Group C++ compiler
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-fpic'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           ;;
-         cxx*)
-           # Compaq C++
-           # Make sure the PIC flag is empty.  It appears that all Alpha
-           # Linux and Compaq Tru64 Unix objects are PIC.
-           lt_prog_compiler_pic_CXX=
-           lt_prog_compiler_static_CXX='-non_shared'
-           ;;
-         xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
-           # IBM XL 8.0, 9.0 on PPC and BlueGene
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-qpic'
-           lt_prog_compiler_static_CXX='-qstaticlink'
-           ;;
-         *)
-           case `$CC -V 2>&1 | sed 5q` in
-           *Sun\ C*)
-             # Sun C++ 5.9
-             lt_prog_compiler_pic_CXX='-KPIC'
-             lt_prog_compiler_static_CXX='-Bstatic'
-             lt_prog_compiler_wl_CXX='-Qoption ld '
-             ;;
-           esac
-           ;;
-       esac
-       ;;
-      lynxos*)
-       ;;
-      m88k*)
-       ;;
-      mvs*)
-       case $cc_basename in
-         cxx*)
-           lt_prog_compiler_pic_CXX='-W c,exportall'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      netbsd*)
-       ;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        lt_prog_compiler_pic_CXX='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-       case $cc_basename in
-         KCC*)
-           lt_prog_compiler_wl_CXX='--backend -Wl,'
-           ;;
-         RCC*)
-           # Rational C++ 2.4.1
-           lt_prog_compiler_pic_CXX='-pic'
-           ;;
-         cxx*)
-           # Digital/Compaq C++
-           lt_prog_compiler_wl_CXX='-Wl,'
-           # Make sure the PIC flag is empty.  It appears that all Alpha
-           # Linux and Compaq Tru64 Unix objects are PIC.
-           lt_prog_compiler_pic_CXX=
-           lt_prog_compiler_static_CXX='-non_shared'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      psos*)
-       ;;
-      solaris*)
-       case $cc_basename in
-         CC* | sunCC*)
-           # Sun C++ 4.2, 5.x and Centerline C++
-           lt_prog_compiler_pic_CXX='-KPIC'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           lt_prog_compiler_wl_CXX='-Qoption ld '
-           ;;
-         gcx*)
-           # Green Hills C++ Compiler
-           lt_prog_compiler_pic_CXX='-PIC'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      sunos4*)
-       case $cc_basename in
-         CC*)
-           # Sun C++ 4.x
-           lt_prog_compiler_pic_CXX='-pic'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           ;;
-         lcc*)
-           # Lucid
-           lt_prog_compiler_pic_CXX='-pic'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-       case $cc_basename in
-         CC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-KPIC'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           ;;
-       esac
-       ;;
-      tandem*)
-       case $cc_basename in
-         NCC*)
-           # NonStop-UX NCC 3.20
-           lt_prog_compiler_pic_CXX='-KPIC'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      vxworks*)
-       ;;
-      *)
-       lt_prog_compiler_can_build_shared_CXX=no
-       ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms that do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_CXX=
-    ;;
-  *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
-lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_CXX=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"  ## exclude from sc_useless_quotes_in_assignment
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_CXX=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
-
-if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then
-    case $lt_prog_compiler_pic_CXX in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
-     esac
-else
-    lt_prog_compiler_pic_CXX=
-     lt_prog_compiler_can_build_shared_CXX=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_CXX=no
-   save_LDFLAGS=$LDFLAGS
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_CXX=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_CXX=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS=$save_LDFLAGS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
-
-if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then
-    :
-else
-    lt_prog_compiler_static_CXX=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
-
-
-
-
-hard_links=nottested
-if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test no = "$hard_links"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  case $host_os in
-  aix[4-9]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
-    # Without the "-l" option, or with the "-B" option, AIX nm treats
-    # weak defined symbols like other global defined symbols, whereas
-    # GNU nm marks them as "W".
-    # While the 'weak' keyword is ignored in the Export File, we need
-    # it in the Import File for the 'aix-soname' feature, so we have
-    # to replace the "-B" option with "-P" for AIX nm.
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
-    else
-      export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    export_symbols_cmds_CXX=$ltdll_cmds
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl* | icl*)
-      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-      ;;
-    *)
-      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-      ;;
-    esac
-    ;;
-  *)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-test no = "$ld_shlibs_CXX" && can_build_shared=no
-
-with_gnu_ld_CXX=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_CXX" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_CXX=yes
-
-  if test yes,yes = "$GCC,$enable_shared"; then
-    case $archive_cmds_CXX in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-         soname=conftest
-         lib=conftest
-         libobjs=conftest.$ac_objext
-         deplibs=
-         wl=$lt_prog_compiler_wl_CXX
-         pic_flag=$lt_prog_compiler_pic_CXX
-         compiler_flags=-v
-         linker_flags=-v
-         verstring=
-         output_objdir=.
-         libname=conftest
-         lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-         allow_undefined_flag_CXX=
-         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-         then
-           lt_cv_archive_cmds_need_lc_CXX=no
-         else
-           lt_cv_archive_cmds_need_lc_CXX=yes
-         fi
-         allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-       else
-         cat conftest.err 1>&5
-       fi
-       $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
-      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=.so
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='$libname$release$shared_ext$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test ia64 = "$host_cpu"; then
-    # AIX 5 supports IA64
-    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line '#! .'.  This would cause the generated library to
-    # depend on '.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-          echo ' yes '
-          echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
-       :
-      else
-       can_build_shared=no
-      fi
-      ;;
-    esac
-    # Using Import Files as archive members, it is possible to support
-    # filename-based versioning of shared library archives on AIX. While
-    # this would work for both with and without runtime linking, it will
-    # prevent static linking of such archives. So we do filename-based
-    # shared library versioning with .so extension only, which is used
-    # when both runtime linking and shared linking is enabled.
-    # Unfortunately, runtime linking may impact performance, so we do
-    # not want this to be the default eventually. Also, we use the
-    # versioned .so libs for executables only if there is the -brtl
-    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
-    # To allow for filename-based versioning support, we need to create
-    # libNAME.so.V as an archive file, containing:
-    # *) an Import File, referring to the versioned filename of the
-    #    archive as well as the shared archive member, telling the
-    #    bitwidth (32 or 64) of that shared object, and providing the
-    #    list of exported symbols of that shared object, eventually
-    #    decorated with the 'weak' keyword
-    # *) the shared object with the F_LOADONLY flag set, to really avoid
-    #    it being seen by the linker.
-    # At run time we better use the real file rather than another symlink,
-    # but for link time we create the symlink libNAME.so -> libNAME.so.V
-
-    case $with_aix_soname,$aix_use_runtimelinking in
-    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    aix,yes) # traditional libtool
-      dynamic_linker='AIX unversionable lib.so'
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      ;;
-    aix,no) # traditional AIX only
-      dynamic_linker='AIX lib.a(lib.so.V)'
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      ;;
-    svr4,*) # full svr4 only
-      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,yes) # both, prefer svr4
-      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # unpreferred sharedlib libNAME.a needs extra handling
-      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
-      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,no) # both, prefer aix
-      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
-      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
-      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
-      ;;
-    esac
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='$libname$shared_ext'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl* | *,icl*)
-    # Native MSVC or ICC
-    libname_spec='$name'
-    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-    library_names_spec='$libname.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec=$LIB
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC and ICC wrapper
-    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$major$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      soname_spec='$libname$release$shared_ext$major'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    if test 32 = "$HPUX_IA64_MODE"; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
-    fi
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-       if test yes = "$lt_cv_prog_gnu_ld"; then
-               version_type=linux # correct to gnu/linux during the next big refactor
-       else
-               version_type=irix
-       fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
-  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-linux*android*)
-  version_type=none # Android doesn't support versioned libraries.
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext'
-  soname_spec='$libname$release$shared_ext'
-  finish_cmds=
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  dynamic_linker='Android linker'
-  # Don't embed -rpath directories since the linker doesn't support them.
-  hardcode_libdir_flag_spec_CXX='-L$libdir'
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
-        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Ideally, we could use ldconfig to report *all* directores which are
-  # searched for libraries, however this is still not possible.  Aside from not
-  # being certain /sbin/ldconfig is available, command
-  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
-  # even though it is searched at run-time.  Try to do the best guess by
-  # appending ld.so.conf contents (and includes) to the search path.
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd* | bitrig*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec=/usr/lib
-  need_lib_prefix=no
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-    need_version=no
-  else
-    need_version=yes
-  fi
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-os2*)
-  libname_spec='$name'
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
-  # OS/2 can only load a DLL with a base name of 8 characters or less.
-  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
-    v=$($ECHO $release$versuffix | tr -d .-);
-    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
-    $ECHO $n$v`$shared_ext'
-  library_names_spec='${libname}_dll.$libext'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=BEGINLIBPATH
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  postinstall_cmds='base_file=`basename \$file`~
-    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
-    dldir=$destdir/`dirname \$dlpath`~
-    test -d \$dldir || mkdir -p \$dldir~
-    $install_prog $dir/$dlname \$dldir/$dlname~
-    chmod a+x \$dldir/$dlname~
-    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-    fi'
-  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
-    dlpath=$dir/\$dldll~
-    $RM \$dlpath'
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test yes = "$with_gnu_ld"; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec; then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
-    soname_spec='$libname$shared_ext.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=sco
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test yes = "$with_gnu_ld"; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-       ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test no = "$dynamic_linker" && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test yes = "$GCC"; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
-  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
-fi
-
-if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
-  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
-fi
-
-# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
-configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
-
-# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
-func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
-
-# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
-configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_CXX=
-if test -n "$hardcode_libdir_flag_spec_CXX" ||
-   test -n "$runpath_var_CXX" ||
-   test yes = "$hardcode_automatic_CXX"; then
-
-  # We can hardcode non-existent directories.
-  if test no != "$hardcode_direct_CXX" &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" &&
-     test no != "$hardcode_minus_L_CXX"; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_CXX=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_CXX=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_CXX=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
-$as_echo "$hardcode_action_CXX" >&6; }
-
-if test relink = "$hardcode_action_CXX" ||
-   test yes = "$inherit_rpath_CXX"; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test yes = "$shlibpath_overrides_runpath" ||
-     test no = "$enable_shared"; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test yes != "$_lt_caught_CXX_error"
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-
-
-
-
-
-
-        if test -n "$PYTHON"; then
-      # If the user set $PYTHON, use it and don't search something else.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.5" >&5
-$as_echo_n "checking whether $PYTHON version is >= 2.5... " >&6; }
-      prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
-   ($PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                              as_fn_error $? "Python interpreter is too old" "$LINENO" 5
-fi
-      am_display_PYTHON=$PYTHON
-    else
-      # Otherwise, try each interpreter until we find one that satisfies
-      # VERSION.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.5" >&5
-$as_echo_n "checking for a Python interpreter with version >= 2.5... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-       for am_cv_pathless_PYTHON in python python2 python3  python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3  python3.2 python3.1 python3.0  python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1  python2.0 none; do
-         test "$am_cv_pathless_PYTHON" = none && break
-         prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
-   ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  break
-fi
-       done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
-      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-       PYTHON=:
-      else
-        # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
-set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PYTHON=$ac_cv_path_PYTHON
-if test -n "$PYTHON"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-      fi
-      am_display_PYTHON=$am_cv_pathless_PYTHON
-    fi
-
-
-  if test "$PYTHON" = :; then
-      :
-  else
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_version=`$PYTHON -c "import sys; print('%u.%u' % sys.version_info[:2])"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
-  PYTHON_VERSION=$am_cv_python_version
-
-
-
-  PYTHON_PREFIX='${prefix}'
-
-  PYTHON_EXEC_PREFIX='${exec_prefix}'
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
-  PYTHON_PLATFORM=$am_cv_python_platform
-
-
-  # Just factor out some code duplication.
-  am_python_setup_sysconfig="\
-import sys
-# Prefer sysconfig over distutils.sysconfig, for better compatibility
-# with python 3.x.  See automake bug#10227.
-try:
-    import sysconfig
-except ImportError:
-    can_use_sysconfig = 0
-else:
-    can_use_sysconfig = 1
-# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
-# <https://github.com/pypa/virtualenv/issues/118>
-try:
-    from platform import python_implementation
-    if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
-        can_use_sysconfig = 0
-except ImportError:
-    pass"
-
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$prefix" = xNONE
-     then
-       am_py_prefix=$ac_default_prefix
-     else
-       am_py_prefix=$prefix
-     fi
-     am_cv_python_pythondir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pythondir in
-     $am_py_prefix*)
-       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
-       ;;
-     *)
-       case $am_py_prefix in
-         /usr|/System*) ;;
-         *)
-         am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-         ;;
-       esac
-       ;;
-     esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
-  pythondir=$am_cv_python_pythondir
-
-
-
-  pkgpythondir=\${pythondir}/$PACKAGE
-
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$exec_prefix" = xNONE
-     then
-       am_py_exec_prefix=$am_py_prefix
-     else
-       am_py_exec_prefix=$exec_prefix
-     fi
-     am_cv_python_pyexecdir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pyexecdir in
-     $am_py_exec_prefix*)
-       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
-       ;;
-     *)
-       case $am_py_exec_prefix in
-         /usr|/System*) ;;
-         *)
-          am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-          ;;
-       esac
-       ;;
-     esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
-  pyexecdir=$am_cv_python_pyexecdir
-
-
-
-  pkgpyexecdir=\${pyexecdir}/$PACKAGE
-
-
-
-  fi
-
-
- if test "$PYTHON" != :; then
-  HAVE_PYTHON_TRUE=
-  HAVE_PYTHON_FALSE='#'
-else
-  HAVE_PYTHON_TRUE='#'
-  HAVE_PYTHON_FALSE=
-fi
-
-
-# Extract the first word of "cygpath", so it can be a program name with args.
-set dummy cygpath; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CYGPATH+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CYGPATH"; then
-  ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CYGPATH="cygpath"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CYGPATH=$ac_cv_prog_CYGPATH
-if test -n "$CYGPATH"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5
-$as_echo "$CYGPATH" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "perl", so it can be a program name with args.
-set dummy perl; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$PERL"; then
-  ac_cv_prog_PERL="$PERL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_PERL="perl"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-PERL=$ac_cv_prog_PERL
-if test -n "$PERL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
-$as_echo "$PERL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "pdflatex", so it can be a program name with args.
-set dummy pdflatex; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_PDFLATEX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$PDFLATEX"; then
-  ac_cv_prog_PDFLATEX="$PDFLATEX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_PDFLATEX="pdflatex"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-PDFLATEX=$ac_cv_prog_PDFLATEX
-if test -n "$PDFLATEX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5
-$as_echo "$PDFLATEX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "pod2html", so it can be a program name with args.
-set dummy pod2html; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_POD2HTML+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$POD2HTML"; then
-  ac_cv_prog_POD2HTML="$POD2HTML" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_POD2HTML="pod2html"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-POD2HTML=$ac_cv_prog_POD2HTML
-if test -n "$POD2HTML"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $POD2HTML" >&5
-$as_echo "$POD2HTML" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-if test "$host_os" = "mingw32" -a -n "$CYGPATH"; then
-       OS_SRCDIR=`$CYGPATH -m "$srcdir"`
-else
-       OS_SRCDIR="$srcdir"
-fi
-
- if test -n "$PERL" -a -n "$PDFLATEX" -a -n "$POD2HTML"; then
-  GENERATE_DOC_TRUE=
-  GENERATE_DOC_FALSE='#'
-else
-  GENERATE_DOC_TRUE='#'
-  GENERATE_DOC_FALSE=
-fi
-
-
-# ------ AX CREATE STDINT H -------------------------------------
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint types" >&5
-$as_echo_n "checking for stdint types... " >&6; }
-ac_stdint_h=`echo include/isl/stdint.h`
-# try to shortcircuit - if the default include path of the compiler
-# can find a "stdint.h" header then we assume that all compilers can.
-if ${ac_cv_header_stdint_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS=""
-old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS=""
-old_CFLAGS="$CFLAGS"     ; CFLAGS=""
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdint.h>
-int
-main ()
-{
-int_least32_t v = 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_stdint_result="(assuming C99 compatible system)"
- ac_cv_header_stdint_t="stdint.h";
-else
-  ac_cv_header_stdint_t=""
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-if test "$GCC" = "yes" && test ".$ac_cv_header_stdint_t" = "."; then
-CFLAGS="-std=c99"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdint.h>
-int
-main ()
-{
-int_least32_t v = 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: your GCC compiler has a defunct stdint.h for its default-mode" >&5
-$as_echo "$as_me: WARNING: your GCC compiler has a defunct stdint.h for its default-mode" >&2;}
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-CXXFLAGS="$old_CXXFLAGS"
-CPPFLAGS="$old_CPPFLAGS"
-CFLAGS="$old_CFLAGS"
-fi
-
-
-v="... $ac_cv_header_stdint_h"
-if test "$ac_stdint_h" = "stdint.h" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (are you sure you want them in ./stdint.h?)" >&5
-$as_echo "(are you sure you want them in ./stdint.h?)" >&6; }
-elif test "$ac_stdint_h" = "inttypes.h" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (are you sure you want them in ./inttypes.h?)" >&5
-$as_echo "(are you sure you want them in ./inttypes.h?)" >&6; }
-elif test "_$ac_cv_header_stdint_t" = "_" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (putting them into $ac_stdint_h)$v" >&5
-$as_echo "(putting them into $ac_stdint_h)$v" >&6; }
-else
- ac_cv_header_stdint="$ac_cv_header_stdint_t"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint (shortcircuit)" >&5
-$as_echo "$ac_cv_header_stdint (shortcircuit)" >&6; }
-fi
-
-if test "_$ac_cv_header_stdint_t" = "_" ; then # can not shortcircuit..
-
-
-inttype_headers=`echo  | sed -e 's/,/ /g'`
-
-ac_cv_stdint_result="(no helpful system typedefs seen)"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5
-$as_echo_n "checking for stdint uintptr_t... " >&6; }
-if ${ac_cv_header_stdint_x+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
- ac_cv_header_stdint_x="" # the 1997 typedefs (inttypes.h)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
-$as_echo "(..)" >&6; }
-  for i in    stdint.h inttypes.h sys/inttypes.h $inttype_headers
-  do
-   unset ac_cv_type_uintptr_t
-   unset ac_cv_type_uint64_t
-   ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#include <$i>
-"
-if test "x$ac_cv_type_uintptr_t" = xyes; then :
-  ac_cv_header_stdint_x=$i
-else
-  continue
-fi
-
-   ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i>
-"
-if test "x$ac_cv_type_uint64_t" = xyes; then :
-  and64="/uint64_t"
-else
-  and64=""
-fi
-
-   ac_cv_stdint_result="(seen uintptr_t$and64 in $i)"
- break
-  done
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5
-$as_echo_n "checking for stdint uintptr_t... " >&6; }
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_x" >&5
-$as_echo "$ac_cv_header_stdint_x" >&6; }
-
-
-if test "_$ac_cv_header_stdint_x" = "_" ; then
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5
-$as_echo_n "checking for stdint uint32_t... " >&6; }
-if ${ac_cv_header_stdint_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
- ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
-$as_echo "(..)" >&6; }
-  for i in    inttypes.h sys/inttypes.h stdint.h $inttype_headers
-  do
-   unset ac_cv_type_uint32_t
-   unset ac_cv_type_uint64_t
-   ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "#include <$i>
-"
-if test "x$ac_cv_type_uint32_t" = xyes; then :
-  ac_cv_header_stdint_o=$i
-else
-  continue
-fi
-
-   ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i>
-"
-if test "x$ac_cv_type_uint64_t" = xyes; then :
-  and64="/uint64_t"
-else
-  and64=""
-fi
-
-   ac_cv_stdint_result="(seen uint32_t$and64 in $i)"
- break
-   break;
-  done
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5
-$as_echo_n "checking for stdint uint32_t... " >&6; }
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_o" >&5
-$as_echo "$ac_cv_header_stdint_o" >&6; }
-
-fi
-
-if test "_$ac_cv_header_stdint_x" = "_" ; then
-if test "_$ac_cv_header_stdint_o" = "_" ; then
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5
-$as_echo_n "checking for stdint u_int32_t... " >&6; }
-if ${ac_cv_header_stdint_u+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
- ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
-$as_echo "(..)" >&6; }
-  for i in    sys/types.h inttypes.h sys/inttypes.h $inttype_headers ; do
-   unset ac_cv_type_u_int32_t
-   unset ac_cv_type_u_int64_t
-   ac_fn_c_check_type "$LINENO" "u_int32_t" "ac_cv_type_u_int32_t" "#include <$i>
-"
-if test "x$ac_cv_type_u_int32_t" = xyes; then :
-  ac_cv_header_stdint_u=$i
-else
-  continue
-fi
-
-   ac_fn_c_check_type "$LINENO" "u_int64_t" "ac_cv_type_u_int64_t" "#include<$i>
-"
-if test "x$ac_cv_type_u_int64_t" = xyes; then :
-  and64="/u_int64_t"
-else
-  and64=""
-fi
-
-   ac_cv_stdint_result="(seen u_int32_t$and64 in $i)"
- break
-   break;
-  done
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5
-$as_echo_n "checking for stdint u_int32_t... " >&6; }
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_u" >&5
-$as_echo "$ac_cv_header_stdint_u" >&6; }
-
-fi fi
-
-if test "_$ac_cv_header_stdint_x" = "_" ; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint datatype model" >&5
-$as_echo_n "checking for stdint datatype model... " >&6; }
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
-$as_echo "(..)" >&6; }
-
-   # The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5
-$as_echo_n "checking size of char... " >&6; }
-if ${ac_cv_sizeof_char+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_char" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (char)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_char=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5
-$as_echo "$ac_cv_sizeof_char" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_CHAR $ac_cv_sizeof_char
-_ACEOF
-
-
-   # The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
-$as_echo_n "checking size of short... " >&6; }
-if ${ac_cv_sizeof_short+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_short" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (short)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_short=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
-$as_echo "$ac_cv_sizeof_short" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
-_ACEOF
-
-
-   # The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
-$as_echo_n "checking size of int... " >&6; }
-if ${ac_cv_sizeof_int+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_int" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (int)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_int=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
-$as_echo "$ac_cv_sizeof_int" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
-
-
-   # The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
-$as_echo_n "checking size of long... " >&6; }
-if ${ac_cv_sizeof_long+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_long" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (long)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_long=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
-$as_echo "$ac_cv_sizeof_long" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
-
-
-   # The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5
-$as_echo_n "checking size of void*... " >&6; }
-if ${ac_cv_sizeof_voidp+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_voidp" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (void*)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_voidp=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5
-$as_echo "$ac_cv_sizeof_voidp" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_VOIDP $ac_cv_sizeof_voidp
-_ACEOF
-
-
-   ac_cv_char_data_model=""
-   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_char"
-   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_short"
-   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_int"
-   ac_cv_long_data_model=""
-   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_int"
-   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_long"
-   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_voidp"
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking data model" >&5
-$as_echo_n "checking data model... " >&6; }
-   case "$ac_cv_char_data_model/$ac_cv_long_data_model" in
-    122/242)     ac_cv_data_model="IP16"  ; n="standard 16bit machine" ;;
-    122/244)     ac_cv_data_model="LP32"  ; n="standard 32bit machine" ;;
-    122/*)       ac_cv_data_model="i16"   ; n="unusual int16 model" ;;
-    124/444)     ac_cv_data_model="ILP32" ; n="standard 32bit unixish" ;;
-    124/488)     ac_cv_data_model="LP64"  ; n="standard 64bit unixish" ;;
-    124/448)     ac_cv_data_model="LLP64" ; n="unusual 64bit unixish" ;;
-    124/*)       ac_cv_data_model="i32"   ; n="unusual int32 model" ;;
-    128/888)     ac_cv_data_model="ILP64" ; n="unusual 64bit numeric" ;;
-    128/*)       ac_cv_data_model="i64"   ; n="unusual int64 model" ;;
-    222/*2)      ac_cv_data_model="DSP16" ; n="strict 16bit dsptype" ;;
-    333/*3)      ac_cv_data_model="DSP24" ; n="strict 24bit dsptype" ;;
-    444/*4)      ac_cv_data_model="DSP32" ; n="strict 32bit dsptype" ;;
-    666/*6)      ac_cv_data_model="DSP48" ; n="strict 48bit dsptype" ;;
-    888/*8)      ac_cv_data_model="DSP64" ; n="strict 64bit dsptype" ;;
-    222/*|333/*|444/*|666/*|888/*) :
-                 ac_cv_data_model="iDSP"  ; n="unusual dsptype" ;;
-     *)          ac_cv_data_model="none"  ; n="very unusual model" ;;
-   esac
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_data_model ($ac_cv_long_data_model, $n)" >&5
-$as_echo "$ac_cv_data_model ($ac_cv_long_data_model, $n)" >&6; }
-
-fi
-
-if test "_$ac_cv_header_stdint_x" != "_" ; then
-   ac_cv_header_stdint="$ac_cv_header_stdint_x"
-elif  test "_$ac_cv_header_stdint_o" != "_" ; then
-   ac_cv_header_stdint="$ac_cv_header_stdint_o"
-elif  test "_$ac_cv_header_stdint_u" != "_" ; then
-   ac_cv_header_stdint="$ac_cv_header_stdint_u"
-else
-   ac_cv_header_stdint="stddef.h"
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra inttypes in chosen header" >&5
-$as_echo_n "checking for extra inttypes in chosen header... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ($ac_cv_header_stdint)" >&5
-$as_echo "($ac_cv_header_stdint)" >&6; }
-unset ac_cv_type_int_least32_t
-unset ac_cv_type_int_fast32_t
-ac_fn_c_check_type "$LINENO" "int_least32_t" "ac_cv_type_int_least32_t" "#include <$ac_cv_header_stdint>
-"
-if test "x$ac_cv_type_int_least32_t" = xyes; then :
-
-fi
-
-ac_fn_c_check_type "$LINENO" "int_fast32_t" "ac_cv_type_int_fast32_t" "#include<$ac_cv_header_stdint>
-"
-if test "x$ac_cv_type_int_fast32_t" = xyes; then :
-
-fi
-
-ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "#include <$ac_cv_header_stdint>
-"
-if test "x$ac_cv_type_intmax_t" = xyes; then :
-
-fi
-
-
-fi # shortcircut to system "stdint.h"
-# ------------------ PREPARE VARIABLES ------------------------------
-if test "$GCC" = "yes" ; then
-ac_cv_stdint_message="using gnu compiler "`$CC --version | head -1`
-else
-ac_cv_stdint_message="using $CC"
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: make use of $ac_cv_header_stdint in $ac_stdint_h $ac_cv_stdint_result" >&5
-$as_echo "make use of $ac_cv_header_stdint in $ac_stdint_h $ac_cv_stdint_result" >&6; }
-
-# ----------------- DONE inttypes.h checks START header -------------
-ac_config_commands="$ac_config_commands $ac_stdint_h"
-
-
-
-
-# Check whether --with-int was given.
-if test "${with_int+set}" = set; then :
-  withval=$with_int;
-else
-  with_int=gmp
-fi
-
-case "$with_int" in
-gmp|imath|imath-32)
-       ;;
-*)
-       as_fn_error $? "bad value ${withval} for --with-int (use gmp, imath or imath-32)" "$LINENO" 5
-esac
-
-
-
-
-
-case "$with_int" in
-gmp)
-
-
-$as_echo "#define USE_GMP_FOR_MP /**/" >>confdefs.h
-
-
-
-
-# Check whether --with-gmp was given.
-if test "${with_gmp+set}" = set; then :
-  withval=$with_gmp;
-fi
-
-case "system" in
-system|build)
-
-# Check whether --with-gmp_prefix was given.
-if test "${with_gmp_prefix+set}" = set; then :
-  withval=$with_gmp_prefix;
-fi
-
-
-# Check whether --with-gmp_exec_prefix was given.
-if test "${with_gmp_exec_prefix+set}" = set; then :
-  withval=$with_gmp_exec_prefix;
-fi
-
-esac
-
-# Check whether --with-gmp_builddir was given.
-if test "${with_gmp_builddir+set}" = set; then :
-  withval=$with_gmp_builddir;
-fi
-
-if test "x$with_gmp_prefix" != "x" -a "x$with_gmp_exec_prefix" = "x"; then
-       with_gmp_exec_prefix=$with_gmp_prefix
-fi
-if test "x$with_gmp_prefix" != "x" -o "x$with_gmp_exec_prefix" != "x"; then
-       if test "x$with_gmp" != "x" -a "x$with_gmp" != "xyes" -a "x$with_gmp" != "xsystem"; then
-               as_fn_error $? "Setting $with_gmp_prefix implies use of system gmp" "$LINENO" 5
-       fi
-       with_gmp="system"
-fi
-if test "x$with_gmp_builddir" != "x"; then
-       if test "x$with_gmp" != "x" -a "x$with_gmp" != "xyes" -a "x$with_gmp" != "xbuild"; then
-               as_fn_error $? "Setting $with_gmp_builddir implies use of build gmp" "$LINENO" 5
-       fi
-       with_gmp="build"
-       gmp_srcdir=`echo @abs_srcdir@ | $with_gmp_builddir/config.status --file=-`
-       { $as_echo "$as_me:${as_lineno-$LINENO}: gmp sources in $gmp_srcdir" >&5
-$as_echo "$as_me: gmp sources in $gmp_srcdir" >&6;}
-fi
-if test "x$with_gmp_exec_prefix" != "x"; then
-       export PKG_CONFIG_PATH="$with_gmp_exec_prefix/lib/pkgconfig${PKG_CONFIG_PATH+:$PKG_CONFIG_PATH}"
-fi
-case "$with_gmp" in
-system|build)
-       ;;
-*)
-       case "system" in
-       bundled)
-               if test -d $srcdir/.git -a \
-                       -d $srcdir/gmp -a \
-                       ! -d $srcdir/gmp/.git; then
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: git repo detected, but submodule gmp not initialized" >&5
-$as_echo "$as_me: WARNING: git repo detected, but submodule gmp not initialized" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You may want to run" >&5
-$as_echo "$as_me: WARNING: You may want to run" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       git submodule init" >&5
-$as_echo "$as_me: WARNING:     git submodule init" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       git submodule update" >&5
-$as_echo "$as_me: WARNING:     git submodule update" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       sh autogen.sh" >&5
-$as_echo "$as_me: WARNING:     sh autogen.sh" >&2;}
-               fi
-               if test -f $srcdir/gmp/configure; then
-                       with_gmp="bundled"
-               else
-                       with_gmp="no"
-               fi
-               ;;
-       *)
-               with_gmp="system"
-               ;;
-       esac
-       ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which gmp to use" >&5
-$as_echo_n "checking which gmp to use... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_gmp" >&5
-$as_echo "$with_gmp" >&6; }
-
-
-case "$with_gmp" in
-system)
-       if test "x$with_gmp_prefix" != "x"; then
-               MP_CPPFLAGS="-I$with_gmp_prefix/include"
-               MP_LDFLAGS="-L$with_gmp_prefix/lib"
-       fi
-       MP_LIBS=-lgmp
-       SAVE_CPPFLAGS="$CPPFLAGS"
-       SAVE_LDFLAGS="$LDFLAGS"
-       SAVE_LIBS="$LIBS"
-       CPPFLAGS="$MP_CPPFLAGS $CPPFLAGS"
-       LDFLAGS="$MP_LDFLAGS $LDFLAGS"
-       LIBS="$MP_LIBS $LIBS"
-       ac_fn_c_check_header_mongrel "$LINENO" "gmp.h" "ac_cv_header_gmp_h" "$ac_includes_default"
-if test "x$ac_cv_header_gmp_h" = xyes; then :
-
-else
-  as_fn_error $? "gmp.h header not found" "$LINENO" 5
-fi
-
-
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgmp" >&5
-$as_echo_n "checking for main in -lgmp... " >&6; }
-if ${ac_cv_lib_gmp_main+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgmp  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-return main ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_gmp_main=yes
-else
-  ac_cv_lib_gmp_main=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp_main" >&5
-$as_echo "$ac_cv_lib_gmp_main" >&6; }
-if test "x$ac_cv_lib_gmp_main" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBGMP 1
-_ACEOF
-
-  LIBS="-lgmp $LIBS"
-
-else
-  as_fn_error $? "gmp library not found" "$LINENO" 5
-fi
-
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <gmp.h>
-int
-main ()
-{
-
-               mpz_t n, d;
-               if (mpz_divisible_p(n, d))
-                       mpz_divexact_ui(n, n, 4);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-else
-  as_fn_error $? "gmp library too old" "$LINENO" 5
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-       CPPFLAGS="$SAVE_CPPFLAGS"
-       LDFLAGS="$SAVE_LDFLAGS"
-       LIBS="$SAVE_LIBS"
-       ;;
-build)
-       MP_CPPFLAGS="-I$gmp_srcdir -I$with_gmp_builddir"
-       MP_LIBS="$with_gmp_builddir/libgmp.la"
-       ;;
-esac
-SAVE_CPPFLAGS="$CPPFLAGS"
-SAVE_LDFLAGS="$LDFLAGS"
-SAVE_LIBS="$LIBS"
-CPPFLAGS="$MP_CPPFLAGS $CPPFLAGS"
-LDFLAGS="$MP_LDFLAGS $LDFLAGS"
-LIBS="$MP_LIBS $LIBS"
-need_get_memory_functions=false
-ac_fn_c_check_decl "$LINENO" "mp_get_memory_functions" "ac_cv_have_decl_mp_get_memory_functions" "#include <gmp.h>
-"
-if test "x$ac_cv_have_decl_mp_get_memory_functions" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_MP_GET_MEMORY_FUNCTIONS $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
-
-else
-
-       need_get_memory_functions=true
-
-fi
-
-CPPFLAGS="$SAVE_CPPFLAGS"
-LDFLAGS="$SAVE_LDFLAGS"
-LIBS="$SAVE_LIBS"
- if test x$need_get_memory_functions = xtrue; then
-  NEED_GET_MEMORY_FUNCTIONS_TRUE=
-  NEED_GET_MEMORY_FUNCTIONS_FALSE='#'
-else
-  NEED_GET_MEMORY_FUNCTIONS_TRUE='#'
-  NEED_GET_MEMORY_FUNCTIONS_FALSE=
-fi
-
-
-       ;;
-imath|imath-32)
-
-
-$as_echo "#define USE_IMATH_FOR_MP /**/" >>confdefs.h
-
-
-MP_CPPFLAGS="-I$srcdir/imath_wrap"
-MP_LDFLAGS=""
-MP_LIBS=""
-
-SAVE_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$MP_CPPFLAGS $CPPFLAGS"
-ac_fn_c_check_header_mongrel "$LINENO" "imath.h" "ac_cv_header_imath_h" "$ac_includes_default"
-if test "x$ac_cv_header_imath_h" = xyes; then :
-
-else
-  as_fn_error $? "imath.h header not found" "$LINENO" 5
-fi
-
-
-ac_fn_c_check_header_mongrel "$LINENO" "gmp_compat.h" "ac_cv_header_gmp_compat_h" "$ac_includes_default"
-if test "x$ac_cv_header_gmp_compat_h" = xyes; then :
-
-else
-  as_fn_error $? "gmp_compat.h header not found" "$LINENO" 5
-fi
-
-
-CPPFLAGS="$SAVE_CPPFLAGS"
-
- if test x = xfalse; then
-  NEED_GET_MEMORY_FUNCTIONS_TRUE=
-  NEED_GET_MEMORY_FUNCTIONS_FALSE='#'
-else
-  NEED_GET_MEMORY_FUNCTIONS_TRUE='#'
-  NEED_GET_MEMORY_FUNCTIONS_FALSE=
-fi
-
-
-       ;;
-esac
-if test "x$with_int" = "ximath-32" -a "x$GCC" = "xyes"; then
-       MP_CFLAGS="-std=gnu99 $MP_CFLAGS"
-fi
-
- if test x$with_int = ximath -o x$with_int = ximath-32; then
-  IMATH_FOR_MP_TRUE=
-  IMATH_FOR_MP_FALSE='#'
-else
-  IMATH_FOR_MP_TRUE='#'
-  IMATH_FOR_MP_FALSE=
-fi
-
- if test x$with_int = xgmp; then
-  GMP_FOR_MP_TRUE=
-  GMP_FOR_MP_FALSE='#'
-else
-  GMP_FOR_MP_TRUE='#'
-  GMP_FOR_MP_FALSE=
-fi
-
-
- if test "x$HAVE_CXX11" = "x1"; then
-  HAVE_CXX11_TRUE=
-  HAVE_CXX11_FALSE='#'
-else
-  HAVE_CXX11_TRUE='#'
-  HAVE_CXX11_FALSE=
-fi
-
- if test "x$with_int" = "ximath-32"; then
-  SMALL_INT_OPT_TRUE=
-  SMALL_INT_OPT_FALSE='#'
-else
-  SMALL_INT_OPT_TRUE='#'
-  SMALL_INT_OPT_FALSE=
-fi
-
-if test "x$with_int" = "ximath-32"; then :
-
-
-$as_echo "#define USE_SMALL_INT_OPT /**/" >>confdefs.h
-
-
-fi
-
-ac_fn_c_check_decl "$LINENO" "ffs" "ac_cv_have_decl_ffs" "#include <strings.h>
-"
-if test "x$ac_cv_have_decl_ffs" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FFS $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "__builtin_ffs" "ac_cv_have_decl___builtin_ffs" "$ac_includes_default"
-if test "x$ac_cv_have_decl___builtin_ffs" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL___BUILTIN_FFS $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "_BitScanForward" "ac_cv_have_decl__BitScanForward" "#include <intrin.h>
-"
-if test "x$ac_cv_have_decl__BitScanForward" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__BITSCANFORWARD $ac_have_decl
-_ACEOF
-
-if test "x$ac_cv_have_decl_ffs" = xno -a \
-               "x$ac_cv_have_decl___builtin_ffs" = xno -a \
-               "x$ac_cv_have_decl__BitScanForward" = xno; then
-       as_fn_error $? "No ffs implementation found" "$LINENO" 5
-fi
-ac_fn_c_check_decl "$LINENO" "strcasecmp" "ac_cv_have_decl_strcasecmp" "#include <strings.h>
-"
-if test "x$ac_cv_have_decl_strcasecmp" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRCASECMP $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "strncasecmp" "ac_cv_have_decl_strncasecmp" "#include <strings.h>
-"
-if test "x$ac_cv_have_decl_strncasecmp" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRNCASECMP $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "_stricmp" "ac_cv_have_decl__stricmp" "#include <string.h>
-"
-if test "x$ac_cv_have_decl__stricmp" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__STRICMP $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "_strnicmp" "ac_cv_have_decl__strnicmp" "#include <string.h>
-"
-if test "x$ac_cv_have_decl__strnicmp" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__STRNICMP $ac_have_decl
-_ACEOF
-
-if test "x$ac_cv_have_decl_strcasecmp" = xno -a \
-               "x$ac_cv_have_decl__stricmp" = xno; then
-       as_fn_error $? "No strcasecmp implementation found" "$LINENO" 5
-fi
-if test "x$ac_cv_have_decl_strncasecmp" = xno -a \
-               "x$ac_cv_have_decl__strnicmp" = xno; then
-       as_fn_error $? "No strncasecmp implementation found" "$LINENO" 5
-fi
-ac_fn_c_check_decl "$LINENO" "snprintf" "ac_cv_have_decl_snprintf" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl_snprintf" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SNPRINTF $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl__snprintf" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__SNPRINTF $ac_have_decl
-_ACEOF
-
-if test "x$ac_cv_have_decl_snprintf" = xno -a \
-               "x$ac_cv_have_decl__snprintf" = xno; then
-       as_fn_error $? "No snprintf implementation found" "$LINENO" 5
-fi
-
-
-
-
-# Check whether --with-clang was given.
-if test "${with_clang+set}" = set; then :
-  withval=$with_clang;
-fi
-
-case "system" in
-system|no)
-
-# Check whether --with-clang_prefix was given.
-if test "${with_clang_prefix+set}" = set; then :
-  withval=$with_clang_prefix;
-fi
-
-
-# Check whether --with-clang_exec_prefix was given.
-if test "${with_clang_exec_prefix+set}" = set; then :
-  withval=$with_clang_exec_prefix;
-fi
-
-esac
-
-if test "x$with_clang_prefix" != "x" -a "x$with_clang_exec_prefix" = "x"; then
-       with_clang_exec_prefix=$with_clang_prefix
-fi
-if test "x$with_clang_prefix" != "x" -o "x$with_clang_exec_prefix" != "x"; then
-       if test "x$with_clang" != "x" -a "x$with_clang" != "xyes" -a "x$with_clang" != "xsystem"; then
-               as_fn_error $? "Setting $with_clang_prefix implies use of system clang" "$LINENO" 5
-       fi
-       with_clang="system"
-fi
-if test "x$with_clang_builddir" != "x"; then
-       if test "x$with_clang" != "x" -a "x$with_clang" != "xyes" -a "x$with_clang" != "xbuild"; then
-               as_fn_error $? "Setting $with_clang_builddir implies use of build clang" "$LINENO" 5
-       fi
-       with_clang="build"
-       clang_srcdir=`echo @abs_srcdir@ | $with_clang_builddir/config.status --file=-`
-       { $as_echo "$as_me:${as_lineno-$LINENO}: clang sources in $clang_srcdir" >&5
-$as_echo "$as_me: clang sources in $clang_srcdir" >&6;}
-fi
-if test "x$with_clang_exec_prefix" != "x"; then
-       export PKG_CONFIG_PATH="$with_clang_exec_prefix/lib/pkgconfig${PKG_CONFIG_PATH+:$PKG_CONFIG_PATH}"
-fi
-case "$with_clang" in
-system|no)
-       ;;
-*)
-       case "no" in
-       bundled)
-               if test -d $srcdir/.git -a \
-                       -d $srcdir/clang -a \
-                       ! -d $srcdir/clang/.git; then
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: git repo detected, but submodule clang not initialized" >&5
-$as_echo "$as_me: WARNING: git repo detected, but submodule clang not initialized" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You may want to run" >&5
-$as_echo "$as_me: WARNING: You may want to run" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       git submodule init" >&5
-$as_echo "$as_me: WARNING:     git submodule init" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       git submodule update" >&5
-$as_echo "$as_me: WARNING:     git submodule update" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       sh autogen.sh" >&5
-$as_echo "$as_me: WARNING:     sh autogen.sh" >&2;}
-               fi
-               if test -f $srcdir/clang/configure; then
-                       with_clang="bundled"
-               else
-                       with_clang="no"
-               fi
-               ;;
-       *)
-               with_clang="no"
-               ;;
-       esac
-       ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which clang to use" >&5
-$as_echo_n "checking which clang to use... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_clang" >&5
-$as_echo "$with_clang" >&6; }
-
-
- if test $with_clang = system; then
-  HAVE_CLANG_TRUE=
-  HAVE_CLANG_FALSE='#'
-else
-  HAVE_CLANG_TRUE='#'
-  HAVE_CLANG_FALSE=
-fi
-
- if (test $with_clang = system -a "x$HAVE_CXX11" = "x1") || \
-     test -f $srcdir/include/isl/cpp.h; then
-  HAVE_CPP_ISL_H_TRUE=
-  HAVE_CPP_ISL_H_FALSE='#'
-else
-  HAVE_CPP_ISL_H_TRUE='#'
-  HAVE_CPP_ISL_H_FALSE=
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5
-$as_echo_n "checking for C compiler vendor... " >&6; }
-if ${ax_cv_c_compiler_vendor+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ax_cv_c_compiler_vendor=unknown
-  # note: don't check for gcc first since some other compilers define __GNUC__
-  for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale:__PATHCC__,__PATHSCALE__ clang:__clang__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
-    vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-#if !($vencpp)
-      thisisanerror;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ax_cv_c_compiler_vendor=`echo $ventest | cut -d: -f1`; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5
-$as_echo "$ax_cv_c_compiler_vendor" >&6; }
-
-
-       WARNING_FLAGS=""
-
-       if test "${ax_cv_c_compiler_vendor}" = "clang"; then
-                                                                                               WARNING_FLAGS="-Wall"
-       fi
-
-
-
-
-PACKAGE_CFLAGS="$MP_CPPFLAGS"
-PACKAGE_LDFLAGS="$MP_LDFLAGS"
-PACKAGE_LIBS="-lisl $MP_LIBS"
-
-# we need the expanded forms...
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking our pkgconfig libname" >&5
-$as_echo_n "checking our pkgconfig libname... " >&6; }
-test ".$ax_create_pkgconfig_libname" != "." || \
-ax_create_pkgconfig_libname="${PACKAGE_NAME}"
-test ".$ax_create_pkgconfig_libname" != "." || \
-ax_create_pkgconfig_libname="$PACKAGE"
-ax_create_pkgconfig_libname=`eval echo "$ax_create_pkgconfig_libname"`
-ax_create_pkgconfig_libname=`eval echo "$ax_create_pkgconfig_libname"`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_create_pkgconfig_libname" >&5
-$as_echo "$ax_create_pkgconfig_libname" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking our pkgconfig version" >&5
-$as_echo_n "checking our pkgconfig version... " >&6; }
-test ".$ax_create_pkgconfig_version" != "." || \
-ax_create_pkgconfig_version="${PACKAGE_VERSION}"
-test ".$ax_create_pkgconfig_version" != "." || \
-ax_create_pkgconfig_version="$VERSION"
-ax_create_pkgconfig_version=`eval echo "$ax_create_pkgconfig_version"`
-ax_create_pkgconfig_version=`eval echo "$ax_create_pkgconfig_version"`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_create_pkgconfig_version" >&5
-$as_echo "$ax_create_pkgconfig_version" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking our pkgconfig_libdir" >&5
-$as_echo_n "checking our pkgconfig_libdir... " >&6; }
-test ".$pkgconfig_libdir" = "." && \
-pkgconfig_libdir='${libdir}/pkgconfig'
-ax_create_pkgconfig_libdir=`eval echo "$pkgconfig_libdir"`
-ax_create_pkgconfig_libdir=`eval echo "$ax_create_pkgconfig_libdir"`
-ax_create_pkgconfig_libdir=`eval echo "$ax_create_pkgconfig_libdir"`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pkgconfig_libdir" >&5
-$as_echo "$pkgconfig_libdir" >&6; }
-test "$pkgconfig_libdir" != "$ax_create_pkgconfig_libdir" && (
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: expanded our pkgconfig_libdir... $ax_create_pkgconfig_libdir" >&5
-$as_echo "expanded our pkgconfig_libdir... $ax_create_pkgconfig_libdir" >&6; })
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking our pkgconfig_libfile" >&5
-$as_echo_n "checking our pkgconfig_libfile... " >&6; }
-test ".$pkgconfig_libfile" != "." || \
-pkgconfig_libfile="$ax_create_pkgconfig_libname.pc"
-ax_create_pkgconfig_libfile=`eval echo "$pkgconfig_libfile"`
-ax_create_pkgconfig_libfile=`eval echo "$ax_create_pkgconfig_libfile"`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pkgconfig_libfile" >&5
-$as_echo "$pkgconfig_libfile" >&6; }
-test "$pkgconfig_libfile" != "$ax_create_pkgconfig_libfile" && (
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: expanded our pkgconfig_libfile... $ax_create_pkgconfig_libfile" >&5
-$as_echo "expanded our pkgconfig_libfile... $ax_create_pkgconfig_libfile" >&6; })
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking our package / suffix" >&5
-$as_echo_n "checking our package / suffix... " >&6; }
-ax_create_pkgconfig_suffix="$program_suffix"
-test ".$ax_create_pkgconfig_suffix" != .NONE || ax_create_pkgconfig_suffix=""
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${PACKAGE_NAME} / ${ax_create_pkgconfig_suffix}" >&5
-$as_echo "${PACKAGE_NAME} / ${ax_create_pkgconfig_suffix}" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking our pkgconfig description" >&5
-$as_echo_n "checking our pkgconfig description... " >&6; }
-ax_create_pkgconfig_description="$PACKAGE_SUMMARY"
-test ".$ax_create_pkgconfig_description" != "." || \
-ax_create_pkgconfig_description="$ax_create_pkgconfig_libname Library"
-ax_create_pkgconfig_description=`eval echo "$ax_create_pkgconfig_description"`
-ax_create_pkgconfig_description=`eval echo "$ax_create_pkgconfig_description"`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_create_pkgconfig_description" >&5
-$as_echo "$ax_create_pkgconfig_description" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking our pkgconfig requires" >&5
-$as_echo_n "checking our pkgconfig requires... " >&6; }
-ax_create_pkgconfig_requires="$PACKAGE_REQUIRES"
-ax_create_pkgconfig_requires=`eval echo "$ax_create_pkgconfig_requires"`
-ax_create_pkgconfig_requires=`eval echo "$ax_create_pkgconfig_requires"`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_create_pkgconfig_requires" >&5
-$as_echo "$ax_create_pkgconfig_requires" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking our pkgconfig ext libs" >&5
-$as_echo_n "checking our pkgconfig ext libs... " >&6; }
-ax_create_pkgconfig_pkglibs="$PACKAGE_LIBS"
-test ".$ax_create_pkgconfig_pkglibs" != "." || ax_create_pkgconfig_pkglibs="-l$ax_create_pkgconfig_libname"
-ax_create_pkgconfig_libs="$ax_create_pkgconfig_pkglibs $LIBS"
-ax_create_pkgconfig_libs=`eval echo "$ax_create_pkgconfig_libs"`
-ax_create_pkgconfig_libs=`eval echo "$ax_create_pkgconfig_libs"`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_create_pkgconfig_libs" >&5
-$as_echo "$ax_create_pkgconfig_libs" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking our pkgconfig cppflags" >&5
-$as_echo_n "checking our pkgconfig cppflags... " >&6; }
-ax_create_pkgconfig_cppflags="$PACKAGE_CFLAGS"
-ax_create_pkgconfig_cppflags=`eval echo "$ax_create_pkgconfig_cppflags"`
-ax_create_pkgconfig_cppflags=`eval echo "$ax_create_pkgconfig_cppflags"`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_create_pkgconfig_cppflags" >&5
-$as_echo "$ax_create_pkgconfig_cppflags" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking our pkgconfig ldflags" >&5
-$as_echo_n "checking our pkgconfig ldflags... " >&6; }
-ax_create_pkgconfig_ldflags="$PACKAGE_LDFLAGS"
-ax_create_pkgconfig_ldflags=`eval echo "$ax_create_pkgconfig_ldflags"`
-ax_create_pkgconfig_ldflags=`eval echo "$ax_create_pkgconfig_ldflags"`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_create_pkgconfig_ldflags" >&5
-$as_echo "$ax_create_pkgconfig_ldflags" >&6; }
-
-test ".$ax_create_pkgconfig_generate" != "." || \
-ax_create_pkgconfig_generate="$ax_create_pkgconfig_libname.pc"
-ax_create_pkgconfig_generate=`eval echo "$ax_create_pkgconfig_generate"`
-ax_create_pkgconfig_generate=`eval echo "$ax_create_pkgconfig_generate"`
-test "$pkgconfig_libfile" != "$ax_create_pkgconfig_generate" && (
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: generate the pkgconfig later... $ax_create_pkgconfig_generate" >&5
-$as_echo "generate the pkgconfig later... $ax_create_pkgconfig_generate" >&6; })
-
-if test ".$ax_create_pkgconfig_src_libdir" = "." ; then
-ax_create_pkgconfig_src_libdir=`pwd`
-ax_create_pkgconfig_src_libdir=`$as_dirname -- "$ax_create_pkgconfig_src_libdir/$ax_create_pkgconfig_generate" ||
-$as_expr X"$ax_create_pkgconfig_src_libdir/$ax_create_pkgconfig_generate" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$ax_create_pkgconfig_src_libdir/$ax_create_pkgconfig_generate" : 'X\(//\)[^/]' \| \
-        X"$ax_create_pkgconfig_src_libdir/$ax_create_pkgconfig_generate" : 'X\(//\)$' \| \
-        X"$ax_create_pkgconfig_src_libdir/$ax_create_pkgconfig_generate" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ax_create_pkgconfig_src_libdir/$ax_create_pkgconfig_generate" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-test ! -d $ax_create_pkgconfig_src_libdir/src || \
-ax_create_pkgconfig_src_libdir="$ax_create_pkgconfig_src_libdir/src"
-case ".$objdir" in
-*libs) ax_create_pkgconfig_src_libdir="$ax_create_pkgconfig_src_libdir/$objdir" ;; esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: noninstalled pkgconfig -L $ax_create_pkgconfig_src_libdir" >&5
-$as_echo "noninstalled pkgconfig -L $ax_create_pkgconfig_src_libdir" >&6; }
-fi
-
-if test ".$ax_create_pkgconfig_src_headers" = "." ; then
-ax_create_pkgconfig_src_headers=`pwd`
-v="$ac_top_srcdir" ;
-test ".$v" != "." || v="$ax_spec_dir"
-test ".$v" != "." || v="$srcdir"
-case "$v" in /*) ax_create_pkgconfig_src_headers="" ;; esac
-ax_create_pkgconfig_src_headers=`$as_dirname -- "$ax_create_pkgconfig_src_headers/$v/x" ||
-$as_expr X"$ax_create_pkgconfig_src_headers/$v/x" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$ax_create_pkgconfig_src_headers/$v/x" : 'X\(//\)[^/]' \| \
-        X"$ax_create_pkgconfig_src_headers/$v/x" : 'X\(//\)$' \| \
-        X"$ax_create_pkgconfig_src_headers/$v/x" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ax_create_pkgconfig_src_headers/$v/x" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-test ! -d $ax_create_pkgconfig_src_headers/include || \
-ax_create_pkgconfig_src_headers="$ax_create_pkgconfig_src_headers/include"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: noninstalled pkgconfig -I $ax_create_pkgconfig_src_headers" >&5
-$as_echo "noninstalled pkgconfig -I $ax_create_pkgconfig_src_headers" >&6; }
-fi
-
-
-ac_config_commands="$ac_config_commands $ax_create_pkgconfig_generate"
-
-
-
-
-
-
-       if test -f $srcdir/.git; then
-               gitdir=`GIT_DIR=$srcdir/.git git rev-parse --git-dir`
-               GIT_HEAD="$gitdir/index"
-               GIT_REPO="$gitdir"
-               GIT_HEAD_ID=`GIT_DIR=$GIT_REPO git describe --always`
-       elif test -f $srcdir/.git/HEAD; then
-               GIT_HEAD="$srcdir/.git/index"
-               GIT_REPO="$srcdir/.git"
-               GIT_HEAD_ID=`GIT_DIR=$GIT_REPO git describe --always`
-       elif test -f $srcdir/GIT_HEAD_ID; then
-               GIT_HEAD_ID=`cat $srcdir/GIT_HEAD_ID`
-       else
-               mysrcdir=`(cd $srcdir; pwd)`
-               head=`basename $mysrcdir | sed -e 's/.*-//'`
-               head2=`echo $head | sed -e 's/^0-9a-f//'`
-               head3=`echo $head2 | sed -e 's/........................................//'`
-               if test "x$head3" = "x" -a "x$head" = "x$head2"; then
-                       GIT_HEAD_ID="$head"
-               else
-                       GIT_HEAD_ID="UNKNOWN"
-               fi
-       fi
-       if test -z "$GIT_REPO" ; then
-               GIT_HEAD_VERSION="$GIT_HEAD_ID"
-       else
-           GIT_HEAD_VERSION="\`GIT_DIR=$GIT_REPO git describe --always\`"
-       fi
-
-
-
-ac_config_headers="$ac_config_headers isl_config.h"
-
-ac_config_files="$ac_config_files isl_srcdir.c"
-
-ac_config_files="$ac_config_files Makefile"
-
-ac_config_files="$ac_config_files doc/Makefile"
-
-if test $with_clang = system; then
-
-
-subdirs="$subdirs interface"
-
-fi
-ac_config_files="$ac_config_files bound_test.sh"
-
-ac_config_files="$ac_config_files codegen_test.sh"
-
-ac_config_files="$ac_config_files pip_test.sh"
-
-ac_config_files="$ac_config_files flow_test.sh"
-
-ac_config_files="$ac_config_files schedule_test.sh"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-       "s/'/'\\\\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-       cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-         mv -f confcache "$cache_file"$$ &&
-         mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-         mv -f confcache "$cache_file" ;;
-       esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${GENERATE_DOC_TRUE}" && test -z "${GENERATE_DOC_FALSE}"; then
-  as_fn_error $? "conditional \"GENERATE_DOC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${NEED_GET_MEMORY_FUNCTIONS_TRUE}" && test -z "${NEED_GET_MEMORY_FUNCTIONS_FALSE}"; then
-  as_fn_error $? "conditional \"NEED_GET_MEMORY_FUNCTIONS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${NEED_GET_MEMORY_FUNCTIONS_TRUE}" && test -z "${NEED_GET_MEMORY_FUNCTIONS_FALSE}"; then
-  as_fn_error $? "conditional \"NEED_GET_MEMORY_FUNCTIONS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${IMATH_FOR_MP_TRUE}" && test -z "${IMATH_FOR_MP_FALSE}"; then
-  as_fn_error $? "conditional \"IMATH_FOR_MP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${GMP_FOR_MP_TRUE}" && test -z "${GMP_FOR_MP_FALSE}"; then
-  as_fn_error $? "conditional \"GMP_FOR_MP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_CXX11_TRUE}" && test -z "${HAVE_CXX11_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_CXX11\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${SMALL_INT_OPT_TRUE}" && test -z "${SMALL_INT_OPT_FALSE}"; then
-  as_fn_error $? "conditional \"SMALL_INT_OPT\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_CLANG_TRUE}" && test -z "${HAVE_CLANG_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_CLANG\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_CPP_ISL_H_TRUE}" && test -z "${HAVE_CPP_ISL_H_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_CPP_ISL_H\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='        ';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by isl $as_me 0.24, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <isl-development@googlegroups.com>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-isl config.status 0.24
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`'
-SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
-host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`'
-configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
-predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
-postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
-LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
-reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
-reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
-GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
-include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
-predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
-postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
-predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
-postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-OBJDUMP \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-DLLTOOL \
-sharedlib_from_linklib_cmd \
-AR \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_import \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-lt_cv_nm_interface \
-nm_file_list_spec \
-lt_cv_truncate_bin \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib \
-compiler_lib_search_dirs \
-predep_objects \
-postdep_objects \
-predeps \
-postdeps \
-compiler_lib_search_path \
-LD_CXX \
-reload_flag_CXX \
-compiler_CXX \
-lt_prog_compiler_no_builtin_flag_CXX \
-lt_prog_compiler_pic_CXX \
-lt_prog_compiler_wl_CXX \
-lt_prog_compiler_static_CXX \
-lt_cv_prog_compiler_c_o_CXX \
-export_dynamic_flag_spec_CXX \
-whole_archive_flag_spec_CXX \
-compiler_needs_object_CXX \
-with_gnu_ld_CXX \
-allow_undefined_flag_CXX \
-no_undefined_flag_CXX \
-hardcode_libdir_flag_spec_CXX \
-hardcode_libdir_separator_CXX \
-exclude_expsyms_CXX \
-include_expsyms_CXX \
-file_list_spec_CXX \
-compiler_lib_search_dirs_CXX \
-predep_objects_CXX \
-postdep_objects_CXX \
-predeps_CXX \
-postdeps_CXX \
-compiler_lib_search_path_CXX; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-configure_time_dlsearch_path \
-configure_time_lt_sys_library_path \
-reload_cmds_CXX \
-old_archive_cmds_CXX \
-old_archive_from_new_cmds_CXX \
-old_archive_from_expsyms_cmds_CXX \
-archive_cmds_CXX \
-archive_expsym_cmds_CXX \
-module_cmds_CXX \
-module_expsym_cmds_CXX \
-export_symbols_cmds_CXX \
-prelink_cmds_CXX \
-postlink_cmds_CXX; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-ac_aux_dir='$ac_aux_dir'
-
-# See if we are running on zsh, and set the options that allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}"; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-
-# variables for create stdint.h replacement
-PACKAGE="$PACKAGE"
-VERSION="$VERSION"
-ac_stdint_h="$ac_stdint_h"
-_ac_stdint_h=`$as_echo "_$PACKAGE-$ac_stdint_h" | $as_tr_cpp`
-ac_cv_stdint_message="$ac_cv_stdint_message"
-ac_cv_header_stdint_t="$ac_cv_header_stdint_t"
-ac_cv_header_stdint_x="$ac_cv_header_stdint_x"
-ac_cv_header_stdint_o="$ac_cv_header_stdint_o"
-ac_cv_header_stdint_u="$ac_cv_header_stdint_u"
-ac_cv_type_uint64_t="$ac_cv_type_uint64_t"
-ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t"
-ac_cv_char_data_model="$ac_cv_char_data_model"
-ac_cv_long_data_model="$ac_cv_long_data_model"
-ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t"
-ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t"
-ac_cv_type_intmax_t="$ac_cv_type_intmax_t"
-
-
-ax_create_pkgconfig_generate="$ax_create_pkgconfig_generate"
-pkgconfig_prefix='$prefix'
-pkgconfig_execprefix='$exec_prefix'
-pkgconfig_bindir='$bindir'
-pkgconfig_libdir='$libdir'
-pkgconfig_includedir='$includedir'
-pkgconfig_datarootdir='$datarootdir'
-pkgconfig_datadir='$datadir'
-pkgconfig_sysconfdir='$sysconfdir'
-pkgconfig_suffix='$ax_create_pkgconfig_suffix'
-pkgconfig_package='$PACKAGE_NAME'
-pkgconfig_libname='$ax_create_pkgconfig_libname'
-pkgconfig_description='$ax_create_pkgconfig_description'
-pkgconfig_version='$ax_create_pkgconfig_version'
-pkgconfig_requires='$ax_create_pkgconfig_requires'
-pkgconfig_libs='$ax_create_pkgconfig_libs'
-pkgconfig_ldflags='$ax_create_pkgconfig_ldflags'
-pkgconfig_cppflags='$ax_create_pkgconfig_cppflags'
-pkgconfig_src_libdir='$ax_create_pkgconfig_src_libdir'
-pkgconfig_src_headers='$ax_create_pkgconfig_src_headers'
-
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "$ac_stdint_h") CONFIG_COMMANDS="$CONFIG_COMMANDS $ac_stdint_h" ;;
-    "$ax_create_pkgconfig_generate") CONFIG_COMMANDS="$CONFIG_COMMANDS $ax_create_pkgconfig_generate" ;;
-    "isl_config.h") CONFIG_HEADERS="$CONFIG_HEADERS isl_config.h" ;;
-    "isl_srcdir.c") CONFIG_FILES="$CONFIG_FILES isl_srcdir.c" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
-    "bound_test.sh") CONFIG_FILES="$CONFIG_FILES bound_test.sh" ;;
-    "codegen_test.sh") CONFIG_FILES="$CONFIG_FILES codegen_test.sh" ;;
-    "pip_test.sh") CONFIG_FILES="$CONFIG_FILES pip_test.sh" ;;
-    "flow_test.sh") CONFIG_FILES="$CONFIG_FILES flow_test.sh" ;;
-    "schedule_test.sh") CONFIG_FILES="$CONFIG_FILES schedule_test.sh" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = "\a"
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
-h
-s///
-s/^/:/
-s/[     ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[  ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[      ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[    ]*#[    ]*define[       ][      ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = "\a"
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-        # (if the path is not absolute).  The absolute path cannot be DOS-style,
-        # because $ac_f cannot contain `:'.
-        test -f "$ac_f" ||
-          case $ac_f in
-          [\\/$]*) false;;
-          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-          esac ||
-          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-       `' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$ac_file" : 'X\(//\)[^/]' \| \
-        X"$ac_file" : 'X\(//\)$' \| \
-        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$_am_arg" : 'X\(//\)[^/]' \| \
-        X"$_am_arg" : 'X\(//\)$' \| \
-        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  # TODO: see whether this extra hack can be removed once we start
-  # requiring Autoconf 2.70 or later.
-  case $CONFIG_FILES in #(
-  *\'*) :
-    eval set x "$CONFIG_FILES" ;; #(
-  *) :
-    set x $CONFIG_FILES ;; #(
-  *) :
-     ;;
-esac
-  shift
-  # Used to flag and report bootstrapping failures.
-  am_rc=0
-  for am_mf
-  do
-    # Strip MF so we end up with the name of the file.
-    am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile which includes
-    # dependency-tracking related rules and includes.
-    # Grep'ing the whole file directly is not great: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
-      || continue
-    am_dirpart=`$as_dirname -- "$am_mf" ||
-$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$am_mf" : 'X\(//\)[^/]' \| \
-        X"$am_mf" : 'X\(//\)$' \| \
-        X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$am_mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-    am_filepart=`$as_basename -- "$am_mf" ||
-$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$am_mf" : 'X\(//\)$' \| \
-        X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$am_mf" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-    { echo "$as_me:$LINENO: cd "$am_dirpart" \
-      && sed -e '/# am--include-marker/d' "$am_filepart" \
-        | $MAKE -f - am--depfiles" >&5
-   (cd "$am_dirpart" \
-      && sed -e '/# am--include-marker/d' "$am_filepart" \
-        | $MAKE -f - am--depfiles) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } || am_rc=$?
-  done
-  if test $am_rc -ne 0; then
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "Something went wrong bootstrapping makefile fragments
-    for automatic dependency tracking.  If GNU make was not used, consider
-    re-running the configure script with MAKE=\"gmake\" (or whatever is
-    necessary).  You can also try re-running configure with the
-    '--disable-dependency-tracking' option to at least be able to build
-    the package (albeit without support for automatic dependency tracking).
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-  { am_dirpart=; unset am_dirpart;}
-  { am_filepart=; unset am_filepart;}
-  { am_mf=; unset am_mf;}
-  { am_rc=; unset am_rc;}
-  rm -f conftest-deps.mk
-}
- ;;
-    "libtool":C)
-
-    # See if we are running on zsh, and set the options that allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}"; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile=${ofile}T
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-# Generated automatically by $as_me ($PACKAGE) $VERSION
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-
-# Provide generalized library-building support services.
-# Written by Gordon Matzigkeit, 1996
-
-# Copyright (C) 2014 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program or library that is built
-# using GNU Libtool, you may include this file under the  same
-# distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags='CXX '
-
-# Configured defaults for sys_lib_dlsearch_path munging.
-: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shared archive member basename,for filename based shared library versioning on AIX.
-shared_archive_member_spec=$shared_archive_member_spec
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# An object symbol dumper.
-OBJDUMP=$lt_OBJDUMP
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive (by configure).
-lt_ar_flags=$lt_ar_flags
-
-# Flags to create an archive.
-AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"}
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm into a list of symbols to manually relocate.
-global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# The name lister interface.
-nm_interface=$lt_lt_cv_nm_interface
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and where our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# Command to truncate a binary pipe.
-lt_truncate_bin=$lt_lt_cv_truncate_bin
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Detected run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path
-
-# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
-configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \$shlibpath_var if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects
-postdep_objects=$lt_postdep_objects
-predeps=$lt_predeps
-postdeps=$lt_postdeps
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-    cat <<'_LT_EOF' >> "$cfgfile"
-
-# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
-
-# func_munge_path_list VARIABLE PATH
-# -----------------------------------
-# VARIABLE is name of variable containing _space_ separated list of
-# directories to be munged by the contents of PATH, which is string
-# having a format:
-# "DIR[:DIR]:"
-#       string "DIR[ DIR]" will be prepended to VARIABLE
-# ":DIR[:DIR]"
-#       string "DIR[ DIR]" will be appended to VARIABLE
-# "DIRP[:DIRP]::[DIRA:]DIRA"
-#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
-#       "DIRA[ DIRA]" will be appended to VARIABLE
-# "DIR[:DIR]"
-#       VARIABLE will be replaced by "DIR[ DIR]"
-func_munge_path_list ()
-{
-    case x$2 in
-    x)
-        ;;
-    *:)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
-        ;;
-    x:*)
-        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    *::*)
-        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
-        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
-        ;;
-    *)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    esac
-}
-
-
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-func_cc_basename ()
-{
-    for cc_temp in $*""; do
-      case $cc_temp in
-        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-        \-*) ;;
-        *) break;;
-      esac
-    done
-    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-}
-
-
-# ### END FUNCTIONS SHARED WITH CONFIGURE
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test set != "${COLLECT_NAMES+set}"; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-
-ltmain=$ac_aux_dir/ltmain.sh
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: CXX
-
-# The linker used to build libraries.
-LD=$lt_LD_CXX
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_CXX
-reload_cmds=$lt_reload_cmds_CXX
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_CXX
-
-# A language specific compiler.
-CC=$lt_compiler_CXX
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_CXX
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_CXX
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_CXX
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_CXX
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_CXX
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_CXX
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_CXX
-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_CXX
-module_expsym_cmds=$lt_module_expsym_cmds_CXX
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_CXX
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_CXX
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_CXX
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
-
-# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_CXX
-
-# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \$shlibpath_var if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_CXX
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_CXX
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_CXX
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_CXX
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_CXX
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_CXX
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_CXX
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_CXX
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_CXX
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_CXX
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_CXX
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_CXX
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_CXX
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_CXX
-postdep_objects=$lt_postdep_objects_CXX
-predeps=$lt_predeps_CXX
-postdeps=$lt_postdeps_CXX
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
-
-# ### END LIBTOOL TAG CONFIG: CXX
-_LT_EOF
-
- ;;
-    "$ac_stdint_h":C)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_stdint_h : $_ac_stdint_h" >&5
-$as_echo "$as_me: creating $ac_stdint_h : $_ac_stdint_h" >&6;}
-ac_stdint=$tmp/_stdint.h
-
-echo "#ifndef" $_ac_stdint_h >$ac_stdint
-echo "#define" $_ac_stdint_h "1" >>$ac_stdint
-echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint
-echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint
-echo "/* generated $ac_cv_stdint_message */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_t" != "_" ; then
-echo "#define _STDINT_HAVE_STDINT_H" "1" >>$ac_stdint
-echo "#include <stdint.h>" >>$ac_stdint
-echo "#endif" >>$ac_stdint
-echo "#endif" >>$ac_stdint
-else
-
-cat >>$ac_stdint <<STDINT_EOF
-
-/* ................... shortcircuit part ........................... */
-
-#if defined HAVE_STDINT_H || defined _STDINT_HAVE_STDINT_H
-#include <stdint.h>
-#else
-#include <stddef.h>
-
-/* .................... configured part ............................ */
-
-STDINT_EOF
-
-echo "/* whether we have a C99 compatible stdint header file */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_x" != "_" ; then
-  ac_header="$ac_cv_header_stdint_x"
-  echo "#define _STDINT_HEADER_INTPTR" '"'"$ac_header"'"' >>$ac_stdint
-else
-  echo "/* #undef _STDINT_HEADER_INTPTR */" >>$ac_stdint
-fi
-
-echo "/* whether we have a C96 compatible inttypes header file */" >>$ac_stdint
-if  test "_$ac_cv_header_stdint_o" != "_" ; then
-  ac_header="$ac_cv_header_stdint_o"
-  echo "#define _STDINT_HEADER_UINT32" '"'"$ac_header"'"' >>$ac_stdint
-else
-  echo "/* #undef _STDINT_HEADER_UINT32 */" >>$ac_stdint
-fi
-
-echo "/* whether we have a BSD compatible inet types header */" >>$ac_stdint
-if  test "_$ac_cv_header_stdint_u" != "_" ; then
-  ac_header="$ac_cv_header_stdint_u"
-  echo "#define _STDINT_HEADER_U_INT32" '"'"$ac_header"'"' >>$ac_stdint
-else
-  echo "/* #undef _STDINT_HEADER_U_INT32 */" >>$ac_stdint
-fi
-
-echo "" >>$ac_stdint
-
-if test "_$ac_header" != "_" ; then if test "$ac_header" != "stddef.h" ; then
-  echo "#include <$ac_header>" >>$ac_stdint
-  echo "" >>$ac_stdint
-fi fi
-
-echo "/* which 64bit typedef has been found */" >>$ac_stdint
-if test "$ac_cv_type_uint64_t" = "yes" ; then
-echo "#define   _STDINT_HAVE_UINT64_T" "1"  >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_UINT64_T */" >>$ac_stdint
-fi
-if test "$ac_cv_type_u_int64_t" = "yes" ; then
-echo "#define   _STDINT_HAVE_U_INT64_T" "1"  >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_U_INT64_T */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
-echo "/* which type model has been detected */" >>$ac_stdint
-if test "_$ac_cv_char_data_model" != "_" ; then
-echo "#define   _STDINT_CHAR_MODEL" "$ac_cv_char_data_model" >>$ac_stdint
-echo "#define   _STDINT_LONG_MODEL" "$ac_cv_long_data_model" >>$ac_stdint
-else
-echo "/* #undef _STDINT_CHAR_MODEL // skipped */" >>$ac_stdint
-echo "/* #undef _STDINT_LONG_MODEL // skipped */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
-echo "/* whether int_least types were detected */" >>$ac_stdint
-if test "$ac_cv_type_int_least32_t" = "yes"; then
-echo "#define   _STDINT_HAVE_INT_LEAST32_T" "1"  >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INT_LEAST32_T */" >>$ac_stdint
-fi
-echo "/* whether int_fast types were detected */" >>$ac_stdint
-if test "$ac_cv_type_int_fast32_t" = "yes"; then
-echo "#define   _STDINT_HAVE_INT_FAST32_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INT_FAST32_T */" >>$ac_stdint
-fi
-echo "/* whether intmax_t type was detected */" >>$ac_stdint
-if test "$ac_cv_type_intmax_t" = "yes"; then
-echo "#define   _STDINT_HAVE_INTMAX_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INTMAX_T */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
-  cat >>$ac_stdint <<STDINT_EOF
-/* .................... detections part ............................ */
-
-/* whether we need to define bitspecific types from compiler base types */
-#ifndef _STDINT_HEADER_INTPTR
-#ifndef _STDINT_HEADER_UINT32
-#ifndef _STDINT_HEADER_U_INT32
-#define _STDINT_NEED_INT_MODEL_T
-#else
-#define _STDINT_HAVE_U_INT_TYPES
-#endif
-#endif
-#endif
-
-#ifdef _STDINT_HAVE_U_INT_TYPES
-#undef _STDINT_NEED_INT_MODEL_T
-#endif
-
-#ifdef  _STDINT_CHAR_MODEL
-#if     _STDINT_CHAR_MODEL+0 == 122 || _STDINT_CHAR_MODEL+0 == 124
-#ifndef _STDINT_BYTE_MODEL
-#define _STDINT_BYTE_MODEL 12
-#endif
-#endif
-#endif
-
-#ifndef _STDINT_HAVE_INT_LEAST32_T
-#define _STDINT_NEED_INT_LEAST_T
-#endif
-
-#ifndef _STDINT_HAVE_INT_FAST32_T
-#define _STDINT_NEED_INT_FAST_T
-#endif
-
-#ifndef _STDINT_HEADER_INTPTR
-#define _STDINT_NEED_INTPTR_T
-#ifndef _STDINT_HAVE_INTMAX_T
-#define _STDINT_NEED_INTMAX_T
-#endif
-#endif
-
-
-/* .................... definition part ............................ */
-
-/* some system headers have good uint64_t */
-#ifndef _HAVE_UINT64_T
-#if     defined _STDINT_HAVE_UINT64_T  || defined HAVE_UINT64_T
-#define _HAVE_UINT64_T
-#elif   defined _STDINT_HAVE_U_INT64_T || defined HAVE_U_INT64_T
-#define _HAVE_UINT64_T
-typedef u_int64_t uint64_t;
-#endif
-#endif
-
-#ifndef _HAVE_UINT64_T
-/* .. here are some common heuristics using compiler runtime specifics */
-#if defined __STDC_VERSION__ && defined __STDC_VERSION__ >= 199901L
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef long long int64_t;
-typedef unsigned long long uint64_t;
-
-#elif !defined __STRICT_ANSI__
-#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
-#define _HAVE_UINT64_T
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-
-#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__
-/* note: all ELF-systems seem to have loff-support which needs 64-bit */
-#if !defined _NO_LONGLONG
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef long long int64_t;
-typedef unsigned long long uint64_t;
-#endif
-
-#elif defined __alpha || (defined __mips && defined _ABIN32)
-#if !defined _NO_LONGLONG
-typedef long int64_t;
-typedef unsigned long uint64_t;
-#endif
-  /* compiler/cpu type to define int64_t */
-#endif
-#endif
-#endif
-
-#if defined _STDINT_HAVE_U_INT_TYPES
-/* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */
-typedef u_int8_t uint8_t;
-typedef u_int16_t uint16_t;
-typedef u_int32_t uint32_t;
-
-/* glibc compatibility */
-#ifndef __int8_t_defined
-#define __int8_t_defined
-#endif
-#endif
-
-#ifdef _STDINT_NEED_INT_MODEL_T
-/* we must guess all the basic types. Apart from byte-adressable system, */
-/* there a few 32-bit-only dsp-systems that we guard with BYTE_MODEL 8-} */
-/* (btw, those nibble-addressable systems are way off, or so we assume) */
-
-
-#if defined _STDINT_BYTE_MODEL
-#if _STDINT_LONG_MODEL+0 == 242
-/* 2:4:2 =  IP16 = a normal 16-bit system                */
-typedef unsigned char   uint8_t;
-typedef unsigned short  uint16_t;
-typedef unsigned long   uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef          char    int8_t;
-typedef          short   int16_t;
-typedef          long    int32_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL == 444
-/* 2:4:4 =  LP32 = a 32-bit system derived from a 16-bit */
-/* 4:4:4 = ILP32 = a normal 32-bit system                */
-typedef unsigned char   uint8_t;
-typedef unsigned short  uint16_t;
-typedef unsigned int    uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef          char    int8_t;
-typedef          short   int16_t;
-typedef          int     int32_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 484 || _STDINT_LONG_MODEL+0 == 488
-/* 4:8:4 =  IP32 = a 32-bit system prepared for 64-bit    */
-/* 4:8:8 =  LP64 = a normal 64-bit system                 */
-typedef unsigned char   uint8_t;
-typedef unsigned short  uint16_t;
-typedef unsigned int    uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef          char    int8_t;
-typedef          short   int16_t;
-typedef          int     int32_t;
-#endif
-/* this system has a "long" of 64bit */
-#ifndef _HAVE_UINT64_T
-#define _HAVE_UINT64_T
-typedef unsigned long   uint64_t;
-typedef          long    int64_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 448
-/*      LLP64   a 64-bit system derived from a 32-bit system */
-typedef unsigned char   uint8_t;
-typedef unsigned short  uint16_t;
-typedef unsigned int    uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef          char    int8_t;
-typedef          short   int16_t;
-typedef          int     int32_t;
-#endif
-/* assuming the system has a "long long" */
-#ifndef _HAVE_UINT64_T
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef unsigned long long uint64_t;
-typedef          long long  int64_t;
-#endif
-#else
-#define _STDINT_NO_INT32_T
-#endif
-#else
-#define _STDINT_NO_INT8_T
-#define _STDINT_NO_INT32_T
-#endif
-#endif
-
-/*
- * quote from SunOS-5.8 sys/inttypes.h:
- * Use at your own risk.  As of February 1996, the committee is squarely
- * behind the fixed sized types; the "least" and "fast" types are still being
- * discussed.  The probability that the "fast" types may be removed before
- * the standard is finalized is high enough that they are not currently
- * implemented.
- */
-
-#if defined _STDINT_NEED_INT_LEAST_T
-typedef  int8_t    int_least8_t;
-typedef  int16_t   int_least16_t;
-typedef  int32_t   int_least32_t;
-#ifdef _HAVE_UINT64_T
-typedef  int64_t   int_least64_t;
-#endif
-
-typedef uint8_t   uint_least8_t;
-typedef uint16_t  uint_least16_t;
-typedef uint32_t  uint_least32_t;
-#ifdef _HAVE_UINT64_T
-typedef uint64_t  uint_least64_t;
-#endif
-  /* least types */
-#endif
-
-#if defined _STDINT_NEED_INT_FAST_T
-typedef  int8_t    int_fast8_t;
-typedef  int       int_fast16_t;
-typedef  int32_t   int_fast32_t;
-#ifdef _HAVE_UINT64_T
-typedef  int64_t   int_fast64_t;
-#endif
-
-typedef uint8_t   uint_fast8_t;
-typedef unsigned  uint_fast16_t;
-typedef uint32_t  uint_fast32_t;
-#ifdef _HAVE_UINT64_T
-typedef uint64_t  uint_fast64_t;
-#endif
-  /* fast types */
-#endif
-
-#ifdef _STDINT_NEED_INTMAX_T
-#ifdef _HAVE_UINT64_T
-typedef  int64_t       intmax_t;
-typedef uint64_t      uintmax_t;
-#else
-typedef          long  intmax_t;
-typedef unsigned long uintmax_t;
-#endif
-#endif
-
-#ifdef _STDINT_NEED_INTPTR_T
-#ifndef __intptr_t_defined
-#define __intptr_t_defined
-/* we encourage using "long" to store pointer values, never use "int" ! */
-#if   _STDINT_LONG_MODEL+0 == 242 || _STDINT_LONG_MODEL+0 == 484
-typedef  unsigned int   uintptr_t;
-typedef           int    intptr_t;
-#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL+0 == 444
-typedef  unsigned long  uintptr_t;
-typedef           long   intptr_t;
-#elif _STDINT_LONG_MODEL+0 == 448 && defined _HAVE_UINT64_T
-typedef        uint64_t uintptr_t;
-typedef         int64_t  intptr_t;
-#else /* matches typical system types ILP32 and LP64 - but not IP16 or LLP64 */
-typedef  unsigned long  uintptr_t;
-typedef           long   intptr_t;
-#endif
-#endif
-#endif
-
-/* The ISO C99 standard specifies that in C++ implementations these
-   should only be defined if explicitly requested.  */
-#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
-#ifndef UINT32_C
-
-/* Signed.  */
-# define INT8_C(c)      c
-# define INT16_C(c)     c
-# define INT32_C(c)     c
-# ifdef _HAVE_LONGLONG_UINT64_T
-#  define INT64_C(c)    c ## L
-# else
-#  define INT64_C(c)    c ## LL
-# endif
-
-/* Unsigned.  */
-# define UINT8_C(c)     c ## U
-# define UINT16_C(c)    c ## U
-# define UINT32_C(c)    c ## U
-# ifdef _HAVE_LONGLONG_UINT64_T
-#  define UINT64_C(c)   c ## UL
-# else
-#  define UINT64_C(c)   c ## ULL
-# endif
-
-/* Maximal type.  */
-# ifdef _HAVE_LONGLONG_UINT64_T
-#  define INTMAX_C(c)   c ## L
-#  define UINTMAX_C(c)  c ## UL
-# else
-#  define INTMAX_C(c)   c ## LL
-#  define UINTMAX_C(c)  c ## ULL
-# endif
-
-  /* literalnumbers */
-#endif
-#endif
-
-/* These limits are merily those of a two complement byte-oriented system */
-
-/* Minimum of signed integral types.  */
-# define INT8_MIN               (-128)
-# define INT16_MIN              (-32767-1)
-# define INT32_MIN              (-2147483647-1)
-#ifndef INT64_MIN
-# define INT64_MIN              (-__INT64_C(9223372036854775807)-1)
-#endif
-/* Maximum of signed integral types.  */
-# define INT8_MAX               (127)
-# define INT16_MAX              (32767)
-# define INT32_MAX              (2147483647)
-#ifndef INT64_MAX
-# define INT64_MAX              (__INT64_C(9223372036854775807))
-#endif
-
-/* Maximum of unsigned integral types.  */
-#ifndef UINT8_MAX
-# define UINT8_MAX              (255)
-#endif
-#ifndef UINT16_MAX
-# define UINT16_MAX             (65535)
-#endif
-# define UINT32_MAX             (4294967295U)
-#ifndef UINT64_MAX
-# define UINT64_MAX             (__UINT64_C(18446744073709551615))
-#endif
-
-/* Minimum of signed integral types having a minimum size.  */
-# define INT_LEAST8_MIN         INT8_MIN
-# define INT_LEAST16_MIN        INT16_MIN
-# define INT_LEAST32_MIN        INT32_MIN
-# define INT_LEAST64_MIN        INT64_MIN
-/* Maximum of signed integral types having a minimum size.  */
-# define INT_LEAST8_MAX         INT8_MAX
-# define INT_LEAST16_MAX        INT16_MAX
-# define INT_LEAST32_MAX        INT32_MAX
-# define INT_LEAST64_MAX        INT64_MAX
-
-/* Maximum of unsigned integral types having a minimum size.  */
-# define UINT_LEAST8_MAX        UINT8_MAX
-# define UINT_LEAST16_MAX       UINT16_MAX
-# define UINT_LEAST32_MAX       UINT32_MAX
-# define UINT_LEAST64_MAX       UINT64_MAX
-
-  /* shortcircuit*/
-#endif
-  /* once */
-#endif
-#endif
-STDINT_EOF
-fi
-    if cmp -s $ac_stdint_h $ac_stdint 2>/dev/null; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_stdint_h is unchanged" >&5
-$as_echo "$as_me: $ac_stdint_h is unchanged" >&6;}
-    else
-      ac_dir=`$as_dirname -- "$ac_stdint_h" ||
-$as_expr X"$ac_stdint_h" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$ac_stdint_h" : 'X\(//\)[^/]' \| \
-        X"$ac_stdint_h" : 'X\(//\)$' \| \
-        X"$ac_stdint_h" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_stdint_h" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      as_dir="$ac_dir"; as_fn_mkdir_p
-      rm -f $ac_stdint_h
-      mv $ac_stdint $ac_stdint_h
-    fi
- ;;
-    "$ax_create_pkgconfig_generate":C)
-pkgconfig_generate="$ax_create_pkgconfig_generate"
-if test ! -f "$pkgconfig_generate.in"
-then generate="true"
-elif grep ' generated by configure ' $pkgconfig_generate.in >/dev/null
-then generate="true"
-else generate="false";
-fi
-if $generate ; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $pkgconfig_generate.in" >&5
-$as_echo "$as_me: creating $pkgconfig_generate.in" >&6;}
-cat > $pkgconfig_generate.in <<AXEOF
-# generated by configure / remove this line to disable regeneration
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-bindir=@bindir@
-libdir=@libdir@
-datarootdir=@datarootdir@
-datadir=@datadir@
-sysconfdir=@sysconfdir@
-includedir=@includedir@
-package=@PACKAGE@
-suffix=@suffix@
-
-Name: @PACKAGE_NAME@
-Description: @PACKAGE_DESCRIPTION@
-Version: @PACKAGE_VERSION@
-Requires: @PACKAGE_REQUIRES@
-Libs: -L\${libdir} @LDFLAGS@ @LIBS@
-Cflags: -I\${includedir} @CPPFLAGS@
-AXEOF
-fi # DONE generate $pkgconfig_generate.in
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $pkgconfig_generate" >&5
-$as_echo "$as_me: creating $pkgconfig_generate" >&6;}
-cat >conftest.sed <<AXEOF
-s|@prefix@|${pkgconfig_prefix}|
-s|@exec_prefix@|${pkgconfig_execprefix}|
-s|@bindir@|${pkgconfig_bindir}|
-s|@libdir@|${pkgconfig_libdir}|
-s|@datarootdir@|${pkgconfig_datarootdir}|
-s|@datadir@|${pkgconfig_datadir}|
-s|@sysconfdir@|${pkgconfig_sysconfdir}|
-s|@includedir@|${pkgconfig_includedir}|
-s|@suffix@|${pkgconfig_suffix}|
-s|@PACKAGE@|${pkgconfig_package}|
-s|@PACKAGE_NAME@|${pkgconfig_libname}|
-s|@PACKAGE_DESCRIPTION@|${pkgconfig_description}|
-s|@PACKAGE_VERSION@|${pkgconfig_version}|
-s|@PACKAGE_REQUIRES@|${pkgconfig_requires}|
-s|@LIBS@|${pkgconfig_libs}|
-s|@LDFLAGS@|${pkgconfig_ldflags}|
-s|@CPPFLAGS@|${pkgconfig_cppflags}|
-AXEOF
-sed -f conftest.sed  $pkgconfig_generate.in > $pkgconfig_generate
-if test ! -s $pkgconfig_generate ; then
-    as_fn_error $? "$pkgconfig_generate is empty" "$LINENO" 5
-fi ; rm conftest.sed # DONE generate $pkgconfig_generate
-pkgconfig_uninstalled=`echo $pkgconfig_generate |sed 's/.pc$/-uninstalled.pc/'`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $pkgconfig_uninstalled" >&5
-$as_echo "$as_me: creating $pkgconfig_uninstalled" >&6;}
-cat >conftest.sed <<AXEOF
-s|@prefix@|${pkgconfig_prefix}|
-s|@exec_prefix@|${pkgconfig_execprefix}|
-s|@bindir@|${pkgconfig_bindir}|
-s|@libdir@|${pkgconfig_src_libdir}|
-s|@datarootdir@|${pkgconfig_datarootdir}|
-s|@datadir@|${pkgconfig_datadir}|
-s|@sysconfdir@|${pkgconfig_sysconfdir}|
-s|@includedir@|${pkgconfig_src_headers}|
-s|@suffix@|${pkgconfig_suffix}|
-s|@PACKAGE@|${pkgconfig_package}|
-s|@PACKAGE_NAME@|${pkgconfig_libname}|
-s|@PACKAGE_DESCRIPTION@|${pkgconfig_description}|
-s|@PACKAGE_VERSION@|${pkgconfig_version}|
-s|@PACKAGE_REQUIRES@|${pkgconfig_requires}|
-s|@LIBS@|${pkgconfig_libs}|
-s|@LDFLAGS@|${pkgconfig_ldflags}|
-s|@CPPFLAGS@|${pkgconfig_cppflags}|
-AXEOF
-sed -f conftest.sed $pkgconfig_generate.in > $pkgconfig_uninstalled
-if test ! -s $pkgconfig_uninstalled ; then
-    as_fn_error $? "$pkgconfig_uninstalled is empty" "$LINENO" 5
-fi ; rm conftest.sed # DONE generate $pkgconfig_uninstalled
-           pkgconfig_requires_add=`echo ${pkgconfig_requires}`
-if test ".$pkgconfig_requires_add" != "." ; then
-           pkgconfig_requires_add="pkg-config $pkgconfig_requires_add"
-    else   pkgconfig_requires_add=":" ; fi
-pkgconfig_uninstalled=`echo $pkgconfig_generate |sed 's/.pc$/-uninstalled.sh/'`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $pkgconfig_uninstalled" >&5
-$as_echo "$as_me: creating $pkgconfig_uninstalled" >&6;}
-cat >conftest.sed <<AXEOF
-s|@prefix@|\"${pkgconfig_prefix}\"|
-s|@exec_prefix@|\"${pkgconfig_execprefix}\"|
-s|@bindir@|\"${pkgconfig_bindir}\"|
-s|@libdir@|\"${pkgconfig_src_libdir}\"|
-s|@datarootdir@|\"${pkgconfig_datarootdir}\"|
-s|@datadir@|\"${pkgconfig_datadir}\"|
-s|@sysconfdir@|\"${pkgconfig_sysconfdir}\"|
-s|@includedir@|\"${pkgconfig_src_headers}\"|
-s|@suffix@|\"${pkgconfig_suffix}\"|
-s|@PACKAGE@|\"${pkgconfig_package}\"|
-s|@PACKAGE_NAME@|\"${pkgconfig_libname}\"|
-s|@PACKAGE_DESCRIPTION@|\"${pkgconfig_description}\"|
-s|@PACKAGE_VERSION@|\"${pkgconfig_version}\"|
-s|@PACKAGE_REQUIRES@|\"${pkgconfig_requires}\"|
-s|@LIBS@|\"${pkgconfig_libs}\"|
-s|@LDFLAGS@|\"${pkgconfig_ldflags}\"|
-s|@CPPFLAGS@|\"${pkgconfig_cppflags}\"|
-s>Name:>for option\\; do case \"\$option\" in --list-all|--name) echo >
-s>Description: *>\\;\\; --help) pkg-config --help \\; echo Buildscript Of >
-s>Version: *>\\;\\; --modversion|--version) echo >
-s>Requires:>\\;\\; --requires) echo $pkgconfig_requires_add>
-s>Libs: *>\\;\\; --libs) echo >
-s>Cflags: *>\\;\\; --cflags) echo >
-/--libs)/a\\
-       $pkgconfig_requires_add
-/--cflags)/a\\
-       $pkgconfig_requires_add\\
-;; --variable=*) eval echo '\$'\`echo \$option | sed -e 's/.*=//'\`\\
-;; --uninstalled) exit 0 \\
-;; *) ;; esac done
-AXEOF
-sed -f conftest.sed  $pkgconfig_generate.in > $pkgconfig_uninstalled
-if test ! -s $pkgconfig_uninstalled ; then
-    as_fn_error $? "$pkgconfig_uninstalled is empty" "$LINENO" 5
-fi ; rm conftest.sed # DONE generate $pkgconfig_uninstalled
- ;;
-    "bound_test.sh":F) chmod +x bound_test.sh ;;
-    "codegen_test.sh":F) chmod +x codegen_test.sh ;;
-    "pip_test.sh":F) chmod +x pip_test.sh ;;
-    "flow_test.sh":F) chmod +x flow_test.sh ;;
-    "schedule_test.sh":F) chmod +x schedule_test.sh ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-
-#
-# CONFIG_SUBDIRS section.
-#
-if test "$no_recursion" != yes; then
-
-  # Remove --cache-file, --srcdir, and --disable-option-checking arguments
-  # so they do not pile up.
-  ac_sub_configure_args=
-  ac_prev=
-  eval "set x $ac_configure_args"
-  shift
-  for ac_arg
-  do
-    if test -n "$ac_prev"; then
-      ac_prev=
-      continue
-    fi
-    case $ac_arg in
-    -cache-file | --cache-file | --cache-fil | --cache-fi \
-    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-      ac_prev=cache_file ;;
-    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
-    | --c=*)
-      ;;
-    --config-cache | -C)
-      ;;
-    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-      ac_prev=srcdir ;;
-    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-      ;;
-    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-      ac_prev=prefix ;;
-    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-      ;;
-    --disable-option-checking)
-      ;;
-    *)
-      case $ac_arg in
-      *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-      esac
-      as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
-    esac
-  done
-
-  # Always prepend --prefix to ensure using the same prefix
-  # in subdir configurations.
-  ac_arg="--prefix=$prefix"
-  case $ac_arg in
-  *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-  esac
-  ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
-
-  # Pass --silent
-  if test "$silent" = yes; then
-    ac_sub_configure_args="--silent $ac_sub_configure_args"
-  fi
-
-  # Always prepend --disable-option-checking to silence warnings, since
-  # different subdirs can have different --enable and --with options.
-  ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
-
-  ac_popdir=`pwd`
-  for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
-
-    # Do not complain, so a configure script can configure whichever
-    # parts of a large source tree are present.
-    test -d "$srcdir/$ac_dir" || continue
-
-    ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
-    $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
-    $as_echo "$ac_msg" >&6
-    as_dir="$ac_dir"; as_fn_mkdir_p
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-    cd "$ac_dir"
-
-    # Check for guested configure; otherwise get Cygnus style configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      ac_sub_configure=$ac_srcdir/configure.gnu
-    elif test -f "$ac_srcdir/configure"; then
-      ac_sub_configure=$ac_srcdir/configure
-    elif test -f "$ac_srcdir/configure.in"; then
-      # This should be Cygnus configure.
-      ac_sub_configure=$ac_aux_dir/configure
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5
-$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
-      ac_sub_configure=
-    fi
-
-    # The recursion is here.
-    if test -n "$ac_sub_configure"; then
-      # Make the cache file name correct relative to the subdirectory.
-      case $cache_file in
-      [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
-      *) # Relative name.
-       ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
-      esac
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
-$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
-      # The eval makes quoting arguments work.
-      eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
-          --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
-       as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
-    fi
-
-    cd "$ac_popdir"
-  done
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/polly/lib/External/isl/configure.ac b/polly/lib/External/isl/configure.ac
deleted file mode 100644 (file)
index f082ed4..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-AC_INIT([isl], [0.24], [isl-development@googlegroups.com])
-AC_CONFIG_AUX_DIR([.])
-AC_CONFIG_MACRO_DIR([m4])
-AM_INIT_AUTOMAKE([foreign])
-m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
-AC_SUBST(versioninfo)
-versioninfo=24:0:1
-
-if test "x$prefix" != "xNONE"; then
-       prefix_wd=`cd $prefix && pwd`
-       srcdir_wd=`cd $srcdir && pwd`
-       wd=`pwd`
-       if test "x$prefix_wd" = "x$srcdir_wd"; then
-               AC_MSG_ERROR(Installation in source directory not supported)
-       fi
-       if test "x$prefix_wd" = "x$wd"; then
-               AC_MSG_ERROR(Installation in build directory not supported)
-       fi
-fi
-
-AC_PROG_CC
-AC_PROG_CXX
-AX_PROG_CC_FOR_BUILD
-
-AX_CC_MAXOPT
-AX_GCC_WARN_UNUSED_RESULT
-AX_C___ATTRIBUTE__
-
-AX_CXX_COMPILE_STDCXX_11_NO_OVERRIDE
-
-AC_PROG_GREP
-AC_PROG_LIBTOOL
-AC_PROG_SED
-AM_PATH_PYTHON([2.5], [], [:])
-AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
-
-AC_CHECK_PROG(CYGPATH, cygpath, cygpath, [])
-AC_CHECK_PROG(PERL, perl, perl, [])
-AC_CHECK_PROG(PDFLATEX, pdflatex, pdflatex, [])
-AC_CHECK_PROG(POD2HTML, pod2html, pod2html, [])
-
-AC_SUBST(OS_SRCDIR)
-if test "$host_os" = "mingw32" -a -n "$CYGPATH"; then
-       OS_SRCDIR=`$CYGPATH -m "$srcdir"`
-else
-       OS_SRCDIR="$srcdir"
-fi
-
-AM_CONDITIONAL(GENERATE_DOC, test -n "$PERL" -a -n "$PDFLATEX" -a -n "$POD2HTML")
-
-AX_CREATE_STDINT_H(include/isl/stdint.h)
-
-AC_ARG_WITH([int],
-           [AS_HELP_STRING([--with-int=gmp|imath|imath-32],
-                           [Which package to use to represent
-                               multi-precision integers [default=gmp]])],
-           [], [with_int=gmp])
-case "$with_int" in
-gmp|imath|imath-32)
-       ;;
-*)
-       AC_MSG_ERROR(
-           [bad value ${withval} for --with-int (use gmp, imath or imath-32)])
-esac
-
-AC_SUBST(MP_CPPFLAGS)
-AC_SUBST(MP_CFLAGS)
-AC_SUBST(MP_LDFLAGS)
-AC_SUBST(MP_LIBS)
-case "$with_int" in
-gmp)
-       AX_DETECT_GMP
-       ;;
-imath|imath-32)
-       AX_DETECT_IMATH
-       ;;
-esac
-if test "x$with_int" = "ximath-32" -a "x$GCC" = "xyes"; then
-       MP_CFLAGS="-std=gnu99 $MP_CFLAGS"
-fi
-
-AM_CONDITIONAL(IMATH_FOR_MP, test x$with_int = ximath -o x$with_int = ximath-32)
-AM_CONDITIONAL(GMP_FOR_MP, test x$with_int = xgmp)
-
-AM_CONDITIONAL(HAVE_CXX11, test "x$HAVE_CXX11" = "x1")
-AM_CONDITIONAL(SMALL_INT_OPT, test "x$with_int" = "ximath-32")
-AS_IF([test "x$with_int" = "ximath-32"], [
-       AC_DEFINE([USE_SMALL_INT_OPT], [], [Use small integer optimization])
-])
-
-AC_CHECK_DECLS(ffs,[],[],[#include <strings.h>])
-AC_CHECK_DECLS(__builtin_ffs,[],[],[])
-AC_CHECK_DECLS([_BitScanForward],[],[],[#include <intrin.h>])
-if test "x$ac_cv_have_decl_ffs" = xno -a \
-               "x$ac_cv_have_decl___builtin_ffs" = xno -a \
-               "x$ac_cv_have_decl__BitScanForward" = xno; then
-       AC_MSG_ERROR([No ffs implementation found])
-fi
-AC_CHECK_DECLS([strcasecmp,strncasecmp],[],[],[#include <strings.h>])
-AC_CHECK_DECLS([_stricmp,_strnicmp],[],[],[#include <string.h>])
-if test "x$ac_cv_have_decl_strcasecmp" = xno -a \
-               "x$ac_cv_have_decl__stricmp" = xno; then
-       AC_MSG_ERROR([No strcasecmp implementation found])
-fi
-if test "x$ac_cv_have_decl_strncasecmp" = xno -a \
-               "x$ac_cv_have_decl__strnicmp" = xno; then
-       AC_MSG_ERROR([No strncasecmp implementation found])
-fi
-AC_CHECK_DECLS([snprintf,_snprintf],[],[],[#include <stdio.h>])
-if test "x$ac_cv_have_decl_snprintf" = xno -a \
-               "x$ac_cv_have_decl__snprintf" = xno; then
-       AC_MSG_ERROR([No snprintf implementation found])
-fi
-
-AX_SUBMODULE(clang,system|no,no)
-AM_CONDITIONAL(HAVE_CLANG, test $with_clang = system)
-AM_CONDITIONAL(HAVE_CPP_ISL_H,
-    [(test $with_clang = system -a "x$HAVE_CXX11" = "x1") || \
-     test -f $srcdir/include/isl/cpp.h])
-
-AX_SET_WARNING_FLAGS
-
-AC_SUBST(WARNING_FLAGS)
-
-PACKAGE_CFLAGS="$MP_CPPFLAGS"
-PACKAGE_LDFLAGS="$MP_LDFLAGS"
-PACKAGE_LIBS="-lisl $MP_LIBS"
-AX_CREATE_PKGCONFIG_INFO
-
-AX_DETECT_GIT_HEAD
-
-AH_BOTTOM([#include <isl_config_post.h>])
-AC_CONFIG_HEADERS(isl_config.h)
-AC_CONFIG_FILES(isl_srcdir.c)
-AC_CONFIG_FILES(Makefile)
-AC_CONFIG_FILES(doc/Makefile)
-if test $with_clang = system; then
-       AC_CONFIG_SUBDIRS(interface)
-fi
-AC_CONFIG_FILES([bound_test.sh], [chmod +x bound_test.sh])
-AC_CONFIG_FILES([codegen_test.sh], [chmod +x codegen_test.sh])
-AC_CONFIG_FILES([pip_test.sh], [chmod +x pip_test.sh])
-AC_CONFIG_FILES([flow_test.sh], [chmod +x flow_test.sh])
-AC_CONFIG_FILES([schedule_test.sh], [chmod +x schedule_test.sh])
-AC_OUTPUT
diff --git a/polly/lib/External/isl/depcomp b/polly/lib/External/isl/depcomp
deleted file mode 100755 (executable)
index 6b39162..0000000
+++ /dev/null
@@ -1,791 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2018-03-07.03; # UTC
-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
-  '')
-    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-    exit 1;
-    ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by 'PROGRAMS ARGS'.
-  object      Object file output by 'PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputting dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-# Get the directory component of the given path, and save it in the
-# global variables '$dir'.  Note that this directory component will
-# be either empty or ending with a '/' character.  This is deliberate.
-set_dir_from ()
-{
-  case $1 in
-    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
-      *) dir=;;
-  esac
-}
-
-# Get the suffix-stripped basename of the given path, and save it the
-# global variable '$base'.
-set_base_from ()
-{
-  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
-}
-
-# If no dependency file was actually created by the compiler invocation,
-# we still have to create a dummy depfile, to avoid errors with the
-# Makefile "include basename.Plo" scheme.
-make_dummy_depfile ()
-{
-  echo "#dummy" > "$depfile"
-}
-
-# Factor out some common post-processing of the generated depfile.
-# Requires the auxiliary global variable '$tmpdepfile' to be set.
-aix_post_process_depfile ()
-{
-  # If the compiler actually managed to produce a dependency file,
-  # post-process it.
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form 'foo.o: dependency.h'.
-    # Do two passes, one to just change these to
-    #   $object: dependency.h
-    # and one to simply output
-    #   dependency.h:
-    # which is needed to avoid the deleted-header problem.
-    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
-      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
-    } > "$depfile"
-    rm -f "$tmpdepfile"
-  else
-    make_dummy_depfile
-  fi
-}
-
-# A tabulation character.
-tab='  '
-# A newline character.
-nl='
-'
-# Character ranges might be problematic outside the C locale.
-# These definitions help.
-upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
-lower=abcdefghijklmnopqrstuvwxyz
-digits=0123456789
-alpha=${upper}${lower}
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-  echo "depcomp: Variables source, object and depmode must be set" 1>&2
-  exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Avoid interferences from the environment.
-gccflag= dashmflag=
-
-# Some modes work just like other modes, but use different flags.  We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write.  Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
-  # HP compiler uses -M and no extra arg.
-  gccflag=-M
-  depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
-  # This is just like dashmstdout with a different argument.
-  dashmflag=-xM
-  depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
-  # This is just like msvisualcpp but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvisualcpp
-fi
-
-if test "$depmode" = msvc7msys; then
-  # This is just like msvc7 but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvc7
-fi
-
-if test "$depmode" = xlc; then
-  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
-  gccflag=-qmakedep=gcc,-MF
-  depmode=gcc
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff.  Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am.  Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
-  for arg
-  do
-    case $arg in
-    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
-    *)  set fnord "$@" "$arg" ;;
-    esac
-    shift # fnord
-    shift # $arg
-  done
-  "$@"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
-## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
-## (see the conditional assignment to $gccflag above).
-## There are various ways to get dependency output from gcc.  Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-##   up in a subdir.  Having to rename by hand is ugly.
-##   (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).  Also, it might not be
-##   supported by the other compilers which use the 'gcc' depmode.
-## - Using -M directly means running the compiler twice (even worse
-##   than renaming).
-  if test -z "$gccflag"; then
-    gccflag=-MD,
-  fi
-  "$@" -Wp,"$gccflag$tmpdepfile"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  # The second -e expression handles DOS-style file names with drive
-  # letters.
-  sed -e 's/^[^:]*: / /' \
-      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the "deleted header file" problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header).  We avoid this by adding
-## dummy dependencies for each header file.  Too bad gcc doesn't do
-## this for us directly.
-## Some versions of gcc put a space before the ':'.  On the theory
-## that the space means something, we add a space to the output as
-## well.  hp depmode also adds that space, but also prefixes the VPATH
-## to the object.  Take care to not repeat it in the output.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like '#:fec' to the end of the
-    # dependency line.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
-      | tr "$nl" ' ' >> "$depfile"
-    echo >> "$depfile"
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-      >> "$depfile"
-  else
-    make_dummy_depfile
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-xlc)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-aix)
-  # The C for AIX Compiler uses -M and outputs the dependencies
-  # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts '$object:' at the
-  # start of each line; $object doesn't have directory information.
-  # Version 6 uses the directory in both cases.
-  set_dir_from "$object"
-  set_base_from "$object"
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$base.u
-    tmpdepfile3=$dir.libs/$base.u
-    "$@" -Wc,-M
-  else
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$dir$base.u
-    tmpdepfile3=$dir$base.u
-    "$@" -M
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  aix_post_process_depfile
-  ;;
-
-tcc)
-  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
-  # FIXME: That version still under development at the moment of writing.
-  #        Make that this statement remains true also for stable, released
-  #        versions.
-  # It will wrap lines (doesn't matter whether long or short) with a
-  # trailing '\', as in:
-  #
-  #   foo.o : \
-  #    foo.c \
-  #    foo.h \
-  #
-  # It will put a trailing '\' even on the last line, and will use leading
-  # spaces rather than leading tabs (at least since its commit 0394caf7
-  # "Emit spaces for -MD").
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
-  # We have to change lines of the first kind to '$object: \'.
-  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
-  # And for each line of the second kind, we have to emit a 'dep.h:'
-  # dummy dependency, to avoid the deleted-header problem.
-  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-## The order of this option in the case statement is important, since the
-## shell code in configure will try each of these formats in the order
-## listed in this file.  A plain '-MD' option would be understood by many
-## compilers, so we must ensure this comes after the gcc and icc options.
-pgcc)
-  # Portland's C compiler understands '-MD'.
-  # Will always output deps to 'file.d' where file is the root name of the
-  # source file under compilation, even if file resides in a subdirectory.
-  # The object file name does not affect the name of the '.d' file.
-  # pgcc 10.2 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using '\' :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-  set_dir_from "$object"
-  # Use the source, not the object, to determine the base name, since
-  # that's sadly what pgcc will do too.
-  set_base_from "$source"
-  tmpdepfile=$base.d
-
-  # For projects that build the same source file twice into different object
-  # files, the pgcc approach of using the *source* file root name can cause
-  # problems in parallel builds.  Use a locking strategy to avoid stomping on
-  # the same $tmpdepfile.
-  lockdir=$base.d-lock
-  trap "
-    echo '$0: caught signal, cleaning up...' >&2
-    rmdir '$lockdir'
-    exit 1
-  " 1 2 13 15
-  numtries=100
-  i=$numtries
-  while test $i -gt 0; do
-    # mkdir is a portable test-and-set.
-    if mkdir "$lockdir" 2>/dev/null; then
-      # This process acquired the lock.
-      "$@" -MD
-      stat=$?
-      # Release the lock.
-      rmdir "$lockdir"
-      break
-    else
-      # If the lock is being held by a different process, wait
-      # until the winning process is done or we timeout.
-      while test -d "$lockdir" && test $i -gt 0; do
-        sleep 1
-        i=`expr $i - 1`
-      done
-    fi
-    i=`expr $i - 1`
-  done
-  trap - 1 2 13 15
-  if test $i -le 0; then
-    echo "$0: failed to acquire lock after $numtries attempts" >&2
-    echo "$0: check lockdir '$lockdir'" >&2
-    exit 1
-  fi
-
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-  # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp2)
-  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-  # compilers, which have integrated preprocessors.  The correct option
-  # to use with these is +Maked; it writes dependencies to a file named
-  # 'foo.d', which lands next to the object file, wherever that
-  # happens to be.
-  # Much of this is similar to the tru64 case; see comments there.
-  set_dir_from  "$object"
-  set_base_from "$object"
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir.libs/$base.d
-    "$@" -Wc,+Maked
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    "$@" +Maked
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-     rm -f "$tmpdepfile1" "$tmpdepfile2"
-     exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add 'dependent.h:' lines.
-    sed -ne '2,${
-               s/^ *//
-               s/ \\*$//
-               s/$/:/
-               p
-             }' "$tmpdepfile" >> "$depfile"
-  else
-    make_dummy_depfile
-  fi
-  rm -f "$tmpdepfile" "$tmpdepfile2"
-  ;;
-
-tru64)
-  # The Tru64 compiler uses -MD to generate dependencies as a side
-  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
-  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-  # dependencies in 'foo.d' instead, so we check for that too.
-  # Subdirectories are respected.
-  set_dir_from  "$object"
-  set_base_from "$object"
-
-  if test "$libtool" = yes; then
-    # Libtool generates 2 separate objects for the 2 libraries.  These
-    # two compilations output dependencies in $dir.libs/$base.o.d and
-    # in $dir$base.o.d.  We have to check for both files, because
-    # one of the two compilations can be disabled.  We should prefer
-    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-    # automatically cleaned when .libs/ is deleted, while ignoring
-    # the former would cause a distcleancheck panic.
-    tmpdepfile1=$dir$base.o.d          # libtool 1.5
-    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
-    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
-    "$@" -Wc,-MD
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    tmpdepfile3=$dir$base.d
-    "$@" -MD
-  fi
-
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  # Same post-processing that is required for AIX mode.
-  aix_post_process_depfile
-  ;;
-
-msvc7)
-  if test "$libtool" = yes; then
-    showIncludes=-Wc,-showIncludes
-  else
-    showIncludes=-showIncludes
-  fi
-  "$@" $showIncludes > "$tmpdepfile"
-  stat=$?
-  grep -v '^Note: including file: ' "$tmpdepfile"
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  # The first sed program below extracts the file names and escapes
-  # backslashes for cygpath.  The second sed program outputs the file
-  # name when reading, but also accumulates all include files in the
-  # hold buffer in order to output them again at the end.  This only
-  # works with sed implementations that can handle large buffers.
-  sed < "$tmpdepfile" -n '
-/^Note: including file:  *\(.*\)/ {
-  s//\1/
-  s/\\/\\\\/g
-  p
-}' | $cygpath_u | sort -u | sed -n '
-s/ /\\ /g
-s/\(.*\)/'"$tab"'\1 \\/p
-s/.\(.*\) \\/\1:/
-H
-$ {
-  s/.*/'"$tab"'/
-  G
-  p
-}' >> "$depfile"
-  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
-  rm -f "$tmpdepfile"
-  ;;
-
-msvc7msys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-#nosideeffect)
-  # This comment above is used by automake to tell side-effect
-  # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove '-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for ':'
-  # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
-  "$@" $dashmflag |
-    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this sed invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-dashXmstdout)
-  # This case only exists to satisfy depend.m4.  It is never actually
-  # run, as this mode is specially recognized in the preamble.
-  exit 1
-  ;;
-
-makedepend)
-  "$@" || exit $?
-  # Remove any Libtool call
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no eat=no
-  for arg
-  do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    if test $eat = yes; then
-      eat=no
-      continue
-    fi
-    case "$arg" in
-    -D*|-I*)
-      set fnord "$@" "$arg"; shift ;;
-    # Strip any option that makedepend may not understand.  Remove
-    # the object too, otherwise makedepend will parse it as a source file.
-    -arch)
-      eat=yes ;;
-    -*|$object)
-      ;;
-    *)
-      set fnord "$@" "$arg"; shift ;;
-    esac
-  done
-  obj_suffix=`echo "$object" | sed 's/^.*\././'`
-  touch "$tmpdepfile"
-  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-  rm -f "$depfile"
-  # makedepend may prepend the VPATH from the source file name to the object.
-  # No need to regex-escape $object, excess matching of '.' is harmless.
-  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process the last invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed '1,2d' "$tmpdepfile" \
-    | tr ' ' "$nl" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile" "$tmpdepfile".bak
-  ;;
-
-cpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove '-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  "$@" -E \
-    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-    | sed '$ s: \\$::' > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  cat < "$tmpdepfile" >> "$depfile"
-  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvisualcpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-        set fnord "$@"
-        shift
-        shift
-        ;;
-    *)
-        set fnord "$@" "$arg"
-        shift
-        shift
-        ;;
-    esac
-  done
-  "$@" -E 2>/dev/null |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
-  echo "$tab" >> "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvcmsys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-none)
-  exec "$@"
-  ;;
-
-*)
-  echo "Unknown depmode $depmode" 1>&2
-  exit 1
-  ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/isl/doc/Makefile.am b/polly/lib/External/isl/doc/Makefile.am
deleted file mode 100644 (file)
index 1d61dd7..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-
-CLEANFILES = \
-       manual.toc \
-       manual.bbl \
-       version.tex \
-       user.tex \
-       manual.pdf \
-       manual.aux \
-       manual.out \
-       manual.blg \
-       manual.log \
-       manual.brf \
-       manual.bcf \
-       manual.run.xml
-
-if GENERATE_DOC
-export TEXINPUTS := $(srcdir):$(TEXINPUTS)
-export BIBINPUTS := $(srcdir):$(BIBINPUTS)
-export BSTINPUTS := $(srcdir):$(BSTINPUTS)
-
-user.tex: user.pod
-       $(PERL) $(srcdir)/mypod2latex $< $@
-manual.pdf: manual.tex user.tex $(srcdir)/implementation.tex reading.tex
-       (cd ..; echo "@GIT_HEAD_VERSION@") > version.tex
-       $(PDFLATEX) $<
-       biber manual
-       $(PDFLATEX) $<
-       $(PDFLATEX) $<
-user.html: user.pod
-       (cd ..; echo "@GIT_HEAD_VERSION@") > version
-       $(POD2HTML) --infile=$< --outfile=$@ --title="Integer Set Library: Manual [version `cat version`]"
-endif
diff --git a/polly/lib/External/isl/doc/Makefile.in b/polly/lib/External/isl/doc/Makefile.in
deleted file mode 100644 (file)
index 36dda7d..0000000
+++ /dev/null
@@ -1,526 +0,0 @@
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = doc
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_c___attribute__.m4 \
-       $(top_srcdir)/m4/ax_cc_maxopt.m4 \
-       $(top_srcdir)/m4/ax_check_compiler_flags.m4 \
-       $(top_srcdir)/m4/ax_compiler_vendor.m4 \
-       $(top_srcdir)/m4/ax_create_pkgconfig_info.m4 \
-       $(top_srcdir)/m4/ax_create_stdint_h.m4 \
-       $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
-       $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
-       $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11_no_override.m4 \
-       $(top_srcdir)/m4/ax_detect_git_head.m4 \
-       $(top_srcdir)/m4/ax_detect_gmp.m4 \
-       $(top_srcdir)/m4/ax_detect_imath.m4 \
-       $(top_srcdir)/m4/ax_gcc_archflag.m4 \
-       $(top_srcdir)/m4/ax_gcc_warn_unused_result.m4 \
-       $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
-       $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
-       $(top_srcdir)/m4/ax_set_warning_flags.m4 \
-       $(top_srcdir)/m4/ax_submodule.m4 $(top_srcdir)/m4/libtool.m4 \
-       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-       $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/isl_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BUILD_EXEEXT = @BUILD_EXEEXT@
-BUILD_OBJEXT = @BUILD_OBJEXT@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_FOR_BUILD = @CC_FOR_BUILD@
-CFLAGS = @CFLAGS@
-CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
-CPP_FOR_BUILD = @CPP_FOR_BUILD@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH = @CYGPATH@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT_HEAD = @GIT_HEAD@
-GIT_HEAD_ID = @GIT_HEAD_ID@
-GIT_HEAD_VERSION = @GIT_HEAD_VERSION@
-GREP = @GREP@
-HAVE_CXX11 = @HAVE_CXX11@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MP_CFLAGS = @MP_CFLAGS@
-MP_CPPFLAGS = @MP_CPPFLAGS@
-MP_LDFLAGS = @MP_LDFLAGS@
-MP_LIBS = @MP_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OS_SRCDIR = @OS_SRCDIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PERL = @PERL@
-POD2HTML = @POD2HTML@
-PRTDIAG = @PRTDIAG@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARNING_FLAGS = @WARNING_FLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgconfig_libdir = @pkgconfig_libdir@
-pkgconfig_libfile = @pkgconfig_libfile@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-versioninfo = @versioninfo@
-CLEANFILES = \
-       manual.toc \
-       manual.bbl \
-       version.tex \
-       user.tex \
-       manual.pdf \
-       manual.aux \
-       manual.out \
-       manual.blg \
-       manual.log \
-       manual.brf \
-       manual.bcf \
-       manual.run.xml
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-               && { if test -f $@; then exit 0; else break; fi; }; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
-       $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --foreign doc/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       list='$(DISTFILES)'; \
-         dist_files=`for file in $$list; do echo $$file; done | \
-         sed -e "s|^$$srcdirstrip/||;t" \
-             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-       case $$dist_files in \
-         */*) $(MKDIR_P) `echo "$$dist_files" | \
-                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-                          sort -u` ;; \
-       esac; \
-       for file in $$dist_files; do \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-           if test -d "$(distdir)/$$file"; then \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       if test -z '$(STRIP)'; then \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-             install; \
-       else \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-       fi
-mostlyclean-generic:
-
-clean-generic:
-       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-       -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       cscopelist-am ctags-am distclean distclean-generic \
-       distclean-libtool distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags-am uninstall uninstall-am
-
-.PRECIOUS: Makefile
-
-
-@GENERATE_DOC_TRUE@export TEXINPUTS := $(srcdir):$(TEXINPUTS)
-@GENERATE_DOC_TRUE@export BIBINPUTS := $(srcdir):$(BIBINPUTS)
-@GENERATE_DOC_TRUE@export BSTINPUTS := $(srcdir):$(BSTINPUTS)
-
-@GENERATE_DOC_TRUE@user.tex: user.pod
-@GENERATE_DOC_TRUE@    $(PERL) $(srcdir)/mypod2latex $< $@
-@GENERATE_DOC_TRUE@manual.pdf: manual.tex user.tex $(srcdir)/implementation.tex reading.tex
-@GENERATE_DOC_TRUE@    (cd ..; echo "@GIT_HEAD_VERSION@") > version.tex
-@GENERATE_DOC_TRUE@    $(PDFLATEX) $<
-@GENERATE_DOC_TRUE@    biber manual
-@GENERATE_DOC_TRUE@    $(PDFLATEX) $<
-@GENERATE_DOC_TRUE@    $(PDFLATEX) $<
-@GENERATE_DOC_TRUE@user.html: user.pod
-@GENERATE_DOC_TRUE@    (cd ..; echo "@GIT_HEAD_VERSION@") > version
-@GENERATE_DOC_TRUE@    $(POD2HTML) --infile=$< --outfile=$@ --title="Integer Set Library: Manual [version `cat version`]"
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/polly/lib/External/isl/doc/interface b/polly/lib/External/isl/doc/interface
new file mode 100644 (file)
index 0000000..8132b3f
--- /dev/null
@@ -0,0 +1,27 @@
+Design guidelines for the isl interfaces
+========================================
+
+# Constructors
+
+A function that constructs an isl object can be exposed in two ways, as
+an unnamed constructor or as a named static function. Aiming for an interface
+that is explicit and close to the isl C interface, all such functions
+are exported as named static functions, except in the following cases.
+Unnamed constructors are generated for functions where even without the
+function name an object is identified uniquely by its arguments. For
+example, there is a single isl_val that corresponds to a given integer
+(isl_val_int_from_si), but both a NaN or a zero value can be constructed
+from an isl_local_space (isl_aff_zero_on_domain and isl_aff_nan_on_domain).
+Only function that create objects that are fully constructed by the function
+and do not require further information to be added for typical use cases
+are exposed as unnamed constructors.
+Functions that commonly require more information to be provided
+(isl_union_access_info_from_sink, isl_schedule_constraints_on_domain)
+are exported as named static functions.
+Typical examples of function that are generated as unnamed constructors
+are the following:
+
+- Conversion constructors
+- Constructors from std::string
+- Constructors where all arguments by themselves uniquely identify
+  a complete object (e.g., isl_val_int_from_si)
diff --git a/polly/lib/External/isl/imath/.dockerignore b/polly/lib/External/isl/imath/.dockerignore
new file mode 100644 (file)
index 0000000..708c276
--- /dev/null
@@ -0,0 +1,12 @@
+.git
+ChangeLog
+LICENSE
+contrib
+**/*.gz
+**/*.md
+**/*.o
+**/*.so
+**/Dockerfile
+tests/*.bc
+tests/*.scm
+tests/linux
\ No newline at end of file
diff --git a/polly/lib/External/isl/imath/.gitattributes b/polly/lib/External/isl/imath/.gitattributes
new file mode 100644 (file)
index 0000000..dd85bba
--- /dev/null
@@ -0,0 +1 @@
+*.tc linguist-language=fundamental
diff --git a/polly/lib/External/isl/imath/.travis.yml b/polly/lib/External/isl/imath/.travis.yml
new file mode 100644 (file)
index 0000000..61b30d2
--- /dev/null
@@ -0,0 +1,14 @@
+# Build and test configuration for travis-ci.com.
+
+language: c
+script: make clean check
+matrix:
+  include:
+    - os: osx
+      osx_image: xcode10.1
+      compiler: clang
+    - os: linux
+      compiler: clang
+    - os: linux
+      compiler: gcc
+
diff --git a/polly/lib/External/isl/imath/ChangeLog b/polly/lib/External/isl/imath/ChangeLog
new file mode 100644 (file)
index 0000000..294bd2a
--- /dev/null
@@ -0,0 +1,563 @@
+1.0.1
+       First released version.
+
+1.0.2
+       Fixed a bug in mp_int_div() which would yield incorrect quotients
+       when the divisor was very close in value to a prefix of the
+       dividend.  This is now fixed, and there are regression tests in
+       the tests directory.
+
+       Added recursive multiplication and squaring (Karatsuba-Ofman) for
+       large input values.  Integrated these with the existing code for
+       exponentiation, too.  See the code for s_kmul() and s_ksqr() in
+       imath.c.  Tests added and verified against GNU bc.
+
+       Added documentation on mp_get_multiply_threshold() and the reason
+       why it exists.
+
+1.0.3
+       Fixed a couple of bugs in pi.c that were causing incorrect values
+       to be computed for > 30 digits or so.  Added a pi-computation test
+       to the default test suite (make test), checked against a static
+       file computed by bc (set scale=1024, compute 4 * atan(1)).  Added
+       command line option to specify output radix for pi.
+
+       Cleaned up a sign-related bug in mp_int_gcd(), which would cause
+       the sign of gcd(0, x) to be incorrect when x < 0.  Test cases
+       added for future regression.
+
+       Fixed a bug in s_reduce() which would give incorrect results for
+       powers of 2 in certain circumstances.  Added tests to drive this
+       case for future regression.
+
+       Added mp_int_exptmod_evalue() and mp_int_exptmod_bvalue() to make
+       it easier to work with small bases and small exponents.
+
+       Set default recursive multiplication threshold to 50 digits, since
+       this seems to work best for the platforms I've tested so far.
+
+       Added iprime.h and iprime.c to the distribution.
+
+1.0.4
+       Added `findsizes.pl' to the distribution.
+
+       Revised the type declarations in imath.h to use 32/64 bit
+       operations where the "long long" type is supported.
+
+       Fixed a sign-related bug in mp_int_invmod().
+
+       Fixed several small bugs related to shifting which affect the use
+       of 32-bit digits.  Many architectures cannot shift by 32 bits at a
+       time (e.g., MIPS), so I split each of these cases into two shifts
+       of half the size, which should scale properly for both the smaller
+       and larger cases.
+
+       Fixed several arithmetic issues with 32-bit digits that arose due
+       to missing type-casts on the right-hand sides of assignments.
+
+       Fixed s_print() and s_print_buf() to handle the sizes of digits
+       transparently.
+
+1.0.5
+       Updated the Makefile to include the _GNU_SOURCE macro.  For many
+       GCC systems, this is necessary to get the correct definition of
+       the ULLONG_MAX macro in <limits.h>.  Also, you may now build with
+       the make option DEBUG=Y to enable debugging, e.g.:
+
+       make DEBUG=Y imtest
+
+       By default, the Makefile builds with the optimizer enabled.
+
+       Cleaned up the definitions triggered by USE_LONG_LONG in imath.h,
+       and added an #error instruction in case the build is unable to
+       find a definition of ULLONG_MAX or ULONG_LONG_MAX in <limits.h>.
+       Also added the mp_int_to_unsigned(), mp_int_read_unsigned(), and
+       mp_int_unsigned_len() prototypes.
+
+       Fixed a bug in s_qmul() [imath.c:2493] that would grow the value
+       being multiplied even if there was room in the existing digits to
+       hold the result.  This was driving an (apparent) bug in the more
+       general mp_int_read_binary() routine.  Added the routines
+       mentioned in the previous paragraph, and factored some common
+       code out into a static s_tobin().
+
+       Added reset_registers() to imdrover.{h,c}.  Added new test
+       driver functions test_to_uns() and test_read_uns().  Renamed
+       test_read_bin to test_read_binary().
+
+       Silenced a sign-related warning in pi.c (related to printf).
+
+       Added many new test vectors to tests/conv.t, including the
+       original bug proof-of-concept from Tom Wu, and a series of new
+       tests for the unsigned conversion routines.
+
+       Updated `doc.txt' to reflect the changes described above.
+
+1.0.6
+       Updated copyright notices, added LICENSE file explaining the
+       license I am using.  This is basically the BSD license, so
+       you should have no trouble incorporating this code into other
+       open source projects.
+
+       No new functionality in this release.
+
+1.0.7
+       The mp_int_invmod(a, m, c) function would compute a negative value
+       for c when given a < 0.  I added some code to insure that the value
+       returned is always the least non-negative member of the congruence
+       class, if the inverse exists.  A test for this was added to invmod.t.
+
+1.0.8
+       Fixed a small buffer-overrun in s_qmul().  Because it only
+       allocates an extra digit if it absolutely has to, the test for
+       whether it needs to carry a shift out into the "spare" digit had
+       to be written carefully; I missed a subtlety, which is now
+       fixed. Along the way, I fixed a minor performance-related bug in
+       the same routine.
+
+       Added mp_int_error_string(), which converts mp_result values
+       into descriptive strings.  These are statically allocated, so
+       you don't have to free them.
+
+       This version also adds an "examples" subdirectory.  Currently,
+       there is only one program there, but I will add more examples as
+       time permits me.  You have to read the source to understand them
+       anyway, so I won't explain them here.
+
+1.1.0
+       Added imrat.h and imrat.c, containing routines for rational number
+       arithmetic at arbitrary precision.  Added support to the test driver,
+       in imath.c and included various tests in the tests/ subdirectory.
+
+       Fixed a sign-of-zero bug in mp_int_mul().  Tests added to mul.t to
+       regress this fix.
+
+1.1.2
+       Fixed a bug with leading zeroes after the decimal point in the
+       mp_rat_read_decimal() function (imrat.c).  Along the way, I also
+       found a sign-related bug, in which -0.5 would be treated as if it
+       were positive, because the sign of zero is implicitly positive,
+       and the denominator is treated as unsigned always.
+
+       Thanks to Eric Silva for pointing out the leading zeroes bug.
+       The solution isn't the most efficient possible.
+
+1.1.3
+       Rewrote mp_int_to_decimal() to support new rounding modes.  The
+       modes are documented in doc.txt.  Some of the code sucked anyway,
+       so I rewrote pretty much the entire function.
+
+       Added new rounding mode constants.
+
+1.1.4
+       Added mixed rational/integer operations:
+         mp_rat_add_int, mp_rat_sub_int, mp_rat_mul_int, mp_rat_div_int
+       Added rational exponentiation (with integer exponents):
+         mp_rat_expt
+
+       Tests for same were added to the tests/ subdirectory.
+
+1.1.5
+       Added mp_rat_read_cdecimal() and mp_rat_read_ustring()
+       Updated the input.c example.
+
+1.1.6
+       Fixed a bug in mp_int_read_cstring() which would read the string
+       "-0" with incorrect sign (MP_NEG instead of MP_ZPOS).  This would
+       violate an invariant that zero is always signed with positives.
+
+       Added some tests to tests/neg.t to catch this case.
+
+1.1.7
+       Fixed a bug in s_udiv(), internal to imath.c, which caused
+       division to fail in some corner cases masked by the use of long
+       long as a word type.  As a result, s_udiv() has now been wholly
+       rewritten.  I also fixed a few lingering buffer-length errors in
+       s_kmul(), and added a "const" qualifier to the input buffers for
+       the mp_int_read_string() and mp_int_read_cstring() functions,
+       and their analogs in imrat.c.
+
+1.1.8
+       Added mp_int_alloc() and mp_int_free().
+
+1.1.9
+       Added mp_rat_alloc() and mp_rat_free().  Fixed a couple of minor
+       bugs in the doc.txt file.  Added mp_int_sqrt() to imath.{h,c} and
+       doc.txt.
+
+1.2
+       Dropped bugfix component of revision number.  Fixed rsakey.c
+       example program to be complete and work faster.
+
+1.3
+       Replaced findsizes.pl with findsizes.py.  Fixed two bugs in the
+       rsakey tool that were leading to incorrect output.
+
+1.4
+       Fixed a bug in mp_int_alloc(), it was not returning NULL when out
+       of memory, but rather failing in assert() instead.  Also, updated
+       the documentation to have better language about the return values
+       in various error conditions.
+
+1.5
+       Changed the API for rational rounding.  Removed the two functions
+       mp_rat_set_rounding() and mp_rat_get_rounding(), along with the
+       round_output global variable.  Redefined the MP_ROUND_* constants
+       as an enumeration type (mp_round_mode).  Added a new parameter to
+       the mp_rat_to_decimal() function to accept a rounding mode.  Unit
+       tests and doc.txt updated suitably.
+
+       This release also incorporates a small patch submitted by Jonathan
+       Shapiro to support compilation in C++.
+
+1.6
+       Defined default_precision and multiply_threshold to be constant
+       and static.  If IMATH_TEST is defined at compile time, these are
+       made global, and can be modified by the caller (the imtimer tool
+       makes use of this ability, for example).
+
+       Implemented a single-digit optimization suggested by J. Shapiro.
+       Documentation updated.
+
+1.7
+       Fixed a subtle casting problem in the use of the ctype macros that
+       would permit negative signed character values to produce illogical
+       behaviour in some configurations (e.g., NetBSD).  Removed a dead
+       "return" statement.
+
+       Added the -pedantic switch for gcc, to get more aggressive
+       warnings; to permit the nonstandard "long long" type to still be
+       used, I also added -Wno-long-long when building with long long
+       enabled (the standard configuration).
+
+       Fixed a bug found by the Samba team running Valgrind on the
+       Heimdal project, and reported by Love Hörnquist Ã‚strand:  One of
+       the intermediate values used during modular exponentiation could
+       be overflowed during recursive multiplication.  Fixed by taking a
+       more conservative approach to buffer sizing.
+
+       Added a "contrib" subdirectory, whose first entry is a Makefile
+       to build IMath with the MSVC++ "nmake" program, contributed by
+       Matus Horvath.
+
+1.8
+       Fixed a bug in s_udiv() affecting the computation of quotient
+       digits.  Thanks to Love Ã‚strand for isolating this bug.  Also in
+       this release, defining USELLONG=Y or USELLONG=N on the command
+       line for make will switch support for the "long long" data type on
+       or off without having to edit the Makefile.  The default is still
+       to permit use of "long long", even though the type is not standard
+       ANSI C90.
+
+1.9
+       Increased the number of small primes used for primality testing to
+       100 from 32.  Removed an unwanted #define from imath.c, left over
+       from testing; added "static" to the declaration of the s_embar()
+       internal function since it is not used outside imath.c.  Reduced
+       the quantity of feedback generated by rsakey.c during the prime
+       finding stage of key generation.
+
+1.10
+       All primes less than 1000 are now used in iprime.c for preliminary
+       testing of prime candidates.  Removed declaration of s_pad() from
+       rsakey.c example.  Added imcalc.c example.
+
+       Beginning with this release, defining the DEBUG preprocessor macro
+       when compiling imath.c causes all the normally-static helper
+       functions to be exported.  This makes it easier to troubleshoot
+       bugs in the back end functions without manually editing the source
+       till you have found where the bug actually is.
+
+       Fixed a memory leak in the test driver (imtest.c) where the input
+       buffers allocated for test specs were not released before being
+       released.  No impact on the core routines, but nevertheless not a
+       good thing.
+
+       Fixed several uninitialized memory reads and one subtle read past
+       the end of a buffer in s_kmul(), found during a run of Purify.
+       Thanks to Love Hörnquist Ã‚strand for finding this one, and
+       providing a good test case so I could isolate the problem.  Also
+       fixed a buglet in s_kmul(), in which free() was being called
+       instead of s_free(), which would break if you provided a custom
+       version of s_alloc() and s_free() for your application.
+
+1.11
+       Those functions which take int parameters to supply one or more of
+       the arithmetic values of the function have been converted to use a
+       typedef "mp_small".  This is defined in imath.h, along with some
+       supporting macros.
+
+       Added mp_int_to_uint() and mp_int_lcm() in imath.{h,c}, based on a
+       patch contributed by Hal Finkel.  Added LCM tests as as well as
+       some more GCD tests in tests/lcm.t and tests/gcd.t
+
+       Also at Hal Finkel's request, added mp_int_root() to compute the
+       integer nth root, i.e., \lfloor a^{1/b}\rfloor; replaced the old
+       mp_int_sqrt() function with a call to mp_int_root() via a macro.
+       The new implementation is probably slightly less efficient for
+       square roots, but more general.  Added tests/root.t and moved the
+       sqrt tests there, also.
+
+1.12
+       Added a new global constant MP_MINERR which is the value of the
+       smallest error code defined by IMath itself.  This can be used by
+       clients who wish to define and use additional error codes, so that
+       those codes will not conflict with the existing set.
+
+       Extended the imcalc example to include memory.
+
+       Fixed a bug in mp_int_add() in which -1 + 1 = -0 (the sign of zero
+       was recorded incorrectly).  Added tests to the regression suite
+       for this fix.
+
+1.13
+       Cosmetic change -- updated all the files with my new web address.
+
+       Fixed a buglet caught by Love Hörnquist Ã‚strand using the LLVM
+       static checker tools, in which a mp_int_copy() failure would be
+       silently ignored and cause an extra copy to be generated.
+
+       Fixed a bug in the testing suite while building on MinGW.  The pi
+       generation tests compare to static files and these tests fail if
+       CR/LF is output instead of just LF.  The test script now strips
+       all CR and LF from the output and compares to files lacking them.
+       Reported by Chris Cole <cjcole@gmail.com>.
+
+1.14
+       Instead of using the preprocessor to delete "static", the static
+       definitions in imath.c now use an explicit STATIC macro, that is
+       made null when DEBUG is defined.  This avoids a subtle problem
+       with static variables defined inside functions (although no bugs
+       actually arose from it).
+
+       Fixed a bug in s_udiv() while building on MinGW.  When building
+       with short type digits, the routine was incorrectly discarding
+       overflow when computing the next quotient digit.
+       Reported by Paul DeMarco <pdemarco@ppg.com>.
+
+1.15
+       Fixed a bug in the definition of MP_DIGIT_MAX that caused errors
+       when IMath is built under 64-bit Linux.  Reported by
+       Klaus Stengel <klaus.stengel@informatik.stud.uni-erlangen.de>.
+
+       Unpacked the macro definitions in imath.c a bit, to make them more
+       readable.
+
+       Added mp_int_expt_full() by request of Andrea Barberio
+       <insomniac@slackware.it>.
+
+1.16
+       Fixed a bug in mp_int_to_uint() which was causing incorrect MP_RANGE
+       errors during small integer conversion.
+       Reported by Andrea Barberio <insomniac@slackware.it>
+
+       Added mp_int_compare_uvalue().
+       Added some new testing hooks in imtest.c, new unit tests.
+
+       Made some code style changes that do not affect functionality.
+
+1.17
+       Fixed a bug in mp_int_swap() where mpz_t structures using their single
+       field as storage would not get swapped correctly.
+       Reported by Andres Navarro <canavarro82@gmail.com>
+
+       Added regression test for this and some hooks for future
+       regressions in the tests/test.sh script.
+
+1.18
+       Made mp_int_rat() use mp_int_init() to initialize numerator and
+       denominator instead of mp_int_init_size().
+       Some minor code cleanup inside the testing code (imdrover.c).
+
+       Fixed an off-by-one bug in s_udiv() which could cause the quotient
+       guessing loop to spin.  Reported by Andres Navarro.  Added
+       triggering example to div.t as a regression test.
+
+1.19
+       Fix signedness error in compile.  Reported by PaweÅ‚ Sikora.
+
+1.20
+       Fix broken comments, apparently from a previous bad merge.
+       Remove emacs folding-mode comments throughout.
+       Some minor Makefile cleanup to make clang happier.
+
+1.21
+       Fix a syntax error. TODO: Run tests before merging, or better
+       still set up CI someplace.
+       Remove dead division code.
+       Restore a missing comparison.
+       Drop dead flags from the Makefile.
+
+1.22
+       Remove MP_USMALL_MIN, which was unused by anything in imath.
+       Rework doc.txt into Markdown.
+       Restore imath-test.scm and imath.py, dropped during import.
+
+1.23
+       Portability fixes from PostgreSQL (#8), from nmisch.
+
+1.24
+       A cosmetic update, consisting mainly of readability updates,
+       documentation fixes, and warning fixes. There are not intended to
+       be any functional changes in this update, but a fair bit of code
+       and the Makefile have been modified, so I'm adding a tag.
+
+       My intent is to keep the source formatted with clang-format going
+       forward, though I will need to set up some presubmit checks to
+       enforce that. For now it is still a manual step via "make format".
+
+       7e45d6a Remove a doc reference to MP_USMALL_MIN.
+       544687d Fix the spelling of mp_error_string in doc.md.
+       592d4a0 Fix some mis-converted section breaks in doc.md.
+       df9fe8e Format source files with clang-format.
+       fcb4e21 Build with 64-bit words by default.
+       1579b70 Minor simplifications to the Makefile.
+       0fbe8e6 Style cleanup: More invasive manual changes.
+       1d28177 Add -Wextra and -Wno-unused-parameter to default build flags.
+       15ba02a Fix warnings for signed/unsigned comparisons.
+       3556984 Style cleanup: Insert missing brackets.
+
+1.25
+       This version fixes several issues found by clang static analysis.
+       It also includes some additional follow-on cleanup tasks from the
+       previous release.
+
+       b5a73c4 Cleanup: Use .tc for test files instead of .t.
+       dc307ae Cleanup: Remove dead author URLs, SVN markers.
+       389a1be bug: Fix a memory leak in test_meta.
+       8fb98f7 bug: Fix a use of an uninitalized pointer.
+       fe0757a bug: Fix reads of uninitalized fields in free_test.
+       08fe765 bug: Fix a reachable null pointer indirection.
+       7b10453 bug: Remove a redundant initialization.
+       cebce44 bug: Fix various dead assignments.
+       ef36352 Remove the findsizes.py script.
+       eebfb85 Fix some more comparison-sign mismatches.
+       9abcf66 Cleanup: Update a stale reference to doc.txt in the README.
+       8ec696f Cleanup: Consolidate the USE_32BIT_WORDS macro sections.
+
+1.26
+       Another round of fixes. Notably the gmp-compat-test again works on
+       macOS, fixing https://github.com/creachadair/imath/issues/26.
+       Also, this release cleans up some more warnings and fixes some
+       missing #include paths.
+
+       2ea0fff gmp_compat: Fix warnings for mixed-sign comparisons.
+       2a41bae Fix DLL loading.
+       56c40f4 Make gmp-compat-test work again on macOS.
+       f163906 Comment out a vacuously true assertion.
+       667d90e gmp_compat: Ensure a definition of ssize_t is available.
+       6c6fdd8 Fix a vacuously meaningless comparison.
+       4dac16f Silence a warning about an uninitalized variable.
+       c6119c4 Include strings.h for strcasecmp.
+
+1.27
+       Another round of cleanup and bug fixes. This release includes a
+       Dockerfile to support basic Linux testing, which I found useful as
+       I do most of my work on macOS.
+
+       This release also addresses most of issue #29 (Switching from C90
+       to C99). Part of that change removes most function-like macros
+       from the API headers, replacing them with static functions. Code
+       that used the macros as lvalues will no longer work, but can and
+       should be easily updated to access the members of mpz_t directly.
+
+       Fixed: #34.
+
+       899e202 Add a docker config for basic Linux testing.
+       40e8887 Move imath-test.scm to the tests directory.
+       6f01c9f Add .dockerignore to the release tarball.
+       1dab081 Fix the spelling of __abs__ in imath.py.
+       8f0a00c Enable source formatting for Python.
+       99e27c8 Format all Python source with yapf.
+       bf289f0 gmp-compat-test: Remove dependency on Python 3.
+       9269d57 Clean up the Linux test image.
+       61ca691 Include stdbool.h and use the bool type where appropriate.
+       d4760ee Replace macros with static inline functions.
+       8241977 linux test: Layer the image for better caching.
+       46bb578 imath: Replace accessor macros with inline functions.
+       50c6cc8 imrat: Replace accessor macros with static functions.
+       0c5cec9 gmp_compat: Fix lvalue uses of MP_USED.
+       89c72f2 Remove CHECK and NRCHECK macros.
+       dbe9f50 imath: Replace macros with static functions.
+       0006998 imath: Replace ROUND_PREC macro with a function.
+       b628a0c Move local variable declarations closer to first use.
+       54d51da Remove obsolete division spec.
+       796776f iprime: Move and scope variables closer to first use.
+       8fd5236 iprime: Use a sentinel instead of a length.
+       ce89180 Include getopt.h explicitly where it is required.
+       e6fc170 Make libimath.so build correctly under GCC.
+       b54d8c9 Use Bourne in preference to Bash.
+       8f88c01 Makefile: Export CC and CFLAGS for submakes.
+       58f4392 Use the inherited settings in the gmp-compat-tests.
+       8a181cd Make the Linux docker test run "make check".
+       28617f2 gmp_compat: Fix overflow in the uint conversion adapter.
+
+1.28
+       Another round of cleanup, and some more invasive API changes.
+       I removed more macros, and added an API surface for setting the
+       default precision and recursive-multiply threshold.
+       The compile-time switchable statics are now strictly static.
+       The handling of temporary values was greatly reworked to make it
+       less brittle.
+
+       ba44b37 Add unit tests for mp_int_is_prime.
+       6f10877 imath: Remove lvalue uses of access macros, and the macros.
+       f4939db Fix formatting.
+       85137fa docs: Remove macro implementation comments.
+       37f046e Rework the handling of temporaries.
+       cc8ac74 imtimer: Fix a lingering lvalue use of MP_USED.
+       9736a8b imath: Drop switchable statics and stdio dependency.
+       5445ad8 Add functions to set default precision and multiply threshold.
+       58f2d6e Use alpine:latest rather than a fixed version.
+
+1.29
+       The Documentation Edition. The main improvement here is that the
+       API documentation is now unified in the header files, and doc.md
+       is now generated from a template that includes the text from the
+       headers. The automation for this is still unsatisfactory, but it
+       is better than it was.
+
+       d239b2e Remove imath.py.
+       e43b0f5 imath: Clean up extraneous whitespace.
+       fbbbbad Remove the mpz struct tag.
+       718fef2 imath: Add documentation comments to the header.
+       02600e5 imath: Make radix bound checks into requirements.
+       c21f49d imrat: Add documentation comments to the header.
+       ea5398f Remove the mpq struct tag.
+       c1549c7 Move tools and tests into subdirectories.
+       7187c49 Remove extraneous whitespace from declarations.
+       afa715c Comment cleanup on Aisle 2.
+       cbf9a03 Add tools/mkdoc.py.
+       58672fc Remove the "dist" target from Makefile.
+       894bb90 Move rtest.c into the tests directory.
+       d4cfc69 Add a doc.md.in template file.
+       bd929aa Add a make rule for doc.md from doc.md.in.
+       6dea44e Update doc.md using the new generator.
+       56ef9a0 doc: Include mp_int_set_uvalue.
+       13618b3 doc: Explain the comparator terminology.
+       9990b2e Make the clean and distclean make-rules equivalent.
+       13df978 doc: Update the explanation of temp handling macros.
+       b80bd8a doc: Emit one generated comment for the whole file.
+       3cde6b8 doc: Remove the markdown disclaimer.
+       045a2a6 doc: Point my address to github instead of e-mail.
+       08f2efd doc: Add headings for general API functions.
+       77159d9 mkdoc.py: Link back to source lines.
+       aec8587 doc: Include links back to the source.
+       f8c9f6c imath: Document a constraint on mp_int_redux_const.
+
+1.30
+       Improve test automation; no functional changes to the library.
+
+       fc7846a imtest: Ensure the exit code is non-zero when tests fail.
+       87edcbe test.sh: Exit non-zero if any unit tests fail.
+       276d1f9 imtest: Make test output easier to read.
+       c8c90c4 Make the Linux test protocol less brittle.
+       f68ba5b Add a .gitattributes file.
+       33c2843 Add a docker-test target to the Makefile.
+
+1.31
+       Improvements to build and test automation; add CI configuration.
+
+       d419633 Add a Travis CI configuration for imath.
+       3305c4a Ensure the Makefile respects a $CC set in the environment.
+       d2da4b6 Update instructions for reporting bugs.
diff --git a/polly/lib/External/isl/imath/LICENSE b/polly/lib/External/isl/imath/LICENSE
new file mode 100644 (file)
index 0000000..087fb61
--- /dev/null
@@ -0,0 +1,20 @@
+IMath is Copyright Â© 2002-2009 Michael J. Fromberger
+You may use it subject to the following Licensing Terms:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/polly/lib/External/isl/imath/Makefile b/polly/lib/External/isl/imath/Makefile
new file mode 100644 (file)
index 0000000..ff57fa4
--- /dev/null
@@ -0,0 +1,131 @@
+##
+## Name:     Makefile
+## Purpose:  Makefile for imath library and associated tools
+## Author:   M. J. Fromberger
+##
+## Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+##
+## Permission is hereby granted, free of charge, to any person obtaining a copy
+## of this software and associated documentation files (the "Software"), to
+## deal in the Software without restriction, including without limitation the
+## rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+## sell copies of the Software, and to permit persons to whom the Software is
+## furnished to do so, subject to the following conditions:
+##
+## The above copyright notice and this permission notice shall be included in
+## all copies or substantial portions of the Software.
+##
+## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+## FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+## IN THE SOFTWARE.
+##
+
+# --- begin configuration section ---
+
+## Generic settings for systems with GCC (default)
+## To build with debugging, add DEBUG=Y on the "make" command line.
+ifeq ($(origin CC),default)
+CC=gcc
+endif
+CFLAGS+=-pedantic -Wall -Werror -Wextra -Wno-unused-parameter \
+       -I. -std=c99 $(DFLAGS$(DEBUG))
+CSFLAGS=$(CFLAGS) -fPIC
+#LIBS=
+
+# These are needed to build the GMP compatibility tests.
+export CC CFLAGS
+
+DFLAGS=-O3 -funroll-loops -finline-functions
+DFLAGSN=$(DFLAGS)
+DFLAGSY=-g -DDEBUG=1
+
+# --- end of configuration section ---
+
+TARGETS=bintest bug-swap imtest imtimer rtest
+HDRS=imath.h imrat.h iprime.h imdrover.h rsamath.h gmp_compat.h
+SRCS=$(HDRS:.h=.c) $(TARGETS:=.c)
+OBJS=$(SRCS:.c=.o)
+OTHER=LICENSE ChangeLog Makefile doc.md doc.md.in \
+       tools/findthreshold.py tools/mkdoc.py .dockerignore
+VPATH += examples tests
+EXAMPLES=basecvt findprime imcalc input pi randprime rounding rsakey
+
+.PHONY: all test clean distclean
+.SUFFIXES: .so .md
+
+.c.o:
+       $(CC) $(CFLAGS) -c $<
+
+.c.so:
+       $(CC) $(CSFLAGS) -o $@ -c $<
+
+all: objs examples test
+
+objs: $(OBJS)
+
+check: test gmp-compat-test
+       @ echo "Completed running imath and gmp-compat unit tests"
+
+test: imtest pi bug-swap doc.md
+       @ echo ""
+       @ echo "Running tests, you should not see any 'FAILED' lines here."
+       @ echo "If you do, please see doc.txt for how to report a bug."
+       @ echo ""
+       (cd tests && ./test.sh)
+
+gmp-compat-test: libimath.so
+       @ echo "Running gmp-compat unit tests"
+       @ echo "Printing progress after every 100,000 tests"
+       make -C tests/gmp-compat-test TESTS="-p 100000 random.tests"
+
+docker-test:
+       if which docker ; \
+       then \
+               docker run --rm -it \
+               "$(shell docker build -f tests/linux/Dockerfile -q .)" ; \
+       fi
+
+$(EXAMPLES):%: imath.o imrat.o iprime.o %.o
+       $(CC) $(CFLAGS) -o $@ $^ $(LIBS)
+
+$(TARGETS):%: imath.o %.o
+       $(CC) $(CFLAGS) -o $@ $^ $(LIBS)
+
+examples: $(EXAMPLES)
+
+libimath.so: imath.so imrat.so gmp_compat.so
+       $(CC) $(CFLAGS) -shared -o $@ $^
+
+imtest: imtest.o imath.o imrat.o imdrover.o iprime.o
+
+rtest: rtest.o imath.o rsamath.o
+
+# Requires clang-format: https://clang.llvm.org/docs/ClangFormat.html
+format-c:
+       @ echo "Formatting C source files and headers ..."
+       find . -type f -name '*.h' -o -name '*.c' -print0 | \
+               xargs -0 clang-format --style=Google -i
+
+# Requires yapf: pip install yapf
+format-py:
+       @ echo "Formatting Python source files ..."
+       find . -type f -name '*.py' -print0 | \
+               xargs -0 yapf --style=pep8 -i
+
+# Format source files.
+format: format-c format-py
+
+# Generate documentation from header comments.
+# This rule depends on the header files to ensure the docs get updated when the
+# headers change.
+doc.md: doc.md.in imath.h imrat.h tools/mkdoc.py
+       tools/mkdoc.py $< $@
+
+clean distclean:
+       rm -f *.o *.so *.pyc *~ core gmon.out tests/*~ tests/gmon.out examples/*~
+       make -C tests/gmp-compat-test clean
+       rm -f $(TARGETS) $(EXAMPLES)
diff --git a/polly/lib/External/isl/imath/README.md b/polly/lib/External/isl/imath/README.md
new file mode 100644 (file)
index 0000000..a6d4d2b
--- /dev/null
@@ -0,0 +1,107 @@
+IMath
+=====
+
+Arbitrary precision integer and rational arithmetic library.
+
+IMath is an open-source ANSI C arbitrary precision integer and rational
+arithmetic library.
+
+IMath is copyright &copy; 2002-2009 Michael J. Fromberger.
+
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> SOFTWARE.
+
+
+About IMath
+-----------
+
+IMath is a library written in portable ANSI C that allows you to perform
+arithmetic on integers and rational numbers of arbitrary precision.  While many
+programming languages, including Java, Perl, and Python provide arbitrary
+precision numbers as a standard library or language feature, C does not.
+
+IMath was designed to be small, self-contained, easy to understand and use, and
+as portable as possible across various platforms.  The API is simple, and the
+code should be comparatively easy to modify or extend.  Simplicity and
+portability are useful goals for some applications&#8212;however, IMath does
+not attempt to break performance records.  If you need the fastest possible
+implementation, you might consider some other libraries, such as GNU MP (GMP),
+MIRACL, or the bignum library from OpenSSL.
+
+Programming with IMath
+----------------------
+
+Detailed descriptions of the IMath API can be found in [doc.md](doc.md).
+However, the following is a brief synopsis of how to get started with some
+simple tasks.
+
+To do basic integer arithmetic, you must declare variables of type `mpz_t` in
+your program, and call the functions defined in `imath.h` to operate on them.
+Here is a simple example that reads one base-10 integer from the command line,
+multiplies it by another (fixed) value, and prints the result to the standard
+output in base-10 notation:
+
+    #include <stdio.h>
+    #include <stdlib.h>
+    #include "imath.h"
+
+    int main(int argc, char *argv[])
+    {
+      mpz_t  a, b;
+      char  *buf;
+      int    len;
+
+      if(argc < 2) {
+        fprintf(stderr, "Usage: testprogram <integer>\n");
+        return 1;
+      }
+
+      /* Initialize a new zero-valued mpz_t structure */
+      mp_int_init(&a);
+
+      /* Initialize a new mpz_t with a small integer value */
+      mp_int_init_value(&b, 25101);
+
+      /* Read a string value in the specified radix */
+      mp_int_read_string(&a, 10, argv[1]);
+
+      /* Multiply the two together... */
+      mp_int_mul(&a, &b, &a);
+
+      /* Print out the result */
+      len = mp_int_string_len(&a, 10);
+      buf = calloc(len, sizeof(*buf));
+      mp_int_to_string(&a, 10, buf, len);
+      printf("result = %s\n", buf);
+      free(buf);
+
+      /* Release memory occupied by mpz_t structures when finished */
+      mp_int_clear(&b);
+      mp_int_clear(&a);
+
+      return 0;
+    }
+
+This simple example program does not do any error checking, but all the IMath
+API functions return an `mp_result` value which can be used to detect various
+problems like range errors, running out of memory, and undefined results.
+
+The IMath API also supports operations on arbitrary precision rational numbers.
+The functions for creating and manipulating rational values (type `mpq_t`) are
+defined in `imrat.h`, so that you need only include them in your project if you
+wish to.
diff --git a/polly/lib/External/isl/imath/contrib/Makefile.msvc b/polly/lib/External/isl/imath/contrib/Makefile.msvc
new file mode 100644 (file)
index 0000000..0eb24fb
--- /dev/null
@@ -0,0 +1,84 @@
+##
+## Name:     Makefile.msvc
+## Purpose:  Makefile for IMath library and associated tools
+##           for Microsoft Visual Studio 2005
+## Author:   Matus Horvath <matus.horvath@nextra.sk>
+##
+## Copyright (C) 2006 Matus Horvath.  Permission has been granted to use,
+## modify, and redistribute this file according to the terms of the IMath
+## license.
+##
+## Usage: nmake /f Makefile.msvc
+##
+
+# --- begin configuration section ---
+
+## Settings for Microsoft Windows systems using nmake.
+## To build with debugging, add DEBUG=Y on the "nmake" command line.
+CC=cl.exe
+LD=link.exe
+CFLAGS=$(CFLAGS) -nologo -I. -D_CRT_SECURE_NO_DEPRECATE $(DCFLAGS)
+LDFLAGS=$(LDFLAGS) -nologo $(DLDFLAGS)
+LIBS=$(DLIBS)
+
+!if "$(DEBUG)" == "Y"
+DCFLAGS=-ZI -Od -DDEBUG=1 -DTRACEABLE_FREE=1
+DLDFLAGS=-DEBUG
+#DLIBS=-lefence
+!else
+DCFLAGS=-O2 -Ob2
+DLDFLAGS=
+#DLIBS=
+!endif
+
+## Visual Studio C/C++ 2005 compiler supports "long long" 64-bit type.  
+CFLAGS=$(CFLAGS) -DUSE_LONG_LONG
+
+# --- end of configuration section ---
+TARGETS=imtest.exe pi.exe bintest.exe findprime.exe
+HDRS=imath.h imrat.h iprime.h imdrover.h rsamath.h
+SRCS=$(HDRS:.h=.c) $(TARGETS:.exe=.c)
+OBJS=$(SRCS:.c=.obj)
+EXAMPLES=input.exe basecvt.exe rounding.exe
+
+.c.obj:
+       $(CC) $(CFLAGS) -c $<
+
+all: objs examples test
+
+objs: $(OBJS)
+
+# Because Visual Studio does not permit Unix shell syntax, you will
+# have to run the tests manually once the "test" target is built.
+test: imtest.exe pi.exe
+#      @ echo ""
+#      @ echo "Running tests, you should not see any 'FAILED' lines here."
+#      @ echo "If you do, please see doc.txt for how to report a bug."
+#      @ echo ""
+#      (cd tests && ./test.sh)
+
+$(EXAMPLES): imath.obj imrat.obj iprime.obj examples/$*.obj
+       @move $*.obj examples/$*.obj
+       $(LD) $(LDFLAGS) -out:$@ $** $(LIBS)
+
+examples: $(EXAMPLES)
+
+imtest.exe: imtest.obj imath.obj imrat.obj imdrover.obj
+       $(LD) $(LDFLAGS) -out:$@ $** $(LIBS)
+
+pi.exe: pi.obj imath.obj
+       $(LD) $(LDFLAGS) -out:$@ $** $(LIBS)
+
+findprime.exe: findprime.obj imath.obj iprime.obj
+       $(LD) $(LDFLAGS) -out:$@ $** $(LIBS)
+
+rtest.exe: rtest.obj imath.obj rsamath.obj
+       $(LD) $(LDFLAGS) -out:$@ $** $(LIBS)
+
+bintest.exe: imath.obj bintest.obj
+       $(LD) $(LDFLAGS) -out:$@ $** $(LIBS)
+
+clean:
+       del /q /f *.exe *.obj examples\*.obj
+
+# End of Makefile.msvc
diff --git a/polly/lib/External/isl/imath/contrib/README b/polly/lib/External/isl/imath/contrib/README
new file mode 100644 (file)
index 0000000..b699944
--- /dev/null
@@ -0,0 +1,3 @@
+The files in this directory have been contributed to the IMath project
+by other authors.
+
diff --git a/polly/lib/External/isl/imath/doc.md b/polly/lib/External/isl/imath/doc.md
new file mode 100644 (file)
index 0000000..93ea010
--- /dev/null
@@ -0,0 +1,1198 @@
+<!--
+  This file was generated from "doc.md.in" by mkdoc.py
+  DO NOT EDIT
+-->
+
+# User Documentation for the IMath Library
+
+Author: [M. J. Fromberger](https://github.com/creachadair)
+
+## Installation
+
+1. Edit Makefile to select compiler and options.  The default is to use gcc.
+   You may want to change CC to `clang` instead of `gcc` (and on macOS that
+   what you will get anyway), but you should be able to use the default GCC
+   settings for either.
+
+   By default, the Makefile assumes you can use 64-bit integer types, even
+   though they were not standard in ANSI C90. If you cannot, add
+   `-DUSE_32BIT_WORDS` to the compiler options.
+
+2. Type `make` or `make test` to build the test driver and run the unit tests.
+   None of these should fail.  If they do, see below for how you can report
+   bugs.
+
+   To build with debugging enabled (and optimization disabled), run `make
+   DEBUG=Y`.  This sets the preprocessor macro `DEBUG` to 1, and several other
+   things (see Makefile for details).
+
+To use the library in your code, include "imath.h" wherever you intend to use
+the library's routines.  The integer library is just a single source file, so
+you can compile it into your project in whatever way makes sense.  If you wish
+to use rational arithmetic, you will also need to include "imrat.h".
+
+## Background
+
+The basic types defined by the imath library are `mpz_t`, an arbitrary
+precision signed integer, and `mpq_t`, an arbitrary precision signed rational
+number.  The type `mp_int` is a pointer to an `mpz_t`, and `mp_rat` is a
+pointer to an `mpq_t`.
+
+Most of the functions in the imath library return a value of type `mp_result`.
+This is a signed integer type which can be used to convey status information
+and also return small values.  Any negative value is considered to be a status
+message.  The following constants are defined for processing these:
+
+| Status      | Description                                  |
+| ----------- | -------------------------------------------- |
+| `MP_OK`     | operation successful, all is well (= 0)      |
+| `MP_FALSE`  | boolean false (= `MP_OK`)                    |
+| `MP_TRUE`   | boolean true                                 |
+| `MP_MEMORY` | out of memory                                |
+| `MP_RANGE`  | parameter out of range                       |
+| `MP_UNDEF`  | result is undefined (e.g., division by zero) |
+| `MP_TRUNC`  | output value was truncated                   |
+| `MP_BADARG` | an invalid parameter was passed              |
+
+If you obtain a zero or negative value of an `mp_result`, you can use the
+`mp_error_string()` routine to obtain a pointer to a brief human-readable
+string describing the error.  These strings are statically allocated, so they
+need not be freed by the caller; the same strings are re-used from call to
+call.
+
+Unless otherwise noted, it is legal to use the same parameter for both inputs
+and output with most of the functions in this library.  For example, you can
+add a number to itself and replace the original by writing:
+
+    mp_int_add(a, a, a);  /* a = a + a */
+
+Any cases in which this is not legal will be noted in the function summaries
+below (if you discover that this is not so, please report it as a bug; I will
+fix either the function or the documentation :)
+
+## The IMath API
+
+Each of the API functions is documented here.  The general format of the
+entries is:
+
+> ------------
+> <pre>
+> return_type function_name(parameters ...)
+> </pre>
+>  -  English description.
+
+Unless otherwise noted, any API function that returns `mp_result` may be
+expected to return `MP_OK`, `MP_BADARG`, or `MP_MEMORY`.  Other return values
+should be documented in the description.  Please let me know if you discover
+this is not the case.
+
+The following macros are defined in "imath.h", to define the sizes of the
+various data types used in the library:
+
+| Constant        | Description
+| --------------- | ----------------------------------------
+| `MP_DIGIT_BIT`  | the number of bits in a single `mpz_t` digit.
+| `MP_WORD_BIT`   | the number of bits in a `mpz_t` word.
+| `MP_SMALL_MIN`  | the minimum value representable by an `mp_small`.
+| `MP_SMALL_MAX`  | the maximum value representable by an `mp_small`.
+| `MP_USMALL_MAX` | the maximum value representable by an `mp_usmall`.
+| `MP_MIN_RADIX`  | the minimum radix accepted for base conversion.
+| `MP_MAX_RADIX`  | the maximum radix accepted for base conversion.
+
+#### Initialization
+
+An `mp_int` must be initialized before use. By default, an `mp_int` is
+initialized with a certain minimum amount of storage for digits, and the
+storage is expanded automatically as needed.  To initialize an `mp_int`, use
+the following functions:
+
+------------
+<a id="mp_int_init"></a><pre>
+mp_result <a href="imath.h#L115">mp_int_init</a>(mp_int z);
+</pre>
+ -  Initializes `z` with 1-digit precision and sets it to zero.  This function
+    cannot fail unless `z == NULL`.
+
+------------
+<a id="mp_int_alloc"></a><pre>
+mp_int <a href="imath.h#L119">mp_int_alloc</a>(void);
+</pre>
+ -  Allocates a fresh zero-valued `mpz_t` on the heap, returning NULL in case
+    of error. The only possible error is out-of-memory.
+
+------------
+<a id="mp_int_init_size"></a><pre>
+mp_result <a href="imath.h#L124">mp_int_init_size</a>(mp_int z, mp_size prec);
+</pre>
+ -  Initializes `z` with at least `prec` digits of storage, and sets it to
+    zero. If `prec` is zero, the default precision is used. In either case the
+    size is rounded up to the nearest multiple of the word size.
+
+------------
+<a id="mp_int_init_copy"></a><pre>
+mp_result <a href="imath.h#L128">mp_int_init_copy</a>(mp_int z, mp_int old);
+</pre>
+ -  Initializes `z` to be a copy of an already-initialized value in `old`. The
+    new copy does not share storage with the original.
+
+------------
+<a id="mp_int_init_value"></a><pre>
+mp_result <a href="imath.h#L131">mp_int_init_value</a>(mp_int z, mp_small value);
+</pre>
+ -  Initializes `z` to the specified signed `value` at default precision.
+
+
+
+#### Cleanup
+
+When you are finished with an `mp_int`, you must free the memory it uses:
+
+------------
+<a id="mp_int_clear"></a><pre>
+void <a href="imath.h#L143">mp_int_clear</a>(mp_int z);
+</pre>
+ -  Releases the storage used by `z`.
+
+------------
+<a id="mp_int_free"></a><pre>
+void <a href="imath.h#L147">mp_int_free</a>(mp_int z);
+</pre>
+ -  Releases the storage used by `z` and also `z` itself.
+    This should only be used for `z` allocated by `mp_int_alloc()`.
+
+
+
+#### Setting Values
+
+To set an `mp_int` which has already been initialized to a small integer value,
+use:
+
+------------
+<a id="mp_int_set_value"></a><pre>
+mp_result <a href="imath.h#L137">mp_int_set_value</a>(mp_int z, mp_small value);
+</pre>
+ -  Sets `z` to the value of the specified signed `value`.
+
+------------
+<a id="mp_int_set_uvalue"></a><pre>
+mp_result <a href="imath.h#L140">mp_int_set_uvalue</a>(mp_int z, mp_usmall uvalue);
+</pre>
+ -  Sets `z` to the value of the specified unsigned `value`.
+
+
+
+To copy one initialized `mp_int` to another, use:
+
+------------
+<a id="mp_int_copy"></a><pre>
+mp_result <a href="imath.h#L151">mp_int_copy</a>(mp_int a, mp_int c);
+</pre>
+ -  Replaces the value of `c` with a copy of the value of `a`. No new memory is
+    allocated unless `a` has more significant digits than `c` has allocated.
+
+
+
+### Arithmetic Functions
+
+------------
+<a id="mp_int_is_odd"></a><pre>
+static inline bool <a href="imath.h#L108">mp_int_is_odd</a>(mp_int z);
+</pre>
+ -  Reports whether `z` is odd, having remainder 1 when divided by 2.
+
+------------
+<a id="mp_int_is_even"></a><pre>
+static inline bool <a href="imath.h#L111">mp_int_is_even</a>(mp_int z);
+</pre>
+ -  Reports whether `z` is even, having remainder 0 when divided by 2.
+
+------------
+<a id="mp_int_zero"></a><pre>
+void <a href="imath.h#L157">mp_int_zero</a>(mp_int z);
+</pre>
+ -  Sets `z` to zero. The allocated storage of `z` is not changed.
+
+------------
+<a id="mp_int_abs"></a><pre>
+mp_result <a href="imath.h#L160">mp_int_abs</a>(mp_int a, mp_int c);
+</pre>
+ -  Sets `c` to the absolute value of `a`.
+
+------------
+<a id="mp_int_neg"></a><pre>
+mp_result <a href="imath.h#L163">mp_int_neg</a>(mp_int a, mp_int c);
+</pre>
+ -  Sets `c` to the additive inverse (negation) of `a`.
+
+------------
+<a id="mp_int_add"></a><pre>
+mp_result <a href="imath.h#L166">mp_int_add</a>(mp_int a, mp_int b, mp_int c);
+</pre>
+ -  Sets `c` to the sum of `a` and `b`.
+
+------------
+<a id="mp_int_add_value"></a><pre>
+mp_result <a href="imath.h#L169">mp_int_add_value</a>(mp_int a, mp_small value, mp_int c);
+</pre>
+ -  Sets `c` to the sum of `a` and `value`.
+
+------------
+<a id="mp_int_sub"></a><pre>
+mp_result <a href="imath.h#L172">mp_int_sub</a>(mp_int a, mp_int b, mp_int c);
+</pre>
+ -  Sets `c` to the difference of `a` less `b`.
+
+------------
+<a id="mp_int_sub_value"></a><pre>
+mp_result <a href="imath.h#L175">mp_int_sub_value</a>(mp_int a, mp_small value, mp_int c);
+</pre>
+ -  Sets `c` to the difference of `a` less `value`.
+
+------------
+<a id="mp_int_mul"></a><pre>
+mp_result <a href="imath.h#L178">mp_int_mul</a>(mp_int a, mp_int b, mp_int c);
+</pre>
+ -  Sets `c` to the product of `a` and `b`.
+
+------------
+<a id="mp_int_mul_value"></a><pre>
+mp_result <a href="imath.h#L181">mp_int_mul_value</a>(mp_int a, mp_small value, mp_int c);
+</pre>
+ -  Sets `c` to the product of `a` and `value`.
+
+------------
+<a id="mp_int_mul_pow2"></a><pre>
+mp_result <a href="imath.h#L184">mp_int_mul_pow2</a>(mp_int a, mp_small p2, mp_int c);
+</pre>
+ -  Sets `c` to the product of `a` and `2^p2`. Requires `p2 >= 0`.
+
+------------
+<a id="mp_int_sqr"></a><pre>
+mp_result <a href="imath.h#L187">mp_int_sqr</a>(mp_int a, mp_int c);
+</pre>
+ -  Sets `c` to the square of `a`.
+
+------------
+<a id="mp_int_root"></a><pre>
+mp_result <a href="imath.h#L306">mp_int_root</a>(mp_int a, mp_small b, mp_int c);
+</pre>
+ -  Sets `c` to the greatest integer not less than the `b`th root of `a`,
+    using Newton's root-finding algorithm.
+    It returns `MP_UNDEF` if `a < 0` and `b` is even.
+
+------------
+<a id="mp_int_sqrt"></a><pre>
+static inline mp_result <a href="imath.h#L310">mp_int_sqrt</a>(mp_int a, mp_int c);
+</pre>
+ -  Sets `c` to the greatest integer not less than the square root of `a`.
+    This is a special case of `mp_int_root()`.
+
+------------
+<a id="mp_int_div"></a><pre>
+mp_result <a href="imath.h#L195">mp_int_div</a>(mp_int a, mp_int b, mp_int q, mp_int r);
+</pre>
+ -  Sets `q` and `r` to the quotent and remainder of `a / b`. Division by
+    powers of 2 is detected and handled efficiently.  The remainder is pinned
+    to `0 <= r < b`.
+
+    Either of `q` or `r` may be NULL, but not both, and `q` and `r` may not
+    point to the same value.
+
+------------
+<a id="mp_int_div_value"></a><pre>
+mp_result <a href="imath.h#L200">mp_int_div_value</a>(mp_int a, mp_small value, mp_int q, mp_small *r);
+</pre>
+ -  Sets `q` and `*r` to the quotent and remainder of `a / value`. Division by
+    powers of 2 is detected and handled efficiently. The remainder is pinned to
+    `0 <= *r < b`. Either of `q` or `r` may be NULL.
+
+------------
+<a id="mp_int_div_pow2"></a><pre>
+mp_result <a href="imath.h#L206">mp_int_div_pow2</a>(mp_int a, mp_small p2, mp_int q, mp_int r);
+</pre>
+ -  Sets `q` and `r` to the quotient and remainder of `a / 2^p2`. This is a
+    special case for division by powers of two that is more efficient than
+    using ordinary division. Note that `mp_int_div()` will automatically handle
+    this case, this function is for cases where you have only the exponent.
+
+------------
+<a id="mp_int_mod"></a><pre>
+mp_result <a href="imath.h#L210">mp_int_mod</a>(mp_int a, mp_int m, mp_int c);
+</pre>
+ -  Sets `c` to the remainder of `a / m`.
+    The remainder is pinned to `0 <= c < m`.
+
+------------
+<a id="mp_int_mod_value"></a><pre>
+static inline mp_result <a href="imath.h#L226">mp_int_mod_value</a>(mp_int a, mp_small value, mp_small* r);
+</pre>
+ -  Sets `*r` to the remainder of `a / value`.
+    The remainder is pinned to `0 <= r < value`.
+
+------------
+<a id="mp_int_expt"></a><pre>
+mp_result <a href="imath.h#L214">mp_int_expt</a>(mp_int a, mp_small b, mp_int c);
+</pre>
+ -  Sets `c` to the value of `a` raised to the `b` power.
+    It returns `MP_RANGE` if `b < 0`.
+
+------------
+<a id="mp_int_expt_value"></a><pre>
+mp_result <a href="imath.h#L218">mp_int_expt_value</a>(mp_small a, mp_small b, mp_int c);
+</pre>
+ -  Sets `c` to the value of `a` raised to the `b` power.
+    It returns `MP_RANGE` if `b < 0`.
+
+------------
+<a id="mp_int_expt_full"></a><pre>
+mp_result <a href="imath.h#L222">mp_int_expt_full</a>(mp_int a, mp_int b, mp_int c);
+</pre>
+ -  Sets `c` to the value of `a` raised to the `b` power.
+    It returns `MP_RANGE`) if `b < 0`.
+
+
+
+### Comparison Functions
+
+Unless otherwise specified, comparison between values `x` and `y` returns a
+**comparator**, an integer value < 0 if `x` is less than `y`, 0 if `x` is equal
+to `y`, and > 0 if `x` is greater than `y`.
+
+------------
+<a id="mp_int_compare"></a><pre>
+int <a href="imath.h#L232">mp_int_compare</a>(mp_int a, mp_int b);
+</pre>
+ -  Returns the comparator of `a` and `b`.
+
+------------
+<a id="mp_int_compare_unsigned"></a><pre>
+int <a href="imath.h#L236">mp_int_compare_unsigned</a>(mp_int a, mp_int b);
+</pre>
+ -  Returns the comparator of the magnitudes of `a` and `b`, disregarding their
+    signs. Neither `a` nor `b` is modified by the comparison.
+
+------------
+<a id="mp_int_compare_zero"></a><pre>
+int <a href="imath.h#L239">mp_int_compare_zero</a>(mp_int z);
+</pre>
+ -  Returns the comparator of `z` and zero.
+
+------------
+<a id="mp_int_compare_value"></a><pre>
+int <a href="imath.h#L242">mp_int_compare_value</a>(mp_int z, mp_small v);
+</pre>
+ -  Returns the comparator of `z` and the signed value `v`.
+
+------------
+<a id="mp_int_compare_uvalue"></a><pre>
+int <a href="imath.h#L245">mp_int_compare_uvalue</a>(mp_int z, mp_usmall uv);
+</pre>
+ -  Returns the comparator of `z` and the unsigned value `uv`.
+
+------------
+<a id="mp_int_divisible_value"></a><pre>
+bool <a href="imath.h#L248">mp_int_divisible_value</a>(mp_int a, mp_small v);
+</pre>
+ -  Reports whether `a` is divisible by `v`.
+
+------------
+<a id="mp_int_is_pow2"></a><pre>
+int <a href="imath.h#L252">mp_int_is_pow2</a>(mp_int z);
+</pre>
+ -  Returns `k >= 0` such that `z` is `2^k`, if such a `k` exists. If no such
+    `k` exists, the function returns -1.
+
+
+
+### Modular Operations
+
+------------
+<a id="mp_int_exptmod"></a><pre>
+mp_result <a href="imath.h#L256">mp_int_exptmod</a>(mp_int a, mp_int b, mp_int m, mp_int c);
+</pre>
+ -  Sets `c` to the value of `a` raised to the `b` power, reduced modulo `m`.
+    It returns `MP_RANGE` if `b < 0` or `MP_UNDEF` if `m == 0`.
+
+------------
+<a id="mp_int_exptmod_evalue"></a><pre>
+mp_result <a href="imath.h#L260">mp_int_exptmod_evalue</a>(mp_int a, mp_small value, mp_int m, mp_int c);
+</pre>
+ -  Sets `c` to the value of `a` raised to the `value` power, modulo `m`.
+    It returns `MP_RANGE` if `value < 0` or `MP_UNDEF` if `m == 0`.
+
+------------
+<a id="mp_int_exptmod_bvalue"></a><pre>
+mp_result <a href="imath.h#L264">mp_int_exptmod_bvalue</a>(mp_small value, mp_int b, mp_int m, mp_int c);
+</pre>
+ -  Sets `c` to the value of `value` raised to the `b` power, modulo `m`.
+    It returns `MP_RANGE` if `b < 0` or `MP_UNDEF` if `m == 0`.
+
+------------
+<a id="mp_int_exptmod_known"></a><pre>
+mp_result <a href="imath.h#L271">mp_int_exptmod_known</a>(mp_int a, mp_int b, mp_int m, mp_int mu, mp_int c);
+</pre>
+ -  Sets `c` to the value of `a` raised to the `b` power, reduced modulo `m`,
+    given a precomputed reduction constant `mu` defined for Barrett's modular
+    reduction algorithm.
+
+    It returns `MP_RANGE` if `b < 0` or `MP_UNDEF` if `m == 0`.
+
+------------
+<a id="mp_int_redux_const"></a><pre>
+mp_result <a href="imath.h#L275">mp_int_redux_const</a>(mp_int m, mp_int c);
+</pre>
+ -  Sets `c` to the reduction constant for Barrett reduction by modulus `m`.
+    Requires that `c` and `m` point to distinct locations.
+
+------------
+<a id="mp_int_invmod"></a><pre>
+mp_result <a href="imath.h#L282">mp_int_invmod</a>(mp_int a, mp_int m, mp_int c);
+</pre>
+ -  Sets `c` to the multiplicative inverse of `a` modulo `m`, if it exists.
+    The least non-negative representative of the congruence class is computed.
+
+    It returns `MP_UNDEF` if the inverse does not exist, or `MP_RANGE` if `a ==
+    0` or `m <= 0`.
+
+------------
+<a id="mp_int_gcd"></a><pre>
+mp_result <a href="imath.h#L288">mp_int_gcd</a>(mp_int a, mp_int b, mp_int c);
+</pre>
+ -  Sets `c` to the greatest common divisor of `a` and `b`.
+
+    It returns `MP_UNDEF` if the GCD is undefined, such as for example if `a`
+    and `b` are both zero.
+
+------------
+<a id="mp_int_egcd"></a><pre>
+mp_result <a href="imath.h#L295">mp_int_egcd</a>(mp_int a, mp_int b, mp_int c, mp_int x, mp_int y);
+</pre>
+ -  Sets `c` to the greatest common divisor of `a` and `b`, and sets `x` and
+    `y` to values satisfying Bezout's identity `gcd(a, b) = ax + by`.
+
+    It returns `MP_UNDEF` if the GCD is undefined, such as for example if `a`
+    and `b` are both zero.
+
+------------
+<a id="mp_int_lcm"></a><pre>
+mp_result <a href="imath.h#L301">mp_int_lcm</a>(mp_int a, mp_int b, mp_int c);
+</pre>
+ -  Sets `c` to the least common multiple of `a` and `b`.
+
+    It returns `MP_UNDEF` if the LCM is undefined, such as for example if `a`
+    and `b` are both zero.
+
+
+
+### Conversion of Values
+
+------------
+<a id="mp_int_to_int"></a><pre>
+mp_result <a href="imath.h#L315">mp_int_to_int</a>(mp_int z, mp_small *out);
+</pre>
+ -  Returns `MP_OK` if `z` is representable as `mp_small`, else `MP_RANGE`.
+    If `out` is not NULL, `*out` is set to the value of `z` when `MP_OK`.
+
+------------
+<a id="mp_int_to_uint"></a><pre>
+mp_result <a href="imath.h#L319">mp_int_to_uint</a>(mp_int z, mp_usmall *out);
+</pre>
+ -  Returns `MP_OK` if `z` is representable as `mp_usmall`, or `MP_RANGE`.
+    If `out` is not NULL, `*out` is set to the value of `z` when `MP_OK`.
+
+------------
+<a id="mp_int_to_string"></a><pre>
+mp_result <a href="imath.h#L327">mp_int_to_string</a>(mp_int z, mp_size radix, char *str, int limit);
+</pre>
+ -  Converts `z` to a zero-terminated string of characters in the specified
+    `radix`, writing at most `limit` characters to `str` including the
+    terminating NUL value. A leading `-` is used to indicate a negative value.
+
+    Returns `MP_TRUNC` if `limit` was to small to write all of `z`.
+    Requires `MP_MIN_RADIX <= radix <= MP_MAX_RADIX`.
+
+------------
+<a id="mp_int_string_len"></a><pre>
+mp_result <a href="imath.h#L332">mp_int_string_len</a>(mp_int z, mp_size radix);
+</pre>
+ -  Reports the minimum number of characters required to represent `z` as a
+    zero-terminated string in the given `radix`.
+    Requires `MP_MIN_RADIX <= radix <= MP_MAX_RADIX`.
+
+------------
+<a id="mp_int_read_string"></a><pre>
+mp_result <a href="imath.h#L347">mp_int_read_string</a>(mp_int z, mp_size radix, const char *str);
+</pre>
+ -  Reads a string of ASCII digits in the specified `radix` from the zero
+    terminated `str` provided into `z`. For values of `radix > 10`, the letters
+    `A`..`Z` or `a`..`z` are accepted. Letters are interpreted without respect
+    to case.
+
+    Leading whitespace is ignored, and a leading `+` or `-` is interpreted as a
+    sign flag. Processing stops when a NUL or any other character out of range
+    for a digit in the given radix is encountered.
+
+    If the whole string was consumed, `MP_OK` is returned; otherwise
+    `MP_TRUNC`. is returned.
+
+    Requires `MP_MIN_RADIX <= radix <= MP_MAX_RADIX`.
+
+------------
+<a id="mp_int_read_cstring"></a><pre>
+mp_result <a href="imath.h#L365">mp_int_read_cstring</a>(mp_int z, mp_size radix, const char *str, char **end);
+</pre>
+ -  Reads a string of ASCII digits in the specified `radix` from the zero
+    terminated `str` provided into `z`. For values of `radix > 10`, the letters
+    `A`..`Z` or `a`..`z` are accepted. Letters are interpreted without respect
+    to case.
+
+    Leading whitespace is ignored, and a leading `+` or `-` is interpreted as a
+    sign flag. Processing stops when a NUL or any other character out of range
+    for a digit in the given radix is encountered.
+
+    If the whole string was consumed, `MP_OK` is returned; otherwise
+    `MP_TRUNC`. is returned. If `end` is not NULL, `*end` is set to point to
+    the first unconsumed byte of the input string (the NUL byte if the whole
+    string was consumed). This emulates the behavior of the standard C
+    `strtol()` function.
+
+    Requires `MP_MIN_RADIX <= radix <= MP_MAX_RADIX`.
+
+------------
+<a id="mp_int_count_bits"></a><pre>
+mp_result <a href="imath.h#L368">mp_int_count_bits</a>(mp_int z);
+</pre>
+ -  Returns the number of significant bits in `z`.
+
+------------
+<a id="mp_int_to_binary"></a><pre>
+mp_result <a href="imath.h#L383">mp_int_to_binary</a>(mp_int z, unsigned char *buf, int limit);
+</pre>
+ -  Converts `z` to 2's complement binary, writing at most `limit` bytes into
+    the given `buf`.  Returns `MP_TRUNC` if the buffer limit was too small to
+    contain the whole value.  If this occurs, the contents of buf will be
+    effectively garbage, as the function uses the buffer as scratch space.
+
+    The binary representation of `z` is in base-256 with digits ordered from
+    most significant to least significant (network byte ordering).  The
+    high-order bit of the first byte is set for negative values, clear for
+    non-negative values.
+
+    As a result, non-negative values will be padded with a leading zero byte if
+    the high-order byte of the base-256 magnitude is set.  This extra byte is
+    accounted for by the `mp_int_binary_len()` function.
+
+------------
+<a id="mp_int_read_binary"></a><pre>
+mp_result <a href="imath.h#L388">mp_int_read_binary</a>(mp_int z, unsigned char *buf, int len);
+</pre>
+ -  Reads a 2's complement binary value from `buf` into `z`, where `len` is the
+    length of the buffer.  The contents of `buf` may be overwritten during
+    processing, although they will be restored when the function returns.
+
+------------
+<a id="mp_int_binary_len"></a><pre>
+mp_result <a href="imath.h#L391">mp_int_binary_len</a>(mp_int z);
+</pre>
+ -  Returns the number of bytes to represent `z` in 2's complement binary.
+
+------------
+<a id="mp_int_to_unsigned"></a><pre>
+mp_result <a href="imath.h#L402">mp_int_to_unsigned</a>(mp_int z, unsigned char *buf, int limit);
+</pre>
+ -  Converts the magnitude of `z` to unsigned binary, writing at most `limit`
+    bytes into the given `buf`.  The sign of `z` is ignored, but `z` is not
+    modified.  Returns `MP_TRUNC` if the buffer limit was too small to contain
+    the whole value.  If this occurs, the contents of `buf` will be effectively
+    garbage, as the function uses the buffer as scratch space during
+    conversion.
+
+    The binary representation of `z` is in base-256 with digits ordered from
+    most significant to least significant (network byte ordering).
+
+------------
+<a id="mp_int_read_unsigned"></a><pre>
+mp_result <a href="imath.h#L407">mp_int_read_unsigned</a>(mp_int z, unsigned char *buf, int len);
+</pre>
+ -  Reads an unsigned binary value from `buf` into `z`, where `len` is the
+    length of the buffer. The contents of `buf` are not modified during
+    processing.
+
+------------
+<a id="mp_int_unsigned_len"></a><pre>
+mp_result <a href="imath.h#L411">mp_int_unsigned_len</a>(mp_int z);
+</pre>
+ -  Returns the number of bytes required to represent `z` as an unsigned binary
+    value in base 256.
+
+
+
+### Other Functions
+
+Ordinarily, integer multiplication and squaring are done using the simple
+quadratic "schoolbook" algorithm.  However, for sufficiently large values,
+there is a more efficient algorithm usually attributed to Karatsuba and Ofman
+that is usually faster.  See Knuth Vol. 2 for more details about how this
+algorithm works.
+
+The breakpoint between the "normal" and the recursive algorithm is controlled
+by a static digit threshold defined in `imath.c`. Values with fewer significant
+digits use the standard algorithm.  This value can be modified by calling
+`mp_int_multiply_threshold(n)`.  The `imtimer` program and the
+`findthreshold.py` script (Python) can help you find a suitable value for for
+your particular platform.
+
+------------
+<a id="mp_error_string"></a><pre>
+const char *<a href="imath.h#L416">mp_error_string</a>(mp_result res);
+</pre>
+ -  Returns a pointer to a brief, human-readable, zero-terminated string
+    describing `res`. The returned string is statically allocated and must not
+    be freed by the caller.
+
+
+
+## Rational Arithmetic
+
+------------
+<a id="mp_rat_init"></a><pre>
+mp_result <a href="imrat.h#L59">mp_rat_init</a>(mp_rat r);
+</pre>
+ -  Initializes `r` with 1-digit precision and sets it to zero. This function
+    cannot fail unless `r` is NULL.
+
+------------
+<a id="mp_rat_alloc"></a><pre>
+mp_rat <a href="imrat.h#L63">mp_rat_alloc</a>(void);
+</pre>
+ -  Allocates a fresh zero-valued `mpq_t` on the heap, returning NULL in case
+    of error. The only possible error is out-of-memory.
+
+------------
+<a id="mp_rat_reduce"></a><pre>
+mp_result <a href="imrat.h#L69">mp_rat_reduce</a>(mp_rat r);
+</pre>
+ -  Reduces `r` in-place to lowest terms and canonical form.
+
+    Zero is represented as 0/1, one as 1/1, and signs are adjusted so that the
+    sign of the value is carried by the numerator.
+
+------------
+<a id="mp_rat_init_size"></a><pre>
+mp_result <a href="imrat.h#L76">mp_rat_init_size</a>(mp_rat r, mp_size n_prec, mp_size d_prec);
+</pre>
+ -  Initializes `r` with at least `n_prec` digits of storage for the numerator
+    and `d_prec` digits of storage for the denominator, and value zero.
+
+    If either precision is zero, the default precision is used, rounded up to
+    the nearest word size.
+
+------------
+<a id="mp_rat_init_copy"></a><pre>
+mp_result <a href="imrat.h#L80">mp_rat_init_copy</a>(mp_rat r, mp_rat old);
+</pre>
+ -  Initializes `r` to be a copy of an already-initialized value in `old`. The
+    new copy does not share storage with the original.
+
+------------
+<a id="mp_rat_set_value"></a><pre>
+mp_result <a href="imrat.h#L84">mp_rat_set_value</a>(mp_rat r, mp_small numer, mp_small denom);
+</pre>
+ -  Sets the value of `r` to the ratio of signed `numer` to signed `denom`.  It
+    returns `MP_UNDEF` if `denom` is zero.
+
+------------
+<a id="mp_rat_set_uvalue"></a><pre>
+mp_result <a href="imrat.h#L88">mp_rat_set_uvalue</a>(mp_rat r, mp_usmall numer, mp_usmall denom);
+</pre>
+ -  Sets the value of `r` to the ratio of unsigned `numer` to unsigned
+    `denom`. It returns `MP_UNDEF` if `denom` is zero.
+
+------------
+<a id="mp_rat_clear"></a><pre>
+void <a href="imrat.h#L91">mp_rat_clear</a>(mp_rat r);
+</pre>
+ -  Releases the storage used by `r`.
+
+------------
+<a id="mp_rat_free"></a><pre>
+void <a href="imrat.h#L95">mp_rat_free</a>(mp_rat r);
+</pre>
+ -  Releases the storage used by `r` and also `r` itself.
+    This should only be used for `r` allocated by `mp_rat_alloc()`.
+
+------------
+<a id="mp_rat_numer"></a><pre>
+mp_result <a href="imrat.h#L98">mp_rat_numer</a>(mp_rat r, mp_int z);
+</pre>
+ -  Sets `z` to a copy of the numerator of `r`.
+
+------------
+<a id="mp_rat_numer_ref"></a><pre>
+mp_int <a href="imrat.h#L101">mp_rat_numer_ref</a>(mp_rat r);
+</pre>
+ -  Returns a pointer to the numerator of `r`.
+
+------------
+<a id="mp_rat_denom"></a><pre>
+mp_result <a href="imrat.h#L104">mp_rat_denom</a>(mp_rat r, mp_int z);
+</pre>
+ -  Sets `z` to a copy of the denominator of `r`.
+
+------------
+<a id="mp_rat_denom_ref"></a><pre>
+mp_int <a href="imrat.h#L107">mp_rat_denom_ref</a>(mp_rat r);
+</pre>
+ -  Returns a pointer to the denominator of `r`.
+
+------------
+<a id="mp_rat_sign"></a><pre>
+mp_sign <a href="imrat.h#L110">mp_rat_sign</a>(mp_rat r);
+</pre>
+ -  Reports the sign of `r`.
+
+------------
+<a id="mp_rat_copy"></a><pre>
+mp_result <a href="imrat.h#L115">mp_rat_copy</a>(mp_rat a, mp_rat c);
+</pre>
+ -  Sets `c` to a copy of the value of `a`. No new memory is allocated unless a
+    term of `a` has more significant digits than the corresponding term of `c`
+    has allocated.
+
+------------
+<a id="mp_rat_zero"></a><pre>
+void <a href="imrat.h#L118">mp_rat_zero</a>(mp_rat r);
+</pre>
+ -  Sets `r` to zero. The allocated storage of `r` is not changed.
+
+------------
+<a id="mp_rat_abs"></a><pre>
+mp_result <a href="imrat.h#L121">mp_rat_abs</a>(mp_rat a, mp_rat c);
+</pre>
+ -  Sets `c` to the absolute value of `a`.
+
+------------
+<a id="mp_rat_neg"></a><pre>
+mp_result <a href="imrat.h#L124">mp_rat_neg</a>(mp_rat a, mp_rat c);
+</pre>
+ -  Sets `c` to the absolute value of `a`.
+
+------------
+<a id="mp_rat_recip"></a><pre>
+mp_result <a href="imrat.h#L128">mp_rat_recip</a>(mp_rat a, mp_rat c);
+</pre>
+ -  Sets `c` to the reciprocal of `a` if the reciprocal is defined.
+    It returns `MP_UNDEF` if `a` is zero.
+
+------------
+<a id="mp_rat_add"></a><pre>
+mp_result <a href="imrat.h#L131">mp_rat_add</a>(mp_rat a, mp_rat b, mp_rat c);
+</pre>
+ -  Sets `c` to the sum of `a` and `b`.
+
+------------
+<a id="mp_rat_sub"></a><pre>
+mp_result <a href="imrat.h#L134">mp_rat_sub</a>(mp_rat a, mp_rat b, mp_rat c);
+</pre>
+ -  Sets `c` to the difference of `a` less `b`.
+
+------------
+<a id="mp_rat_mul"></a><pre>
+mp_result <a href="imrat.h#L137">mp_rat_mul</a>(mp_rat a, mp_rat b, mp_rat c);
+</pre>
+ -  Sets `c` to the product of `a` and `b`.
+
+------------
+<a id="mp_rat_div"></a><pre>
+mp_result <a href="imrat.h#L141">mp_rat_div</a>(mp_rat a, mp_rat b, mp_rat c);
+</pre>
+ -  Sets `c` to the ratio `a / b` if that ratio is defined.
+    It returns `MP_UNDEF` if `b` is zero.
+
+------------
+<a id="mp_rat_add_int"></a><pre>
+mp_result <a href="imrat.h#L144">mp_rat_add_int</a>(mp_rat a, mp_int b, mp_rat c);
+</pre>
+ -  Sets `c` to the sum of `a` and integer `b`.
+
+------------
+<a id="mp_rat_sub_int"></a><pre>
+mp_result <a href="imrat.h#L147">mp_rat_sub_int</a>(mp_rat a, mp_int b, mp_rat c);
+</pre>
+ -  Sets `c` to the difference of `a` less integer `b`.
+
+------------
+<a id="mp_rat_mul_int"></a><pre>
+mp_result <a href="imrat.h#L150">mp_rat_mul_int</a>(mp_rat a, mp_int b, mp_rat c);
+</pre>
+ -  Sets `c` to the product of `a` and integer `b`.
+
+------------
+<a id="mp_rat_div_int"></a><pre>
+mp_result <a href="imrat.h#L154">mp_rat_div_int</a>(mp_rat a, mp_int b, mp_rat c);
+</pre>
+ -  Sets `c` to the ratio `a / b` if that ratio is defined.
+    It returns `MP_UNDEF` if `b` is zero.
+
+------------
+<a id="mp_rat_expt"></a><pre>
+mp_result <a href="imrat.h#L158">mp_rat_expt</a>(mp_rat a, mp_small b, mp_rat c);
+</pre>
+ -  Sets `c` to the value of `a` raised to the `b` power.
+    It returns `MP_RANGE` if `b < 0`.
+
+------------
+<a id="mp_rat_compare"></a><pre>
+int <a href="imrat.h#L161">mp_rat_compare</a>(mp_rat a, mp_rat b);
+</pre>
+ -  Returns the comparator of `a` and `b`.
+
+------------
+<a id="mp_rat_compare_unsigned"></a><pre>
+int <a href="imrat.h#L165">mp_rat_compare_unsigned</a>(mp_rat a, mp_rat b);
+</pre>
+ -  Returns the comparator of the magnitudes of `a` and `b`, disregarding their
+    signs. Neither `a` nor `b` is modified by the comparison.
+
+------------
+<a id="mp_rat_compare_zero"></a><pre>
+int <a href="imrat.h#L168">mp_rat_compare_zero</a>(mp_rat r);
+</pre>
+ -  Returns the comparator of `r` and zero.
+
+------------
+<a id="mp_rat_compare_value"></a><pre>
+int <a href="imrat.h#L172">mp_rat_compare_value</a>(mp_rat r, mp_small n, mp_small d);
+</pre>
+ -  Returns the comparator of `r` and the signed ratio `n / d`.
+    It returns `MP_UNDEF` if `d` is zero.
+
+------------
+<a id="mp_rat_is_integer"></a><pre>
+bool <a href="imrat.h#L175">mp_rat_is_integer</a>(mp_rat r);
+</pre>
+ -  Reports whether `r` is an integer, having canonical denominator 1.
+
+------------
+<a id="mp_rat_to_ints"></a><pre>
+mp_result <a href="imrat.h#L180">mp_rat_to_ints</a>(mp_rat r, mp_small *num, mp_small *den);
+</pre>
+ -  Reports whether the numerator and denominator of `r` can be represented as
+    small signed integers, and if so stores the corresponding values to `num`
+    and `den`. It returns `MP_RANGE` if either cannot be so represented.
+
+------------
+<a id="mp_rat_to_string"></a><pre>
+mp_result <a href="imrat.h#L186">mp_rat_to_string</a>(mp_rat r, mp_size radix, char *str, int limit);
+</pre>
+ -  Converts `r` to a zero-terminated string of the format `"n/d"` with `n` and
+    `d` in the specified radix and writing no more than `limit` bytes to the
+    given output buffer `str`. The output of the numerator includes a sign flag
+    if `r` is negative.  Requires `MP_MIN_RADIX <= radix <= MP_MAX_RADIX`.
+
+------------
+<a id="mp_rat_to_decimal"></a><pre>
+mp_result <a href="imrat.h#L215">mp_rat_to_decimal</a>(mp_rat r, mp_size radix, mp_size prec, mp_round_mode round, char *str, int limit);
+</pre>
+ -  Converts the value of `r` to a string in decimal-point notation with the
+    specified radix, writing no more than `limit` bytes of data to the given
+    output buffer.  It generates `prec` digits of precision, and requires
+    `MP_MIN_RADIX <= radix <= MP_MAX_RADIX`.
+
+    Ratios usually must be rounded when they are being converted for output as
+    a decimal value.  There are four rounding modes currently supported:
+
+    ```
+      MP_ROUND_DOWN
+        Truncates the value toward zero.
+        Example:  12.009 to 2dp becomes 12.00
+    ```
+
+    ```
+      MP_ROUND_UP
+        Rounds the value away from zero:
+        Example:  12.001 to 2dp becomes 12.01, but
+                  12.000 to 2dp remains 12.00
+    ```
+
+    ```
+      MP_ROUND_HALF_DOWN
+         Rounds the value to nearest digit, half goes toward zero.
+         Example:  12.005 to 2dp becomes 12.00, but
+                   12.006 to 2dp becomes 12.01
+    ```
+
+    ```
+      MP_ROUND_HALF_UP
+         Rounds the value to nearest digit, half rounds upward.
+         Example:  12.005 to 2dp becomes 12.01, but
+                   12.004 to 2dp becomes 12.00
+    ```
+
+------------
+<a id="mp_rat_string_len"></a><pre>
+mp_result <a href="imrat.h#L221">mp_rat_string_len</a>(mp_rat r, mp_size radix);
+</pre>
+ -  Reports the minimum number of characters required to represent `r` as a
+    zero-terminated string in the given `radix`.
+    Requires `MP_MIN_RADIX <= radix <= MP_MAX_RADIX`.
+
+------------
+<a id="mp_rat_decimal_len"></a><pre>
+mp_result <a href="imrat.h#L226">mp_rat_decimal_len</a>(mp_rat r, mp_size radix, mp_size prec);
+</pre>
+ -  Reports the length in bytes of the buffer needed to convert `r` using the
+    `mp_rat_to_decimal()` function with the specified `radix` and `prec`. The
+    buffer size estimate may slightly exceed the actual required capacity.
+
+------------
+<a id="mp_rat_read_string"></a><pre>
+mp_result <a href="imrat.h#L231">mp_rat_read_string</a>(mp_rat r, mp_size radix, const char *str);
+</pre>
+ -  Sets `r` to the value represented by a zero-terminated string `str` in the
+    format `"n/d"` including a sign flag. It returns `MP_UNDEF` if the encoded
+    denominator has value zero.
+
+------------
+<a id="mp_rat_read_cstring"></a><pre>
+mp_result <a href="imrat.h#L238">mp_rat_read_cstring</a>(mp_rat r, mp_size radix, const char *str, char **end);
+</pre>
+ -  Sets `r` to the value represented by a zero-terminated string `str` in the
+    format `"n/d"` including a sign flag. It returns `MP_UNDEF` if the encoded
+    denominator has value zero. If `end` is not NULL then `*end` is set to
+    point to the first unconsumed character in the string, after parsing.
+
+------------
+<a id="mp_rat_read_ustring"></a><pre>
+mp_result <a href="imrat.h#L252">mp_rat_read_ustring</a>(mp_rat r, mp_size radix, const char *str, char **end);
+</pre>
+ -  Sets `r` to the value represented by a zero-terminated string `str` having
+    one of the following formats, each with an optional leading sign flag:
+
+    ```
+       n         : integer format, e.g. "123"
+       n/d       : ratio format, e.g., "-12/5"
+       z.ffff    : decimal format, e.g., "1.627"
+    ```
+
+    It returns `MP_UNDEF` if the effective denominator is zero. If `end` is not
+    NULL then `*end` is set to point to the first unconsumed character in the
+    string, after parsing.
+
+------------
+<a id="mp_rat_read_decimal"></a><pre>
+mp_result <a href="imrat.h#L258">mp_rat_read_decimal</a>(mp_rat r, mp_size radix, const char *str);
+</pre>
+ -  Sets `r` to the value represented by a zero-terminated string `str` in the
+    format `"z.ffff"` including a sign flag. It returns `MP_UNDEF` if the
+    effective denominator.
+
+------------
+<a id="mp_rat_read_cdecimal"></a><pre>
+mp_result <a href="imrat.h#L264">mp_rat_read_cdecimal</a>(mp_rat r, mp_size radix, const char *str, char **end);
+</pre>
+ -  Sets `r` to the value represented by a zero-terminated string `str` in the
+    format `"z.ffff"` including a sign flag. It returns `MP_UNDEF` if the
+    effective denominator. If `end` is not NULL then `*end` is set to point to
+    the first unconsumed character in the string, after parsing.
+
+
+
+## Representation Details
+
+> NOTE: You do not need to read this section to use IMath.  This is provided
+> for the benefit of developers wishing to extend or modify the internals of
+> the library.
+
+IMath uses a signed magnitude representation for arbitrary precision integers.
+The magnitude is represented as an array of radix-R digits in increasing order
+of significance; the value of R is chosen to be half the size of the largest
+available unsigned integer type, so typically 16 or 32 bits.  Digits are
+represented as mp_digit, which must be an unsigned integral type.
+
+Digit arrays are allocated using `malloc(3)` and `realloc(3)`.  Because this
+can be an expensive operation, the library takes pains to avoid allocation as
+much as possible.  For this reason, the `mpz_t` structure distinguishes between
+how many digits are allocated and how many digits are actually consumed by the
+representation.  The fields of an `mpz_t` are:
+
+    mp_digit    single;  /* single-digit value (see note) */
+    mp_digit   *digits;  /* array of digits               */
+    mp_size     alloc;   /* how many digits are allocated */
+    mp_size     used;    /* how many digits are in use    */
+    mp_sign     sign;    /* the sign of the value         */
+
+The elements of `digits` at indices less than `used` are the significant
+figures of the value; the elements at indices greater than or equal to `used`
+are undefined (and may contain garbage).  At all times, `used` must be at least
+1 and at most `alloc`.
+
+To avoid interaction with the memory allocator, single-digit values are stored
+directly in the `mpz_t` structure, in the `single` field.  The semantics of
+access are the same as the more general case.
+
+The number of digits allocated for an `mpz_t` is referred to in the library
+documentation as its "precision".  Operations that affect an `mpz_t` cause
+precision to increase as needed.  In any case, all allocations are measured in
+digits, and rounded up to the nearest `mp_word` boundary.  There is a default
+minimum precision stored as a static constant default_precision (`imath.c`).
+This value can be set using `mp_int_default_precision(n)`.
+
+Note that the allocated size of an `mpz_t` can only grow; the library never
+reallocates in order to decrease the size.  A simple way to do so explicitly is
+to use `mp_int_init_copy()`, as in:
+
+```
+mpz_t big, new;
+
+/* ... */
+mp_int_init_copy(&new, &big);
+mp_int_swap(&new, &big);
+mp_int_clear(&new);
+```
+
+The value of `sign` is 0 for positive values and zero, 1 for negative values.
+Constants `MP_ZPOS` and `MP_NEG` are defined for these; no other sign values
+are used.
+
+If you are adding to this library, you should be careful to preserve the
+convention that inputs and outputs can overlap, as described above.  So, for
+example, `mp_int_add(a, a, a)` is legal.  Often, this means you must maintain
+one or more temporary mpz_t structures for intermediate values.  The private
+macros `DECLARE_TEMP(N)`, `CLEANUP_TEMP()`, and `TEMP(K)` can be used to
+maintain a conventional structure like this:
+
+```c
+{
+  /* Declare how many temp values you need.
+        Use TEMP(i) to access the ith value (0-indexed). */
+  DECLARE_TEMP(8);
+  ...
+
+  /* Perform actions that must return MP_OK or fail. */
+  REQUIRE(mp_int_copy(x, TEMP(1)));
+  ...
+  REQUIRE(mp_int_expt(TEMP(1), TEMP(2), TEMP(3)));
+  ...
+
+  /* You can also use REQUIRE directly for more complex cases. */
+  if (some_difficult_question(TEMP(3)) != answer(x)) {
+       REQUIRE(MP_RANGE);  /* falls through to cleanup (below) */
+  }
+
+  /* Ensure temporary values are cleaned up at exit.
+
+     If control reaches here via a REQUIRE failure, the code below
+        the cleanup will not be executed.
+   */
+  CLEANUP_TEMP();
+  return MP_OK;
+}
+```
+
+Under the covers, these macros are just maintaining an array of `mpz_t` values,
+and a jump label to handle cleanup. You may only have one `DECLARE_TEMP` and
+its corresponding `CLEANUP_TEMP` per function body.
+
+"Small" integer values are represented by the types `mp_small` and `mp_usmall`,
+which are mapped to appropriately-sized types on the host system.  The default
+for `mp_small` is "long" and the default for `mp_usmall` is "unsigned long".
+You may change these, provided you insure that `mp_small` is signed and
+`mp_usmall` is unsigned.  You will also need to adjust the size macros:
+
+    MP_SMALL_MIN, MP_SMALL_MAX
+    MP_USMALL_MIN, MP_USMALL_MAX
+
+... which are defined in `<imath.h>`, if you change these.
+
+Rational numbers are represented using a pair of arbitrary precision integers,
+with the convention that the sign of the numerator is the sign of the rational
+value, and that the result of any rational operation is always represented in
+lowest terms.  The canonical representation for rational zero is 0/1.  See
+"imrat.h".
+
+## Testing and Reporting of Bugs
+
+Test vectors are included in the `tests/` subdirectory of the imath
+distribution.  When you run `make test`, it builds the `imtest` program and
+runs all available test vectors.  If any tests fail, you will get a line like
+this:
+
+    x    y    FAILED      v
+
+Here, _x_ is the line number of the test which failed, _y_ is index of the test
+within the file, and _v_ is the value(s) actually computed.  The name of the
+file is printed at the beginning of each test, so you can find out what test
+vector failed by executing the following (with x, y, and v replaced by the
+above values, and where "foo.t" is the name of the test file that was being
+processed at the time):
+
+    % tail +x tests/foo.t | head -1
+
+None of the tests should fail (but see [Note 2](#note2)); if any do, it
+probably indicates a bug in the library (or at the very least, some assumption
+I made which I shouldn't have).  Please [file an
+issue](https://github.com/creachadair/imath/issues/new), including the `FAILED`
+test line(s), as well as the output of the above `tail` command (so I know what
+inputs caused the failure).
+
+If you build with the preprocessor symbol `DEBUG` defined as a positive
+integer, the digit allocators (`s_alloc`, `s_realloc`) fill all new buffers
+with the value `0xdeadbeefabad1dea`, or as much of it as will fit in a digit,
+so that you can more easily catch uninitialized reads in the debugger.
+
+## Notes
+
+1. <a name="note1"></a>You can generally use the same variables for both input
+   and output.  One exception is that you may not use the same variable for
+   both the quotient and the remainder of `mp_int_div()`.
+
+2. <a name="note2"></a>Many of the tests for this library were written under
+   the assumption that the `mp_small` type is 32 bits or more.  If you compile
+   with a smaller type, you may see `MP_RANGE` errors in some of the tests that
+   otherwise pass (due to conversion failures).  Also, the pi generator (pi.c)
+   will not work correctly if `mp_small` is too short, as its algorithm for arc
+   tangent is fairly simple-minded.
+
+## Contacts
+
+The IMath library was written by Michael J. Fromberger.
+
+If you discover any bugs or testing failures, please [open an
+issue](https://github.com/creachadair/imath/issues/new).  Please be sure to
+include a complete description of what went wrong, and if possible, a test
+vector for `imtest` and/or a minimal test program that will demonstrate the bug
+on your system.  Please also let me know what hardware, operating system, and
+compiler you're using.
+
+## Acknowledgements
+
+The algorithms used in this library came from Vol. 2 of Donald Knuth's "The Art
+of Computer Programming" (Seminumerical Algorithms).  Thanks to Nelson Bolyard,
+Bryan Olson, Tom St. Denis, Tushar Udeshi, and Eric Silva for excellent
+feedback on earlier versions of this code.  Special thanks to Jonathan Shapiro
+for some very helpful design advice, as well as feedback and some clever ideas
+for improving performance in some common use cases.
+
+## License and Disclaimers
+
+IMath is Copyright 2002-2009 Michael J. Fromberger
+You may use it subject to the following Licensing Terms:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/polly/lib/External/isl/imath/doc.md.in b/polly/lib/External/isl/imath/doc.md.in
new file mode 100644 (file)
index 0000000..899b1a3
--- /dev/null
@@ -0,0 +1,394 @@
+# User Documentation for the IMath Library
+
+Author: [M. J. Fromberger](https://github.com/creachadair)
+
+## Installation
+
+1. Edit Makefile to select compiler and options.  The default is to use gcc.
+   You may want to change CC to `clang` instead of `gcc` (and on macOS that
+   what you will get anyway), but you should be able to use the default GCC
+   settings for either.
+
+   By default, the Makefile assumes you can use 64-bit integer types, even
+   though they were not standard in ANSI C90. If you cannot, add
+   `-DUSE_32BIT_WORDS` to the compiler options.
+
+2. Type `make` or `make test` to build the test driver and run the unit tests.
+   None of these should fail.  If they do, see below for how you can report
+   bugs.
+
+   To build with debugging enabled (and optimization disabled), run `make
+   DEBUG=Y`.  This sets the preprocessor macro `DEBUG` to 1, and several other
+   things (see Makefile for details).
+
+To use the library in your code, include "imath.h" wherever you intend to use
+the library's routines.  The integer library is just a single source file, so
+you can compile it into your project in whatever way makes sense.  If you wish
+to use rational arithmetic, you will also need to include "imrat.h".
+
+## Background
+
+The basic types defined by the imath library are `mpz_t`, an arbitrary
+precision signed integer, and `mpq_t`, an arbitrary precision signed rational
+number.  The type `mp_int` is a pointer to an `mpz_t`, and `mp_rat` is a
+pointer to an `mpq_t`.
+
+Most of the functions in the imath library return a value of type `mp_result`.
+This is a signed integer type which can be used to convey status information
+and also return small values.  Any negative value is considered to be a status
+message.  The following constants are defined for processing these:
+
+| Status      | Description                                  |
+| ----------- | -------------------------------------------- |
+| `MP_OK`     | operation successful, all is well (= 0)      |
+| `MP_FALSE`  | boolean false (= `MP_OK`)                    |
+| `MP_TRUE`   | boolean true                                 |
+| `MP_MEMORY` | out of memory                                |
+| `MP_RANGE`  | parameter out of range                       |
+| `MP_UNDEF`  | result is undefined (e.g., division by zero) |
+| `MP_TRUNC`  | output value was truncated                   |
+| `MP_BADARG` | an invalid parameter was passed              |
+
+If you obtain a zero or negative value of an `mp_result`, you can use the
+`mp_error_string()` routine to obtain a pointer to a brief human-readable
+string describing the error.  These strings are statically allocated, so they
+need not be freed by the caller; the same strings are re-used from call to
+call.
+
+Unless otherwise noted, it is legal to use the same parameter for both inputs
+and output with most of the functions in this library.  For example, you can
+add a number to itself and replace the original by writing:
+
+    mp_int_add(a, a, a);  /* a = a + a */
+
+Any cases in which this is not legal will be noted in the function summaries
+below (if you discover that this is not so, please report it as a bug; I will
+fix either the function or the documentation :)
+
+## The IMath API
+
+Each of the API functions is documented here.  The general format of the
+entries is:
+
+> ------------
+> <pre>
+> return_type function_name(parameters ...)
+> </pre>
+>  -  English description.
+
+Unless otherwise noted, any API function that returns `mp_result` may be
+expected to return `MP_OK`, `MP_BADARG`, or `MP_MEMORY`.  Other return values
+should be documented in the description.  Please let me know if you discover
+this is not the case.
+
+The following macros are defined in "imath.h", to define the sizes of the
+various data types used in the library:
+
+| Constant        | Description
+| --------------- | ----------------------------------------
+| `MP_DIGIT_BIT`  | the number of bits in a single `mpz_t` digit.
+| `MP_WORD_BIT`   | the number of bits in a `mpz_t` word.
+| `MP_SMALL_MIN`  | the minimum value representable by an `mp_small`.
+| `MP_SMALL_MAX`  | the maximum value representable by an `mp_small`.
+| `MP_USMALL_MAX` | the maximum value representable by an `mp_usmall`.
+| `MP_MIN_RADIX`  | the minimum radix accepted for base conversion.
+| `MP_MAX_RADIX`  | the maximum radix accepted for base conversion.
+
+#### Initialization
+
+An `mp_int` must be initialized before use. By default, an `mp_int` is
+initialized with a certain minimum amount of storage for digits, and the
+storage is expanded automatically as needed.  To initialize an `mp_int`, use
+the following functions:
+
+{{insert "imath.h"
+  mp_int_init mp_int_alloc mp_int_init_size
+  mp_int_init_copy
+  mp_int_init_value
+}}
+
+#### Cleanup
+
+When you are finished with an `mp_int`, you must free the memory it uses:
+
+{{insert "imath.h" mp_int_clear mp_int_free}}
+
+#### Setting Values
+
+To set an `mp_int` which has already been initialized to a small integer value,
+use:
+
+{{insert "imath.h" mp_int_set_value mp_int_set_uvalue}}
+
+To copy one initialized `mp_int` to another, use:
+
+{{insert "imath.h" mp_int_copy}}
+
+### Arithmetic Functions
+
+{{insert "imath.h"
+  mp_int_is_odd mp_int_is_even
+  mp_int_zero
+  mp_int_abs
+  mp_int_neg
+  mp_int_add mp_int_add_value
+  mp_int_sub mp_int_sub_value
+  mp_int_mul mp_int_mul_value mp_int_mul_pow2
+  mp_int_sqr
+  mp_int_root mp_int_sqrt
+  mp_int_div mp_int_div_value mp_int_div_pow2
+  mp_int_mod mp_int_mod_value
+  mp_int_expt mp_int_expt_value mp_int_expt_full
+}}
+
+### Comparison Functions
+
+Unless otherwise specified, comparison between values `x` and `y` returns a
+**comparator**, an integer value < 0 if `x` is less than `y`, 0 if `x` is equal
+to `y`, and > 0 if `x` is greater than `y`.
+
+{{insert "imath.h"
+  mp_int_compare mp_int_compare_unsigned mp_int_compare_zero
+  mp_int_compare_value mp_int_compare_uvalue
+  mp_int_divisible_value mp_int_is_pow2
+}}
+
+### Modular Operations
+
+{{insert "imath.h"
+  mp_int_exptmod mp_int_exptmod_evalue mp_int_exptmod_bvalue
+  mp_int_exptmod_known mp_int_redux_const
+  mp_int_invmod
+  mp_int_gcd mp_int_egcd mp_int_lcm
+}}
+
+### Conversion of Values
+
+{{insert "imath.h"
+  mp_int_to_int mp_int_to_uint
+  mp_int_to_string mp_int_string_len
+  mp_int_read_string mp_int_read_cstring
+  mp_int_count_bits
+  mp_int_to_binary mp_int_read_binary mp_int_binary_len
+  mp_int_to_unsigned mp_int_read_unsigned mp_int_unsigned_len
+}}
+
+### Other Functions
+
+Ordinarily, integer multiplication and squaring are done using the simple
+quadratic "schoolbook" algorithm.  However, for sufficiently large values,
+there is a more efficient algorithm usually attributed to Karatsuba and Ofman
+that is usually faster.  See Knuth Vol. 2 for more details about how this
+algorithm works.
+
+The breakpoint between the "normal" and the recursive algorithm is controlled
+by a static digit threshold defined in `imath.c`. Values with fewer significant
+digits use the standard algorithm.  This value can be modified by calling
+`mp_int_multiply_threshold(n)`.  The `imtimer` program and the
+`findthreshold.py` script (Python) can help you find a suitable value for for
+your particular platform.
+
+{{insert "imath.h" mp_error_string}}
+
+## Rational Arithmetic
+
+{{insert "imrat.h"}}
+
+## Representation Details
+
+> NOTE: You do not need to read this section to use IMath.  This is provided
+> for the benefit of developers wishing to extend or modify the internals of
+> the library.
+
+IMath uses a signed magnitude representation for arbitrary precision integers.
+The magnitude is represented as an array of radix-R digits in increasing order
+of significance; the value of R is chosen to be half the size of the largest
+available unsigned integer type, so typically 16 or 32 bits.  Digits are
+represented as mp_digit, which must be an unsigned integral type.
+
+Digit arrays are allocated using `malloc(3)` and `realloc(3)`.  Because this
+can be an expensive operation, the library takes pains to avoid allocation as
+much as possible.  For this reason, the `mpz_t` structure distinguishes between
+how many digits are allocated and how many digits are actually consumed by the
+representation.  The fields of an `mpz_t` are:
+
+    mp_digit    single;  /* single-digit value (see note) */
+    mp_digit   *digits;  /* array of digits               */
+    mp_size     alloc;   /* how many digits are allocated */
+    mp_size     used;    /* how many digits are in use    */
+    mp_sign     sign;    /* the sign of the value         */
+
+The elements of `digits` at indices less than `used` are the significant
+figures of the value; the elements at indices greater than or equal to `used`
+are undefined (and may contain garbage).  At all times, `used` must be at least
+1 and at most `alloc`.
+
+To avoid interaction with the memory allocator, single-digit values are stored
+directly in the `mpz_t` structure, in the `single` field.  The semantics of
+access are the same as the more general case.
+
+The number of digits allocated for an `mpz_t` is referred to in the library
+documentation as its "precision".  Operations that affect an `mpz_t` cause
+precision to increase as needed.  In any case, all allocations are measured in
+digits, and rounded up to the nearest `mp_word` boundary.  There is a default
+minimum precision stored as a static constant default_precision (`imath.c`).
+This value can be set using `mp_int_default_precision(n)`.
+
+Note that the allocated size of an `mpz_t` can only grow; the library never
+reallocates in order to decrease the size.  A simple way to do so explicitly is
+to use `mp_int_init_copy()`, as in:
+
+```
+mpz_t big, new;
+
+/* ... */
+mp_int_init_copy(&new, &big);
+mp_int_swap(&new, &big);
+mp_int_clear(&new);
+```
+
+The value of `sign` is 0 for positive values and zero, 1 for negative values.
+Constants `MP_ZPOS` and `MP_NEG` are defined for these; no other sign values
+are used.
+
+If you are adding to this library, you should be careful to preserve the
+convention that inputs and outputs can overlap, as described above.  So, for
+example, `mp_int_add(a, a, a)` is legal.  Often, this means you must maintain
+one or more temporary mpz_t structures for intermediate values.  The private
+macros `DECLARE_TEMP(N)`, `CLEANUP_TEMP()`, and `TEMP(K)` can be used to
+maintain a conventional structure like this:
+
+```c
+{
+  /* Declare how many temp values you need.
+        Use TEMP(i) to access the ith value (0-indexed). */
+  DECLARE_TEMP(8);
+  ...
+
+  /* Perform actions that must return MP_OK or fail. */
+  REQUIRE(mp_int_copy(x, TEMP(1)));
+  ...
+  REQUIRE(mp_int_expt(TEMP(1), TEMP(2), TEMP(3)));
+  ...
+
+  /* You can also use REQUIRE directly for more complex cases. */
+  if (some_difficult_question(TEMP(3)) != answer(x)) {
+       REQUIRE(MP_RANGE);  /* falls through to cleanup (below) */
+  }
+
+  /* Ensure temporary values are cleaned up at exit.
+
+     If control reaches here via a REQUIRE failure, the code below
+        the cleanup will not be executed.
+   */
+  CLEANUP_TEMP();
+  return MP_OK;
+}
+```
+
+Under the covers, these macros are just maintaining an array of `mpz_t` values,
+and a jump label to handle cleanup. You may only have one `DECLARE_TEMP` and
+its corresponding `CLEANUP_TEMP` per function body.
+
+"Small" integer values are represented by the types `mp_small` and `mp_usmall`,
+which are mapped to appropriately-sized types on the host system.  The default
+for `mp_small` is "long" and the default for `mp_usmall` is "unsigned long".
+You may change these, provided you insure that `mp_small` is signed and
+`mp_usmall` is unsigned.  You will also need to adjust the size macros:
+
+    MP_SMALL_MIN, MP_SMALL_MAX
+    MP_USMALL_MIN, MP_USMALL_MAX
+
+... which are defined in `<imath.h>`, if you change these.
+
+Rational numbers are represented using a pair of arbitrary precision integers,
+with the convention that the sign of the numerator is the sign of the rational
+value, and that the result of any rational operation is always represented in
+lowest terms.  The canonical representation for rational zero is 0/1.  See
+"imrat.h".
+
+## Testing and Reporting of Bugs
+
+Test vectors are included in the `tests/` subdirectory of the imath
+distribution.  When you run `make test`, it builds the `imtest` program and
+runs all available test vectors.  If any tests fail, you will get a line like
+this:
+
+    x    y    FAILED      v
+
+Here, _x_ is the line number of the test which failed, _y_ is index of the test
+within the file, and _v_ is the value(s) actually computed.  The name of the
+file is printed at the beginning of each test, so you can find out what test
+vector failed by executing the following (with x, y, and v replaced by the
+above values, and where "foo.t" is the name of the test file that was being
+processed at the time):
+
+    % tail +x tests/foo.t | head -1
+
+None of the tests should fail (but see [Note 2](#note2)); if any do, it
+probably indicates a bug in the library (or at the very least, some assumption
+I made which I shouldn't have).  Please [file an
+issue](https://github.com/creachadair/imath/issues/new), including the `FAILED`
+test line(s), as well as the output of the above `tail` command (so I know what
+inputs caused the failure).
+
+If you build with the preprocessor symbol `DEBUG` defined as a positive
+integer, the digit allocators (`s_alloc`, `s_realloc`) fill all new buffers
+with the value `0xdeadbeefabad1dea`, or as much of it as will fit in a digit,
+so that you can more easily catch uninitialized reads in the debugger.
+
+## Notes
+
+1. <a name="note1"></a>You can generally use the same variables for both input
+   and output.  One exception is that you may not use the same variable for
+   both the quotient and the remainder of `mp_int_div()`.
+
+2. <a name="note2"></a>Many of the tests for this library were written under
+   the assumption that the `mp_small` type is 32 bits or more.  If you compile
+   with a smaller type, you may see `MP_RANGE` errors in some of the tests that
+   otherwise pass (due to conversion failures).  Also, the pi generator (pi.c)
+   will not work correctly if `mp_small` is too short, as its algorithm for arc
+   tangent is fairly simple-minded.
+
+## Contacts
+
+The IMath library was written by Michael J. Fromberger.
+
+If you discover any bugs or testing failures, please [open an
+issue](https://github.com/creachadair/imath/issues/new).  Please be sure to
+include a complete description of what went wrong, and if possible, a test
+vector for `imtest` and/or a minimal test program that will demonstrate the bug
+on your system.  Please also let me know what hardware, operating system, and
+compiler you're using.
+
+## Acknowledgements
+
+The algorithms used in this library came from Vol. 2 of Donald Knuth's "The Art
+of Computer Programming" (Seminumerical Algorithms).  Thanks to Nelson Bolyard,
+Bryan Olson, Tom St. Denis, Tushar Udeshi, and Eric Silva for excellent
+feedback on earlier versions of this code.  Special thanks to Jonathan Shapiro
+for some very helpful design advice, as well as feedback and some clever ideas
+for improving performance in some common use cases.
+
+## License and Disclaimers
+
+IMath is Copyright 2002-2009 Michael J. Fromberger
+You may use it subject to the following Licensing Terms:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/polly/lib/External/isl/imath/examples/basecvt.c b/polly/lib/External/isl/imath/examples/basecvt.c
new file mode 100644 (file)
index 0000000..784188b
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+  Name:     basecvt.c
+  Purpose:  Convert integers and rationals from one base to another.
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2004-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "imath.h"
+#include "imrat.h"
+
+int main(int argc, char *argv[]) {
+  mp_size in_rdx, out_rdx;
+  mpq_t value;
+  mp_result res;
+  int ix;
+
+  if (argc < 4) {
+    fprintf(stderr, "Usage: basecvt <ibase> <obase> <values>+\n");
+    return 1;
+  }
+
+  in_rdx = atoi(argv[1]);
+  out_rdx = atoi(argv[2]);
+
+  if (in_rdx < MP_MIN_RADIX || in_rdx > MP_MAX_RADIX) {
+    fprintf(stderr,
+            "basecvt: input radix %u not allowed (minimum %u, maximum %u)\n",
+            in_rdx, MP_MIN_RADIX, MP_MAX_RADIX);
+    return 3;
+  }
+  if (out_rdx < MP_MIN_RADIX || out_rdx > MP_MAX_RADIX) {
+    fprintf(stderr,
+            "basecvt: output radix %u not allowed (minimum %u, maximum %u)\n",
+            out_rdx, MP_MIN_RADIX, MP_MAX_RADIX);
+    return 3;
+  }
+
+  if ((res = mp_rat_init(&value)) != MP_OK) {
+    fprintf(stderr, "basecvt: out of memory\n");
+    return 2;
+  }
+
+  for (ix = 3; ix < argc; ++ix) {
+    char *buf, *endp = NULL;
+    mp_result len;
+    int is_int;
+
+    res = mp_rat_read_ustring(&value, in_rdx, argv[ix], &endp);
+    if (res != MP_OK && res != MP_TRUNC) {
+      fprintf(stderr, "basecvt:  error reading argument %d: %s\n", ix,
+              mp_error_string(res));
+      break;
+    } else if (*endp != '\0') {
+      fprintf(stderr, "basecvt:  argument %d contains '%s' not in base %u\n",
+              ix, endp, in_rdx);
+      continue;
+    }
+
+    is_int = mp_rat_is_integer(&value);
+    if (is_int) {
+      len = mp_int_string_len(MP_NUMER_P(&value), out_rdx);
+    } else {
+      len = mp_rat_string_len(&value, out_rdx);
+    }
+
+    if ((buf = malloc(len)) == NULL) {
+      fprintf(stderr, "basecvt:  out of memory\n");
+      break;
+    }
+
+    if (is_int) {
+      res = mp_int_to_string(MP_NUMER_P(&value), out_rdx, buf, len);
+    } else {
+      res = mp_rat_to_string(&value, out_rdx, buf, len);
+    }
+
+    if (res != MP_OK) {
+      fprintf(stderr, "basecvt:  error converting argument %d: %s\n", ix,
+              mp_error_string(res));
+      free(buf);
+      break;
+    }
+
+    printf("%s\n", buf);
+    free(buf);
+  }
+
+  mp_rat_clear(&value);
+
+  return (res != MP_OK);
+}
+
+/* Here there be dragons */
diff --git a/polly/lib/External/isl/imath/examples/findprime.c b/polly/lib/External/isl/imath/examples/findprime.c
new file mode 100644 (file)
index 0000000..4c49f0e
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+  Name:     findprime.c
+  Purpose:  Find probable primes.
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Notes:
+  Find the first prime number in sequence starting from the given value.
+  Demonstrates the use of mp_int_find_prime().
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include <stdio.h>
+
+#include "iprime.h"
+
+int main(int argc, char *argv[]) {
+  char buf[4096];
+  mpz_t seed;
+  mp_result res;
+
+  if (argc < 2) {
+    fprintf(stderr, "Usage: %s <start-value>\n", argv[0]);
+    return 1;
+  }
+
+  mp_int_init(&seed);
+  if ((res = mp_int_read_string(&seed, 10, argv[1])) != MP_OK) {
+    fprintf(stderr, "%s: error reading `%s': %d\n", argv[0], argv[1], res);
+    return 2;
+  }
+
+  if (mp_int_compare_value(&seed, 131) <= 0) {
+    fprintf(stderr, "%s: please enter a start value > 131\n", argv[0]);
+    return 1;
+  }
+
+  if ((res = mp_int_find_prime(&seed)) != MP_TRUE) {
+    fprintf(stderr, "%s: error finding prime: %d\n", argv[0], res);
+    return 2;
+  }
+
+  mp_int_to_string(&seed, 10, buf, sizeof(buf));
+  printf("=> %s\n", buf);
+
+  mp_int_clear(&seed);
+
+  return 0;
+}
diff --git a/polly/lib/External/isl/imath/examples/imcalc.c b/polly/lib/External/isl/imath/examples/imcalc.c
new file mode 100644 (file)
index 0000000..433dd36
--- /dev/null
@@ -0,0 +1,1134 @@
+/*
+  Name:     imcalc.c
+  Purpose:  Simple RPN calculator based on IMath library.
+  Author:   M. J. Fromberger
+
+  This is a very simplistic RPN calculator that will let you test the features
+  of the IMath built-in functions.
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include <assert.h>
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h> /* for strcasecmp */
+
+#include <getopt.h>
+#include <unistd.h>
+
+#include "imath.h"
+#include "imrat.h"
+#include "iprime.h"
+
+/* A cstate_t represents a stack of operands; numeric operands are pushed on
+   the stack, and commands cause them to be consumed in various ways.
+ */
+typedef struct {
+  /* Operand stack    */
+  mp_int *elts;
+  mp_size alloc; /* number of slots available */
+  mp_size used;  /* number of slots free      */
+
+  /* Named variables  */
+  mp_int *mem;    /* named memory slots        */
+  char **names;   /* names of memory slots     */
+  mp_size mslots; /* number of memory slots    */
+  mp_size mused;  /* number of used memories   */
+
+  /* I/O components   */
+  FILE *ifp;  /* input file handle         */
+  char *ibuf; /* input scratch buffer      */
+  int buflen; /* size of scratch buffer    */
+} cstate_t;
+
+static mp_result state_init(cstate_t *sp, mp_size n_elts);
+static void state_clear(cstate_t *sp);
+static void stack_flush(cstate_t *sp);
+static mp_result stack_push(cstate_t *sp, mp_int elt);
+static mp_result stack_pop(cstate_t *sp);
+static mp_result mem_insert(cstate_t *sp, const char *name, mp_int value);
+static mp_result mem_recall(cstate_t *sp, const char *name, mp_int value);
+static mp_result mem_clear(cstate_t *sp);
+
+typedef mp_result (*op_func)(cstate_t *);
+
+static mp_result cf_abs(cstate_t *sp);
+static mp_result cf_neg(cstate_t *sp);
+static mp_result cf_add(cstate_t *sp);
+static mp_result cf_sub(cstate_t *sp);
+static mp_result cf_mul(cstate_t *sp);
+static mp_result cf_divmod(cstate_t *sp);
+static mp_result cf_div(cstate_t *sp);
+static mp_result cf_mod(cstate_t *sp);
+static mp_result cf_expt(cstate_t *sp);
+static mp_result cf_exptmod(cstate_t *sp);
+static mp_result cf_square(cstate_t *sp);
+static mp_result cf_invmod(cstate_t *sp);
+static mp_result cf_gcd(cstate_t *sp);
+static mp_result cf_xgcd(cstate_t *sp);
+static mp_result cf_sqrt(cstate_t *sp);
+static mp_result cf_root(cstate_t *sp);
+static mp_result cf_cmplt(cstate_t *sp);
+static mp_result cf_cmpgt(cstate_t *sp);
+static mp_result cf_cmple(cstate_t *sp);
+static mp_result cf_cmpge(cstate_t *sp);
+static mp_result cf_cmpeq(cstate_t *sp);
+static mp_result cf_cmpne(cstate_t *sp);
+static mp_result cf_inc(cstate_t *sp);
+static mp_result cf_dec(cstate_t *sp);
+static mp_result cf_fact(cstate_t *sp);
+static mp_result cf_pprint(cstate_t *sp);
+static mp_result cf_print(cstate_t *sp);
+static mp_result cf_pstack(cstate_t *sp);
+static mp_result cf_clstk(cstate_t *sp);
+static mp_result cf_pop(cstate_t *sp);
+static mp_result cf_dup(cstate_t *sp);
+static mp_result cf_copy(cstate_t *sp);
+static mp_result cf_swap(cstate_t *sp);
+static mp_result cf_rot(cstate_t *sp);
+static mp_result cf_pick(cstate_t *sp);
+static mp_result cf_setr(cstate_t *sp);
+static mp_result cf_setbin(cstate_t *sp);
+static mp_result cf_help(cstate_t *sp);
+static mp_result cf_store(cstate_t *sp);
+static mp_result cf_recall(cstate_t *sp);
+static mp_result cf_cmem(cstate_t *sp);
+static mp_result cf_pmem(cstate_t *sp);
+static mp_result cf_qrecall(cstate_t *sp);
+
+typedef struct {
+  char *name;      /* The name of the operator.           */
+  int stack_size;  /* Number of stack arguments required. */
+  op_func handler; /* Function implementing operation.    */
+  char *descript;  /* Human-readable description.         */
+} calcop_t;
+
+static calcop_t g_ops[] = {
+    {"abs", 1, cf_abs, "x -- |x|"},
+    {"neg", 1, cf_neg, "x -- (-x)"},
+    {"+", 2, cf_add, "x y -- (x+y)"},
+    {"add", 2, cf_add, "x y -- (x+y)"},
+    {"-", 2, cf_sub, "x y -- (x-y)"},
+    {"sub", 2, cf_sub, "x y -- (x-y)"},
+    {"*", 2, cf_mul, "x y -- (x*y)"},
+    {"mul", 2, cf_mul, "x y -- (x*y)"},
+    {"/", 2, cf_divmod, "x y -- q r ; x = yq + r, 0 <= r < y"},
+    {"//", 2, cf_div, "x y -- (x div y)"},
+    {"div", 2, cf_div, "x y -- (x div y)"},
+    {"%", 2, cf_mod, "x y -- (x mod y)"},
+    {"mod", 2, cf_mod, "x y -- (x mod y)"},
+    {"^", 2, cf_expt, "x y -- (x^y)"},
+    {"expt", 2, cf_expt, "x y -- (x^y)"},
+    {"^^", 3, cf_exptmod, "x y m -- (x^y mod m)"},
+    {"emod", 3, cf_exptmod, "x y m -- (x^y mod m)"},
+    {"sqr", 1, cf_square, "x -- (x*x)"},
+    {"inv", 2, cf_invmod, "x m -- (1/x mod m)"},
+    {"gcd", 2, cf_gcd, "x y -- gcd(x, y)"},
+    {"xgcd", 2, cf_xgcd, "x y -- g u v ; g = ux + vy"},
+    {"sqrt", 1, cf_sqrt, "x -- floor(sqrt(x))"},
+    {"root", 2, cf_root, "x y -- floor(x^{1/y}) ; y > 0"},
+    {"<", 2, cf_cmplt, "x y -- (x<y)"},
+    {">", 2, cf_cmpgt, "x y -- (x>y)"},
+    {"<=", 2, cf_cmple, "x y -- (x<=y)"},
+    {">=", 2, cf_cmpge, "x y -- (x>=y)"},
+    {"=", 2, cf_cmpeq, "x y -- (x=y)"},
+    {"<>", 2, cf_cmpne, "x y -- (x<>y)"},
+    {"inc", 1, cf_inc, "x -- (x+1)"},
+    {"dec", 1, cf_dec, "x -- (x-1)"},
+    {"!", 1, cf_fact, "x -- x!"},
+    {"fact", 1, cf_fact, "x -- x!"},
+
+    {".", 1, cf_pprint, "x -- ; print x in current output mode"},
+    {";", 1, cf_print, "x -- x ; print x in current output mode"},
+    {"?", 0, cf_pstack, "-- ; print stack"},
+    {"cls", 0, cf_clstk, "... -- ; clear stack"},
+    {"$", 1, cf_pop, "x --"},
+    {"drop", 1, cf_pop, "x --"},
+    {"dup", 1, cf_dup, "x -- x x"},
+    {"copy", 2, cf_copy, "vn ... v1 v0 n -- vn ... v0 vn ... v0"},
+    {"swap", 2, cf_swap, "x y -- y x"},
+    {"rot", 3, cf_rot, "a b c -- b c a"},
+    {"pick", 2, cf_pick, "... v2 v1 v0 n -- ... v2 v1 v0 vn"},
+
+    {">>", 1, cf_store, "x -- ; save in named variable"},
+    {"<<", 0, cf_recall, "-- x ; recall from named variable"},
+    {"clm", 0, cf_cmem, "-- ; clear memory"},
+    {"??", 0, cf_pmem, "-- ; print memory"},
+
+    {"out", 1, cf_setr, "r -- ; set output radix to r"},
+    {"bin", 0, cf_setbin, "-- ; set output format to binary"},
+    {"help", 0, cf_help, "-- ; print help message"},
+
+    /* This is the end-marker, but it is also used to catch implicit
+       variable lookups from memory.
+     */
+    {NULL, 0, cf_qrecall, "-- x ; recall from named variable"},
+};
+
+#define BUFFER_SIZE 16384 /* max. length of input values, in chars */
+
+/* Token types from the primitive lexical analyzer */
+typedef enum { t_eof, t_symbol, t_number, t_error } token_t;
+
+static token_t next_token(FILE *ifp, char *buf, int size);
+static mp_result read_number(char *buf, mp_int *out);
+static int find_command(cstate_t *ops);
+static void print_value(mp_int v);
+static mp_result run_file(FILE *ifp, cstate_t *op_state);
+
+/* Error code used internally to signal input problems. */
+static mp_result MP_INPUT;
+
+static int g_output_radix = 10; /* output radix */
+static FILE *g_output_file = NULL;
+
+int main(int argc, char *argv[]) {
+  extern char *optarg;
+  extern int optind;
+
+  int opt, errs = 0;
+  FILE *ifp;
+
+  cstate_t op_state;
+  mp_result res;
+
+  MP_INPUT = MP_MINERR - 1;
+
+  g_output_file = stdout;
+  while ((opt = getopt(argc, argv, "ho:")) != EOF) {
+    switch (opt) {
+      case 'h':
+        fprintf(
+            stderr,
+            "Usage: imcalc [-h] [-o <output>] input*\n\n"
+            "Options:\n"
+            "  -h          : display this help message.\n"
+            "  -o <output> : send output to file.\n\n"
+
+            "If no input files are given, the standard input is read.  The\n"
+            "special file name \"-\" is interpreted to mean the standard "
+            "input.\n"
+            "Output goes to standard output unless \"-o\" is used.\n\n");
+        return 0;
+
+      case 'o':
+        if ((g_output_file = fopen(optarg, "wt")) == NULL) {
+          fprintf(stderr, "Unable to open \"%s\" for writing: %s\n", optarg,
+                  strerror(errno));
+          return 1;
+        }
+        break;
+
+      default:
+        fprintf(stderr,
+                "Usage: imcalc [-h] [-o <output>] input*\n"
+                "       [use \"imcalc -h\" to get help]\n\n");
+        return 1;
+    }
+  }
+
+  if ((res = state_init(&op_state, 1)) != MP_OK) {
+    fprintf(stderr, "Error: state_init: %s\n", mp_error_string(res));
+    return 1;
+  }
+
+  if (optind < argc) {
+    int ix;
+
+    for (ix = optind; ix < argc; ++ix) {
+      if (strcmp(argv[ix], "-") == 0)
+        ifp = stdin;
+      else if ((ifp = fopen(argv[optind], "rt")) == NULL) {
+        fprintf(stderr, "Unable to open \"%s\" for reading: %s\n", argv[optind],
+                strerror(errno));
+        return 1;
+      }
+
+      if (run_file(ifp, &op_state) != MP_OK) ++errs;
+    }
+
+    state_clear(&op_state);
+    return errs > 0;
+  } else {
+    int rv = 1 - (run_file(stdin, &op_state) == MP_OK);
+    state_clear(&op_state);
+    return rv;
+  }
+}
+
+static token_t next_token(FILE *ifp, char *buf, int size) {
+  int ch, pos = 0;
+  token_t res;
+
+  assert(buf != NULL && size > 0);
+
+  while ((ch = fgetc(ifp)) != EOF && isspace(ch)) /* empty */
+    ;
+
+  if (ch == EOF) {
+    buf[0] = '\0';
+    return t_eof;
+  }
+
+  if (ch == '-') {
+    int next = fgetc(ifp);
+    if (next == EOF || !isdigit(next))
+      res = t_symbol;
+    else
+      res = t_number;
+    ungetc(next, ifp);
+  } else if (isdigit(ch) || ch == '#')
+    res = t_number;
+  else
+    res = t_symbol;
+
+  buf[pos++] = ch;
+  while ((ch = fgetc(ifp)) != EOF) {
+    if ((res == t_number && ispunct(ch) && ch != '-') ||
+        (res == t_symbol && isdigit(ch)) || isspace(ch)) {
+      ungetc(ch, ifp);
+      break;
+    } else if (pos + 1 >= size) {
+      res = t_error;
+      break;
+    }
+    buf[pos++] = ch;
+  }
+
+  buf[pos] = '\0';
+  return res;
+}
+
+static mp_result read_number(char *buf, mp_int *out) {
+  int radix = 10, pos = 0;
+  mp_result res;
+  mp_int value;
+
+  assert(buf != NULL && out != NULL);
+
+  if (buf[pos] == '#') {
+    switch (buf[1]) {
+      case 'b':
+      case 'B':
+        radix = 2;
+        break;
+      case 'd':
+      case 'D':
+        radix = 10;
+        break;
+      case 'o':
+      case 'O':
+        radix = 8;
+        break;
+      case 'x':
+      case 'X':
+        radix = 16;
+        break;
+      default:
+        return MP_BADARG;
+    }
+
+    pos += 2;
+  }
+
+  if ((value = mp_int_alloc()) == NULL) {
+    *out = NULL;
+    return MP_MEMORY;
+  }
+
+  if ((res = mp_int_read_string(value, radix, buf + pos)) != MP_OK) {
+    mp_int_free(value);
+    *out = NULL;
+    return res;
+  }
+
+  *out = value;
+  return res;
+}
+
+static int find_command(cstate_t *op) {
+  int ix, jx;
+  char *buf = op->ibuf;
+
+  /* First, try to find the command by name */
+  for (ix = 0; g_ops[ix].name != NULL; ++ix) {
+    if (strcasecmp(buf, g_ops[ix].name) == 0) return ix;
+  }
+
+  /* If we don't find the command, try a variable lookup */
+  for (jx = 0; (mp_size)jx < op->mused; ++jx) {
+    if (strcmp(buf, op->names[jx]) == 0) return ix; /* sentinel */
+  }
+
+  /* If variable lookup fails, report command not found */
+  return -1;
+}
+
+static void print_value(mp_int v) {
+  if (g_output_radix == 0) {
+    mp_result len = mp_int_binary_len(v);
+    unsigned char *buf = malloc(len);
+    int ix;
+
+    if (buf != NULL) {
+      mp_int_to_binary(v, buf, len);
+      for (ix = 0; ix < len - 1; ++ix) {
+        fprintf(g_output_file, "%02x.", buf[ix]);
+      }
+      fprintf(g_output_file, "%02x\n", buf[ix]);
+      free(buf);
+    } else {
+      fprintf(g_output_file, "<insufficient memory to print>\n");
+    }
+  } else {
+    mp_result len = mp_int_string_len(v, g_output_radix);
+    char *buf = malloc(len);
+
+    if (buf != NULL) {
+      mp_int_to_string(v, g_output_radix, buf, len);
+      fputs(buf, g_output_file);
+      fputc('\n', g_output_file);
+      free(buf);
+    } else {
+      fprintf(g_output_file, "<insufficient memory to print>\n");
+    }
+  }
+}
+
+static mp_result run_file(FILE *ifp, cstate_t *op_state) {
+  mp_result res = MP_OK;
+  token_t next;
+
+  op_state->ifp = ifp;
+  while ((next = next_token(ifp, op_state->ibuf, op_state->buflen)) != t_eof) {
+    mp_int value = NULL;
+    int cpos;
+
+    switch (next) {
+      case t_number:
+        if ((res = read_number(op_state->ibuf, &value)) != MP_OK)
+          fprintf(stderr, "error: invalid number syntax: %s\n", op_state->ibuf);
+        else if ((res = stack_push(op_state, value)) != MP_OK)
+          goto EXIT;
+        break;
+      case t_symbol:
+        if ((cpos = find_command(op_state)) < 0) {
+          fprintf(stderr, "error: command not understood: %s\n",
+                  op_state->ibuf);
+        } else if (op_state->used < (mp_size)g_ops[cpos].stack_size) {
+          fprintf(stderr, "error: not enough arguments (have %d, want %d)\n",
+                  op_state->used, g_ops[cpos].stack_size);
+        } else if ((res = (g_ops[cpos].handler)(op_state)) != MP_OK) {
+          if (res == MP_INPUT) {
+            fprintf(stderr, "error: incorrect input format\n");
+          } else {
+            fprintf(stderr, "error: %s\n", mp_error_string(res));
+          }
+        }
+        break;
+      default:
+        fprintf(stderr, "error: invalid input token: %s\n", op_state->ibuf);
+        res = MP_BADARG;
+        goto EXIT;
+    }
+  }
+
+EXIT:
+  return res;
+}
+
+static mp_result state_init(cstate_t *sp, mp_size n_elts) {
+  int ix;
+
+  assert(sp != NULL && n_elts > 0);
+
+  if ((sp->elts = malloc(n_elts * sizeof(*(sp->elts)))) == NULL)
+    return MP_MEMORY;
+  if ((sp->mem = malloc(n_elts * sizeof(*(sp->mem)))) == NULL) {
+    free(sp->elts);
+    return MP_MEMORY;
+  }
+  if ((sp->names = malloc(n_elts * sizeof(*(sp->names)))) == NULL) {
+    free(sp->mem);
+    free(sp->elts);
+    return MP_MEMORY;
+  }
+  if ((sp->ibuf = malloc(BUFFER_SIZE * sizeof(char))) == NULL) {
+    free(sp->names);
+    free(sp->mem);
+    free(sp->elts);
+    return MP_MEMORY;
+  }
+
+  for (ix = 0; (mp_size)ix < n_elts; ++ix) {
+    sp->elts[ix] = NULL;
+    sp->mem[ix] = NULL;
+    sp->names[ix] = NULL;
+  }
+
+  sp->alloc = n_elts;
+  sp->used = 0;
+  sp->mslots = n_elts;
+  sp->mused = 0;
+  sp->buflen = BUFFER_SIZE;
+
+  return MP_OK;
+}
+
+static void state_clear(cstate_t *sp) {
+  assert(sp != NULL);
+
+  if (sp->elts != NULL) {
+    int ix;
+
+    for (ix = 0; (mp_size)ix < sp->used; ++ix) {
+      mp_int_clear(sp->elts[ix]);
+      sp->elts[ix] = NULL;
+    }
+
+    free(sp->elts);
+    sp->elts = NULL;
+    sp->alloc = 0;
+    sp->used = 0;
+  }
+  if (sp->mem != NULL) {
+    int ix;
+
+    for (ix = 0; (mp_size)ix < sp->mused; ++ix) {
+      mp_int_free(sp->mem[ix]);
+      sp->mem[ix] = NULL;
+      free(sp->names[ix]);
+      sp->names[ix] = NULL;
+    }
+
+    free(sp->mem);
+    sp->mem = NULL;
+    free(sp->names);
+    sp->names = NULL;
+
+    sp->mslots = 0;
+    sp->mused = 0;
+  }
+  if (sp->ibuf != NULL) {
+    free(sp->ibuf);
+    sp->buflen = 0;
+  }
+  if (sp->ifp != NULL) {
+    fclose(sp->ifp);
+    sp->ifp = NULL;
+  }
+}
+
+static void stack_flush(cstate_t *sp) {
+  int ix;
+
+  assert(sp != NULL && sp->elts != NULL);
+
+  for (ix = 0; (mp_size)ix < sp->used; ++ix) {
+    mp_int_clear(sp->elts[ix]);
+    sp->elts[ix] = NULL;
+  }
+
+  sp->used = 0;
+}
+
+static mp_result stack_push(cstate_t *sp, mp_int elt) {
+  if (sp->used >= sp->alloc) {
+    mp_size nsize = 2 * sp->alloc;
+    mp_int *tmp;
+    int ix;
+
+    if ((tmp = malloc(nsize * sizeof(*(sp->elts)))) == NULL) return MP_MEMORY;
+
+    for (ix = 0; (mp_size)ix < sp->used; ++ix) {
+      tmp[ix] = sp->elts[ix];
+    }
+
+    free(sp->elts);
+    sp->elts = tmp;
+    sp->alloc = nsize;
+  }
+
+  sp->elts[sp->used++] = elt;
+  return MP_OK;
+}
+
+static mp_result stack_pop(cstate_t *sp) {
+  assert(sp != NULL && sp->elts != NULL);
+
+  if (sp->used == 0) return MP_UNDEF;
+
+  sp->used -= 1;
+  mp_int_clear(sp->elts[sp->used]);
+  sp->elts[sp->used] = NULL;
+
+  return MP_OK;
+}
+
+static mp_result mem_insert(cstate_t *sp, const char *name, mp_int value) {
+  int ix;
+
+  for (ix = 0; (mp_size)ix < sp->mused; ++ix) {
+    if (strcmp(name, sp->names[ix]) == 0) break;
+  }
+
+  /* Two cases:
+     ix < sp->mused   ==> replacing existing entry.
+     otherwise        ==> adding new entry, may need to grow dictionary.
+   */
+  if ((mp_size)ix < sp->mused) {
+    mp_int_free(sp->mem[ix]); /* fall through to the end */
+  } else {
+    if (sp->mused >= sp->mslots) {
+      mp_size nsize = 2 * sp->mslots;
+      mp_int *tz;
+      char **tc;
+      int jx;
+
+      if ((tz = malloc(nsize * sizeof(*(sp->mem)))) == NULL) return MP_MEMORY;
+      if ((tc = malloc(nsize * sizeof(*(sp->names)))) == NULL) {
+        free(tz);
+        return MP_MEMORY;
+      }
+
+      for (jx = 0; (mp_size)jx < sp->mused; ++jx) {
+        tz[jx] = sp->mem[jx];
+        tc[jx] = sp->names[jx];
+      }
+
+      free(sp->mem);
+      sp->mem = tz;
+      free(sp->names);
+      sp->names = tc;
+
+      sp->mslots = nsize;
+    }
+
+    sp->mused += 1;
+    sp->names[ix] = malloc(1 + strlen(name));
+    strcpy(sp->names[ix], name);
+  }
+
+  sp->mem[ix] = mp_int_alloc();
+  return mp_int_copy(value, sp->mem[ix]);
+}
+
+static mp_result mem_recall(cstate_t *sp, const char *name, mp_int value) {
+  int ix;
+
+  for (ix = 0; (mp_size)ix < sp->mused; ++ix) {
+    if (strcmp(name, sp->names[ix]) == 0) {
+      return mp_int_copy(sp->mem[ix], value);
+    }
+  }
+
+  return MP_UNDEF; /* not found */
+}
+
+static mp_result mem_clear(cstate_t *sp) {
+  int ix;
+
+  for (ix = 0; (mp_size)ix < sp->mused; ++ix) {
+    mp_int_free(sp->mem[ix]);
+    free(sp->names[ix]);
+  }
+  sp->mused = 0;
+
+  return MP_OK;
+}
+
+static mp_result cf_abs(cstate_t *sp) {
+  mp_int a = sp->elts[sp->used - 1];
+
+  return mp_int_abs(a, a);
+}
+
+static mp_result cf_neg(cstate_t *sp) {
+  mp_int a = sp->elts[sp->used - 1];
+
+  return mp_int_neg(a, a);
+}
+
+static mp_result cf_add(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res = mp_int_add(a, b, a);
+
+  if (res == MP_OK) stack_pop(sp);
+
+  return res;
+}
+
+static mp_result cf_sub(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res = mp_int_sub(a, b, a);
+
+  if (res == MP_OK) stack_pop(sp);
+
+  return res;
+}
+
+static mp_result cf_mul(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res = mp_int_mul(a, b, a);
+
+  if (res == MP_OK) stack_pop(sp);
+
+  return res;
+}
+
+static mp_result cf_divmod(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+
+  return mp_int_div(a, b, a, b);
+}
+
+static mp_result cf_div(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res = mp_int_div(a, b, a, NULL);
+
+  if (res == MP_OK) stack_pop(sp);
+
+  return res;
+}
+
+static mp_result cf_mod(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res = mp_int_mod(a, b, a);
+
+  if (res == MP_OK) stack_pop(sp);
+
+  return res;
+}
+
+static mp_result cf_expt(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res;
+  mp_small bval;
+
+  if ((res = mp_int_to_int(b, &bval)) != MP_OK) return res;
+
+  stack_pop(sp);
+  return mp_int_expt(a, bval, a);
+}
+
+static mp_result cf_exptmod(cstate_t *sp) {
+  mp_int m = sp->elts[sp->used - 1];
+  mp_int b = sp->elts[sp->used - 2];
+  mp_int a = sp->elts[sp->used - 3];
+  mp_result res = mp_int_exptmod(a, b, m, a);
+
+  if (res == MP_OK) {
+    stack_pop(sp);
+    stack_pop(sp);
+  }
+
+  return res;
+}
+
+static mp_result cf_square(cstate_t *sp) {
+  mp_int a = sp->elts[sp->used - 1];
+
+  return mp_int_sqr(a, a);
+}
+
+static mp_result cf_invmod(cstate_t *sp) {
+  mp_int m = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res = mp_int_invmod(a, m, a);
+
+  stack_pop(sp);
+
+  return res;
+}
+
+static mp_result cf_gcd(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res = mp_int_gcd(a, b, a);
+
+  if (res == MP_OK) stack_pop(sp);
+
+  return res;
+}
+
+static mp_result cf_xgcd(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_int t;
+  mp_result res;
+
+  if ((t = mp_int_alloc()) == NULL) return MP_MEMORY;
+  if ((res = mp_int_egcd(a, b, a, b, t)) != MP_OK) {
+    mp_int_free(t);
+    return res;
+  }
+
+  if ((res = stack_push(sp, t)) != MP_OK) mp_int_free(t);
+
+  return res;
+}
+
+static mp_result cf_sqrt(cstate_t *sp) {
+  mp_int a = sp->elts[sp->used - 1];
+
+  return mp_int_sqrt(a, a);
+}
+
+static mp_result cf_root(cstate_t *sp) {
+  mp_int a = sp->elts[sp->used - 2];
+  mp_int bp = sp->elts[sp->used - 1];
+  mp_small b;
+  mp_result res;
+
+  if ((res = mp_int_to_int(bp, &b)) != MP_OK) return res;
+
+  stack_pop(sp);
+  return mp_int_root(a, b, a);
+}
+
+static mp_result cf_cmplt(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res;
+
+  res = mp_int_set_value(a, (mp_int_compare(a, b) < 0));
+  stack_pop(sp);
+  return res;
+}
+
+static mp_result cf_cmpgt(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res;
+
+  res = mp_int_set_value(a, (mp_int_compare(a, b) > 0));
+  stack_pop(sp);
+  return res;
+}
+
+static mp_result cf_cmple(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res;
+
+  res = mp_int_set_value(a, (mp_int_compare(a, b) <= 0));
+  stack_pop(sp);
+  return res;
+}
+
+static mp_result cf_cmpge(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res;
+
+  res = mp_int_set_value(a, (mp_int_compare(a, b) >= 0));
+  stack_pop(sp);
+  return res;
+}
+
+static mp_result cf_cmpeq(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res;
+
+  res = mp_int_set_value(a, (mp_int_compare(a, b) == 0));
+  stack_pop(sp);
+  return res;
+}
+
+static mp_result cf_cmpne(cstate_t *sp) {
+  mp_int b = sp->elts[sp->used - 1];
+  mp_int a = sp->elts[sp->used - 2];
+  mp_result res;
+
+  res = mp_int_set_value(a, (mp_int_compare(a, b) != 0));
+  stack_pop(sp);
+  return res;
+}
+
+static mp_result cf_inc(cstate_t *sp) {
+  mp_int a = sp->elts[sp->used - 1];
+
+  return mp_int_add_value(a, 1, a);
+}
+
+static mp_result cf_dec(cstate_t *sp) {
+  mp_int a = sp->elts[sp->used - 1];
+
+  return mp_int_sub_value(a, 1, a);
+}
+
+static mp_result cf_fact(cstate_t *sp) {
+  mpz_t tmp;
+  mp_int x = sp->elts[sp->used - 1];
+  mp_result res = MP_OK;
+
+  if (mp_int_compare_zero(x) < 0) return MP_UNDEF;
+
+  (void)mp_int_init_value(&tmp, 1);
+
+  while (mp_int_compare_value(x, 1) > 0) {
+    if ((res = mp_int_mul(&tmp, x, &tmp)) != MP_OK) goto CLEANUP;
+    if ((res = mp_int_sub_value(x, 1, x)) != MP_OK) goto CLEANUP;
+  }
+
+  res = mp_int_copy(&tmp, x);
+
+CLEANUP:
+  mp_int_clear(&tmp);
+  return res;
+}
+
+static mp_result cf_pprint(cstate_t *sp) {
+  print_value(sp->elts[sp->used - 1]);
+  stack_pop(sp);
+  return MP_OK;
+}
+
+static mp_result cf_print(cstate_t *sp) {
+  print_value(sp->elts[sp->used - 1]);
+  return MP_OK;
+}
+
+static mp_result cf_pstack(cstate_t *sp) {
+  int ix;
+
+  if (sp->used == 0) {
+    fprintf(g_output_file, "<stack empty>\n");
+  } else {
+    for (ix = 0; (mp_size)ix < sp->used; ++ix) {
+      fprintf(g_output_file, "%2d: ", ix);
+      print_value(sp->elts[sp->used - 1 - ix]);
+    }
+  }
+
+  return MP_OK;
+}
+
+static mp_result cf_clstk(cstate_t *sp) {
+  stack_flush(sp);
+
+  return MP_OK;
+}
+
+static mp_result cf_pop(cstate_t *sp) { return stack_pop(sp); }
+
+static mp_result cf_dup(cstate_t *sp) {
+  mp_int cp = mp_int_alloc();
+  mp_result res;
+
+  if (cp == NULL) return MP_MEMORY;
+
+  if ((res = mp_int_copy(sp->elts[sp->used - 1], cp)) != MP_OK) {
+    mp_int_free(cp);
+    return res;
+  }
+
+  if ((res = stack_push(sp, cp)) != MP_OK) mp_int_free(cp);
+
+  return res;
+}
+
+static mp_result cf_copy(cstate_t *sp) {
+  mp_int n = sp->elts[sp->used - 1];
+  mp_result res;
+  mp_small ncopy;
+  int ix;
+
+  if ((res = mp_int_to_int(n, &ncopy)) != MP_OK) return res;
+
+  if (ncopy < 1 || ncopy >= sp->used) return MP_RANGE;
+
+  stack_pop(sp);
+
+  for (ix = 0; ix < ncopy; ++ix) {
+    mp_int old = sp->elts[sp->used - ncopy];
+    mp_int new = mp_int_alloc();
+
+    if (new == NULL) return MP_MEMORY;
+
+    if ((res = mp_int_copy(old, new)) != MP_OK) {
+      mp_int_free(new);
+      return res;
+    }
+    if ((res = stack_push(sp, new)) != MP_OK) return res;
+  }
+
+  return MP_OK;
+}
+
+static mp_result cf_swap(cstate_t *sp) {
+  mp_int t = sp->elts[sp->used - 1];
+
+  sp->elts[sp->used - 1] = sp->elts[sp->used - 2];
+  sp->elts[sp->used - 2] = t;
+
+  return MP_OK;
+}
+
+static mp_result cf_rot(cstate_t *sp) {
+  mp_int t = sp->elts[sp->used - 3];
+
+  sp->elts[sp->used - 3] = sp->elts[sp->used - 2];
+  sp->elts[sp->used - 2] = sp->elts[sp->used - 1];
+  sp->elts[sp->used - 1] = t;
+
+  return MP_OK;
+}
+
+static mp_result cf_pick(cstate_t *sp) {
+  mp_int n = sp->elts[sp->used - 1];
+  mp_result res;
+  mp_small pos = 0;
+
+  if ((res = mp_int_to_int(n, &pos)) != MP_OK) return res;
+
+  if (pos < 0 || pos >= sp->used - 1) return MP_RANGE;
+
+  return mp_int_copy(sp->elts[sp->used - 2 - pos], n);
+}
+
+static mp_result cf_setr(cstate_t *sp) {
+  mp_int a = sp->elts[sp->used - 1];
+  mp_result res;
+  mp_small rdx = 0;
+
+  if ((res = mp_int_to_int(a, &rdx)) != MP_OK) return res;
+
+  if (rdx < MP_MIN_RADIX || rdx > MP_MAX_RADIX) return MP_RANGE;
+
+  g_output_radix = rdx;
+  stack_pop(sp);
+  return MP_OK;
+}
+
+static mp_result cf_setbin(cstate_t *sp) {
+  g_output_radix = 0;
+  return MP_OK;
+}
+
+static mp_result cf_help(cstate_t *sp) {
+  int ix, maxlen = 10; /* minimum width */
+
+  for (ix = 0; g_ops[ix].name != NULL; ++ix) {
+    int len = strlen(g_ops[ix].name);
+
+    if (len > maxlen) maxlen = len;
+  }
+
+  fprintf(stderr, "Operators understood:\n");
+  for (ix = 0; g_ops[ix].name != NULL; ++ix) {
+    int len = strlen(g_ops[ix].name);
+
+    fputs(g_ops[ix].name, stderr);
+    while (len++ <= maxlen) fputc(' ', stderr);
+
+    fprintf(stderr, "%s\n", g_ops[ix].descript);
+  }
+  fputc('\n', stderr);
+
+  return MP_OK;
+}
+
+static mp_result cf_store(cstate_t *sp) {
+  mp_result res;
+
+  if (next_token(sp->ifp, sp->ibuf, sp->buflen) != t_symbol) return MP_INPUT;
+
+  if ((res = mem_insert(sp, sp->ibuf, sp->elts[sp->used - 1])) != MP_OK)
+    return res;
+
+  return stack_pop(sp);
+}
+
+static mp_result cf_recall(cstate_t *sp) {
+  mp_result res;
+  mp_int val;
+
+  if (next_token(sp->ifp, sp->ibuf, sp->buflen) != t_symbol) return MP_INPUT;
+
+  if ((val = mp_int_alloc()) == NULL) return MP_MEMORY;
+  if ((res = mem_recall(sp, sp->ibuf, val)) != MP_OK) {
+    mp_int_free(val);
+    return res;
+  }
+
+  return stack_push(sp, val);
+}
+
+static mp_result cf_cmem(cstate_t *sp) { return mem_clear(sp); }
+
+static mp_result cf_pmem(cstate_t *sp) {
+  int ix, max_len = 0;
+
+  if (sp->mused == 0) {
+    fprintf(g_output_file, "<memory empty>\n");
+    return MP_OK;
+  }
+
+  for (ix = 0; (mp_size)ix < sp->mused; ++ix) {
+    int ln = strlen(sp->names[ix]);
+
+    if (ln > max_len) max_len = ln;
+  }
+
+  max_len += 1; /* allow for a padding space */
+
+  for (ix = 0; (mp_size)ix < sp->mused; ++ix) {
+    int ln = strlen(sp->names[ix]);
+
+    fprintf(g_output_file, "%s:", sp->names[ix]);
+
+    while (ln++ < max_len) fputc(' ', g_output_file);
+
+    print_value(sp->mem[ix]);
+  }
+
+  return MP_OK;
+}
+
+static mp_result cf_qrecall(cstate_t *sp) {
+  mp_result res;
+  mp_int val;
+
+  if ((val = mp_int_alloc()) == NULL) return MP_MEMORY;
+
+  if ((res = mem_recall(sp, sp->ibuf, val)) != MP_OK) {
+    mp_int_free(val);
+    return res;
+  }
+
+  return stack_push(sp, val);
+}
+
+/* Here there be dragons */
diff --git a/polly/lib/External/isl/imath/examples/input.c b/polly/lib/External/isl/imath/examples/input.c
new file mode 100644 (file)
index 0000000..860cda5
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+  Name:    input.c
+  Purpose: Basic I/O demo for IMath.
+  Author:  Michael J. Fromberger
+
+  This program demonstrates how to read and write arbitrary precision integers
+  using IMath.
+
+  Copyright (C) 2003-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "imrat.h"
+
+int main(int argc, char *argv[]) {
+  mp_size radix = 10; /* Default output radix */
+  mpq_t value;
+  mp_result res;
+  char *endp;
+
+  if (argc < 2) {
+    fprintf(stderr, "Usage: input <value> [output-base]\n");
+    return 1;
+  }
+  if (argc > 2) {
+    if ((radix = atoi(argv[2])) < MP_MIN_RADIX || (radix > MP_MAX_RADIX)) {
+      fprintf(stderr, "Error:  Specified radix is out of range (%d)\n", radix);
+      return 1;
+    }
+  }
+
+  /* Initialize a new value, initially zero; illustrates how to check
+     for errors (e.g., out of memory) and display a message.  */
+  if ((res = mp_rat_init(&value)) != MP_OK) {
+    fprintf(stderr, "Error in mp_rat_init(): %s\n", mp_error_string(res));
+    return 1;
+  }
+
+  /* Read value in base 10 */
+  if ((res = mp_rat_read_ustring(&value, 0, argv[1], &endp)) != MP_OK) {
+    fprintf(stderr, "Error in mp_rat_read_ustring(): %s\n",
+            mp_error_string(res));
+
+    if (res == MP_TRUNC) fprintf(stderr, " -- remaining input is: %s\n", endp);
+
+    mp_rat_clear(&value);
+    return 1;
+  }
+
+  printf("Here is your value in base %d\n", radix);
+  {
+    mp_result buf_size, res;
+    char *obuf;
+
+    if (mp_rat_is_integer(&value)) {
+      /* Allocate a buffer big enough to hold the given value, including
+         sign and zero terminator. */
+      buf_size = mp_int_string_len(MP_NUMER_P(&value), radix);
+      obuf = malloc(buf_size);
+
+      /* Convert the value to a string in the desired radix. */
+      res = mp_int_to_string(MP_NUMER_P(&value), radix, obuf, buf_size);
+      if (res != MP_OK) {
+        fprintf(stderr, "Converstion to base %d failed: %s\n", radix,
+                mp_error_string(res));
+        mp_rat_clear(&value);
+        return 1;
+      }
+    } else {
+      /* Allocate a buffer big enough to hold the given value, including
+         sign and zero terminator. */
+      buf_size = mp_rat_string_len(&value, radix);
+      obuf = malloc(buf_size);
+
+      /* Convert the value to a string in the desired radix. */
+      res = mp_rat_to_string(&value, radix, obuf, buf_size);
+      if (res != MP_OK) {
+        fprintf(stderr, "Conversion to base %d failed: %s\n", radix,
+                mp_error_string(res));
+        mp_rat_clear(&value);
+        return 1;
+      }
+    }
+    fputs(obuf, stdout);
+    fputc('\n', stdout);
+    free(obuf);
+  }
+
+  /* When you are done with a value, it must be "cleared" to release
+     the memory it occupies */
+  mp_rat_clear(&value);
+  return 0;
+}
+
+/* Here there be dragons */
diff --git a/polly/lib/External/isl/imath/examples/pi.c b/polly/lib/External/isl/imath/examples/pi.c
new file mode 100644 (file)
index 0000000..bd14a1a
--- /dev/null
@@ -0,0 +1,173 @@
+/*
+  Name:     pi.c
+  Purpose:  Computes digits of the physical constant pi.
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Notes:
+  Uses Machin's formula, which should be suitable for a few thousand digits.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include "imath.h"
+
+int g_radix = 10; /* use this radix for output */
+
+mp_result arctan(mp_small radix, mp_small mul, mp_small x, mp_small prec,
+                 mp_int sum);
+
+char g_buf[4096];
+
+int main(int argc, char *argv[]) {
+  mp_result res;
+  mpz_t sum1, sum2;
+  int ndigits, out = 0;
+  clock_t start, end;
+
+  if (argc < 2) {
+    fprintf(stderr, "Usage: %s <num-digits> [<radix>]\n", argv[0]);
+    return 1;
+  }
+
+  if ((ndigits = abs(atoi(argv[1]))) == 0) {
+    fprintf(stderr, "%s: you must request at least 1 digit\n", argv[0]);
+    return 1;
+  } else if ((mp_word)ndigits > MP_DIGIT_MAX) {
+    fprintf(stderr, "%s: you may request at most %u digits\n", argv[0],
+            (unsigned int)MP_DIGIT_MAX);
+    return 1;
+  }
+
+  if (argc > 2) {
+    int radix = atoi(argv[2]);
+
+    if (radix < MP_MIN_RADIX || radix > MP_MAX_RADIX) {
+      fprintf(stderr, "%s: you may only specify a radix between %d and %d\n",
+              argv[0], MP_MIN_RADIX, MP_MAX_RADIX);
+      return 1;
+    }
+    g_radix = radix;
+  }
+
+  mp_int_init(&sum1);
+  mp_int_init(&sum2);
+  start = clock();
+
+  /* sum1 = 16 * arctan(1/5) */
+  if ((res = arctan(g_radix, 16, 5, ndigits, &sum1)) != MP_OK) {
+    fprintf(stderr, "%s: error computing arctan: %d\n", argv[0], res);
+    out = 1;
+    goto CLEANUP;
+  }
+
+  /* sum2 = 4 * arctan(1/239) */
+  if ((res = arctan(g_radix, 4, 239, ndigits, &sum2)) != MP_OK) {
+    fprintf(stderr, "%s: error computing arctan: %d\n", argv[0], res);
+    out = 1;
+    goto CLEANUP;
+  }
+
+  /* pi = sum1 - sum2 */
+  if ((res = mp_int_sub(&sum1, &sum2, &sum1)) != MP_OK) {
+    fprintf(stderr, "%s: error computing pi: %d\n", argv[0], res);
+    out = 1;
+    goto CLEANUP;
+  }
+  end = clock();
+
+  mp_int_to_string(&sum1, g_radix, g_buf, sizeof(g_buf));
+  printf("%c.%s\n", g_buf[0], g_buf + 1);
+
+  fprintf(stderr, "Computation took %.2f sec.\n",
+          (double)(end - start) / CLOCKS_PER_SEC);
+
+CLEANUP:
+  mp_int_clear(&sum1);
+  mp_int_clear(&sum2);
+
+  return out;
+}
+
+/*
+  Compute mul * atan(1/x) to prec digits of precision, and store the
+  result in sum.
+
+  Computes atan(1/x) using the formula:
+
+               1     1      1      1
+  atan(1/x) = --- - ---- + ---- - ---- + ...
+               x    3x^3   5x^5   7x^7
+
+ */
+mp_result arctan(mp_small radix, mp_small mul, mp_small x, mp_small prec,
+                 mp_int sum) {
+  mpz_t t, v;
+  mp_result res;
+  mp_small rem, sign = 1, coeff = 1;
+
+  mp_int_init(&t);
+  mp_int_init(&v);
+  ++prec;
+
+  /* Compute mul * radix^prec * x
+     The initial multiplication by x saves a special case in the loop for
+     the first term of the series.
+   */
+  if ((res = mp_int_expt_value(radix, prec, &t)) != MP_OK ||
+      (res = mp_int_mul_value(&t, mul, &t)) != MP_OK ||
+      (res = mp_int_mul_value(&t, x, &t)) != MP_OK)
+    goto CLEANUP;
+
+  x *= x; /* assumes x <= sqrt(MP_SMALL_MAX) */
+  mp_int_zero(sum);
+
+  do {
+    if ((res = mp_int_div_value(&t, x, &t, &rem)) != MP_OK) goto CLEANUP;
+
+    if ((res = mp_int_div_value(&t, coeff, &v, &rem)) != MP_OK) goto CLEANUP;
+
+    /* Add or subtract the result depending on the current sign (1 = add) */
+    if (sign > 0)
+      res = mp_int_add(sum, &v, sum);
+    else
+      res = mp_int_sub(sum, &v, sum);
+
+    if (res != MP_OK) goto CLEANUP;
+    sign = -sign;
+    coeff += 2;
+
+  } while (mp_int_compare_zero(&t) != 0);
+
+  res = mp_int_div_value(sum, radix, sum, NULL);
+
+CLEANUP:
+  mp_int_clear(&v);
+  mp_int_clear(&t);
+
+  return res;
+}
+
+/* Here there be dragons */
diff --git a/polly/lib/External/isl/imath/examples/randprime.c b/polly/lib/External/isl/imath/examples/randprime.c
new file mode 100644 (file)
index 0000000..fd674a0
--- /dev/null
@@ -0,0 +1,240 @@
+/*
+  Name:     randprime.c
+  Purpose:  Generate a probable prime at random.
+  Author:   M. J. Fromberger
+
+  Usage:  randprime [-s] <bits> [<outfile>]
+
+  Generate a randomly-chosen probable prime having <bits> significant bits, and
+  write it to the specified output file or to the standard output.  If the "-s"
+  option is given, a prime p is chosen such that (p - 1) / 2 is also prime.
+
+  A prime is obtained by reading random bits from /dev/random, setting the
+  low-order bit, and testing for primality.  If the first candidate is not
+  prime, successive odd candidates are tried until a probable prime is found.
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <getopt.h>
+#include <unistd.h>
+
+#include "imath.h"
+#include "iprime.h"
+
+/* Load the specified buffer with random bytes */
+int randomize(unsigned char *buf, size_t len);
+
+/* Overwrite the specified value with n_bits random bits */
+mp_result mp_int_randomize(mp_int a, mp_size n_bits);
+
+/* Find a prime starting from the given odd seed */
+mp_result find_prime(mp_int seed, FILE *fb);
+mp_result find_strong_prime(mp_int seed, FILE *fb);
+
+typedef mp_result (*find_f)(mp_int, FILE *);
+
+int main(int argc, char *argv[]) {
+  int opt, modbits;
+  FILE *ofp = stdout;
+  mp_result res;
+  find_f find_func = find_prime;
+  char tag = 'p';
+  mpz_t value;
+
+  /* Process command-line arguments */
+  while ((opt = getopt(argc, argv, "s")) != EOF) {
+    switch (opt) {
+      case 's':
+        find_func = find_strong_prime;
+        tag = 'P';
+        break;
+      default:
+        fprintf(stderr, "Usage: randprime [-s] <bits> [<outfile>]\n");
+        return 1;
+    }
+  }
+
+  if (optind >= argc) {
+    fprintf(stderr,
+            "Error:  You must specify the number of significant bits.\n");
+    fprintf(stderr, "Usage: randprime [-s] <bits> [<outfile>]\n");
+    return 1;
+  }
+  modbits = (int)strtol(argv[optind++], NULL, 0);
+  if (modbits < CHAR_BIT) {
+    fprintf(stderr, "Error:  Invalid value for number of significant bits.\n");
+    return 1;
+  }
+  if (modbits % 2 == 1) ++modbits;
+
+  /* Check if output file is specified */
+  if (optind < argc) {
+    if ((ofp = fopen(argv[optind], "wt")) == NULL) {
+      fprintf(stderr,
+              "Error:  Unable to open output file for writing.\n"
+              " - Filename: %s\n"
+              " - Error:    %s\n",
+              argv[optind], strerror(errno));
+      return 1;
+    }
+  }
+
+  mp_int_init(&value);
+  if ((res = mp_int_randomize(&value, modbits - 1)) != MP_OK) {
+    fprintf(stderr,
+            "Error:  Unable to generate random start value.\n"
+            " - %s (%d)\n",
+            mp_error_string(res), res);
+    goto EXIT;
+  }
+  fprintf(stderr, "%c: ", tag);
+  find_func(&value, stderr);
+  fputc('\n', stderr);
+
+  /* Write the completed value to the specified output file */
+  {
+    int len;
+    char *obuf;
+
+    len = mp_int_string_len(&value, 10);
+    obuf = malloc(len);
+    mp_int_to_string(&value, 10, obuf, len);
+    fputs(obuf, ofp);
+    fputc('\n', ofp);
+
+    free(obuf);
+  }
+
+EXIT:
+  fclose(ofp);
+  mp_int_clear(&value);
+  return 0;
+}
+
+int randomize(unsigned char *buf, size_t len) {
+  FILE *rnd = fopen("/dev/random", "rb");
+  size_t nr;
+
+  if (rnd == NULL) return -1;
+
+  nr = fread(buf, sizeof(*buf), len, rnd);
+  fclose(rnd);
+
+  return (int)nr;
+}
+
+mp_result mp_int_randomize(mp_int a, mp_size n_bits) {
+  mp_size n_bytes = (n_bits + CHAR_BIT - 1) / CHAR_BIT;
+  unsigned char *buf;
+  mp_result res = MP_OK;
+
+  if ((buf = malloc(n_bytes)) == NULL) return MP_MEMORY;
+
+  if ((mp_size)randomize(buf, n_bytes) != n_bytes) {
+    res = MP_TRUNC;
+    goto CLEANUP;
+  }
+
+  /* Clear bits beyond the number requested */
+  if (n_bits % CHAR_BIT != 0) {
+    unsigned char b_mask = (1 << (n_bits % CHAR_BIT)) - 1;
+    unsigned char t_mask = (1 << (n_bits % CHAR_BIT)) >> 1;
+
+    buf[0] &= b_mask;
+    buf[0] |= t_mask;
+  }
+
+  /* Set low-order bit to insure value is odd */
+  buf[n_bytes - 1] |= 1;
+
+  res = mp_int_read_unsigned(a, buf, n_bytes);
+
+CLEANUP:
+  memset(buf, 0, n_bytes);
+  free(buf);
+
+  return res;
+}
+
+mp_result find_prime(mp_int seed, FILE *fb) {
+  mp_result res;
+  int count = 0;
+
+  if (mp_int_is_even(seed)) {
+    if ((res = mp_int_add_value(seed, 1, seed)) != MP_OK) {
+      return res;
+    }
+  }
+
+  while ((res = mp_int_is_prime(seed)) == MP_FALSE) {
+    ++count;
+
+    if (fb != NULL && (count % 50) == 0) {
+      fputc('.', fb);
+    }
+    if ((res = mp_int_add_value(seed, 2, seed)) != MP_OK) {
+      return res;
+    }
+  }
+
+  if (res == MP_TRUE && fb != NULL) fputc('+', fb);
+
+  return res;
+}
+
+mp_result find_strong_prime(mp_int seed, FILE *fb) {
+  mp_result res = MP_OK;
+  mpz_t t;
+
+  mp_int_init(&t);
+  for (;;) {
+    if (find_prime(seed, fb) != MP_TRUE) break;
+    if (mp_int_copy(seed, &t) != MP_OK) break;
+
+    if (mp_int_mul_pow2(&t, 1, &t) != MP_OK ||
+        mp_int_add_value(&t, 1, &t) != MP_OK) {
+      break;
+    }
+
+    if ((res = mp_int_is_prime(&t)) == MP_TRUE) {
+      if (fb != NULL) fputc('!', fb);
+
+      res = mp_int_copy(&t, seed);
+      break;
+    } else if (res != MP_FALSE)
+      break;
+
+    if (fb != NULL) fputc('x', fb);
+    if (mp_int_add_value(seed, 2, seed) != MP_OK) break;
+  }
+
+  mp_int_clear(&t);
+  return res;
+}
+
+/* Here there be dragons */
diff --git a/polly/lib/External/isl/imath/examples/rounding.c b/polly/lib/External/isl/imath/examples/rounding.c
new file mode 100644 (file)
index 0000000..bc350f8
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+  Name:     rounding.c
+  Purpose:  Demonstrates rounding modes.
+  Author:   M. J. Fromberger
+
+  Bugs:  The rounding mode can only be specified by value, not name.
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "imath.h"
+#include "imrat.h"
+
+int main(int argc, char *argv[]) {
+  mp_result mode, len, res = 0;
+  mp_size prec, radix;
+  mpq_t value;
+  char *buf;
+
+  if (argc < 5) {
+    fprintf(stderr, "Usage: rounding <mode> <precision> <radix> <value>\n");
+    return 1;
+  }
+
+  if ((res = mp_rat_init(&value)) != MP_OK) {
+    fprintf(stderr, "Error initializing: %s\n", mp_error_string(res));
+    return 2;
+  }
+
+  mode = atoi(argv[1]);
+  prec = atoi(argv[2]);
+  radix = atoi(argv[3]);
+
+  printf(
+      "Rounding mode:   %d\n"
+      "Precision:       %u digits\n"
+      "Radix:           %u\n"
+      "Input string:    \"%s\"\n",
+      mode, prec, radix, argv[4]);
+
+  if ((res = mp_rat_read_decimal(&value, radix, argv[4])) != MP_OK) {
+    fprintf(stderr, "Error reading input string: %s\n", mp_error_string(res));
+    goto CLEANUP;
+  }
+
+  len = mp_rat_decimal_len(&value, radix, prec);
+  buf = malloc(len);
+
+  if ((res = mp_rat_to_decimal(&value, radix, prec, mode, buf, len)) != MP_OK) {
+    fprintf(stderr, "Error converting output: %s\n", mp_error_string(res));
+  }
+
+  printf("Result string:   \"%s\"\n", buf);
+  free(buf);
+
+CLEANUP:
+  mp_rat_clear(&value);
+  return res;
+}
+
+/* Here there be dragons */
diff --git a/polly/lib/External/isl/imath/examples/rsakey.c b/polly/lib/External/isl/imath/examples/rsakey.c
new file mode 100644 (file)
index 0000000..b0df988
--- /dev/null
@@ -0,0 +1,304 @@
+/*
+  Name:     rsakey.c
+  Purpose:  Generate keys for the RSA cryptosystem.
+  Author:   M. J. Fromberger
+
+  Usage:  rsakey [-e <expt>] <modbits> [<outfile>]
+
+  Generates an RSA key pair with a modulus having <modbits> significant bits,
+  and writes it to the specified output file, or to the standard output.  The
+  -e option allows the user to specify an encryption exponent; otherwise, an
+  encryption exponent is chosen at random.
+
+  Primes p and q are obtained by reading random bits from /dev/random, setting
+  the low-order bit, and testing for primality.  If the first candidate is not
+  prime, successive odd candidates are tried until a probable prime is found.
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <getopt.h>
+#include <unistd.h>
+
+#include "imath.h"
+#include "iprime.h"
+
+typedef struct {
+  mpz_t p;
+  mpz_t q;
+  mpz_t n;
+  mpz_t e;
+  mpz_t d;
+} rsa_key;
+
+/* Load the specified buffer with random bytes */
+int randomize(unsigned char *buf, size_t len);
+
+/* Overwrite the specified value with n_bits random bits */
+mp_result mp_int_randomize(mp_int a, mp_size n_bits);
+
+/* Find a prime starting from the given odd seed */
+mp_result find_prime(mp_int seed, FILE *fb);
+
+/* Initialize/destroy an rsa_key structure */
+mp_result rsa_key_init(rsa_key *kp);
+void rsa_key_clear(rsa_key *kp);
+void rsa_key_write(rsa_key *kp, FILE *ofp);
+
+int main(int argc, char *argv[]) {
+  int opt, modbits;
+  FILE *ofp = stdout;
+  char *expt = NULL;
+  rsa_key the_key;
+  mp_result res;
+
+  /* Process command-line arguments */
+  while ((opt = getopt(argc, argv, "e:")) != EOF) {
+    switch (opt) {
+      case 'e':
+        expt = optarg;
+        break;
+      default:
+        fprintf(stderr, "Usage: rsakey [-e <expt>] <modbits> [<outfile>]\n");
+        return 1;
+    }
+  }
+
+  if (optind >= argc) {
+    fprintf(stderr, "Error:  You must specify the number of modulus bits.\n");
+    fprintf(stderr, "Usage: rsakey [-e <expt>] <modbits> [<outfile>]\n");
+    return 1;
+  }
+  modbits = (int)strtol(argv[optind++], NULL, 0);
+  if (modbits < CHAR_BIT) {
+    fprintf(stderr, "Error:  Invalid value for number of modulus bits.\n");
+    return 1;
+  }
+  if (modbits % 2 == 1) ++modbits;
+
+  /* Check if output file is specified */
+  if (optind < argc) {
+    if ((ofp = fopen(argv[optind], "wt")) == NULL) {
+      fprintf(stderr,
+              "Error:  Unable to open output file for writing.\n"
+              " - Filename: %s\n"
+              " - Error:    %s\n",
+              argv[optind], strerror(errno));
+      return 1;
+    }
+  }
+
+  if ((res = rsa_key_init(&the_key)) != MP_OK) {
+    fprintf(stderr,
+            "Error initializing RSA key structure:\n"
+            " - %s (%d)\n",
+            mp_error_string(res), res);
+    return 1;
+  }
+
+  /* If specified, try to load the key exponent */
+  if (expt != NULL) {
+    if ((res = mp_int_read_string(&(the_key.e), 10, expt)) != MP_OK) {
+      fprintf(stderr,
+              "Error:  Invalid value for encryption exponent.\n"
+              " - %s (%d)\n",
+              mp_error_string(res), res);
+      goto EXIT;
+    }
+  }
+
+  if ((res = mp_int_randomize(&(the_key.p), (modbits / 2))) != MP_OK) {
+    fprintf(stderr,
+            "Error:  Unable to randomize first prime.\n"
+            " - %s (%d)\n",
+            mp_error_string(res), res);
+    goto EXIT;
+  }
+  fprintf(stderr, "p: ");
+  find_prime(&(the_key.p), stderr);
+
+  if ((res = mp_int_randomize(&(the_key.q), (modbits / 2))) != MP_OK) {
+    fprintf(stderr,
+            "Error:  Unable to randomize second prime.\n"
+            " - %s (%d)\n",
+            mp_error_string(res), res);
+    goto EXIT;
+  }
+  fprintf(stderr, "\nq: ");
+  find_prime(&(the_key.q), stderr);
+  fputc('\n', stderr);
+
+  /* Temporarily, the key's "n" field will be (p - 1) * (q - 1) for
+     purposes of computing the decryption exponent.
+   */
+  mp_int_mul(&(the_key.p), &(the_key.q), &(the_key.n));
+  mp_int_sub(&(the_key.n), &(the_key.p), &(the_key.n));
+  mp_int_sub(&(the_key.n), &(the_key.q), &(the_key.n));
+  mp_int_add_value(&(the_key.n), 1, &(the_key.n));
+
+  if (expt == NULL &&
+      (res = mp_int_randomize(&(the_key.e), (modbits / 2))) != MP_OK) {
+    fprintf(stderr,
+            "Error:  Unable to randomize encryption exponent.\n"
+            " - %s (%d)\n",
+            mp_error_string(res), res);
+    goto EXIT;
+  }
+  while ((res = mp_int_invmod(&(the_key.e), &(the_key.n), &(the_key.d))) !=
+         MP_OK) {
+    if (expt != NULL) {
+      fprintf(stderr,
+              "Error:  Unable to compute decryption exponent.\n"
+              " - %s (%d)\n",
+              mp_error_string(res), res);
+      goto EXIT;
+    }
+    if ((res = mp_int_randomize(&(the_key.e), (modbits / 2))) != MP_OK) {
+      fprintf(stderr,
+              "Error:  Unable to re-randomize encryption exponent.\n"
+              " - %s (%d)\n",
+              mp_error_string(res), res);
+      goto EXIT;
+    }
+  }
+
+  /* Recompute the real modulus, now that exponents are done. */
+  mp_int_mul(&(the_key.p), &(the_key.q), &(the_key.n));
+
+  /* Write completed key to the specified output file */
+  rsa_key_write(&the_key, ofp);
+
+EXIT:
+  fclose(ofp);
+  rsa_key_clear(&the_key);
+  return 0;
+}
+
+int randomize(unsigned char *buf, size_t len) {
+  FILE *rnd = fopen("/dev/random", "rb");
+  size_t nr;
+
+  if (rnd == NULL) return -1;
+
+  nr = fread(buf, sizeof(*buf), len, rnd);
+  fclose(rnd);
+
+  return (int)nr;
+}
+
+mp_result mp_int_randomize(mp_int a, mp_size n_bits) {
+  mp_size n_bytes = (n_bits + CHAR_BIT - 1) / CHAR_BIT;
+  unsigned char *buf;
+  mp_result res = MP_OK;
+
+  if ((buf = malloc(n_bytes)) == NULL) return MP_MEMORY;
+
+  if ((mp_size)randomize(buf, n_bytes) != n_bytes) {
+    res = MP_TRUNC;
+    goto CLEANUP;
+  }
+
+  /* Clear bits beyond the number requested */
+  if (n_bits % CHAR_BIT != 0) {
+    unsigned char b_mask = (1 << (n_bits % CHAR_BIT)) - 1;
+    unsigned char t_mask = (1 << (n_bits % CHAR_BIT)) >> 1;
+
+    buf[0] &= b_mask;
+    buf[0] |= t_mask;
+  }
+
+  /* Set low-order bit to insure value is odd */
+  buf[n_bytes - 1] |= 1;
+
+  res = mp_int_read_unsigned(a, buf, n_bytes);
+
+CLEANUP:
+  memset(buf, 0, n_bytes);
+  free(buf);
+
+  return res;
+}
+
+mp_result find_prime(mp_int seed, FILE *fb) {
+  mp_result res;
+  int count = 0;
+
+  if (mp_int_is_even(seed))
+    if ((res = mp_int_add_value(seed, 1, seed)) != MP_OK) return res;
+
+  while ((res = mp_int_is_prime(seed)) == MP_FALSE) {
+    ++count;
+
+    if (fb != NULL && (count % 50) == 0) fputc('.', fb);
+
+    if ((res = mp_int_add_value(seed, 2, seed)) != MP_OK) return res;
+  }
+
+  if (res == MP_TRUE && fb != NULL) fputc('+', fb);
+
+  return res;
+}
+
+mp_result rsa_key_init(rsa_key *kp) {
+  mp_int_init(&(kp->p));
+  mp_int_init(&(kp->q));
+  mp_int_init(&(kp->n));
+  mp_int_init(&(kp->e));
+  mp_int_init(&(kp->d));
+
+  return MP_OK;
+}
+
+void rsa_key_clear(rsa_key *kp) {
+  mp_int_clear(&(kp->p));
+  mp_int_clear(&(kp->q));
+  mp_int_clear(&(kp->n));
+  mp_int_clear(&(kp->e));
+  mp_int_clear(&(kp->d));
+}
+
+void rsa_key_write(rsa_key *kp, FILE *ofp) {
+  int len;
+  char *obuf;
+
+  len = mp_int_string_len(&(kp->n), 10);
+  obuf = malloc(len);
+  mp_int_to_string(&(kp->p), 10, obuf, len);
+  fprintf(ofp, "p = %s\n", obuf);
+  mp_int_to_string(&(kp->q), 10, obuf, len);
+  fprintf(ofp, "q = %s\n", obuf);
+  mp_int_to_string(&(kp->e), 10, obuf, len);
+  fprintf(ofp, "e = %s\n", obuf);
+  mp_int_to_string(&(kp->d), 10, obuf, len);
+  fprintf(ofp, "d = %s\n", obuf);
+  mp_int_to_string(&(kp->n), 10, obuf, len);
+  fprintf(ofp, "n = %s\n", obuf);
+
+  free(obuf);
+}
+
+/* Here there be dragons */
diff --git a/polly/lib/External/isl/imath/imdrover.c b/polly/lib/External/isl/imath/imdrover.c
new file mode 100644 (file)
index 0000000..40860d6
--- /dev/null
@@ -0,0 +1,1462 @@
+/*
+  Name:     imdrover.c
+  Purpose:  Keeper of the hordes of testing code.
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2007 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include <assert.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "imath.h"
+#include "imdrover.h"
+#include "imrat.h"
+#include "iprime.h"
+
+/* Globals visible from outside this file */
+mp_result imath_errno;
+char* imath_errmsg;
+
+/* Set imath_errno and return failure from a test. */
+#define FAIL(E) return (imath_errno = (E), false)
+
+/* Check that an expression X yields the expected mp_result value V. */
+#define VCHECK(X, V)           \
+  do {                         \
+    mp_result res_;            \
+    if ((res_ = (X)) != (V)) { \
+      FAIL(res_);              \
+    }                          \
+  } while (0)
+#define CHECK(X) VCHECK(X, MP_OK)
+#define ECHECK(X) VCHECK(X, expect)
+#define ACHECK(X)      \
+  do {                 \
+    if (!(X)) {        \
+      FAIL(MP_BADARG); \
+    }                  \
+  } while (0)
+
+#define OUTPUT_LIMIT 2048
+#define NUM_REGS 16
+#define OTHER_ERROR -1024
+
+static char g_output[OUTPUT_LIMIT];
+static mpz_t g_zreg[NUM_REGS];
+static mpq_t g_qreg[NUM_REGS];
+static unsigned char g_bin1[OUTPUT_LIMIT];
+static unsigned char g_bin2[OUTPUT_LIMIT];
+
+extern void trim_line(char* line); /* borrowed from imtest.c */
+
+/* Read in a string with radix tags */
+static mp_result read_int_value(mp_int z, char* str);
+static mp_result read_rat_value(mp_rat q, char* str);
+
+/* Read in a string with radix tags, as a long (not an mp_int) */
+static bool read_long(long* z, char* str);
+
+/* Parse the input and output values and fill in pointers to the
+   registers containing them.  Returns true if all is well, false
+   in case of error.  Caller allocates in/out to correct sizes. */
+static bool parse_int_values(testspec_t* t, mp_int* in, mp_int* out,
+                             mp_result* rval);
+static bool parse_rat_values(testspec_t* t, mp_rat* in, mp_rat* out,
+                             mp_result* rval);
+
+/* Parse a result code name and return the corresponding result code */
+static bool parse_result_code(char* str, mp_result* code);
+
+/* Read in a dot-delimited binary sequence to the given buffer, and return the
+   number of bytes read.  Returns < 0 in case of a syntax error.  Records no
+   more than limit bytes. */
+static int parse_binary(char* str, unsigned char* buf, int limit);
+
+/* Clean up registers (called from atexit()) */
+static void done_testing(void);
+
+/*
+ * Utility subroutines for writing tests (explained above)
+ */
+
+static mp_result read_int_value(mp_int z, char* str) {
+  int radix = 10;
+
+  if (*str == '#') {
+    ++str;
+    switch (*str) {
+      case 'x':
+      case 'X':
+        radix = 16;
+        break;
+      case 'd':
+      case 'D':
+        radix = 10;
+        break;
+      case 'o':
+      case 'O':
+        radix = 8;
+        break;
+      case 'b':
+      case 'B':
+        radix = 2;
+        break;
+      default:
+        return MP_RANGE;
+    }
+    ++str;
+  }
+
+  return mp_int_read_string(z, radix, str);
+}
+
+static mp_result read_rat_value(mp_rat q, char* str) {
+  int radix = 10;
+
+  if (*str == '#') {
+    ++str;
+    switch (*str) {
+      case 'x':
+      case 'X':
+        radix = 16;
+        break;
+      case 'd':
+      case 'D':
+        radix = 10;
+        break;
+      case 'o':
+      case 'O':
+        radix = 8;
+        break;
+      case 'b':
+      case 'B':
+        radix = 2;
+        break;
+      default:
+        return MP_RANGE;
+    }
+    ++str;
+  }
+
+  if (*str == '@')
+    return mp_rat_read_decimal(q, radix, str + 1);
+  else
+    return mp_rat_read_string(q, radix, str);
+}
+
+static bool read_long(long* z, char* str) {
+  char* end;
+  int radix = 10;
+
+  if (*str == '#') {
+    ++str;
+    switch (*str) {
+      case 'x':
+      case 'X':
+        radix = 16;
+        break;
+      case 'd':
+      case 'D':
+        radix = 10;
+        break;
+      case 'o':
+      case 'O':
+        radix = 8;
+        break;
+      case 'b':
+      case 'B':
+        radix = 2;
+        break;
+      default:
+        return false;
+    }
+    ++str;
+  }
+
+  *z = strtol(str, &end, radix);
+  return (end != str && *end == '\0');
+}
+
+static bool parse_int_values(testspec_t* t, mp_int* in, mp_int* out,
+                             mp_result* rval) {
+  int pos = 0;
+  char* str;
+
+  if (rval != NULL) *rval = MP_OK; /* default */
+
+  if (in != NULL) {
+    for (int i = 0; i < t->num_inputs; ++i) {
+      str = t->input[i];
+
+      trim_line(str);
+
+      if (*str == '=') {
+        int k = abs(atoi(str + 1)) - 1;
+
+        if (k < 0 || k >= i) {
+          fprintf(stderr, "Line %d: Invalid input back-reference [%s]\n",
+                  t->line, str);
+          return false;
+        }
+
+        in[i] = in[k];
+      } else {
+        mp_int reg = g_zreg + pos++; /* grab next free register */
+
+        if (read_int_value(reg, str) != MP_OK) {
+          fprintf(stderr, "Line %d: Invalid input value [%s]\n", t->line, str);
+          return false;
+        }
+
+        in[i] = reg;
+      }
+    }
+  }
+
+  for (int i = 0; i < t->num_outputs; ++i) {
+    mp_int reg = g_zreg + pos++;
+
+    str = t->output[i];
+
+    trim_line(str);
+
+    if (strcmp(str, "?") == 0)
+      mp_int_zero(reg);
+    else if (*str == '$') {
+      mp_result code;
+
+      if (!parse_result_code(str, &code)) {
+        fprintf(stderr, "Line %d: Invalid result code [%s]\n", t->line, str);
+        return false;
+      } else if (rval == NULL) {
+        fprintf(stderr, "Line %d: Result code not permitted here [%s]\n",
+                t->line, str);
+        return false;
+      } else
+        *rval = code;
+
+      /* Provide a dummy value for the corresponding output */
+      mp_int_zero(reg);
+    } else if (out != NULL && read_int_value(reg, str) != MP_OK) {
+      fprintf(stderr, "Line %d: Invalid output value [%s]\n", t->line, str);
+      return false;
+    }
+
+    if (out != NULL) out[i] = reg;
+  }
+
+  return true;
+}
+
+static bool parse_rat_values(testspec_t* t, mp_rat* in, mp_rat* out,
+                             mp_result* rval) {
+  int pos = 0;
+  char* str;
+
+  if (rval != NULL) *rval = MP_OK; /* default */
+
+  if (in != NULL) {
+    for (int i = 0; i < t->num_inputs; ++i) {
+      str = t->input[i];
+
+      trim_line(str);
+
+      if (*str == '=') {
+        int k = abs(atoi(str + 1)) - 1;
+
+        if (k < 0 || k >= i) {
+          fprintf(stderr, "Line %d: Invalid input back-reference [%s]\n",
+                  t->line, str);
+          return false;
+        }
+
+        in[i] = in[k];
+      } else {
+        mp_rat reg = g_qreg + pos++; /* grab next free register */
+
+        if (read_rat_value(reg, str) != MP_OK) {
+          fprintf(stderr, "Line %d: Invalid input value [%s]\n", t->line, str);
+          return false;
+        }
+
+        in[i] = reg;
+      }
+    }
+  }
+
+  for (int i = 0; i < t->num_outputs; ++i) {
+    mp_rat reg = g_qreg + pos++;
+
+    str = t->output[i];
+
+    trim_line(str);
+
+    if (strcmp(str, "?") == 0)
+      mp_rat_zero(reg);
+    else if (*str == '$') {
+      mp_result code;
+
+      if (!parse_result_code(str, &code)) {
+        fprintf(stderr, "Line %d: Invalid result code [%s]\n", t->line, str);
+        return false;
+      } else if (rval == NULL) {
+        fprintf(stderr, "Line %d: Result code not permitted here [%s]\n",
+                t->line, str);
+        return false;
+      } else
+        *rval = code;
+
+      /* Provide a dummy value for the corresponding output */
+      mp_rat_zero(reg);
+    } else if (out != NULL && read_rat_value(reg, str) != MP_OK) {
+      fprintf(stderr, "Line %d: Invalid output value [%s]\n", t->line, str);
+      return false;
+    }
+
+    if (out != NULL) out[i] = reg;
+  }
+
+  return true;
+}
+
+static bool parse_result_code(char* str, mp_result* code) {
+  if (str[0] == '$') {
+    if (str[1] == '#') {
+      long v;
+
+      if (!read_long(&v, str + 2)) return false;
+
+      *code = (mp_result)v;
+    } else if (strcmp(str + 1, "MP_OK") == 0 ||
+               strcmp(str + 1, "MP_FALSE") == 0) {
+      *code = MP_OK;
+    } else if (strcmp(str + 1, "MP_TRUE") == 0) {
+      *code = MP_TRUE;
+    } else if (strcmp(str + 1, "MP_MEMORY") == 0) {
+      *code = MP_MEMORY;
+    } else if (strcmp(str + 1, "MP_RANGE") == 0) {
+      *code = MP_RANGE;
+    } else if (strcmp(str + 1, "MP_UNDEF") == 0) {
+      *code = MP_UNDEF;
+    } else if (strcmp(str + 1, "MP_TRUNC") == 0) {
+      *code = MP_TRUNC;
+    } else if (strcmp(str + 1, "MP_ROUND_UP") == 0) {
+      *code = MP_ROUND_UP;
+    } else if (strcmp(str + 1, "MP_ROUND_DOWN") == 0) {
+      *code = MP_ROUND_DOWN;
+    } else if (strcmp(str + 1, "MP_ROUND_HALF_UP") == 0) {
+      *code = MP_ROUND_HALF_UP;
+    } else if (strcmp(str + 1, "MP_ROUND_HALF_DOWN") == 0) {
+      *code = MP_ROUND_HALF_DOWN;
+    } else {
+      return false;
+    }
+  }
+
+  return true;
+}
+
+static int parse_binary(char* str, unsigned char* buf, int limit) {
+  int pos = 0;
+  char* tok;
+
+  trim_line(str);
+
+  for (tok = strtok(str, "."); tok != NULL && pos < limit;
+       tok = strtok(NULL, ".")) {
+    long v;
+
+    if (!read_long(&v, tok) || v > UCHAR_MAX || v < 0) return -1;
+
+    buf[pos++] = (unsigned char)v;
+  }
+
+  return pos;
+}
+
+static void done_testing(void) {
+  int i;
+
+  for (i = 0; i < NUM_REGS; ++i) {
+    mp_int_clear(g_zreg + i);
+    mp_rat_clear(g_qreg + i);
+  }
+}
+
+/*
+ * Global functions visible to callers outside this file.
+ */
+
+void init_testing(void) {
+  static int is_done = 0;
+
+  if (is_done) return;
+
+  for (int i = 0; i < NUM_REGS; ++i) {
+    assert(mp_int_init(g_zreg + i) == MP_OK);
+    assert(mp_rat_init(g_qreg + i) == MP_OK);
+  }
+
+  imath_errmsg = g_output;
+
+  assert(atexit(done_testing) == 0);
+  is_done = 1;
+}
+
+void reset_registers(void) {
+  for (int i = 0; i < NUM_REGS; ++i) {
+    mp_int_zero(g_zreg + i);
+    mp_rat_zero(g_qreg + i);
+  }
+}
+
+bool test_init(testspec_t* t, FILE* ofp) {
+  mp_int in[2], out[1];
+  mp_small v;
+  mp_usmall uv;
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+
+  if (strcmp(t->code, "initu") == 0) {
+    CHECK(mp_int_to_uint(in[1], &uv));
+    ECHECK(mp_int_init_uvalue(in[0], uv));
+  } else { /* initv */
+    CHECK(mp_int_to_int(in[1], &v));
+    ECHECK(mp_int_init_value(in[0], v));
+  }
+
+  if (expect == MP_OK && mp_int_compare(in[0], out[0]) != 0) {
+    mp_int_to_string(in[0], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+
+  return true;
+}
+
+bool test_set(testspec_t* t, FILE* ofp) {
+  mp_int in[2], out[1];
+  mp_small v;
+  mp_usmall uv;
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+
+  if (strcmp(t->code, "setu") == 0) {
+    CHECK(mp_int_to_uint(in[1], &uv));
+    ECHECK(mp_int_set_uvalue(in[0], uv));
+  } else { /* setv */
+    CHECK(mp_int_to_int(in[1], &v));
+    ECHECK(mp_int_set_value(in[0], v));
+  }
+
+  if (expect == MP_OK && mp_int_compare(in[0], out[0]) != 0) {
+    mp_int_to_string(in[0], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+
+  return true;
+}
+
+bool test_neg(testspec_t* t, FILE* ofp) {
+  mp_int in[2], out[1];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_neg(in[0], in[1]));
+
+  if (expect == MP_OK && mp_int_compare(in[1], out[0]) != 0) {
+    mp_int_to_string(in[1], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+
+  return true;
+}
+
+bool test_abs(testspec_t* t, FILE* ofp) {
+  mp_int in[2], out[1];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_abs(in[0], in[1]));
+
+  if (expect == MP_OK && mp_int_compare(in[1], out[0]) != 0) {
+    mp_int_to_string(in[1], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+
+  return true;
+}
+
+bool test_add(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_small v;
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+
+  if (strcmp(t->code, "addv") == 0) {
+    CHECK(mp_int_to_int(in[1], &v));
+    ECHECK(mp_int_add_value(in[0], v, in[2]));
+  } else {
+    ECHECK(mp_int_add(in[0], in[1], in[2]));
+  }
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+
+  return true;
+}
+
+bool test_sub(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_small v;
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+
+  if (strcmp(t->code, "subv") == 0) {
+    CHECK(mp_int_to_int(in[1], &v));
+    ECHECK(mp_int_sub_value(in[0], v, in[2]));
+  } else {
+    ECHECK(mp_int_sub(in[0], in[1], in[2]));
+  }
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_mul(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_mul(in[0], in[1], in[2]));
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_mulp2(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_result expect;
+  mp_small p2;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  CHECK(mp_int_to_int(in[1], &p2));
+  ECHECK(mp_int_mul_pow2(in[0], p2, in[2]));
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_mulv(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_result expect;
+  mp_small v;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  CHECK(mp_int_to_int(in[1], &v));
+  ECHECK(mp_int_mul_value(in[0], v, in[2]));
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_sqr(testspec_t* t, FILE* ofp) {
+  mp_int in[2], out[1];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_sqr(in[0], in[1]));
+
+  if (expect == MP_OK && mp_int_compare(in[1], out[0]) != 0) {
+    mp_int_to_string(in[1], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_div(testspec_t* t, FILE* ofp) {
+  mp_int in[4], out[2];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_div(in[0], in[1], in[2], in[3]));
+
+  if (expect == MP_OK && ((mp_int_compare(in[2], out[0]) != 0) ||
+                          (mp_int_compare(in[3], out[1]) != 0))) {
+    int len;
+    char* str;
+
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    str = g_output + (len = strlen(g_output));
+    *str++ = ',';
+    mp_int_to_string(in[3], 10, str, OUTPUT_LIMIT - (len + 1));
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_divp2(testspec_t* t, FILE* ofp) {
+  mp_int in[4], out[2];
+  mp_result expect;
+  mp_small p2;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  CHECK(mp_int_to_int(in[1], &p2));
+  ECHECK(mp_int_div_pow2(in[0], p2, in[2], in[3]));
+
+  if (expect == MP_OK && ((mp_int_compare(in[2], out[0]) != 0) ||
+                          (mp_int_compare(in[3], out[1]) != 0))) {
+    int len;
+    char* str;
+
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    str = g_output + (len = strlen(g_output));
+    *str++ = ',';
+    mp_int_to_string(in[3], 10, str, OUTPUT_LIMIT - (len + 1));
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_divv(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[2];
+  mp_result expect;
+  mp_small v, rem, orem;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  CHECK(mp_int_to_int(in[1], &v));
+  CHECK(mp_int_to_int(out[1], &orem));
+  ECHECK(mp_int_div_value(in[0], v, in[2], &rem));
+
+  if (expect == MP_OK &&
+      ((mp_int_compare(in[2], out[0]) != 0) || (rem != orem))) {
+    char* str;
+
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    str = g_output + strlen(g_output);
+    *str++ = ',';
+    sprintf(str, "%ld", rem);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_expt(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_result expect;
+  mp_small pow;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  CHECK(mp_int_to_int(in[1], &pow));
+  ECHECK(mp_int_expt(in[0], pow, in[2]));
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_exptv(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_result expect;
+  mp_small a, b;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  CHECK(mp_int_to_int(in[0], &a));
+  CHECK(mp_int_to_int(in[1], &b));
+  ECHECK(mp_int_expt_value(a, b, in[2]));
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_exptf(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_expt_full(in[0], in[1], in[2]));
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_mod(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_mod(in[0], in[1], in[2]));
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_gcd(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_gcd(in[0], in[1], in[2]));
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_egcd(testspec_t* t, FILE* ofp) {
+  mp_int in[5], out[3], t1 = g_zreg + 8, t2 = g_zreg + 9;
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_egcd(in[0], in[1], in[2], in[3], in[4]));
+
+  /* If we got an error we expected, return success immediately */
+  if (expect != MP_OK) return true;
+
+  if ((mp_int_compare(in[2], out[0]) != 0) ||
+      (mp_int_compare(in[3], out[1]) != 0) ||
+      (mp_int_compare(in[4], out[2]) != 0)) {
+    int len, len2;
+    char* str;
+
+    /* Failure might occur because the tester computed x and y in a different
+       way than we did.  Verify that the results are correct before reporting
+       an error. */
+    mp_int_mul(in[3], in[0], t1);
+    mp_int_mul(in[4], in[1], t2);
+    mp_int_add(t1, t2, t2);
+    if (mp_int_compare(t2, in[2]) == 0) return true;
+
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    str = g_output + (len = strlen(g_output));
+    *str++ = ',';
+    mp_int_to_string(in[3], 10, str, OUTPUT_LIMIT - (len + 1));
+    str = str + (len2 = strlen(str));
+    *str++ = ',';
+    mp_int_to_string(in[4], 10, str, OUTPUT_LIMIT - (len + len2 + 2));
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_lcm(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_lcm(in[0], in[1], in[2]));
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_sqrt(testspec_t* t, FILE* ofp) {
+  mp_int in[2], out[1];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_sqrt(in[0], in[1]));
+
+  if (expect == MP_OK && mp_int_compare(in[1], out[0]) != 0) {
+    mp_int_to_string(in[1], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_root(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_small v;
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  CHECK(mp_int_to_int(in[1], &v));
+  ECHECK(mp_int_root(in[0], v, in[2]));
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_invmod(testspec_t* t, FILE* ofp) {
+  mp_int in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_invmod(in[0], in[1], in[2]));
+
+  if (expect == MP_OK && mp_int_compare(in[2], out[0]) != 0) {
+    mp_int_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_exptmod(testspec_t* t, FILE* ofp) {
+  mp_int in[4], out[1];
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_exptmod(in[0], in[1], in[2], in[3]));
+
+  if (expect == MP_OK && mp_int_compare(in[3], out[0]) != 0) {
+    mp_int_to_string(in[3], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_exptmod_ev(testspec_t* t, FILE* ofp) {
+  mp_int in[4], out[1];
+  mp_result expect;
+  mp_small v;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  CHECK(mp_int_to_int(in[1], &v));
+  ECHECK(mp_int_exptmod_evalue(in[0], v, in[2], in[3]));
+
+  if (expect == MP_OK && mp_int_compare(in[3], out[0]) != 0) {
+    mp_int_to_string(in[3], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_exptmod_bv(testspec_t* t, FILE* ofp) {
+  mp_int in[4], out[1];
+  mp_result expect;
+  mp_small v;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  CHECK(mp_int_to_int(in[0], &v));
+  ECHECK(mp_int_exptmod_bvalue(v, in[1], in[2], in[3]));
+
+  if (expect == MP_OK && mp_int_compare(in[3], out[0]) != 0) {
+    mp_int_to_string(in[3], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_comp(testspec_t* t, FILE* ofp) {
+  mp_int in[2];
+  mp_result res, expect;
+
+  ACHECK(parse_int_values(t, in, NULL, &expect));
+
+  if ((res = mp_int_compare(in[0], in[1])) != expect) {
+    sprintf(g_output, "Incorrect comparison result (want %d, got %d)", expect,
+            res);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_ucomp(testspec_t* t, FILE* ofp) {
+  mp_int in[2];
+  mp_result res, expect;
+
+  ACHECK(parse_int_values(t, in, NULL, &expect));
+
+  if ((res = mp_int_compare_unsigned(in[0], in[1])) != expect) {
+    sprintf(g_output, "Incorrect comparison result (want %d, got %d)", expect,
+            res);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_zcomp(testspec_t* t, FILE* ofp) {
+  mp_int in[1];
+  mp_result res, expect;
+
+  ACHECK(parse_int_values(t, in, NULL, &expect));
+
+  if ((res = mp_int_compare_zero(in[0])) != expect) {
+    sprintf(g_output, "Incorrect comparison result (want %d, got %d)", expect,
+            res);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_vcomp(testspec_t* t, FILE* ofp) {
+  mp_int in[2];
+  mp_result res, expect;
+  mp_small v;
+
+  ACHECK(parse_int_values(t, in, NULL, &expect));
+
+  v = atoi(t->input[1]);
+  if ((res = mp_int_compare_value(in[0], v)) != expect) {
+    sprintf(g_output, "Incorrect comparison result (want %d, got %d)", expect,
+            res);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_uvcomp(testspec_t* t, FILE* ofp) {
+  mp_int in[2];
+  mp_result res, expect;
+  mp_usmall v;
+
+  ACHECK(parse_int_values(t, in, NULL, &expect));
+
+  v = strtoul(t->input[1], NULL, 0);
+  if ((res = mp_int_compare_uvalue(in[0], v)) != expect) {
+    sprintf(g_output, "Incorrect comparison result (want %d, got %d)", expect,
+            res);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_tostr(testspec_t* t, FILE* ofp) {
+  mp_int in[2];
+  mp_small radix;
+  mp_result len;
+
+  ACHECK(parse_int_values(t, in, NULL, NULL));
+  ACHECK(mp_int_to_int(in[1], &radix) == MP_OK);
+
+  if (radix < MP_MIN_RADIX || radix > MP_MAX_RADIX) FAIL(MP_RANGE);
+
+  trim_line(t->output[0]);
+  len = mp_int_string_len(in[0], radix);
+
+  CHECK(mp_int_to_string(in[0], radix, g_output, len));
+
+  if (strcmp(t->output[0], g_output) != 0) FAIL(OTHER_ERROR);
+
+  return true;
+}
+
+bool test_tobin(testspec_t* t, FILE* ofp) {
+  mp_int in[1];
+  int test_len, out_len;
+
+  ACHECK(parse_int_values(t, in, NULL, NULL));
+
+  trim_line(t->output[0]);
+  if ((out_len = parse_binary(t->output[0], g_bin1, sizeof(g_bin1))) < 0)
+    FAIL(MP_BADARG);
+
+  if ((test_len = mp_int_binary_len(in[0])) != out_len) {
+    sprintf(g_output, "Output lengths do not match (want %d, got %d)", test_len,
+            out_len);
+    FAIL(OTHER_ERROR);
+  }
+
+  CHECK(mp_int_to_binary(in[0], g_bin2, sizeof(g_bin2)));
+
+  if (memcmp(g_bin1, g_bin2, test_len) != 0) {
+    int pos = 0, i;
+
+    for (i = 0; i < test_len - 1; ++i)
+      pos += sprintf(g_output + pos, "%d.", g_bin2[i]);
+
+    sprintf(g_output + pos, "%d", g_bin2[i]);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_to_int(testspec_t* t, FILE* ofp) {
+  mp_int in[1], out[1];
+  mp_small v;
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_to_int(in[0], &v));
+
+  if (expect == MP_OK && mp_int_compare_value(out[0], v) != 0) {
+    sprintf(g_output, "Incorrect value (got %ld)", v);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_to_uint(testspec_t* t, FILE* ofp) {
+  mp_int in[1], out[1];
+  mp_usmall v;
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, out, &expect));
+  ECHECK(mp_int_to_uint(in[0], &v));
+
+  if (expect == MP_OK && mp_int_compare_uvalue(out[0], v) != 0) {
+    sprintf(g_output, "Incorrect value (got %lu)", v);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_read_binary(testspec_t* t, FILE* ofp) {
+  mp_int out[1], in = g_zreg + 1;
+  int in_len;
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, NULL, out, &expect));
+
+  trim_line(t->input[0]);
+  if ((in_len = parse_binary(t->input[0], g_bin1, sizeof(g_bin1))) < 0)
+    FAIL(MP_BADARG);
+
+  ECHECK(mp_int_read_binary(in, g_bin1, in_len));
+
+  if (expect == MP_OK && mp_int_compare(in, out[0]) != 0) {
+    mp_int_to_string(in, 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_to_uns(testspec_t* t, FILE* ofp) {
+  mp_int in[1];
+  int test_len, out_len;
+
+  ACHECK(parse_int_values(t, in, NULL, NULL));
+
+  trim_line(t->output[0]);
+  if ((out_len = parse_binary(t->output[0], g_bin1, sizeof(g_bin1))) < 0)
+    FAIL(MP_BADARG);
+
+  if ((test_len = mp_int_unsigned_len(in[0])) != out_len) {
+    sprintf(g_output, "Output lengths do not match (want %d, got %d)", test_len,
+            out_len);
+    FAIL(OTHER_ERROR);
+  }
+
+  CHECK(mp_int_to_unsigned(in[0], g_bin2, sizeof(g_bin2)));
+
+  if (memcmp(g_bin1, g_bin2, test_len) != 0) {
+    int pos = 0, i;
+
+    for (i = 0; i < test_len - 1; ++i)
+      pos += sprintf(g_output + pos, "%d.", g_bin2[i]);
+
+    sprintf(g_output + pos, "%d", g_bin2[i]);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_read_uns(testspec_t* t, FILE* ofp) {
+  mp_int out[1], in = g_zreg + 1;
+  int in_len;
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, NULL, out, &expect));
+
+  trim_line(t->input[0]);
+  if ((in_len = parse_binary(t->input[0], g_bin1, sizeof(g_bin1))) < 0)
+    FAIL(MP_BADARG);
+
+  ECHECK(mp_int_read_unsigned(in, g_bin1, in_len));
+
+  if (expect == MP_OK && mp_int_compare(in, out[0]) != 0) {
+    mp_int_to_string(in, 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_meta(testspec_t* t, FILE* ofp) {
+  mp_int *in = NULL, *out = NULL;
+  int i, j;
+  mp_result expect;
+
+  if (t->num_inputs > 0) {
+    in = calloc(t->num_inputs, sizeof(mp_int));
+  }
+  if (t->num_outputs > 0) {
+    out = calloc(t->num_outputs, sizeof(mp_int));
+  }
+
+  if (!parse_int_values(t, in, out, &expect)) {
+    if (in != NULL) free(in);
+    if (out != NULL) free(out);
+    FAIL(MP_BADARG);
+  }
+
+  fprintf(ofp, "Test '%s' defined at line %d\n", t->code, t->line);
+  fprintf(ofp, "Expected result: %d\n", expect);
+  fprintf(ofp, "Input values: %d\n", t->num_inputs);
+  for (i = 0; i < t->num_inputs; ++i) {
+    mp_int_to_string(in[i], 10, g_output, OUTPUT_LIMIT);
+
+    fprintf(ofp, " %2d.) %s", i + 1, g_output);
+
+    for (j = i - 1; j >= 0; --j)
+      if (in[j] == in[i]) {
+        fprintf(ofp, " (=> %d)", j + 1);
+        break;
+      }
+
+    fputc('\n', ofp);
+  }
+  fprintf(ofp, "Output values: %d\n", t->num_outputs);
+  for (i = 0; i < t->num_outputs; ++i) {
+    mp_int_to_string(out[i], 10, g_output, OUTPUT_LIMIT);
+
+    fprintf(ofp, " %2d.) %s\n", i + 1, g_output);
+  }
+  if (in != NULL) free(in);
+  if (out != NULL) free(out);
+  return true;
+}
+
+bool test_qneg(testspec_t* t, FILE* ofp) {
+  mp_rat in[2], out[1];
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+  ECHECK(mp_rat_neg(in[0], in[1]));
+
+  if (expect == MP_OK && mp_rat_compare(in[1], out[0]) != 0) {
+    mp_rat_to_string(in[1], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qrecip(testspec_t* t, FILE* ofp) {
+  mp_rat in[2], out[1];
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+  ECHECK(mp_rat_recip(in[0], in[1]));
+
+  if (expect == MP_OK && mp_rat_compare(in[1], out[0]) != 0) {
+    mp_rat_to_string(in[1], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qabs(testspec_t* t, FILE* ofp) {
+  mp_rat in[2], out[1];
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+  ECHECK(mp_rat_abs(in[0], in[1]));
+
+  if (expect == MP_OK && mp_rat_compare(in[1], out[0]) != 0) {
+    mp_rat_to_string(in[1], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qadd(testspec_t* t, FILE* ofp) {
+  mp_rat in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+  ECHECK(mp_rat_add(in[0], in[1], in[2]));
+
+  if (expect == MP_OK && mp_rat_compare(in[2], out[0]) != 0) {
+    mp_rat_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qsub(testspec_t* t, FILE* ofp) {
+  mp_rat in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+  ECHECK(mp_rat_sub(in[0], in[1], in[2]));
+
+  if (expect == MP_OK && mp_rat_compare(in[2], out[0]) != 0) {
+    mp_rat_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qmul(testspec_t* t, FILE* ofp) {
+  mp_rat in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+  ECHECK(mp_rat_mul(in[0], in[1], in[2]));
+
+  if (expect == MP_OK && mp_rat_compare(in[2], out[0]) != 0) {
+    mp_rat_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qdiv(testspec_t* t, FILE* ofp) {
+  mp_rat in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+  ECHECK(mp_rat_div(in[0], in[1], in[2]));
+
+  if (expect == MP_OK && mp_rat_compare(in[2], out[0]) != 0) {
+    mp_rat_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qaddz(testspec_t* t, FILE* ofp) {
+  mp_rat in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+
+  if (!mp_rat_is_integer(in[1])) {
+    fprintf(stderr,
+            "Line %d: Second argument must be an integer (test_qaddz)\n",
+            t->line);
+    FAIL(MP_BADARG);
+  }
+
+  ECHECK(mp_rat_add_int(in[0], MP_NUMER_P(in[1]), in[2]));
+
+  if (expect == MP_OK && mp_rat_compare(in[2], out[0]) != 0) {
+    mp_rat_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qsubz(testspec_t* t, FILE* ofp) {
+  mp_rat in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+
+  if (!mp_rat_is_integer(in[1])) {
+    fprintf(stderr,
+            "Line %d: Second argument must be an integer (test_qsubz)\n",
+            t->line);
+    FAIL(MP_BADARG);
+  }
+
+  ECHECK(mp_rat_sub_int(in[0], MP_NUMER_P(in[1]), in[2]));
+
+  if (expect == MP_OK && mp_rat_compare(in[2], out[0]) != 0) {
+    mp_rat_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qmulz(testspec_t* t, FILE* ofp) {
+  mp_rat in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+
+  if (!mp_rat_is_integer(in[1])) {
+    fprintf(stderr,
+            "Line %d: Second argument must be an integer (test_qmulz)\n",
+            t->line);
+    FAIL(MP_BADARG);
+  }
+
+  ECHECK(mp_rat_mul_int(in[0], MP_NUMER_P(in[1]), in[2]));
+
+  if (expect == MP_OK && mp_rat_compare(in[2], out[0]) != 0) {
+    mp_rat_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qdivz(testspec_t* t, FILE* ofp) {
+  mp_rat in[3], out[1];
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+
+  if (!mp_rat_is_integer(in[1])) {
+    fprintf(stderr,
+            "Line %d: Second argument must be an integer (test_qdivz)\n",
+            t->line);
+    FAIL(MP_BADARG);
+  }
+
+  ECHECK(mp_rat_div_int(in[0], MP_NUMER_P(in[1]), in[2]));
+
+  if (expect == MP_OK && mp_rat_compare(in[2], out[0]) != 0) {
+    mp_rat_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qexpt(testspec_t* t, FILE* ofp) {
+  mp_rat in[3], out[1];
+  mp_result expect;
+  mp_small power;
+
+  ACHECK(parse_rat_values(t, in, out, &expect));
+
+  if (!mp_rat_is_integer(in[1])) {
+    fprintf(stderr,
+            "Line %d: Second argument must be an integer (test_qexpt)\n",
+            t->line);
+    FAIL(MP_BADARG);
+  }
+
+  CHECK(mp_int_to_int(MP_NUMER_P(in[1]), &power));
+  ECHECK(mp_rat_expt(in[0], power, in[2]));
+
+  if (expect == MP_OK && mp_rat_compare(in[2], out[0]) != 0) {
+    mp_rat_to_string(in[2], 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_qtostr(testspec_t* t, FILE* ofp) {
+  mp_rat in[2];
+  long radix;
+  mp_result len;
+
+  ACHECK(parse_rat_values(t, in, NULL, NULL));
+  trim_line(t->input[1]);
+  ACHECK(read_long(&radix, t->input[1]));
+
+  if (radix < MP_MIN_RADIX || radix > MP_MAX_RADIX) {
+    fprintf(stderr, "Line %d: Radix %ld out of range\n", t->line, radix);
+    FAIL(MP_RANGE);
+  }
+
+  trim_line(t->output[0]);
+  len = mp_rat_string_len(in[0], radix);
+
+  CHECK(mp_rat_to_string(in[0], radix, g_output, len));
+
+  if (strcmp(t->output[0], g_output) != 0) FAIL(OTHER_ERROR);
+
+  return true;
+}
+
+bool test_qtodec(testspec_t* t, FILE* ofp) {
+  mp_rat in[4];
+  long radix, prec, m;
+  mp_round_mode rmode;
+  mp_result res, expect = MP_OK, len;
+
+  ACHECK(parse_rat_values(t, in, NULL, NULL));
+
+  if (t->output[0][0] == '$' && !parse_result_code(t->output[0], &expect)) {
+    fprintf(stderr, "Line %d: Invalid result code [%s]\n", t->line,
+            t->output[0]);
+    FAIL(OTHER_ERROR);
+  }
+
+  trim_line(t->input[1]);
+  trim_line(t->input[2]);
+  trim_line(t->input[3]);
+  ACHECK(read_long(&radix, t->input[1]));
+  ACHECK(read_long(&prec, t->input[2]));
+  ACHECK(read_long(&m, t->input[3]));
+  rmode = (mp_round_mode)m;
+
+  if (prec < 0) {
+    fprintf(stderr, "Line %d: Precision %ld out of range\n", t->line, prec);
+    FAIL(MP_RANGE);
+  }
+
+  trim_line(t->output[0]);
+  len = mp_rat_decimal_len(in[0], radix, prec);
+  ECHECK((res = mp_rat_to_decimal(in[0], radix, prec, rmode, g_output, len)));
+
+  if (res == MP_OK && strcmp(t->output[0], g_output) != 0) FAIL(OTHER_ERROR);
+
+  return true;
+}
+
+bool test_qrdec(testspec_t* t, FILE* ofp) {
+  mp_rat out[1] = {NULL}, reg = g_qreg + 1;
+  long radix;
+  mp_result expect;
+
+  ACHECK(parse_rat_values(t, NULL, out, &expect));
+  trim_line(t->input[1]);
+  ACHECK(read_long(&radix, t->input[1]));
+
+  ECHECK(mp_rat_read_decimal(reg, radix, t->input[0]));
+  if (expect == MP_OK && mp_rat_compare(reg, out[0]) != 0) {
+    mp_rat_to_string(reg, 10, g_output, OUTPUT_LIMIT);
+    FAIL(OTHER_ERROR);
+  }
+  return true;
+}
+
+bool test_is_prime(testspec_t* t, FILE* OFP) {
+  mp_int in[1] = {NULL};
+  mp_result expect;
+
+  ACHECK(parse_int_values(t, in, NULL, &expect));
+  ECHECK(mp_int_is_prime(in[0]));
+  return true;
+}
+
+/* Here there be dragons */
diff --git a/polly/lib/External/isl/imath/imdrover.h b/polly/lib/External/isl/imath/imdrover.h
new file mode 100644 (file)
index 0000000..853b162
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+  Name:     imdrover.h
+  Purpose:  Keeper of the hordes of testing code.
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2007 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#ifndef IMDROVER_H_
+#define IMDROVER_H_
+
+#include <stdbool.h>
+#include <stdio.h>
+
+typedef struct {
+  int    line;
+  char  *file;
+  char  *code;
+  int    num_inputs;
+  char **input;
+  int    num_outputs;
+  char **output;
+} testspec_t;
+
+typedef bool (*test_f)(testspec_t *, FILE *);
+
+/* Call this once at the outset to set up test registers */
+void init_testing(void);
+void reset_registers(void);
+
+/* Integer tests, and general */
+bool test_init(testspec_t* t, FILE* ofp);
+bool test_set(testspec_t* t, FILE* ofp);
+bool test_neg(testspec_t* t, FILE* ofp);
+bool test_abs(testspec_t* t, FILE* ofp);
+bool test_add(testspec_t* t, FILE* ofp);
+bool test_sub(testspec_t* t, FILE* ofp);
+bool test_mul(testspec_t* t, FILE* ofp);
+bool test_mulp2(testspec_t* t, FILE* ofp);
+bool test_mulv(testspec_t* t, FILE* ofp);
+bool test_sqr(testspec_t* t, FILE* ofp);
+bool test_div(testspec_t* t, FILE* ofp);
+bool test_divp2(testspec_t* t, FILE* ofp);
+bool test_divv(testspec_t* t, FILE* ofp);
+bool test_expt(testspec_t* t, FILE* ofp);
+bool test_exptv(testspec_t* t, FILE* ofp);
+bool test_exptf(testspec_t* t, FILE* ofp);
+bool test_mod(testspec_t* t, FILE* ofp);
+bool test_gcd(testspec_t* t, FILE* ofp);
+bool test_egcd(testspec_t* t, FILE* ofp);
+bool test_lcm(testspec_t* t, FILE* ofp);
+bool test_sqrt(testspec_t* t, FILE* ofp);
+bool test_root(testspec_t* t, FILE* ofp);
+bool test_invmod(testspec_t* t, FILE* ofp);
+bool test_exptmod(testspec_t* t, FILE* ofp);
+bool test_exptmod_ev(testspec_t* t, FILE* ofp);
+bool test_exptmod_bv(testspec_t* t, FILE* ofp);
+bool test_comp(testspec_t* t, FILE* ofp);
+bool test_ucomp(testspec_t* t, FILE* ofp);
+bool test_zcomp(testspec_t* t, FILE* ofp);
+bool test_vcomp(testspec_t* t, FILE* ofp);
+bool test_uvcomp(testspec_t* t, FILE* ofp);
+bool test_tostr(testspec_t* t, FILE* ofp);
+bool test_tobin(testspec_t* t, FILE* ofp);
+bool test_to_int(testspec_t* t, FILE* ofp);
+bool test_to_uint(testspec_t* t, FILE* ofp);
+bool test_read_binary(testspec_t* t, FILE* ofp);
+bool test_to_uns(testspec_t* t, FILE* ofp);
+bool test_read_uns(testspec_t* t, FILE* ofp);
+bool test_meta(testspec_t* t, FILE* ofp);
+
+/* Rational tests */
+bool test_qneg(testspec_t* t, FILE* ofp);
+bool test_qrecip(testspec_t* t, FILE* ofp);
+bool test_qabs(testspec_t* t, FILE* ofp);
+bool test_qadd(testspec_t* t, FILE* ofp);
+bool test_qsub(testspec_t* t, FILE* ofp);
+bool test_qmul(testspec_t* t, FILE* ofp);
+bool test_qdiv(testspec_t* t, FILE* ofp);
+bool test_qdiv(testspec_t* t, FILE* ofp);
+bool test_qaddz(testspec_t* t, FILE* ofp);
+bool test_qsubz(testspec_t* t, FILE* ofp);
+bool test_qmulz(testspec_t* t, FILE* ofp);
+bool test_qdivz(testspec_t* t, FILE* ofp);
+bool test_qexpt(testspec_t* t, FILE* ofp);
+bool test_qtostr(testspec_t* t, FILE* ofp);
+bool test_qtodec(testspec_t* t, FILE* ofp);
+bool test_qrdec(testspec_t* t, FILE* ofp);
+
+/* Primality testing tests */
+bool test_is_prime(testspec_t* t, FILE *ofp);
+
+#endif /* IMDROVER_H_ */
diff --git a/polly/lib/External/isl/imath/imtest.c b/polly/lib/External/isl/imath/imtest.c
new file mode 100644 (file)
index 0000000..67677c9
--- /dev/null
@@ -0,0 +1,425 @@
+/*
+  Name:     imtest.c
+  Purpose:  Test driver for imath library.
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+
+  Reads tests from input files or standard input, and runs them.  Tests have
+  the form:
+
+  code:inputs:outputs
+
+  The 'code' is a string identifying the test to be performed.  The inputs and
+  outputs are comma-separated sequences of values.  The format of each input
+  is:
+
+    1005    number in decimal notation (signs ok)
+    #x-C0E  number in hexadecimal notation
+    #b1011  number in binary notation
+    #o37750 number in octal notation
+    =k      use register k for this input
+
+  For rational tests, the following syntax is also legal:
+    @5.33   use decimal notation (for rationals only)
+            may be combined with radix notation, e.g. #x@A0.5C
+
+  Each output is a string representing the value to which the corresponding
+  result is compared in order to pass the test.  By default, tests are expected
+  to succeed (i.e., return MP_OK).  To specify an alternate return value, use
+  the notation $RESULT, where RESULT is the name of an error (e.g., MP_MEMORY,
+  MP_UNDEF, etc.) or a numeric result denoted $#number (e.g., $#-5).
+
+  Results are written to standard output in the following formats:
+
+  filename<tab>line<tab>number<tab>result<eoln>
+  filename<tab>line<tab>number<tab>result<tab>message<eoln>
+
+  The filename and line give the offset of the test in its input file, the
+  number is the numbet of the test among all inputs, starting from 1.
+  The result is a textual description of the result code returned by the
+  operation being tested.
+
+  The exit status is 0 if all tests passed, 1 if one or more tests failed or
+  had errors.
+
+  Note:  There is currently a fixed limit on the length of lines by this test
+  ----   driver.  You can increase it if you wish, but the code doesn't check;
+         lines over the length are truncated (split).
+ */
+
+#include <assert.h>
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include "imath.h"
+#include "imdrover.h"
+
+#ifdef LINE_MAX
+#undef LINE_MAX
+#endif
+
+#define LINE_MAX 4096
+
+typedef struct {
+  char *code;
+  int num_inputs;
+  int num_outputs;
+  test_f call;
+} test_t;
+
+test_t g_tests[] = {
+    /* What it does...    */
+    {"initu", 2, 1, test_init},        /* r0 = uv(r1)        */
+    {"initv", 2, 1, test_init},        /* r0 = v(r1)         */
+    {"setu", 2, 1, test_set},          /* r0 = uv(r1)        */
+    {"setv", 2, 1, test_set},          /* r0 = v(r1)         */
+    {"neg", 2, 1, test_neg},           /* r1 = -r0           */
+    {"abs", 2, 1, test_abs},           /* r1 = |r0|          */
+    {"add", 3, 1, test_add},           /* r3 = r1 + r2       */
+    {"addv", 3, 1, test_add},          /* r3 = r1 + v(r2)    */
+    {"sub", 3, 1, test_sub},           /* r3 = r1 - r2       */
+    {"subv", 3, 1, test_sub},          /* r3 = r1 - v(r2)    */
+    {"mul", 3, 1, test_mul},           /* r3 = r1 * r2       */
+    {"mulp2", 3, 1, test_mulp2},       /* r3 = r1 * 2^v(r2)  */
+    {"mulv", 3, 1, test_mulv},         /* r3 = r1 * v(r2)    */
+    {"sqr", 2, 1, test_sqr},           /* r2 = r1 * r1       */
+    {"div", 4, 2, test_div},           /* r2 = r1 / r2, r3 = r1 % r2         */
+    {"divp2", 4, 2, test_divp2},       /* r2 = r1 / 2^v(r2),r3 = r1 % 2^v(r2)*/
+    {"divv", 3, 2, test_divv},         /* r2 = r1 / v(r2), r3 = r1 % v(r2)   */
+    {"expt", 3, 1, test_expt},         /* r3 = r1 ^ v(r2) */
+    {"exptv", 3, 1, test_exptv},       /* r3 = v(r1) ^ v(r2) */
+    {"exptf", 3, 1, test_exptf},       /* r3 = r1 ^ r2 */
+    {"mod", 3, 1, test_mod},           /* r3 = r1 % r2       */
+    {"gcd", 3, 1, test_gcd},           /* r3 = gcd(r1, r2)   */
+    {"egcd", 5, 3, test_egcd},         /* r3 = gcd(r1, r2) = r1*r4 + r2*r5   */
+    {"lcm", 3, 1, test_lcm},           /* r3 = lcm(r1, r2)   */
+    {"sqrt", 2, 1, test_sqrt},         /* r2 = sqrt(r1)      */
+    {"root", 3, 1, test_root},         /* r3 = r1^(1/v(r2))  */
+    {"invmod", 3, 1, test_invmod},     /* r3 = r1^-1 mod r2  */
+    {"emod", 4, 1, test_exptmod},      /* r4 = r1^r2 mod r3  */
+    {"emodev", 4, 1, test_exptmod_ev}, /* r4 = r1^v(r2) mod r3  */
+    {"emodbv", 4, 1, test_exptmod_bv}, /* r4 = v(r1)^r2 mod r3  */
+    {"cmp", 2, 1, test_comp},          /* rtn = compare(r1, r2) */
+    {"cmpu", 2, 1, test_ucomp},        /* rtn = compare(|r1|, |r2|) */
+    {"cmpz", 1, 1, test_zcomp},        /* rtn = compare(r1, 0)      */
+    {"cmpv", 2, 1, test_vcomp},        /* rtn = compare(r1, v(r2))  */
+    {"cmpuv", 2, 1, test_uvcomp},      /* rtn = compare(r1, v(r2))  */
+    {"tostr", 2, 1, test_tostr},       /* r1: value, r2: radix, o1: result */
+    {"tobin", 1, 1, test_tobin},       /* r1: value, o1: result binary     */
+    {"readbin", 1, 1, test_read_binary}, /* r1: 2's comp, o1: result value   */
+    {"to-uns", 1, 1, test_to_uns},       /* r1: value, o1: result binary     */
+    {"readuns", 1, 1, test_read_uns},    /* r1: unsigned, o1: result value   */
+    {"to-int", 1, 1, test_to_int},       /* r1: value, o1: result */
+    {"to-uint", 1, 1, test_to_uint},     /* r1: value, o1: result */
+    {"meta", -1, -1, test_meta},
+    {"qneg", 2, 1, test_qneg},        /* r2 = -r1        */
+    {"qrecip", 2, 1, test_qrecip},    /* r2 = 1 / r1     */
+    {"qabs", 2, 1, test_qabs},        /* r2 = |r1|       */
+    {"qadd", 3, 1, test_qadd},        /* r3 = r1 + r2    */
+    {"qsub", 3, 1, test_qsub},        /* r3 = r1 - r2    */
+    {"qmul", 3, 1, test_qmul},        /* r3 = r1 * r2    */
+    {"qdiv", 3, 1, test_qdiv},        /* r3 = r1 / r2    */
+    {"qaddz", 3, 1, test_qaddz},      /* r3 = r1 + r2    */
+    {"qsubz", 3, 1, test_qsubz},      /* r3 = r1 - r2    */
+    {"qmulz", 3, 1, test_qmulz},      /* r3 = r1 * r2    */
+    {"qdivz", 3, 1, test_qdivz},      /* r3 = r1 / r2    */
+    {"qexpt", 3, 1, test_qexpt},      /* r3 = r1 ^ v(r2) */
+    {"qtostr", 2, 1, test_qtostr},    /* r1: value, r2: radix; o1: result */
+    {"qtodec", 4, 1, test_qtodec},    /* r1: val, r2: rdx, r3: prec,
+                                         r4: rounding mode; o1: res */
+    {"qrdec", 2, 1, test_qrdec},      /* r1: dec, r2: rdx; o1: result value  */
+    {"isprime", 1, 1, test_is_prime}, /* rtn = prime(r1) ? MP_TRUE : MP_FALSE */
+    {NULL, 0, 0, NULL}                /* end of list marker */
+};
+
+char g_line[LINE_MAX];
+
+extern mp_result imath_errno;
+extern char *imath_errmsg;
+
+const char *g_imath_strerr[] = {"MP_OK",    "MP_TRUE",  "MP_MEMORY", "MP_RANGE",
+                                "MP_UNDEF", "MP_TRUNC", "MP_BADARG"};
+
+bool process_file(char *file_name, FILE *ifp, FILE *ofp);
+int read_line(FILE *ifp, char *line, int limit);
+void trim_line(char *line);
+int is_blank(char *line);
+int parse_line(char *line, testspec_t *t);
+int count_fields(char *line, int delim);
+void parse_fields(char *line, int delim, char **start);
+int run_test(int test_num, testspec_t *t, FILE *ofp);
+void free_test(testspec_t *t);
+int find_test(char *code, test_t *info);
+char *error_string(mp_result res);
+
+int main(int argc, char *argv[]) {
+  int exit_status = 0;
+
+  init_testing();
+
+  if (argc == 1) {
+    fprintf(stderr, "[reading from stdin]\n");
+    if (!process_file("-", stdin, stdout)) exit_status = 1;
+  } else {
+    FILE *ifp;
+    int i;
+
+    for (i = 1; i < argc; ++i) {
+      if (strcmp(argv[i], "-") == 0) {
+        ifp = stdin;
+      } else if ((ifp = fopen(argv[i], "r")) == NULL) {
+        fprintf(stderr, "Cannot open '%s': %s\n", argv[i], strerror(errno));
+        return 1;
+      }
+      if (!process_file(argv[i], ifp, stdout)) exit_status = 1;
+
+      fclose(ifp);
+    }
+  }
+  return exit_status;
+}
+
+/** Reads and runs test cases from `ifp` and writes test results to `ofp`. The
+    given `file_name` is used for cosmetic attribution. The return value is
+    true if all tests passed, false if any tests failed or had errors. */
+bool process_file(char *file_name, FILE *ifp, FILE *ofp) {
+  int res, line_num, test_num = 0, num_failed = 0, num_bogus = 0;
+  clock_t start, finish;
+
+  start = clock();
+  while ((line_num = read_line(ifp, g_line, LINE_MAX)) != 0) {
+    testspec_t t;
+    t.line = line_num;
+    t.file = file_name;
+    if (parse_line(g_line, &t)) {
+      if ((res = run_test(++test_num, &t, ofp)) < 0) {
+        ++num_bogus;
+      } else if (res == 0) {
+        ++num_failed;
+      }
+      free_test(&t);
+    } else {
+      fprintf(stderr, "Line %d: Incorrect input syntax.\n", line_num);
+      ++num_bogus;
+    }
+  }
+  finish = clock();
+
+  fprintf(ofp,
+          "# %s %d tests: %d passed, %d failed, %d errors. (%.2f seconds)\n",
+          file_name, test_num, (test_num - num_failed - num_bogus), num_failed,
+          num_bogus, ((double)(finish - start) / CLOCKS_PER_SEC));
+
+  return num_failed == 0 && num_bogus == 0;
+}
+
+int read_line(FILE *ifp, char *line, int limit) {
+  static FILE *current_fp = NULL;
+  static int current_line = 0;
+
+  if (ifp != current_fp) {
+    current_fp = ifp;
+    current_line = 0;
+  }
+
+  do {
+    if (fgets(line, limit, ifp) == NULL) return 0;
+
+    ++current_line;
+  } while (is_blank(line));
+
+  trim_line(line);
+  return current_line;
+}
+
+/** Removes leading and trailing whitespace from a zero-terminated `line`. */
+void trim_line(char *line) {
+  int len;
+  char *fnw = line;
+
+  /* Remove leading whitespace */
+  while (isspace((unsigned char)*fnw)) ++fnw;
+
+  len = strlen(fnw);
+  memmove(line, fnw, len);
+
+  /* Remove trailing whitespace (including linefeeds) */
+  fnw = line + len - 1;
+  while (fnw >= line && isspace((unsigned char)*fnw)) *fnw-- = '\0';
+}
+
+/** Reports whether a zero-terminated `line` contains only whitespace after a
+    line-trailing comment (`# ...`) is removed. */
+int is_blank(char *line) {
+  while (*line && *line != '#' && isspace((unsigned char)*line)) ++line;
+
+  return *line == '\0' || *line == '#';
+}
+
+int parse_line(char *line, testspec_t *t) {
+  char *code_brk, *in_brk;
+  int num_fields;
+
+  if ((code_brk = strchr(line, ':')) == NULL) return 0;
+  if ((in_brk = strchr(code_brk + 1, ':')) == NULL) return 0;
+
+  *code_brk = '\0';
+  t->code = line;
+  *in_brk = '\0';
+
+  num_fields = count_fields(code_brk + 1, ',');
+  t->num_inputs = num_fields;
+  t->input = NULL;
+
+  num_fields = count_fields(in_brk + 1, ',');
+  t->num_outputs = num_fields;
+  t->output = NULL;
+
+  if (t->num_inputs > 0) {
+    t->input = calloc(t->num_inputs, sizeof(char *));
+    parse_fields(code_brk + 1, ',', t->input);
+  }
+  if (t->num_outputs > 0) {
+    t->output = calloc(t->num_outputs, sizeof(char *));
+    parse_fields(in_brk + 1, ',', t->output);
+  }
+  return 1;
+}
+
+/** Returns the number of `delim` separated fields occur in `line`. */
+int count_fields(char *line, int delim) {
+  int count = 1;
+
+  if (*line == '\0') return 0;
+
+  while (*line) {
+    if (*line == (char)delim && *(line + 1) != '\0') ++count;
+    ++line;
+  }
+  return count;
+}
+
+void parse_fields(char *line, int delim, char **start) {
+  int pos = 0;
+
+  start[pos++] = line;
+  while ((line = strchr(line, delim)) != NULL) {
+    *line++ = '\0';
+    start[pos++] = line;
+  }
+}
+
+/** Runs the test cases specified by `t`, and writes its results to `ofp`. The
+    `test_num` is used in log output and should reflect the global ordering of
+    tests, but is not otherwise interpreted by this function.
+
+    This function returns 0 if the test succeeds, 1 if the test fails, and -1
+    if the test is broken (e.g., its code is unknown). */
+int run_test(int test_num, testspec_t *t, FILE *ofp) {
+  test_t info;
+
+  /* Look up and reality check test parameters */
+  if (find_test(t->code, &info) < 0) {
+    fprintf(stderr, "Line %d: Test code '%s' is unknown.\n", t->line, t->code);
+    return -1;
+  } else {
+    int errs = 0;
+
+    if (info.num_inputs >= 0 && t->num_inputs != info.num_inputs) {
+      fprintf(stderr,
+              "Line %d: Wrong number of inputs to %s (want %d, have %d)\n",
+              t->line, t->code, info.num_inputs, t->num_inputs);
+      ++errs;
+    }
+    if (info.num_outputs >= 0 && t->num_outputs != info.num_outputs) {
+      fprintf(stderr,
+              "Line %d: Wrong number of outputs to %s (want %d, have %d)\n",
+              t->line, t->code, info.num_outputs, t->num_outputs);
+      ++errs;
+    }
+    if (errs) {
+      fprintf(stderr, "Line %d: %d error(s), skipping this test.\n", t->line,
+              errs);
+      return -1;
+    }
+  }
+
+  /* If return value is true, just print a generic OK message;
+     otherwise, it is assumed that imath_errno has been set to
+     a value indicating the problem. */
+  if ((info.call)(t, ofp)) {
+    fprintf(ofp, "%s\t%d\t%d\tOK\n", t->file, t->line, test_num);
+    return 1;
+  } else if (imath_errno >= MP_BADARG) {
+    fprintf(ofp, "%s\t%d\t%d\t%s\n", t->file, t->line, test_num,
+            error_string(imath_errno));
+  } else {
+    fprintf(ofp, "%s\t%d\t%d\tFAILED\t%s\n", t->file, t->line, test_num,
+            imath_errmsg);
+  }
+  return 0;
+}
+
+/** Locates the run instructions for the specified test `code`, and if they are
+    found populates `*info` with a copy. It returns -1 if `code` is unknown. */
+int find_test(char *code, test_t *info) {
+  int i = 0;
+
+  while (g_tests[i].code != NULL) {
+    if (strcmp(g_tests[i].code, code) == 0) {
+      *info = g_tests[i];
+      return i;
+    }
+    ++i;
+  }
+  return -1;
+}
+
+/** Releases the memory occupied by a test case invocation. */
+void free_test(testspec_t *t) {
+  assert(t != NULL);
+
+  if (t->input != NULL) {
+    free(t->input);
+    t->input = NULL;
+  }
+  if (t->output != NULL) {
+    free(t->output);
+    t->output = NULL;
+  }
+}
+
+/** Returns a static label string describing `res`. Note that this is not the
+    same as the error string returned by `mp_error_string`, but corresponds to
+    the spelling of the constant for its value. */
+char *error_string(mp_result res) {
+  int v = abs(res);
+
+  return (char *)g_imath_strerr[v];
+}
+
+/* Here there be dragons */
diff --git a/polly/lib/External/isl/imath/imtimer.c b/polly/lib/External/isl/imath/imtimer.c
new file mode 100644 (file)
index 0000000..fde49a7
--- /dev/null
@@ -0,0 +1,215 @@
+/*
+  Name:     imtimer.c
+  Purpose:  Timing tests for the imath library.
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include <getopt.h>
+#include <unistd.h>
+
+#include "imath.h"
+
+double clocks_to_seconds(clock_t start, clock_t end);
+double get_multiply_time(int nt, int prec);
+double get_exptmod_time(int nt, int prec);
+mp_int alloc_values(int nt, int prec);
+void randomize_values(mp_int values, int nt, int prec);
+void release_values(mp_int values, int nt);
+void mp_int_random(mp_int z, int prec);
+
+const int g_mul_factor = 1000;
+
+int main(int argc, char *argv[]) {
+  int do_mul = 0, do_exp = 0, do_header = 1;
+  int num_tests, precision = 0, opt;
+  mp_size threshold = 0;
+  unsigned int seed = (unsigned int)time(NULL);
+
+  while ((opt = getopt(argc, argv, "ehmnp:s:t:")) != EOF) {
+    switch (opt) {
+      case 'e':
+        do_exp = 1;
+        break;
+      case 'm':
+        do_mul = 1;
+        break;
+      case 'n':
+        do_header = 0;
+        break;
+      case 'p':
+        precision = atoi(optarg);
+        break;
+      case 's':
+        seed = atoi(optarg);
+        break;
+      case 't':
+        threshold = (mp_size)atoi(optarg);
+        break;
+      default:
+        fprintf(stderr,
+                "Usage:  imtimer [options] <num-tests>\n\n"
+                "Options understood:\n"
+                " -e        -- test modular exponentiation speed.\n"
+                " -h        -- display this help message.\n"
+                " -m        -- test multiplication speed.\n"
+                " -n        -- no header line.\n"
+                " -p <dig>  -- use values with <dig> digits.\n"
+                " -s <rnd>  -- set random seed to <rnd>.\n"
+                " -t <dig>  -- set recursion threshold to <dig> digits.\n\n");
+        return (opt != 'h');
+    }
+  }
+
+  if (optind >= argc) {
+    fprintf(stderr,
+            "Usage:  imtimer [options] <num-tests>\n"
+            "[use \"imtimer -h\" for help with options]\n\n");
+    return 1;
+  } else
+    num_tests = atoi(argv[optind]);
+
+  srand(seed);
+
+  if (num_tests <= 0) {
+    fprintf(stderr, "You must request at least one test.\n");
+    return 1;
+  }
+  if (precision < 0) {
+    fprintf(stderr, "Precision must be non-negative (0 means default).\n");
+    return 1;
+  }
+  mp_int_multiply_threshold(threshold);
+
+  if (do_header) printf("NUM\tPREC\tBITS\tREC\tRESULT\n");
+  printf("%d\t%d\t%d\t%u", num_tests, precision,
+         (int)(precision * MP_DIGIT_BIT), threshold);
+
+  if (do_mul) {
+    double m_time = get_multiply_time(num_tests, precision);
+
+    printf("\tMUL %.3f %.3f", m_time, m_time / num_tests);
+  }
+
+  if (do_exp) {
+    double e_time = get_exptmod_time(num_tests, precision);
+
+    printf("\tEXP %.3f %.3f", e_time, e_time / num_tests);
+  }
+  fputc('\n', stdout);
+  fflush(stdout);
+
+  return 0;
+}
+
+double clocks_to_seconds(clock_t start, clock_t end) {
+  return (double)(end - start) / CLOCKS_PER_SEC;
+}
+
+mp_int alloc_values(int nt, int prec) {
+  mp_int out = malloc(nt * sizeof(mpz_t));
+  int i;
+
+  if (out == NULL) return NULL;
+
+  for (i = 0; i < nt; ++i) {
+    if (mp_int_init_size(out + i, prec) != MP_OK) {
+      while (--i >= 0) mp_int_clear(out + i);
+      return NULL;
+    }
+  }
+
+  return out;
+}
+
+void randomize_values(mp_int values, int nt, int prec) {
+  int i;
+
+  for (i = 0; i < nt; ++i) mp_int_random(values + i, prec);
+}
+
+void release_values(mp_int values, int nt) {
+  int i;
+
+  for (i = 0; i < nt; ++i) mp_int_clear(values + i);
+
+  free(values);
+}
+
+double get_multiply_time(int nt, int prec) {
+  clock_t start, end;
+  mp_int values;
+  int i;
+
+  if ((values = alloc_values(3, prec)) == NULL) return 0.0;
+  randomize_values(values, 2, prec);
+
+  start = clock();
+  for (i = 0; i < nt; ++i) mp_int_mul(values, values + 1, values + 2);
+  end = clock();
+
+  release_values(values, 3);
+
+  return clocks_to_seconds(start, end);
+}
+
+double get_exptmod_time(int nt, int prec) {
+  clock_t start, end;
+  mp_int values;
+  int i;
+
+  if ((values = alloc_values(4, prec)) == NULL) return 0.0;
+  randomize_values(values, 3, prec);
+
+  start = clock();
+  for (i = 0; i < nt; ++i)
+    mp_int_exptmod(values, values + 1, values + 2, values + 3);
+  end = clock();
+
+  release_values(values, 4);
+
+  return clocks_to_seconds(start, end);
+}
+
+void mp_int_random(mp_int z, int prec) {
+  int i;
+
+  if (prec > (int)MP_ALLOC(z)) prec = (int)MP_ALLOC(z);
+
+  for (i = 0; i < prec; ++i) {
+    mp_digit d = 0;
+    int j;
+
+    for (j = 0; j < (int)sizeof(d); ++j) {
+      d = (d << CHAR_BIT) | (rand() & UCHAR_MAX);
+    }
+
+    z->digits[i] = d;
+  }
+  z->used = prec;
+}
diff --git a/polly/lib/External/isl/imath/iprime.c b/polly/lib/External/isl/imath/iprime.c
new file mode 100644 (file)
index 0000000..d24246f
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+  Name:     iprime.c
+  Purpose:  Pseudoprimality testing routines
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include "iprime.h"
+#include <stdlib.h>
+
+static int s_ptab[] = {
+    2,   3,   5,   7,   11,  13,  17,  19,  23,  29,  31,  37,  41,  43,  47,
+    53,  59,  61,  67,  71,  73,  79,  83,  89,  97,  101, 103, 107, 109, 113,
+    127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197,
+    199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
+    283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379,
+    383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463,
+    467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571,
+    577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659,
+    661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761,
+    769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863,
+    877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977,
+    983, 991, 997, 0, /* sentinel */
+};
+
+mp_result mp_int_is_prime(mp_int z) {
+  /* Reject values less than 2 immediately. */
+  if (mp_int_compare_value(z, 2) < 0) {
+    return MP_FALSE;
+  }
+  /* First check for divisibility by small primes; this eliminates a large
+     number of composite candidates quickly
+   */
+  for (int i = 0; s_ptab[i] != 0; i++) {
+    mp_small rem;
+    mp_result res;
+    if (mp_int_compare_value(z, s_ptab[i]) == 0) return MP_TRUE;
+    if ((res = mp_int_div_value(z, s_ptab[i], NULL, &rem)) != MP_OK) return res;
+    if (rem == 0) return MP_FALSE;
+  }
+
+  /* Now try Fermat's test for several prime witnesses (since we now know from
+     the above that z is not a multiple of any of them)
+   */
+  mp_result res;
+  mpz_t tmp;
+
+  if ((res = mp_int_init(&tmp)) != MP_OK) return res;
+
+  for (int i = 0; i < 10 && s_ptab[i] != 0; i++) {
+    if ((res = mp_int_exptmod_bvalue(s_ptab[i], z, z, &tmp)) != MP_OK) {
+      return res;
+    }
+    if (mp_int_compare_value(&tmp, s_ptab[i]) != 0) {
+      mp_int_clear(&tmp);
+      return MP_FALSE;
+    }
+  }
+  mp_int_clear(&tmp);
+  return MP_TRUE;
+}
+
+/* Find the first apparent prime in ascending order from z */
+mp_result mp_int_find_prime(mp_int z) {
+  mp_result res;
+
+  if (mp_int_is_even(z) && ((res = mp_int_add_value(z, 1, z)) != MP_OK))
+    return res;
+
+  while ((res = mp_int_is_prime(z)) == MP_FALSE) {
+    if ((res = mp_int_add_value(z, 2, z)) != MP_OK) break;
+  }
+
+  return res;
+}
+
+/* Here there be dragons */
diff --git a/polly/lib/External/isl/imath/iprime.h b/polly/lib/External/isl/imath/iprime.h
new file mode 100644 (file)
index 0000000..de12bdf
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+  Name:     iprime.h
+  Purpose:  Pseudoprimality testing routines
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#ifndef IPRIME_H_
+#define IPRIME_H_
+
+#include "imath.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Reports whether z is likely to be prime, meaning z >= 2 and has no positive
+   divisors 1 < d < z. It returns MP_YES if z is probably prime, or MP_NO if z
+   is definitely not prime.
+*/
+mp_result mp_int_is_prime(mp_int z);
+
+/* Find the first apparent prime in ascending order from z */
+mp_result mp_int_find_prime(mp_int z);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* IPRIME_H_ */
diff --git a/polly/lib/External/isl/imath/rsamath.c b/polly/lib/External/isl/imath/rsamath.c
new file mode 100644 (file)
index 0000000..25922cd
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+  Name:     rsamath.c
+  Purpose:  Implements part of PKCS#1, v. 2.1, June 14, 2002 (RSA Labs)
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include "rsamath.h"
+
+#include <limits.h>
+#include <string.h>
+
+static mp_result s_rsa_transform(mp_int msg, mp_int exp, mp_int mod,
+                                 mp_int out);
+
+/* Convert integer to octet string, per PKCS#1 v.2.1 */
+mp_result rsa_i2osp(mp_int z, unsigned char *out, int len) {
+  int excess_len = mp_int_binary_len(z);
+
+  if (excess_len < len) return MP_RANGE;
+
+  memset(out, 0, len);
+
+  excess_len -= len;
+  mp_int_to_binary(z, out + excess_len, len);
+
+  return MP_OK;
+}
+
+/* Convert octet string to integer, per PKCS#1 v.2.1 */
+mp_result rsa_os2ip(mp_int z, unsigned char *in, int len) {
+  return mp_int_read_binary(z, in, len);
+}
+
+/* Primitive RSA encryption operation */
+mp_result rsa_rsaep(mp_int msg, mp_int exp, mp_int mod, mp_int cipher) {
+  return s_rsa_transform(msg, exp, mod, cipher);
+}
+
+/* Primitive RSA decryption operation */
+mp_result rsa_rsadp(mp_int cipher, mp_int exp, mp_int mod, mp_int msg) {
+  return s_rsa_transform(cipher, exp, mod, msg);
+}
+
+/* Primitive RSA signing operation */
+mp_result rsa_rsasp(mp_int msg, mp_int exp, mp_int mod, mp_int signature) {
+  return s_rsa_transform(msg, exp, mod, signature);
+}
+
+/* Primitive RSA verification operation */
+mp_result rsa_rsavp(mp_int signature, mp_int exp, mp_int mod, mp_int msg) {
+  return s_rsa_transform(signature, exp, mod, msg);
+}
+
+/* Compute the maximum length in bytes a message can have using PKCS#1
+   v.1.5 encoding with the given modulus */
+int rsa_max_message_len(mp_int mod) {
+  int num_bits = mp_int_count_bits(mod);
+  int num_bytes = num_bits / CHAR_BIT;
+
+  if (num_bytes < 11) {
+    return 0; /* at least eleven bytes are required for padding */
+  } else {
+    return num_bytes - 11;
+  }
+}
+
+mp_result rsa_pkcs1v15_encode(unsigned char *buf, int msg_len, int buf_len,
+                              int tag, random_f filler) {
+  /* Make sure there is enough space for the encoded output */
+  if (msg_len > (buf_len - 11)) return MP_RANGE;
+
+  int msg_start = buf_len - msg_len;
+  int pad_len = msg_start - 3;
+
+  /* Move message to top of buffer -- these might overlap, so we rely
+     on the semantics of memmove() here */
+  memmove(buf + msg_start, buf, msg_len);
+
+  /* Set initial bytes as required by the specification */
+  buf[0] = 0x00;
+  buf[1] = (unsigned char)tag;
+
+  /* Fill with random padding.  We'll just assume the filler function
+     does the right thing and only writes the requested number of
+     nonzero bytes */
+  (filler)(buf + 2, pad_len);
+
+  /* Write separator between pad and message body */
+  buf[msg_start - 1] = 0x00;
+
+  return MP_OK;
+}
+
+mp_result rsa_pkcs1v15_decode(unsigned char *buf, int buf_len, int tag,
+                              int *msg_len) {
+  /* Make sure the buffer is syntactically valid */
+  if (buf_len < 11 || buf[0] != 0x00 || buf[1] != (unsigned char)tag)
+    return MP_UNDEF;
+
+  /* Figure out how many bytes of random padding there are */
+  int i = 2;
+  int pad_len = 0;
+  while (buf[i++] != '\0') ++pad_len;
+
+  int data_start = i;
+  int data_len = buf_len - data_start;
+
+  /* Shift the message to the front of the buffer */
+  memmove(buf, buf + data_start, data_len);
+
+  /* Zero out the rest of the buffer */
+  memset(buf + data_len, 0, pad_len + 3);
+
+  *msg_len = data_len;
+
+  return MP_OK;
+}
+
+static mp_result s_rsa_transform(mp_int msg, mp_int exp, mp_int mod,
+                                 mp_int out) {
+  if (mp_int_compare_zero(msg) < 0 || mp_int_compare(msg, mod) >= 0) {
+    return MP_RANGE;
+  }
+
+  return mp_int_exptmod(msg, exp, mod, out);
+}
+
+/* Here there be dragons */
diff --git a/polly/lib/External/isl/imath/rsamath.h b/polly/lib/External/isl/imath/rsamath.h
new file mode 100644 (file)
index 0000000..4daeb69
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+  Name:     rsamath.h
+  Purpose:  Implements part of PKCS#1, v. 2.1, June 14, 2002 (RSA Labs)
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#ifndef RSAMATH_H_
+#define RSAMATH_H_
+
+#include "imath.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Function to fill a buffer with nonzero random bytes */
+typedef void (*random_f)(unsigned char *, int);
+
+/* Convert integer to octet string, per PKCS#1 v.2.1 */
+mp_result rsa_i2osp(mp_int z, unsigned char *out, int len);
+
+/* Convert octet string to integer, per PKCS#1 v.2.1 */
+mp_result rsa_os2ip(mp_int z, unsigned char *in, int len);
+
+/* The following operations assume that you have converted your keys
+   and message data into mp_int values somehow.                      */
+
+/* Primitive RSA encryption operation */
+mp_result rsa_rsaep(mp_int msg, mp_int exp, mp_int mod, mp_int cipher);
+
+/* Primitive RSA decryption operation */
+mp_result rsa_rsadp(mp_int cipher, mp_int exp, mp_int mod, mp_int msg);
+
+/* Primitive RSA signing operation */
+mp_result rsa_rsasp(mp_int msg, mp_int exp, mp_int mod, mp_int signature);
+
+/* Primitive RSA verification operation */
+mp_result rsa_rsavp(mp_int signature, mp_int exp, mp_int mod, mp_int msg);
+
+/* Compute the maximum length in bytes a message can have using PKCS#1
+   v.1.5 encoding with the given modulus */
+int       rsa_max_message_len(mp_int mod);
+
+/* Encode a raw message per PKCS#1 v.1.5
+   buf      - the buffer containing the message
+   msg_len  - the length in bytes of the message
+   buf_len  - the size in bytes of the buffer
+   tag      - the message tag (nonzero byte)
+   filler   - function to generate pseudorandom nonzero padding
+
+   On input, the message is in the first msg_len bytes of the buffer;
+   on output, the contents of the buffer are replaced by the padded
+   message.  If there is not enough room, MP_RANGE is returned.
+ */
+mp_result rsa_pkcs1v15_encode(unsigned char *buf, int msg_len, 
+                             int buf_len, int tag, random_f filler);
+
+/* Decode a PKCS#1 v.1.5 message back to its raw form 
+   buf      - the buffer containing the encoded message
+   buf_len  - the length in bytes of the buffer
+   tag      - the expected message tag (nonzero byte)
+   msg_len  - on output, receives the length of the message content
+   
+   On output, the message is packed into the first msg_len bytes of
+   the buffer, and the rest of the buffer is zeroed.  If the buffer is
+   not of the correct form, MP_UNDEF is returned and msg_len is undefined.
+ */
+mp_result rsa_pkcs1v15_decode(unsigned char *buf, int buf_len, 
+                             int tag, int *msg_len);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* end RSAMATH_H_ */
diff --git a/polly/lib/External/isl/imath/tests/add.tc b/polly/lib/External/isl/imath/tests/add.tc
new file mode 100644 (file)
index 0000000..546aa67
--- /dev/null
@@ -0,0 +1,848 @@
+# Addition tests
+
+add:0,0,0:0
+add:0,0,=1:0
+add:1,=1,=1:2
+add:1,-1,0:0
+add:-1,1,0:0
+add:-1,1,=1:0
+
+add:103427990038,909510006269847,0:909613434259885
+add:128593002,-9007199254740992,0:-9007199126147990
+add:-65537,70000,0:4463
+add:-1000000,-6543210,0:-7543210
+add:#x29C932F25E6CEF8046FA,#x-29C932F25E6CEF8046FA,0:0
+add:2,#x7FFFFFFFF,0:#x800000001
+add:95031018,=1,=1:190062036
+add:#x-176E7F8018D6BA4B550AB36AAAFDC78A9,#x186DAD2485A41B18AAF5EF17922D7E5F1F,=1:#x16F6C52C8416AF73F5A543E0E77DA1E676
+add:-628443782411312,-301652218193016,=2:-930096000604328
+add:13731535,499104,0:14230639
+add:46496,0,0:46496
+add:85658949,0,0:85658949
+add:3,86618070,0:86618073
+add:-364,0,0:-364
+add:916376,71094297,0:72010673
+add:-76,-48988,0:-49064
+add:7,98029,293800191852111:98036
+add:213,0,0:213
+add:116992,19352187,=1:19469179
+add:-54334706,-2638935,0:-56973641
+add:4210,4441,0:8651
+add:2470,-1654142,0:-1651672
+add:-32608,76896,0:44288
+add:598200,65918574,0:66516774
+add:-524863149,95573,0:-524767576
+add:4,6856995,0:6856999
+add:86710327,16209386,0:102919713
+add:31,-24,0:7
+add:5895523,9915789381,0:9921684904
+add:41557511,310172,0:41867683
+add:-6714,923,0:-5791
+add:466232157,987,0:466233144
+add:5919,-63,0:5856
+add:929994,66871,0:996865
+add:23,391,0:414
+add:751,-25255,0:-24504
+add:-282292,-1608,0:-283900
+add:0,-4119448990,0:-4119448990
+add:69248,-64165,0:5083
+add:816106,580,0:816686
+add:15171,219806,0:234977
+add:945180,-585066,0:360114
+add:27052,6664636892,0:6664663944
+add:-481622,-578,0:-482200
+add:926,-81,0:845
+add:-4084,62941238721,=1:62941234637
+add:888598,6601,0:895199
+add:-61,143796,0:143735
+add:408006264,51,0:408006315
+add:-582073,-6752,0:-588825
+add:88194084,595557600,0:683751684
+add:4963532385,72932,0:4963605317
+add:37370180,708428344,0:745798524
+add:638718578,-94054,0:638624524
+add:12603892606,194259,0:12604086865
+add:9812049,8843056,0:18655105
+add:-156093,-3718156523,0:-3718312616
+add:12264,949557843298,0:949557855562
+add:338742,9139,0:347881
+add:48848,-6268099,0:-6219251
+add:3653,981782890584,0:981782894237
+add:608763646,38233135026,0:38841898672
+add:-17063,-4811,0:-21874
+add:63244008,-380818980,0:-317574972
+add:624559862947,21088,0:624559884035
+add:-268795562,74755169,0:-194040393
+add:368827930,56987680,0:425815610
+add:142,-838643130506,0:-838643130364
+add:848909,137303147,0:138152056
+add:6682221270,4495632518460,0:4502314739730
+add:163999538727,754668,0:164000293395
+add:570098317,1230642588,0:1800740905
+add:814302609847,295465,0:814302905312
+add:61148411120,462527703,0:61610938823
+add:979075368979,64243429,0:979139612408
+add:8280601099859,431312,0:8280601531171
+add:29662,3920844058249,0:3920844087911
+add:381765363,6285,0:381771648
+add:6038301700102,167589011428,0:6205890711530
+add:-6720,50309,0:43589
+add:92070025383,8403955,0:92078429338
+add:9057100,9331,0:9066431
+add:46997620390,2556790331006,0:2603787951396
+add:9853238961850,760016661497,0:10613255623347
+add:642786326083,4994197649,0:647780523732
+add:60934395,192791945290,0:192852879685
+add:1304866806,9628566351206,0:9629871218012
+add:-537871392295,1691988267,0:-536179404028
+add:73595697641,63790,0:73595761431
+add:87798124384590,168308169,0:87798292692759
+add:77155772837617,993653875,0:77156766491492
+add:691109994727,83820903066409,0:84512013061136
+add:2012749349577,1194,0:2012749350771
+add:3909606,1258809350,0:1262718956
+add:5961027295,-191014,0:5960836281
+add:-9155782013,84622,0:-9155697391
+add:-7211667,-624806193439,0:-624813405106
+add:1754076,931310,0:2685386
+add:53288031910288,1866366148,0:53289898276436
+add:767503182,-78473238204,0:-77705735022
+add:-89763935864,-14028568280297,0:-14118332216161
+add:454616605,67243118209653,0:67243572826258
+add:674985,745910,0:1420895
+add:9182866281585,-7492901984,0:9175373379601
+add:8427973625,2948084578162,0:2956512551787
+add:89366530,96670928089,0:96760294619
+add:62255464298256,1694823,0:62255465993079
+add:5268676160308,-93499502334390,0:-88230826174082
+add:7165346,-12994330060,0:-12987164714
+add:73330752719,904668539586,0:977999292305
+add:8007349,88617667386,0:88625674735
+add:951867792,807329,0:952675121
+add:645715109491016,58609052382,0:645773718543398
+add:2037750169321,85113205892,0:2122863375213
+add:6585250,76715488825566,0:76715495410816
+add:4585299,4140224,0:8725523
+add:20194080,7047624,0:27241704
+add:786913195,5197776759303,0:5198563672498
+add:751261814658086,65539188,0:751261880197274
+add:-6325172443258,2171993016413249,0:2165667843969991
+add:3947284565,-78726628505,0:-74779343940
+add:-71699817835206,40239308204,0:-71659578527002
+add:53023714,-82553833053558,0:-82553780029844
+add:2808131187169,890250230608190,0:893058361795359
+add:4783795579,-953360022706,0:-948576227127
+add:22326520,59606609543578,0:59606631870098
+add:37110988189,2635629530529,0:2672740518718
+add:5415787,65557975919,0:65563391706
+add:687495904,-3296642739961554,0:-3296642052465650
+add:72930835789,43382168425705304,0:43382241356541093
+add:-995003864534,61722341747,0:-933281522787
+add:74285863538462,4701124896071184,0:4775410759609646
+add:-7259432400758987,917110091938734,0:-6342322308820253
+add:83640964028613,28436773,0:83640992465386
+add:12798300129,42764089830,0:55562389959
+add:907689161228474,9984041726746,0:917673202955220
+add:88648450941,-92224182312398621,0:-92224093663947680
+add:3423736794,992566059450,0:995989796244
+add:26095203,84516699542499712,0:84516699568594915
+add:-664955461457,34154013,0:-664921307444
+add:17408598155,57614703283466656,0:57614720692064811
+add:734135582143613,8386599520,0:734143968743133
+add:75433328059753089,3411724102,0:75433331471477191
+add:-5780056339,370823068636155,0:370817288579816
+add:747133022687630,743183409891560,0:1490316432579190
+add:1351023965,562216806411,0:563567830376
+add:8923051674,5453380084794,0:5462303136468
+add:244571930,-51111880145,0:-50867308215
+add:-41136584383913485,2817501078,0:-41136581566412407
+add:-8079768063523410,441741295522855156,0:433661527459331746
+add:599579537585,1505732756139,0:2105312293724
+add:6728375739,634744472,0:7363120211
+add:163686368,10797029513119,0:10797193199487
+add:38258778569482,81136715091,0:38339915284573
+add:89311393409893347,6487334114,0:89311399897227461
+add:4413952309911,-335091846,0:4413617218065
+add:-8490298221703,906197882389719833,0:906189392091498130
+add:547446627581960679,4111395072,0:547446631693355751
+add:-147199257725737,358585065185151457,0:358437865927425720
+add:733104781218,1305401890,0:734410183108
+add:66789232493812823,152353542633642764,0:219142775127455587
+add:91447917877257,890149399042107596,0:890240846959984853
+add:67840659340,45844535119015296,0:45844602959674636
+add:31351681435877221,-442068622969770457,0:-410716941533893236
+add:8505522087730720965,162001047045127445,0:8667523134775848410
+add:90408836865703,91766097115,0:90500602962818
+add:8278725919,-6565975065136635,0:-6565966786410716
+add:778195404262806210,9985183887639111776,0:10763379291901917986
+add:6696810212664216,312304914759219,0:7009115127423435
+add:3557735824865,584593215289536,0:588150951114401
+add:-49412044681,29956396329782239,0:29956346917737558
+add:11923449620,7765655187,0:19689104807
+add:1724176067,-67142223866,0:-65418047799
+add:525722978624,57023088377443306,0:57023614100421930
+add:726936921764427,3077076587081089,0:3804013508845516
+add:1790333591126,-91682335574328992,0:-91680545240737866
+add:-1112879092907469823,1867817571215,0:-1112877225089898608
+add:-8476115918476,3323398534004,0:-5152717384472
+add:83059391773,-65273298074046515729,0:-65273297990987123956
+add:2211388311050688,-245146603838894173,0:-242935215527843485
+add:585851683392336,3975804417513631370,0:3976390269197023706
+add:139186663640090,15082756961,0:139201746397051
+add:-48189710801086,-33546258184494787728,0:-33546306374205588814
+add:-100779556817445,-1522038785339961,0:-1622818342157406
+add:4885512159295669,480294778789866559,0:485180290949162228
+add:-557882003905193311,20195805293900,0:-557861808099899411
+add:154553862612072,9109218823125727072,0:9109373376988339144
+add:1483847515783086714,78233016786768531473,0:79716864302551618187
+add:632462956668123,-2951738540674650223,0:-2951106077717982100
+add:-60943119399848141,74036520715371,0:-60869082879132770
+add:-7905328383508507808,-207334403231,0:-7905328590842911039
+add:-376183968178,-862976187364,0:-1239160155542
+add:918327139068056021,-685922087142,0:918326453145968879
+add:-9846497109055054870,6775447579440637,0:-9839721661475614233
+add:-84073521083215,71309976692297262369,0:71309892618776179154
+add:-373011272994268095955,4157479098221637,0:-373007115515169874318
+add:49271774069573022576,378613526495506818344,0:427885300565079840920
+add:-5376376953931357562,7508833770175817,0:-5368868120161181745
+add:-23778714258598355551,-7185005392000393507,0:-30963719650598749058
+add:801031622749,53000130414840,0:53801162037589
+add:-970929952514676169,64017648311761173049,0:63046718359246496880
+add:444961381148474,-368409783275279249,0:-367964821894130775
+add:39999239040508219266,38054215870372108,0:40037293256378591374
+add:-712118755181107,21931036897383483,0:21218918142202376
+add:-646755675748528169,609844920243318603442,0:609198164567570075273
+add:171013028884891673,11967223547227113703,0:12138236576112005376
+add:90483783429450285931,8758299165450368514304,0:8848782948879818800235
+add:54722600417344222188,6655544009320,0:54722607072888231508
+add:7059355949487975,15428043300387,0:7074783992788362
+add:63718799432141668051,-1777818839779748621,0:61940980592361919430
+add:-811965656585153,-92999475442666083,0:-93811441099251236
+add:-480943344691207768,38637964026264,0:-480904706727181504
+add:87346474969320,11671605416687563,0:11758951891656883
+add:-144193490776783,320317203586930,0:176123712810147
+add:637224429856480,90100814693140,0:727325244549620
+add:1117448757980,20116238466569324081,0:20116239584018082061
+add:2134662653354031124,57535080216036041491,0:59669742869390072615
+add:-699305697439351543,-1322846377107844464831,0:-1323545682805283816374
+add:-287368527913803,559967333864139,0:272598805950336
+add:-4524131005300321178256,648090525452193270713,0:-3876040479848127907543
+add:983197813618615290581,-555223968315003163,0:982642589650300287418
+add:47595018158554,554354123612822084175,0:554354171207840242729
+add:76492304934567739056067,-17570682458452839171696,0:58921622476114899884371
+add:605579840932458751,5118917191828845481095,0:5119522771669777939846
+add:-77276783972774282464,97578221184517253974,0:20301437211742971510
+add:-55779468870779406,3628329199924803907,0:3572549731054024501
+add:-6810396240935929656,45581601665257956989667,0:45574791269017021060011
+add:-643395735022469,95994342321649,0:-547401392700820
+add:59033016804296,90010200392865311,0:90069233409669607
+add:412262412571713009,44652839425446643811,0:45065101838018356820
+add:-996242836885840433689,9932141967639296363784,0:8935899130753455930095
+add:-187591416585869366840,4868774783363997420,0:-182722641802505369420
+add:786124638558627932,120825949339625517416,0:121612073978184145348
+add:683056931297141410,13435555169749,0:683070366852311159
+add:78591895387046935416982,-3863271218201597391326,0:74728624168845338025656
+add:-581639737241844,59732569151616229,0:59150929414374385
+add:63839107438860260,-57936899988162199911626,0:-57936836149054761051366
+add:90241348579070434,4025779803051070287,0:4116021151630140721
+add:-29146551546957649,500543832007704775744,0:500514685456157818095
+add:40152296103662954,30632073318077007293876,0:30632113470373110956830
+add:46052697297460594549965,-2523434189144367108,0:46050173863271450182857
+add:-908472766655304200,503910242160770655137,0:503001769394115350937
+add:35664754770405781576262,-52328200879455304,0:35664702442204902120958
+add:536193847189289,2055159240163985839,0:2055695434011175128
+add:5692763430774180,559128387745059,0:6251891818519239
+add:962044518204007,36941484559411981897006,0:36941485521456500101013
+add:1778825689878630,1752252372363744,0:3531078062242374
+add:94533959067668939155652,7370593466294273268440,0:101904552533963212424092
+add:-79278320169999633,98078807455225677,0:18800487285226044
+add:97932568071091044410,45504699679270344940,0:143437267750361389350
+add:81602336599709335,277692040888807344679270,0:277692122491143944388605
+add:-8416111605414512356,-71387336643361802215,0:-79803448248776314571
+add:-4364114737364980,5713751339100810207300,0:5713746974986072842320
+add:-2248544818568852,-95216575446860643106235,0:-95216577695405461675087
+add:-86464737497345750915,-9340577567832336397746,0:-9427042305329682148661
+add:7285517444194103327524171,-178398693192528240,0:7285517265795410134995931
+add:745600294808335954574,3590181147179066146,0:749190475955515020720
+add:9465688117779501171539,38370364609588339408116,0:47836052727367840579655
+add:780056864215481439157498,-7015580969512485,0:780056857199900469645013
+add:978681982436757227400,2684547366513014,0:978684666984123740414
+add:-1128116293278100017914825,5548079193241448,0:-1128116287730020824673377
+add:69069382482494805,-40368676133739445253204,0:-40368607064356962758399
+add:1068908356897083556495,92975661850341635306516,0:94044570207238718863011
+add:2045728645356266,6732676856163053,0:8778405501519319
+add:986371258787059591145109,24417303396801332,0:986371283204362987946441
+add:5107392493993300358729,-8580635176929229687,0:5098811858816371129042
+add:1173219044247994941,150432915362745448142,0:151606134406993443083
+add:289209848265652909988,896527174701053128584035,0:896816384549318781494023
+add:7576209306830869,321093885120988771790,0:321101461330295602659
+add:-1998078850553780901,-491302474398583183312,0:-493300553249136964213
+add:48578611214917968888328,-9724795578642180430323005,0:-9676216967427262461434677
+add:-89125038112802690868952,106876489286063867,0:-89124931236313404805085
+add:71163583246605175,94315599279060581,0:165479182525665756
+add:-37978975375912768223,-83894091589588085332,0:-121873066965500853555
+add:26160354602260154641,82502519980721475,0:26242857122240876116
+add:6721445506562724498613,3849322132330485045442724,0:3856043577837047769941337
+add:-49599516930241019167,940046744572738518062,0:890447227642497498895
+add:309633233963607626456,431010776584765161668698,0:431320409818728769295154
+add:5437528458768789581061,98535318335138080471,0:5536063777103927661532
+add:441952255932531337132635419,-457951493790545402320,0:441951797981037546587233099
+add:4234090565000592983852,141452209542036221,0:4234232017210135020073
+add:444877202793878855,-818932236535168281886543304,0:-818932236090291079092664449
+add:8735279390159786014911,74528121661502104489,0:8809807511821288119400
+add:329585339951820135507,3209925326812978905481,0:3539510666764799040988
+add:7513147727765550283468497,18340872039691020224,0:7513166068637589974488721
+add:22672336765411635852057,112360311181155228061,0:22784697076592791080118
+add:94840923157956010314,-890963292023167606621709508,0:-890963197182244448665699194
+add:-42743124461511984041,-154189486799725890635958009,0:-154189529542850352147942050
+add:4642096435824001337488,1075739791472186776,0:4643172175615473524264
+add:9072122446151456250370,459465421414955099,0:9072581911572871205469
+add:1208103563782991690,37264807069479596362,0:38472910633262588052
+add:-35229676312313275613641079,7831519567525205386506558,0:-27398156744788070227134521
+add:-14914636592325904561,238892654922757390,0:-14675743937403147171
+add:70036479094753932788537196,3638698354298942306,0:70036482733452287087479502
+add:2026475183691718009207221,-51818547306091257831,0:2026423365144411917949390
+add:934591237413188471704,9583576351426447252706,0:10518167588839635724410
+add:19623165243467693921345120,713164237953453844732059938,0:732787403196921538653405058
+add:-330423131007863591790334,483122548819491409819,0:-329940008459044100380515
+add:186655649790428913672547335,45905196004697591848,0:186655695695624918370139183
+add:61575494850989411781745,510771432997312770825568,0:572346927848302182607313
+add:701715172953878317016084611,82176271434782371131,0:701715255130149751798455742
+add:37317170353550823267505484,-281915644115285990142,0:37316888437906707981515342
+add:782147829078599149413,406441493949770755536,0:1188589323028369904949
+add:8750933869512603353560747,4845145469101036864410189,0:13596079338613640217970936
+add:82771556090809260029854,417868176867358634531479,0:500639732958167894561333
+add:-60327848305676142893255531,45186448696277654715,0:-60327803119227446615600816
+add:559238168466621140605667,3086402973187970627177143386,0:3086962211356437248317749053
+add:1487217856230533992619184307,88533139618452902103,0:1487217944763673611072086410
+add:74032714774552791328773,-743497205088178750354447330,0:-743423172373404197563118557
+add:87529301918640055328531949,833538436278390237794218,0:88362840354918445566326167
+add:1134893809082711064119381650,835345147684508177653,0:1134894644427858748627559303
+add:-31083560926993891097159,-6452398931722666743775,0:-37535959858716557840934
+add:-494187214625328255573121,-433316980223823483512168,0:-927504194849151739085289
+add:390091842128606730764553615,7074602388637593045951,0:390098916730995368357599566
+add:14996900382322823366993947,155575881895992530106696,0:15152476264218815897100643
+add:256981179582607852185710064,960124902340809507842,0:256982139707510192995217906
+add:606337739205468757142681,34431354430278402333959617,0:35037692169483871091102298
+add:820809632172159862547216787,-4720961905066758420386939975,0:-3900152272894598557839723188
+add:33254605052680847119352168342,-42458830987973889052675953,0:33212146221692873230299492389
+add:1921909649929948589227,650119220435441127155469,0:652041130085371075744696
+add:36032029451816652021799919065,991948874284797761534223740,0:37023978326101449783334142805
+add:17509423061776720551599,561537726801446789470435708,0:561555236224508566190987307
+add:432435308982641288577,2579972583113864486802769,0:2580405018422847128091346
+add:5533541961594197125465685605,-5341574108952093824178502732,0:191967852642103301287182873
+add:29253784634468015940995,66868085704232379455942,0:96121870338700395396937
+add:5840836104812160960058403235,7254794739433874655672505,0:5848090899551594834714075740
+add:-986437670276537865472,-7254530387088660530975,0:-8240968057365198396447
+add:5936378029743262858909,5646361873410369432412,0:11582739903153632291321
+add:9309474173188449211471238,71622847426463521178458,0:9381097020614912732649696
+add:7395866525419579894252,6054211177368524226173,0:13450077702788104120425
+add:418754431137708178806,4581969489771092325887396,0:4582388244202230034066202
+add:427267592272679033207846,-1335344313633491261520271375,0:-1334917046041218582487063529
+add:633189097535167096544295,8453789539859471176551,0:641642887075026567720846
+add:5272319792173353341707102,391850306244460524900101084,0:397122626036633878241808186
+add:65825860390007189905183231257,931471994606023293002971,0:65826791862001795928476234228
+add:-176921811706712109725453309153,51104838980538411694813294,0:-176870706867731571313758495859
+add:76672856213061308993625,-29636580685314230414049903200,0:-29636504012458017352740909575
+add:674452402018255228121289278,67008875737626760336005690,0:741461277755881988457294968
+add:8541968162357356479415070453,-80758853802904365328480678550,0:-72216885640547008849065608097
+add:63670327126030699390525,647239453527002086941714828140,0:647239517197329212972414218665
+add:23827968287407694016891491732,5687322786770428586659139842628,0:5711150755057836280676031334360
+add:-56934084938034523477449,6919565043762938954102,0:-50014519894271584523347
+add:-812505002549423792769451177170,-468614098924848220068202,0:-812505471163522717617671245372
+add:67104776285167776356142,210831864020377644772737617440,0:210831931125153929940513973582
+add:5824940449668378359986211,-64180395015735031445899448907,0:-64174570075285363067539462696
+add:983409682982426617028179979,163969833630884765202234246,0:1147379516613311382230414225
+add:6210538420073191557435,-31054053390220409528967600423,0:-31054047179681989455776042988
+add:469516153781193420842788,1496796321887102771420,0:471012950103080523614208
+add:33979356884336447134582,91638986223658016683623403,0:91672965580542353130757985
+add:-32260848074913901984307362359,-2672012528351544629126598,0:-32263520087442253528936488957
+add:-8417639463674910047939048993449,80120124562574727803706174,0:-8417559343550347473211245287275
+add:775695772679005684017516,-3020790629041979619689982869,0:-3020014933269300614005965353
+add:975852258680635035690012,83046701463562128390834533268,0:83047677315820809025870223280
+add:8781861863169257626949530,28108177849164848399916019884,0:28116959711028017657542969414
+add:-283546689653578050474370627,2807772419117477871716212,0:-280738917234460572602654415
+add:9064465458779158311916969647780,9139819686732442186357751866469,0:18204285145511600498274721514249
+add:8840784216244154251572494530,60209012240418199299108682988151,0:60217853024634443453360255482681
+add:93815677427271630939740,22565184436411206947191022,0:22659000113838478578130762
+add:82452768800915418769333034684,31578884402602201747665,0:82452800379799821371534782349
+add:-861901423955324264599608669156,707341771563323556783706679,0:-861194082183760941042824962477
+add:-27282637700205513755848881,-503533726284787080825911,0:-27786171426490300836674792
+add:9289214479556466478450749,-7084113575511224733535260,0:2205100904045241744915489
+add:7017123255359412684282683,9046068160232439106672624,0:16063191415591851790955307
+add:251153423310728722653267854537,13062952884507685376788080,0:251166486263613230338644642617
+add:764970108101691141391204483,75231888234738846744202931914419,0:75232653204846948435344323118902
+add:70105736718198876906468336722477,2901679421786748849622789,0:70105739619878298693217186345266
+add:-277236273480908454984267,95439324803072858679031,0:-181796948677835596305236
+add:502022119894313002150611379003,-9553217783049460795811638,0:502012566676529952689815567365
+add:11235044224795237679279440,1598484681458068370777229,0:12833528906253306050056669
+add:6006446640030673298734990897916,3932713488343416708785849,0:6006450572744161642151699683765
+add:341984581388111664359529291419,253672139310821088560318393948503,0:254014123892209200224677923239922
+add:-16498480187763102357325186,16757917811449471275953805,0:259437623686368918628619
+add:4840293579085321724261731660,3299269918638542438501050537,0:8139563497723864162762782197
+add:862473464150144977188625432548718,390725508757117448688936595600,0:862864189658902094637314369144318
+add:-29573457775060793626221640796,-955486742447211372069984831882188,0:-955516315904986432863611053522984
+add:2764463542396067736191963723,33349178218458257881168366225076,0:33351942682000653948904558188799
+add:-564129660605536405453000618753,-996106182924479683180384656113614,0:-996670312585085219585837656732367
+add:8033177512692093044315018,-5381259101993480763476852450,0:-5373225924480788670432537432
+add:5694253375903848576996695765,3533498246256483823188758976,0:9227751622160332400185454741
+add:8049869890130722459017898,804302573811695296944485509,0:812352443701826019403503407
+add:-10782856862032822029370450127864,42183304229376991057468028,0:-10782814678728592652379392659836
+add:17953427150766889866624145,2672739534749259247084452652,0:2690692961900026136951076797
+add:382968112253902278556556412715286,507081979144423606544809226,0:382968619335881422980162957524512
+add:10675472848868311098607354530,921641093617028576338449657948,0:932316566465896887437057012478
+add:45793464872625930068611014771,895098402397211759149489341,0:46688563275023141827760504112
+add:-64085785899561813992220240078,-9948203496533963923520873499122871,0:-9948267582319863485334865719362949
+add:-36229685382343277189388317,3225709738074187586965400,0:-33003975644269089602422917
+add:62746144069561486173188762523567,41388696507099517847341965,0:62746185458257993272706609865532
+add:-607094025616255955599781697,-394867562893771866413821906158382,0:-394868169987797482669777505940079
+add:311268724839167391882108484,-82153236672690725073700221869998,0:-82152925403965885906308339761514
+add:-6835603694552724869687187061,-6023776712184941872282636664,0:-12859380406737666741969823725
+add:590358394226908898299218590543900,97734796237031665405902113169504,0:688093190463940563705120703713404
+add:776333186005384178281483204964,7251231826873456228321061,0:776340437237211051737711526025
+add:56669798612022472565446600865,-6052380717302970032083528141,0:50617417894719502533363072724
+add:6865898859037955833953890,178638282809455642352286,0:7044537141847411476306176
+add:5105205245055741189404951,893962641798284490158079805140673,0:893962646903489735213820994545624
+add:51316165533150178772523358024,-628375072698255873957923760051222,0:-628323756532722723779151236693198
+add:-87785238468437978540491414,89732479371379507893122052,0:1947240902941529352630638
+add:950318073610388416087529318775,402634948952512865122682232525,0:1352953022562901281210211551300
+add:-74572627412706083960240275,431357597384151709770753161,0:356784969971445625810512886
+add:9853321136670770651473838461495259,-83924966088311113186923377729455334,0:-74071644951640342535449539267960075
+add:650506501105456725689474061,287241011028313593932616830,0:937747512133770319622090891
+add:8132932977319394188366230514,-254188694333249311199490675,0:7878744282986144877166739839
+add:53320519909486593081198293,-74572156817884131125537363,0:-21251636908397538044339070
+add:-71547639554175546005091389360,-8140195760146170485331061575,0:-79687835314321716490422450935
+add:1327483718371853548235029647793617,54274563336128441076471770,0:1327483772646416884363470724265387
+add:1314001032447052278696101270,5415781672112089561501909844,0:6729782704559141840198011114
+add:47224974651866655046632261766,-76788661932424775106847892,0:47148185989934230271525413874
+add:792552859971310302936618155974,-487118690055436369708858828,0:792065741281254866566909297146
+add:8685351871091309367281665125018193,579376603481579380106078170606,0:8685931247694790946661771203188799
+add:-163023266227426934448401141075814,771214414019011070620622448527010,0:608191147791584136172221307451196
+add:681117685696813411930600559345469,53231124210443068505485918467568,0:734348809907256480436086477813037
+add:24728715686927944276955201,239070293086557045345907117925272,0:239070317815272732273851394880473
+add:764946100412930809834253766,-826649833775850040190545960601,0:-825884887675437109380711706835
+add:7808371142489773310260037786027,3411749587758291799422914115,0:7811782892077531602059460700142
+add:9487499431366548971411896854,617160736935684035360665548277255,0:617170224435115401909636960174109
+add:898285778199998316256066724,-446698135458890722737448919720207023,0:-446698134560604944537450603464140299
+add:679188320572774450433052775314,917321221948698358395231976875443,0:918000410269271132845665029650757
+add:-606026214573430597349972660492,-76705531041680588416688199753404,0:-77311557256254019014038172413896
+add:-2436189233935198704211905220849,37199591944878505577734886802440,0:34763402710943306873522981581591
+add:183575501000337709289570527203677231,136287320714071665681020786679234742,0:319862821714409374970591313882911973
+add:8590013432900716370831629971791,968114425708634187961093620824,0:9558127858609350558792723592615
+add:347137295949542839762519290637421643,102270809320390302037608013,0:347137296051813649082909592675029656
+add:8440473671167620611051468072483271,2296992478227176302012302522046,0:8442770663645847787353480375005317
+add:-5001669553432654706696400609,118900597514025159662837118047,0:113898927960592504956140717438
+add:-62002790901737049130724871593864,49447394219956225227401512811,0:-61953343507517092905497470081053
+add:86330941115371276117147730300459977,2177791532412716777679721138299658,0:88508732647783992894827451438759635
+add:946875123242781630779255037,47946896786026059202158912141346,0:47947843661149301983789691396383
+add:15336011900228959543893716525418719,388047623512726643322227444888,0:15336399947852472270537038752863607
+add:670173436182016731100418370242962831,4761361980899572407426780990276,0:670178197543997630672825797023953107
+add:16361593374554723036317118422757,959754436168611589130929042794416,0:976116029543166312167246161217173
+add:7037129211989227284511625030,-64039638650631553463764702068273727,0:-64039631613502341474537417556648697
+add:1669039732670522007255294145067558610,5040361069110054882215284201346,0:1669044773031591117310176360351759956
+add:1513189097366228884843540957233,759609367644509304958151974044245430,0:759610880833606671187036817585202663
+add:4895978309720518255173456993,-4110535948244791094217531557,0:785442361475727160955925436
+add:384532700809738729029745679298,-8056698430799793973614359358,0:376476002378938935056131319940
+add:-6388105307234743748019853948088503,4997968805095951937740134154116761,0:-1390136502138791810279719793971742
+add:975018502065461978578000363066,2247367452090296660167940131,0:977265869517552275238168303197
+add:78856706773590014370827059719,6542936662766324535583066287213231,0:6543015519473098125597437114272950
+add:6499328245520359687815445935758,158783937355037461719106652621,0:6658112182875397149534552588379
+add:-929274641312553715971084005591328,65105653662781997005394335939613534,0:64176379021469443289423251934022206
+add:456683941925696893937943252471,2047844563635520107891754533956927,0:2048301247577445804785692477209398
+add:2464091244058374057204697838093,548233532044481143606226540715,0:3012324776102855200810924378808
+add:-5782058275134622637686813910631,65732482103665178041908743240,0:-5716325793030957459644905167391
+add:9077295754335257518831628411071383,10924567149120537328883108077429125,0:20001862903455794847714736488500508
+add:4487883990386478000336258527165792,45494719991936774851608031864,0:4487929485106469937111110135197656
+add:-278061320607811538265660406605,6501055843301716146308769533884534700,0:6501055565240395538497231268224128095
+add:-98496078021467197122901029244,4781298078177162558520974148272,0:4682802000155695361398073119028
+add:-880487306232247995563348595589965390,1786978622507362310090719007228,0:-880485519253625488201038504870958162
+add:3564320220013161114076355137453361,3174192776315040318048578353150392,0:6738512996328201432124933490603753
+add:-17938701536608326039598376013574,6544909780634291186211124961480,0:-11393791755974034853387251052094
+add:477266862227893391363944723416214,75215386788899217183549861936487009,0:75692653651127110574913806659903223
+add:882168805504704249200404316267,397370099670749831094907204966440642,0:397370981839555335799156405370756909
+add:-5168732252762846279707583890106130,68924007866194419843572553425738646075,0:68918839133941656997292845841848539945
+add:13976907500017232058982276795936,62903564794422037566078537019953323966,0:62903578771329537583310596002230119902
+add:-723679233282687539426040870751505916,9944693303602413488927619210482961855,0:9221014070319725949501578339731455939
+add:19723375859398094253269538838784,4448602254481220443835883935,0:19727824461652575473713374722719
+add:435487568164299717641211729895291,30263286963580437915152248885,0:435517831451263298079126882144176
+add:821847194805020065585371899303,-56701356407219809621351993974800366087,0:-56701355585372614816331928389428466784
+add:906521314887358356519304370098899949,575586805546053112223797224287895841,0:1482108120433411468743101594386795790
+add:19861035347913984137892042959473300,9203641819631417294115804880148466,0:29064677167545401432007847839621766
+add:35489920465547911895345631311031287850,61963387682089469403889443775403001937,0:97453308147637381299235075086434289787
+add:711218176456565648939214863247002012,72467446712664186983159145098756557673,0:73178664889120752632098359962003559685
+add:453411180015845016525527797241902720,656188106785767735033442856252,0:453411836203951802293262830684758972
+add:3497788563739847797768025384670848,517400530521523434205853846962853,0:4015189094261371231973879231633701
+add:4155970281036560633085895732986331436,58654056236489765208332410680287635851,0:62810026517526325841418306413273967287
+add:-43796787638734252111746756631324509,15458635191255506747952752911563140015,0:15414838403616772495841006154931815506
+add:886478982594616386399515638094,791374254805498814484495931823029294,0:791375141284481409100882331338667388
+add:5420205765532053736853148082964602405,80894300860364935354122327418793,0:5420286659832914101788502205292021198
+add:6409540010109365565390431678312058,3761260998235788651953577451547946396,0:3767670538245898017518967883226258454
+add:379235320792985651222455993704383,39768702701817374238094976575577292677,0:39769081937138167223746199031570997060
+add:9741457286836201279089678473713551193,-9789501315839617552822514677465645799,0:-48044029003416273732836203752094606
+add:679351661380711616762980509555487422,5244958563307694732934184938012411110,0:5924310224688406349697165447567898532
+add:230190844936986997441295775275022034,-185909046836091915997263172330,0:230190659027940161349379778011849704
+add:3156689741537889100921303548469,547814421078639373357367180225132810,0:547817577768380911246468101528681279
+add:-62219007651568146709531118440682893089,-9434399409814593713428350812443801646786,0:-9496618417466161860137881930884484539875
+add:184174790691390536467483515964213892835,2941013349035333556270582770860221254,0:187115804040425870023754098735074114089
+add:51019963839123593098882577978755,1116589028775897480619143898066573,0:1167608992615021073718026476045328
+add:3161373461260957201319457188462572095,295012249650450244682353395660589081695,0:298173623111711201883672852849051653790
+add:255897713184471452642500281024049492424,5260363568754655790521228400406175726257,0:5516261281939127243163728681430225218681
+add:606315001345297293855907552090677,58643218561030036941054387859353998671,0:58643824876031382238348243766906089348
+add:7728401578087472448175772296881,2479932497409122334635317410130037,0:2487660898987209807083493182426918
+add:83912594421874997853645370567167,2586838887610120476863229517446,0:86499433309485118330508600084613
+add:31162728147482517541527422834730838,49272727945051817211201248857958834546,0:49303890673199299728742776280793565384
+add:7732493494017159067700264618259826225579,9076083109776747375814790855266491489,0:7741569577126935815076079409115092717068
+add:379595189057102692932728847043,78412390558490705293355381777932556,0:78412770153679762396048314506779599
+add:-80073436239675271494315527682263,50945580964846901715535623599314335,0:50865507528607226444041308071632072
+add:7287524755764369986358866728286492322771,-3434322398801915039360350216639455,0:7287521321441971184443827367936275683316
+add:5350901001113421691951885827606408,-52813130876478631706333437707256,0:5298087870236943060245552389899152
+add:-93922484436479929644974748134570042227,-18558847074134835688687179622179299456381,0:-18652769558571315618332154370313869498608
+add:6348261214416753548599493164564265,70959376021447769657800151242308058385,0:70965724282662186411348750735472622650
+add:82136982657867459725041723297845260,-4942386549903864832898696177047927,0:77194596107963594892143027120797333
+add:-637766414636467351411944290845261564150,3139008925795329253435316311633609560,0:-634627405710672022158508974533627954590
+add:7876071803789707417919831488411894460,-787451981013463104190187704083407112807,0:-779575909209673396772267872594995218347
+add:-6975874728401593555157382880902999590154,-5386051406453469842388696470942392,0:-6975880114453000008627225269599470532546
+add:263948302163372204339026784768887,-709208282236872695042395059556627390964,0:-709208018288570531670190720529842622077
+add:966883950465093993601498906417362169986,52803750507502030833811587668282000984096,0:53770634457967124827413086574699363154082
+add:758872502722448271767968272715108,924042905049846617145386931355586,0:1682915407772294888913355204070694
+add:8817515445646069320245128327534016,33540272364420722162627441428305029,0:42357787810066791482872569755839045
+add:7452847844446973070588448979886483,13672013320832031648561092777470,0:7466519857767805102237010072663953
+add:504207812168642571415434369106684,3112968037276454309667407723426693283,0:3113472245088622952238823157795799967
+add:79464727253769579340699162892454647,-3445737782055492967953863370896564268,0:-3366273054801723388613164208004109621
+add:27111645259145369800704958812916,67484517522542733254003181309322379,0:67511629167801878623803886268135295
+add:7962416479715287030323333279385706598,88254203468610078692514314020591,0:7962504733918755640402025793699727189
+add:39693287540792352830897524921810,-21314277451673979084086774678038501015,0:-21314237758386438291733943780513579205
+add:198918483468716913242822977257934441,-7728701263590045875855983145711563105524,0:-7728502345106577158942740322734305171083
+add:23489078790493512251447591514734933644032,5044415728397642226681534366309793929319,0:28533494518891154478129125881044727573351
+add:754857260375845266559134913354911,-107973684581827631710281010202379896,0:-107218827321451786443721875289024985
+add:-315532494063826496737110988346555619786454,501129324903842341869098009302271432013604,0:185596830840015845131987020955715812227150
+add:92594285071838024355958905365280662316,2187702621551700872791380132896499,0:92596472774459576056831696745413558815
+add:724288898592047956308741845059503937300137,57590734518283929259390943990555930310,0:724346489326566240238001236003494493230447
+add:2739606628137004623864591349778009,110573647075582659906006861365833637275224,0:110573649815189288043011485230424987053233
+add:-14276517096318036496680563063254770722,947355542566791575863860389736548529916,0:933079025470473539367179826673293759194
+add:2231429252956485218579039663297923538099,-513782743328474567896135012801752,0:2231428739173741890104471767162910736347
+add:-849056192493090160065711552591498902148,570178803220182344540821571410117099230685,0:569329747027689254380755859857525600328537
+add:71805397382388312493912292806954799278,80784372590768053283785033890385062,0:71886181754979080547196077840845184340
+add:88350358965992565491787153066170941,21234283677146108616947794414929963,0:109584642643138674108734947481100904
+add:715269430237566589970907864930513314,8865443182554480537011356202533506,0:724134873420121070507919221133046820
+add:1477643303333104073865392660271903836,-367890944067864281459059958232249,0:1477275412389036209583933600313671587
+add:52217735662219170731154120388630563,-294933344350299941699482081737942598484292,0:-294933292132564279480311350583822209853729
+add:61380058552546011441493813017768437169,2900762818425899718317517551345155090272,0:2962142876978445729759011364362923527441
+add:-277784196782412339397810200390714846163997,57298552978631155824394514405745061,0:-277784139483859360766654375996200440418936
+add:-240135707306520087768252873800163694648274,96353334913929088034747034183526033,0:-240135610953185173839164839053129511122241
+add:5682589714457375725889091714569040,1460653301509827608879103745623307421551826,0:1460653307192417323336479471512399136120866
+add:19638363083802509640291691621245056147864,4211029423275507408378664959653089,0:19638367294831932915799099999910015800953
+add:83194800067935752402123668615503029739,2541880714569630662018719665186119518080,0:2625075514637566414420843333801622547819
+add:5939482394780085376784755590138737708464,514468562230819790647711281175956014526779,0:520408044625599876024496036766094752235243
+add:90204831870247776142696176553164845,448604014584373050945946043173569,0:90653435884832149193642122596338414
+add:-28255771387063942974030915755487615886801,211023308891994717221529619029320336933917,0:182767537504930774247498703273832721047116
+add:757105867421757109115447689795304050728,9406978659060898637265625690923719984,0:766512846080818007752713315486227770712
+add:71046269267930793233803101419359460555523,1066119341117097582611928205374175134353,0:72112388609047890816415029624733635689876
+add:860460409596026218232712913311397528,-386403674339732916173292388406974737,0:474056735256293302059420524904422791
+add:51587104345453069942306514960268280925,7174136164833181606646937608176553464,0:58761240510286251548953452568444834389
+add:646810491958543131766676874643214951350,499259004231242695310290078066810898630,0:1146069496189785827076966952710025849980
+add:855002490358777508650454091557987435,509862775866892935549218038452333306616836,0:509863630869383294326726688906424864604271
+add:106603467132772647500729395434502230590051,-16368407452060510330634069459161959,0:106603450764365195440219064800432771428092
+add:516036973938460113725699447078888101,19774284176043121487876685246833573074044,0:19774800213017059947990410946280651962145
+add:952655868300967849134836490408672046390,26424621652588918937927182288854430428873,0:27377277520889886787062018779263102475263
+add:612516318964652612641515207511494523,9669431975435363339548442466828737776,0:10281948294400015952189957674340232299
+add:312358445059554864178031833622326259,3063646351543973236788253379318869856029,0:3063958709989032791652431411152492182288
+add:21961875002920796735366447872318305568,12735184963536281218871061660462862352679,0:12757146838539202015606428108335180658247
+add:-76958222715483937218117123118097824686,-94131755294315965491758099750033439180279,0:-94208713517031449428976216873151537004965
+add:9941064428919490001398667535954444,6153135198163214971541929596372799080,0:6163076262592134461543328263908753524
+add:3831883399874967153073325466609079148,532933850230226797587412822078065345376,0:536765733630101764740486147544674424524
+add:-50281475345524432188122843117426347,-9803783578868553758867748377042263121,0:-9854065054214078191055871220159689468
+add:834761861391838835749698262829275672420,462418116078562931546840078329636278799243,0:463252877939954770382589776592465554471663
+add:225390444541945757230864160941425071753376,-53966286270122861338860835026614792455718558,0:-53740895825580915581629970865673367383965182
+add:58072467659883242067246942042391055912061,6014910057066062653667358884004188529013385,0:6072982524725945895734605826046579584925446
+add:7983230467245365113789955920296234304,82831178283927503584223331110953816965231,0:82839161514394748949337121066874113199535
+add:-45132067499699119195319118239527377040857087,55414967908829898692681772863326254754,0:-45132012084731210365420425557754513714602333
+add:223736085581687840223151741351715016762,-234872704339511023869747996243506715388251819,0:-234872480603425442181907773091765363673235057
+add:28507472864431142856885789471402326707231,612001776806865658512116926003228872602978,0:640509249671296801369002715474631199310209
+add:181745193154135636884034106408465870431,1377247390938535372211751085008319196,0:183122440545074172256245857493474189627
+add:-4269390869184529398543606143750267674905,7096165581548063546128304224326254363,0:-4262294703602981334997477839525941420542
+add:679756117856607689911810374667015768583465863,6873132770775601366558132717863835975030609,0:686629250627383291278368507384879604558496472
+add:68811928716841819374127395790718594105543,-39375978475154900824641971995674964440336,0:29435950241686918549485423795043629665207
+add:-544206255007274743273093190267769706102594,-2633960527489961764864800511887586286863,0:-546840215534764705037957990779657292389457
+add:2104363621112481255876148263045164671673,3455315958528890329983695074392024415,0:2107818937071010146206131958119556696088
+add:34329184450930780849723051315762611673355499,-7104639609931302899460488253298995450,0:34329177346291170918420151855274358374360049
+add:43634150371577068764686894937264376668,-11959554165007875996906989926905112,0:43622190817412060888689987947337471556
+add:5024013516582802239298322665096973189555767,2088517329172254514727438561881167273,0:5024015605100131411552837392535535070723040
+add:566562417680186012953839263884602744810,7199277629017396422779479852344452527,0:573761695309203409376618743736947197337
+add:638955594778655267039016164163448484433233,14647767846572475359605733710956434972995,0:653603362625227742398621897874404919406228
+add:892892418549132886737629998256603006,-42420003645924668249063343987514804160205,0:-42419110753506119116176606357516547557199
+add:-345020858381297450936373802134725158851,-859477477801413864204931138561051434211277354,0:-859477822822272245502382074934853568936436205
+add:91737862563680387690935307847429742390,-6404695075658291424340413128158568521902,0:-6312957213094611036649477820311138779512
+add:-5423452022691148500208482455973347475028667,920708388791651749460962831411085083383900,0:-4502743633899496750747519624562262391644767
+add:8150633265487263016893827297406214487098531421,693305116681597826454527918912884500199574,0:8151326570603944614720281825325127371598730995
+add:-533542099871802731282960535234702413039265823,723089355050948526591740235214878409611,0:-533541376782447680334433943494467198160856212
+add:-87660042403521352943774533787359048954462,23205508268059470425857002842150306009,0:-87636836895253293473348676784516898648453
+add:611377119302093745013583546645763276869536489,-24306437719460476886753515868367600814,0:611377094995656025553106659892247408501935675
+add:4077104707730979108276738109711194036126856,11060272475917992334991062931569856434791792,0:15137377183648971443267801041281050470918648
+add:-7573466809324629854537923630574679416,47863519134315568229699768981973881143764,0:47855945667506243599845231058343306464348
+add:-799102320184378863119971307727324658691,-223055933928835873102241901074720286440913,0:-223855036249020251965361872382447611099604
+add:-892554445176156160154245376649692459,46912675277606111189784511368222685137077,0:46911782723160935033624357122846035444618
+add:3026665879602974291587291059690414946715394131,369940715997138180165001378043470020585,0:3026666249543690288725471224691792990185414716
+add:884243222337379604041632732738665534,784805891181951699244456801706510227963,0:785690134404289078848498434439248893497
+add:6161631921601317978027999219270688283511,7540058790546974071130804326383997513568,0:13701690712148292049158803545654685797079
+add:6921119983791225541212197181924239508872679243,1418358920528247154891120491105704894,0:6921119985209584461740444336815359999978384137
+add:354562064037463731505174515681520375545196955,298046963066931310381553348264288949421865,0:354860111000530662815556069029784664494618820
+add:9118288949631130571307463256861936097477907856,811804191882243735414480051639019704082019,0:9119100753823012815042877736913575117181989875
+add:12323504604096011377318065801800362182031140,8419570117283520873564639019491515440808,0:12331924174213294898191630440819853697471948
+add:40282114774095347321311816032119808177051,9392020059227568760693643864091980296962225,0:9432302174001664108014955680124100105139276
+add:293824315258364662435205611375731221153259453,69936479932599496690415175383522476194836,0:293894251738297261931896026551114743629454289
+add:744437789281951089483978067750841678986225684,6215758092668446071515969246800386681388042824,0:6960195881950397160999947314551228360374268508
+add:7555232352218578953388426959061233639843,-338121179318504388356512546357851050384,0:7217111172900074565031914412703382589459
+add:800786123647331529935991527240766809126924910,8084356801391362127584834876216208164918895003,0:8885142925038693657520826403456974974045819913
+add:10929663989202222972072257796740362711,2014764235099935818353734632287788031375,0:2025693899089138041325806890084528394086
+add:-2304110026472565466976559294239050373788594441,95118068539305153789040528913479244781984827244,0:92813958512832588322063969619240194408196232803
+add:92970515686777203278075298872457538269139530036,804034060487391950939245065492783268785530482,0:93774549747264595229014543937950321537925060518
+add:306074026230996345745669348355571285049,3351194990528556941059979503062943080591380,0:3351501064554787937405725172411298651876429
+add:-1801109034823531811485037478828625593344102,-6788371291545724511455362562828939498570517171,0:-6790172400580548043266847600307768124163861273
+add:9906924561298959226824383647599274129900,46505636651150809672589883942989253631123,0:56412561212449768899414267590588527761023
+add:-532368057068285718080209540340159606385179953,78439393969883180556469736987530860427701949507,0:77907025912814894838389527447190700821316769554
+add:1457791796516706098588078441562863530737,528666216820331549882926030036885918841998977,0:528667674612128066589024618115327481705529714
+add:47587357391699836981813632674062733663847158658,54288315220694727806529289306655335607545661164,0:101875672612394564788342921980718069271392819822
+add:2441679111284579236791979326321319109424,612350380810923282381362835527975935997871963997,0:612350383252602393665942072319955262319191073421
+add:-2297182432664233691613076128334534556985403,311366264931073208179039511983011701314592621,0:309069082498408974487426435854677166757607218
+add:812480504283331455325441717008120800963079831,821134520243619144054746507506987541221,0:812481325417851698944585771754628307950621052
+add:292567021381222422856988422202010933008593,322995618653906543956044582847376714984579,0:615562640035128966813033005049387647993172
+add:331282545048545544767134884053522581147,5766236410336035826171861644077140841513734,0:5766567692881084371716628778961194364094881
+add:40252183714117806066401858275236076131151,-72745188677928192885457824316277110692234611263,0:-72745148425744478767651757914418835456158480112
+add:46457019922262916743996775404831914092936856027,6315416110239465669051340102484371408912908926,0:52772436032502382413048115507316285501849764953
+add:5466283595093360991616260159696927423349371,9668800763746329080816551076148727500025,0:5475952395857107320697076710773076150849396
+add:19669588483473218340912326281765015036658,6428951178389068517174516071634753843412004200,0:6428970847977551990392856983961035608427040858
+add:-81431110841967281357837413471759747002352,59367885431507523151090269106192098957070,0:-22063225410459758206747144365567648045282
+add:793131141187380089412901409250143061286,49410607246090035402603177567556059311746,0:50203738387277415492016078976806202373032
+add:494932333118909260725671042445153518250291,4075181671023511749962590099189964240222,0:499007514789932772475633632544343482490513
+add:-547362235549081743238187402052314301548,927175407052843450557369599383180954617147573544,0:927175406505481215008287856144993552564833271996
+add:-272998916785610528588015856567128410368677679830,602403911895041304594532488687738325572579146,0:-272396512873715487283421324078440672043105100684
+add:8177918913965812142072794805257040419006,838843558448368858294329869233866828152454,0:847021477362334670436402664039123868571460
+add:798568364983632999724049529535252351299484436,1636919605401113337112219636142485235118757683,0:2435487970384746336836269165677737586418242119
+add:4076227872389818674764507178478356204607924906,4858120806733600624675339938519375739087835150531,0:4862197034605990443350104445697854095292443075437
+add:-58122662125434671011329360835993435253491,73132097808279681951175475035160758741946537,0:73073975146154247280164145674324765306693046
+add:733775087409818416274588823315348054416,97371071518767684325114545482209171317320411,0:97371805293855094143530820071032486665374827
+add:-113771533173503933275852574248237858610647533103,-12104130628645378506655176004172910468799298190,0:-125875663802149311782507750252410769079446831293
+add:19142539887689220939206017561014662533486,24783822476272570995796547534197064407548413574,0:24783841618812458685017486740214625422210947060
+add:439837175373522535394537896444136762539607278172,788273119543040327881133870675846687731,0:439837176161795654937578224325270633215453965903
+add:-3980465773532478253498557952430511370686544744,-22356254466454106659993425179664976374433,0:-3980488129786944707605217945855691035662919177
+add:9650385443349312084379714880369460479489737296,6396197664786865714161963852384918829120808565316,0:6405848050230215026246343567265288289600298302612
+add:894227798078569418728694383878564021992203400,1182303697127187181785402622190820894529084,0:895410101775696605910479786500754842886732484
+add:-4968456861598503731688245766554869039074227065751,926904708071249932339986591447176660865869610,0:-4967529956890432481755905779963421862413361196141
+add:5744863136870997246649436419851337184337852,528486352801627277403411298307704227595528990,0:534231215938498274650060734727555564779866842
+add:5651588707112308839251664128448753689228260350068,984180076053671456754725942868445032681314220925,0:6635768783165980296006390071317198721909574570993
+add:5999152998115672648494375904218236573991007462,-15627181548166981556755315951112371297310,0:5999137370934124481512819148902285461619710152
+add:-37220135577661031799960043003324908060140177399,9970705541292214994356839103435039397499,0:-37220125606955490507745048646485804625100779900
+add:81418507001304873846314147833079242440551,32906438533170379081041165307454763260134,0:114324945534475252927355313140534005700685
+add:-93195022996360129134236780916054647692069,5347394971811231651758505656470675163708448894939,0:5347394878616208655398376522233894247653801202870
+add:605079543296413508307097975102518892738230991,-102491396779053720487374578863736177412235,0:604977051899634454586610600523655156560818756
+add:-110305166634594825509078326414660546828041104,253473010673771926873011949379610506924336779901,0:253362705507137332047502871053195846377508738797
+add:21931199654933572392043984306892711921146445570,2907527660451297402481924885414001739485555606360,0:2929458860106230974873968869720894451406702051930
+add:-81846516530505341747573039394704262141139282278,119414978059342373259474020371815492807938,0:-81846397115527282405199779920683890325646474340
+add:-7594376981942593652353502069500431608125593919,51500020414584784205697427672128650432402168,0:-7542876961528008868147804641828302957693191751
+add:136465982599750396225253353955535355661156027759,5386715282857389783661176620617283963576556199,0:141852697882607786008914530576152639624732583958
+add:960930288983993235515929578403745857227039650174,201668060600182361443839360602375118505473666,0:961131957044593417877373417764348232345545123840
+add:927399705750647791187277745876572384967669031,-673794088022646279670235088913126760332168167,0:253605617728001511517042656963445624635500864
+add:7745147274519362522020786496011332545870526042,19019754982701808405498074108182013455237249,0:7764167029502064330426284570119514559325763291
+add:-842589681484827364133898448093132213715096,66373404917619583079354798332238441802307622071,0:66372562327938098251990664433790348670093906975
+add:9158459055331725756564214096327568283821833271587,-7389288408299737295395199016916294076133587,0:9158451666043317456826918701128551367527757138000
+add:4944028992893254151938145908432799220246101,-436673227225833465221751159174587350069599,0:4507355765667420686716394749258211870176502
+add:85957500826134796993374704843873074932736702843,-4737398263551254522274364145346551611616824,0:85952763427871245738852430479727728381125086019
+add:26693268270411692795540232504436733736819493,4761693453843664104004802004918903884493929,0:31454961724255356899545034509355637621313422
+add:597280400846352101193980095689737150106994666,774020411370064574149407278425457714972829559066577,0:774021008650465420501508472405553404709979666061243
+add:626155559446956944212578906031124683128572,190636244537054762721029791162041488568193458261,0:190636870692614209677974003740947519692876586833
+add:-51338951497767599237983853763132687032134115219,68079208415865834874846470899944876794467826,0:-51270872289351733403109007292232742155339647393
+add:9281945169594691475182670852780411412286110132,4120131010237928269938977002467007362193300912745,0:4129412955407522961414159673319787773605587022877
+add:144444680217834068698978156521073014198828507368215,23691353332382600912666065659579140865069030,0:144444703909187401081579069187138673777969372437245
+add:878907846660280522460467125993162483781740948299,5727027980609935208356763794713340938325393172,0:884634874640890457668823889787875824720066341471
+add:3863121890985058037468197591726440896929526748,3838808795310625556439132045393084001945658165756,0:3842671917201610614476600242984810442842587692504
+add:-43851511659924905732938464166653593999167629,374198438005814389346971540424050513685984,0:-43477313221919091343591492626229543485481645
+add:22107098238291185428187231696045952139458647,-1094439233801215665665730295403509442215518,0:21012659004489969762521501400642442697243129
+add:-94370080435346767326735355398641314752346677702547,900650711826114107815166281187719185619458093712865,0:806280631390767340488430925789077870867111416010318
+add:70130581982287853776073835767285560754385359048506,-532362174374052657999220752357898449008895,0:70130581449925679402021177768064808396486910039611
+add:368905471254498539128761742427996559644271835585,271908988467870372234177722038239359722817938904087,0:272277893939124870773306483780667356282462210739672
+add:1665461612154764119629895499464633250637874,19134987808509688322855052440395621824879039321919,0:19134989473971300477619172070291121289512289959793
+add:-70082361212896736227109455495902573787866185574,63015365869689393850987592591316804653013263,0:-70019345847027046833258467903311256983213172311
+add:-25078358419757381745462531594488486741766002505050,6161145995589782600946047354747671861460817403,0:-25072197273761791962861585547133739069904541687647
+add:666708317711411288619476006374466033771205130,781945629304382958374150588014142227194285896984780,0:781946296012700669785439207490148601660319668189910
+add:-792815175132398652587456324873505574700585654,21786271555833620127501336636667271735069671301676,0:21785478740658487728848749180342398229494970716022
+add:8661916666639431619374961032583120863479342934873714,6870583561131081729711383493275798626139956,0:8661916673510015180506042762294504356755141561013670
+add:681924022906622856896996499665629155099035690,-1004571345497457234878302490699035957625595966418,0:-1003889421474550612021405494199370328470496930728
+add:60230268321104247199768325351860140731648751905,-4983405216089518546950014876276513305697847179,0:55246863105014728652818310475583627425950904726
+add:2918902473029364921844125458709973674625996417335,-2210652159145259648205005443331558229225741752,0:2916691820870219662195920453266642116396770675583
+add:6803277105307410414680931382137753681870063418,-776208865523397828037840355299954380619094803,0:6027068239784012586643091026837799301250968615
+add:-25003719704019868385876356333662873293268630766666,9372027355506508855692368294638946856664530455245,0:-15631692348513359530183988039023926436604100311421
+add:8627504130949202764401824904787234047442744,-5835544012798417318076520693682832657982999792109,0:-5835535385294286368873756291857927870748952349365
+add:8260090424580577318194392652868871801866634,36338984070638282375666743416237170513165272265,0:36347244161062862952984937808890039384967138899
+add:-2567885127747973574087086225772899311267410108214,5508239791588330680899787231378688448833646,0:-2567879619508181985756405325985667932578961274568
+add:48666808545649708354733246480044529199921866,13005891966314816519574625124428351433895270842,0:13054558774860466227929358370908395963095192708
+add:8389420702531793876639200928278611121728614873,72321325080169680993090249289587185602319073066286,0:72329714500872212786966888490515464213440801681159
+add:65036752240714453689171239051023570841745399448,28805290908818160518681925899689595311583946916,0:93842043149532614207853164950713166153329346364
+add:8528322759745304970664183606826265148753341767,5634304035479369557540127200029887348029829,0:8533957063780784340221723734026295036101371596
+add:6995036754431505162769439569653358554669540097656670,2722846684750068252266709009646270633127873447,0:6995039477278189912837691836362368200940173225530117
+add:4614880368095698349182582007399802736977295545255,11355964798518264828005986699392784240730268,0:4614891724060496867447410013386502129761536275523
+add:9765319509166162487395146409291488887181479800078357,56035915231430273323816838439018348917266581235751,0:9821355424397592760718963247730507236098746381314108
+add:-1138347106436233679061275009102135358639634924718224,46159563323218296802052742149061303164800629266863,0:-1092187543113015382259222266953074055474834295451361
+add:745228794745562968451209928390566434920348152,53527148122790166734511060330707072382963660028206,0:53527893351584912297479511540635462949398580376358
+add:-588301306658858069453782008551175393534786100,8712212161075124266879455562405482117241102217433446,0:8712211572773817608021386108623473566065708682647346
+add:46121030188079872648021130753538085801476800798517,-39019521584656792767403515534426019969693675753732245,0:-38973400554468712894755494403672481883892198952933728
+add:29619919729277459435885608963790118777332486981,-52524378650492377071821593603303584552489704670,0:-22904458921214917635935984639513465775157217689
+add:98181101791503545628614157059694144214397756,1723001921171301726556866325501042586856901467,0:1821183022962805272185480482560736731071299223
+add:5153029430313427472772415517579200893432348228326467,-1040085720098897906942859081192037450000456492060,0:5151989344593328574865472658498008855982347771834407
+add:55004581470141018296263456318558804429110712,19377908184204050840224411596809648305527908013156,0:19377963188785520981242707860265966864332337123868
+add:1072136046766180220620214293788952197166650,-213267489440701336454712703551017176911643371,0:-212195353393935156234092489257228224714476721
+add:85287699588051450238950600525312209592474610983306876,517154134935551400902310308900510987679476894019343,0:85804853722987001639852910834212720580154087877326219
+add:3350463350046534274745259894989563302676256855267,99327287030974528755979749538531148523479743562098,0:102677750381021063030725009433520711826156000417365
+add:36843614050676239637380078007323912504843199635073,28079537606053733508869174435690016524431336472901360,0:28116381220104409748506554513697340436936179672536433
+add:626594076527207859168744152946567653623622813350,289789726716786201909677270796703151236725201042779,0:290416320793313409768846014949649718890348823856129
+add:93605170968295281833171644687712829154123033934,2543628559470582895074562108146894775567883682,0:96148799527765864728246206795859723929690917616
+add:2052998161971266479740877443236081325994829866117101,3539290099275844711415812545767592527236681167098,0:2056537452070542324452293255781848918522066547284199
+add:5417604415616705991065803076609145766510431919,1353196489306588682358657032784715674378273388275,0:1358614093722205388349722835861324820144783820194
+add:272499404407187599426080423265627888541662659954,1327146833710771382036670351680559306817615656153,0:1599646238117958981462750774946187195359278316107
+add:-699651119896474314900584685497791738111506192,-69672515802110594977623027100779022212514726206040720,0:-69672516501761714874097342001363707710306464317546912
+add:712509548377940176185869895492904750887086413,56176731066398404861602715769426642572627041935026808,0:56176731778907953239542891955296538065531792822113221
+add:7143592025239088040306437550950750880457741265799,79269337742179821463637514051770454228086789838,0:7222861362981267861770075065002521334685828055637
+add:85784228041270748531044763418005303861773086316768,479955707155465525495908770086376625866496445325,0:86264183748426214056540672188091680487639582762093
+add:8633607053652219081012560844815432350350653816,-27730558580923841131198160035073520602640809937568,0:-27721924973870188912117147474228705170290459283752
+add:86298209842676209783265202243860839968224984059,-14653841574444115669146420066088654283351629895,0:71644368268232094114118782177772185684873354164
+add:625971576355871986206876583141040580270991368399,1591656865887426266688630862274904247349299714291874,0:1592282837463782138674837738858045287929570705660273
+add:8094263949925391895110456153285525932274467906035,8828498248880817055759174086148047904385900536902829,0:8836592512830742447654284542301333430318175004808864
+add:82237003877466505256157158841093493965062954411803144,91547031285735648783322726839616156920221022695429,0:82328550908752240904940481567933110121983175434498573
+add:9037532307369285758380237914390337810953906576116947965,-2080798311402701935902060326222031250344403292352,0:9037530226570974355678302012330011588922656231713655613
+add:50808222368724781507631572923387538639418605384327,2105468684081970883293309501603862482752205466,0:50810327837408863478514866232889142501901357589793
+add:614695843041957442246110545422122115064228337420826,4173998806904671505997631134479640680904576896439869,0:4788694649946628948243741679901762795968805233860695
+add:1064820342923287213463623720132244635622458829981525933,-1475875068811641600756631104502187851477440325297,0:1064818867048218401822022963501140133434607352541200636
+add:10157417423684726201410937603631975742627908169404,7838021453657103572002203182188244231243955079181707,0:7848178871080788298203614119791876206986582987351111
+add:37159508474657925925316976495629749227380940275864026,1962232433094621175896408173610784235423834821218,0:37161470707091020546492872903803360011616364110685244
+add:90799712490109616993113540668118622608569993361558,6473804353031813836768680654473327017068712061,0:90806186294462648806950309348773095935587062073619
+add:8558267182043409385092694859321311049409595764196,-43855190592575763264725873745536703978426263630380326,0:-43846632325393719855340781050677382667376854034616130
+add:8862769280704424674067234121859535881853068385985015416,3128430671333004136364095742988724990646419068,0:8862769283832855345400238258223631624841793376631434484
+add:378208270494674096813484033949342736267924012919568644,1144519071359286777414333143799173474364390418550794089,0:1522727341853960874227817177748516210632314431470362733
+add:-6579674113733012078327119937146015198044119737,-3734798125808966311088975985514063521776488722551148716,0:-3734798132388640424821988063841183458922503920595268453
+add:2960711245597899800032622343542149905437203154361936820,499809669955373495757639913113238315793000498691,0:2960711745407569755406118101182063018675518947362435511
+add:25821180677407112730506355642526955953730655437874901,220829252352340433327709631917215008695896671223582832,0:246650433029747546058215987559741964649627326661457733
+add:4105370173243521757766753923407753132483088841573916094,-5859495212721416724385219267491089611350684535452912,0:4099510678030800341042368704140262042871738157038463182
+add:5163869845851925892481681950908088101067549260179722231,4902983733534376916005427640372005698206345908473,0:5163874748835659426858597956335728473073247466525630704
+add:8939484182366010380381840561998154807909027117547207,-5791890006411319753232065830229236658118816108248,0:8933692292359599060628608496167925571250908301438959
+add:701510238238697450550654709447628676278557462178180,78660480845787107751570298546903383688737254959620217,0:79361991084025805202120953256351012365015812421798397
+add:341765117982065537129466755082499645994576852735,692520757209429295113115688021272259739538890867946,0:692862522327411360650245154776354759385533467720681
+add:-4895783578731845919967474094433303503864596778179935462,-8364042240998784278401769408809806799945229261776648,0:-4904147620972844704245875863842113310664542007441712110
+add:14238409419953914857984647802372979092302755219238310,6371574430505907367749465495358382099864633219840163,0:20609983850459822225734113297731361192167388439078473
+add:819145829642159547700859583648855896951539123580831,361506805586624128214007976586393021628930076090363940,0:362325951416266287761708836170041877525881615213944771
+add:1877636417667934516336941709697932194927216313530003266,3110415340804941864303432168123355167418335131760417702,0:4988051758472876380640373877821287362345551445290420968
+add:7672066575928913691752679142441515012172611183558245718,371851147532253430639711983046051123330781047618685,0:7672438427076445945183318854424561063295941964605864403
+add:95512312207249366298896076611182343964081859466,-97124870343231010626703079092608549509450053912,0:-1612558135981644327807002481426205545368194446
+add:-5806422968663023549900750663638875296207673594658363702,90516128085557874002777142664275230359248090059,0:-5806422878146895464342876660861732631932443235410273643
+add:-1527157822675106197481254438080912892158041984128532354,725563661143607175528703551625121106037288811283,0:-1527157097111445053874078909377361267036935946839721071
+add:-42827691392859896582177202183556705231114395686423,45128827735882217281406911116739020388874185279388551,0:45086000044489357384824733914555463683643070883702128
+add:46043838505488963276375641613705710661972295575962167,28467164488355628577488094369127349235531802379663224,0:74511002993844591853863735982833059897504097955625391
+add:-38951950148008162832054098288607961881664530927148,8335283480464728668637429037127284541356281150509317,0:8296331530316720505805374938838676579474616619582169
+add:622249316814675692027128671081941223678839381254582193,7261720220517111354905851547139726385938166469124332501,0:7883969537331787046932980218221667609617005850378914694
+add:3674907036214085782411042221746956364413334313796,1921363713435768167432104932165249283578036436190717,0:1925038620471982253214515974386996239942449770504513
+add:7188482591275581867180190647387989483887113319876542897,6602680320762178166851882906088739930967430231717025380,0:13791162912037760034032073553476729414854543551593568277
+add:-1122742189773381273084251248143689561591037547534016,-968674210476153943757292285354448302755574664218668317,0:-969796952665927325030376536602591992317165701766202333
+add:-5630591882567573704954413450307476327113066874903314334,39824636924677667925199181345729096573735144801160,0:-5630552057930649027286488251126130598016493139758513174
+add:209583289465308712087487686838240265261210109472315151239,81969909236232824125903325576417695025146872644272065,0:209665259374544944911613590163816682956235256344959423304
+add:647747950632636576869808198783011688046450148232434870552,916898592764747488235431320315097102338752371550,0:647747951549535169634555687018443008361547250571187242102
+add:28135712883527960051641471442637534495815689268599701727,-38552244671238077902324238695360695260926661808213,0:28135674331283288813563569118398839135120428341937893514
+add:-831441344128176770720666876352870008663528096084544984455,-2692062828036480019863362944971350891750264323444185775,0:-834133406956213250740530239297841359555278360407989170230
+add:794701017798083397494303069423796491577530373372626,-72102207786198755767165144812992747956259847426428,0:722598810011884641727137924610803743621270525946198
+add:197485890851875072994741135376825653896503519991,138163469337810386780302197638192920802358090884502167,0:138163666823701238655375192379328297628011987388022158
+add:937892167666694076995649413871805692261114284540745180898,484506468570589158974739913192421910069689875922723630197,0:1422398636237283235970389327064227602330804160463468811095
+add:49513458769560636111865879434482526113781325925566233,9100294802196263191040735829862469546124284819589,0:49522559064362832375056920170312388583327450210385822
+add:6804265638701156312303584072108871897818849901582,-11345730118278439960458447085533973659139348981794,0:-4541464479577283648154863013425101761320499080212
+add:51279593637893634015629961349071462173442991832147136305,-630963561638139460898375258178326027272464749013574827807,0:-579683968000245826882745296829254565099021757181427691502
+add:-171297863190088468833128267336456231676696349106086723,25562345013839243089120015450478579141692354834498920234,0:25391047150649154620286887183142122910015658485392833511
+add:236820721337287547681130447452461282950000944868027,7910172708500900617141147757503793584328456508673025,0:8146993429838188164822278204956254867278457453541052
+add:6265195034976332988146228918664074473854894060855990323,7606251428765818252926521082377358210182682774550344917,0:13871446463742151241072750001041432684037576835406335240
+add:89597374568972918585799186543628138088356766678901,1813314149334378741507569909010462456324603409087645773,0:1813403746708947714426155708197006084462691765854324674
+add:195306949022209072289234099720202676610869290157465206,-994716438467019815849178678443452892613653602203942,0:194312232583742052473384921041759223718255636555261264
+add:-939205563958045162651332219711896963000039406190357,563202907700832072617064560363622275558376679989258989,0:562263702136874027454413228143910378595376640583068632
+add:80098286952047593891272622966959373457660113936107,5904947277434951020763542155046693897001992702425164,0:5985045564386998614654814778013653270459652816361271
+add:19798014000926405624727315383918920042183182364693,6487262615903993794908286483828887670955698777423148134,0:6487282413917994721313911211144271589875740960605512827
+add:84945814099981001691936754290990954291541653727223572796,-456805979472350610125202046336073888213752286874218,0:84945357294001529341326629088944618217653439974936698578
+add:2512089645159345096564730857111312670343564829071686,2455481799353124733391499423535890463012321535291607772379,0:2455484311442769892736595988266747574324991878856436844065
+add:73301381174453517580526931086388280775135813526768,4626165037419596821133153230043681255350276120564978,0:4699466418594050338713680161130069536125411934091746
+add:792820818959899903274588755045896284554931997668781703281,2595874074799206526967637468037895862567437806098280407872,0:3388694893759106430242226223083792147122369803767062111153
+add:31597081840709827246680247566853001879220752914725613176,2390964620594830956235541402980808255816375199839045,0:31599472805330422077636483108255982687476569289925452221
+add:31597081840709827246680247566853001879220752914725613176,=1,=1:63194163681419654493360495133706003758441505829451226352
+add:2037822438092847430389261539441146424774943894590,39916000644658200588230707520252700806573106896546,0:41953823082751048018619969059693847231348050791136
+
+# Small integer addition tests
+
+addv:51776377,-46479,0:51729898
+addv:7494538123,-48092,0:7494490031
+addv:5,20101,=2:20106
+addv:626,15974,0:16600
+addv:927,14290,=1:15217
+addv:71398252,45970,=1:71444222
+addv:93063,60606,=1:153669
+addv:-4895,63134,0:58239
+addv:8033997,6091,0:8040088
+addv:92778437607,15749,=2:92778453356
+addv:807578710629,-16317,=1:807578694312
+addv:6722,34150,0:40872
+addv:484482964826,45791,0:484483010617
+addv:63333,19921,0:83254
+addv:757593394565,58611,0:757593453176
+addv:5848315192249,20055,=2:5848315212304
+addv:21778,35258,0:57036
+addv:639687980,-1547,0:639686433
+addv:-8993430803,-39481,0:-8993470284
+addv:-825483,40649,=2:-784834
+addv:375685401,51109,=1:375736510
+addv:134791583451863,4578,=2:134791583456441
+addv:53129115309,51316,0:53129166625
+addv:471178234304,3338,0:471178237642
+addv:-7636956216875810,23137,=1:-7636956216852673
+addv:-2312413443812,31719,=2:-2312413412093
+addv:5200691919,55510,0:5200747429
+addv:5715872742,43764,=1:5715916506
+addv:5568388095431485,6290,0:5568388095437775
+addv:76084126643,54578,0:76084181221
+addv:96531391779281,46438,0:96531391825719
+addv:-828922693,15465,=2:-828907228
+addv:769843302686441996,27790,0:769843302686469786
+addv:1414000736454,15931,0:1414000752385
+addv:606227414766,517,0:606227415283
+addv:717100323961,499,=2:717100324460
+addv:-85406334226225355,-50533,=1:-85406334226275888
+addv:-3753831486,-36277,0:-3753867763
+addv:-58465715745893828,12779,=1:-58465715745881049
+addv:2855399155447860,5468,0:2855399155453328
+addv:4552049505281749,-33297,0:4552049505248452
+addv:87837072754930,40967,=2:87837072795897
+addv:-42693214607695890,-30492,0:-42693214607726382
+addv:70742576302309,-20599,0:70742576281710
+addv:118600972756003,10194,0:118600972766197
+addv:-882812251166,55167,0:-882812195999
+addv:-416381834108529,5090,0:-416381834103439
+addv:2956620172683281,-15742,0:2956620172667539
+addv:2711117679184010399584,9500,=2:2711117679184010409084
+addv:1356315685039,40425,=1:1356315725464
+addv:100388100074891247,28468,0:100388100074919715
+addv:735453579551845,-55120,=2:735453579496725
+addv:9573520208716968,57962,=1:9573520208774930
+addv:22464333496911435917,45263,=2:22464333496911481180
+addv:2318330134061664645524,35817,=1:2318330134061664681341
+addv:40085116522469,35577,0:40085116558046
+addv:-9824195637526213,46625,=2:-9824195637479588
+addv:1387219546869173,16428,0:1387219546885601
+addv:519326948996459554946,16498,0:519326948996459571444
+addv:901089575144273153684,48818,0:901089575144273202502
+addv:-7267047498859484256669593,10213,=1:-7267047498859484256659380
+addv:2746871124496359442,58189,0:2746871124496417631
+addv:-1505797511965887167260747,10886,0:-1505797511965887167249861
+addv:816815491488878842,49097,=1:816815491488927939
+addv:16917424131349552780253,38836,=2:16917424131349552819089
+addv:957454833834708924361,39916,=1:957454833834708964277
+addv:202026277214860503572,-38223,=2:202026277214860465349
+addv:968746861113481671,1030,0:968746861113482701
+addv:895889431267844251,44333,=2:895889431267888584
+addv:-3357720693387242036833,6150,0:-3357720693387242030683
+addv:659201417242721199959654444,44813,0:659201417242721199959699257
+addv:-400853063392189225718219,-1010,0:-400853063392189225719229
+addv:7218879194561993107952676021,-44154,0:7218879194561993107952631867
+addv:4721568551140507782,28030,=1:4721568551140535812
+addv:17034283717006469465522672,-11569,=1:17034283717006469465511103
+addv:41795594273804830816397,-7668,=1:41795594273804830808729
diff --git a/polly/lib/External/isl/imath/tests/bigmul.tc b/polly/lib/External/isl/imath/tests/bigmul.tc
new file mode 100644 (file)
index 0000000..72974f3
--- /dev/null
@@ -0,0 +1,10 @@
+mul:1973284924569393016522181930166284437824113120930085705223363410232863255766399553325346410701486329074823374249547700471683909277697787590783678904983357211584574690370289495346677331618312561665754485123402827162476353576735207718451299565526093115255556962215997764515429748902159033904867393928929335369918394864191487555087825530530292436823694624357846430402766705368186347858763649288740551240105434820489955559033038872623623075504620415436212337263593361227009430895404467373404212231777284568356947010238293550872942631550054733886261493387307990754063500729850132294968984927109971586336754260617576297578,5023215555039217191451486096670046812323372237867852342682903508090873804207633443539517026163606065770027196694503291009850587117226026773591715017125540836707619882023150680605967194554434367524090941938814045780235333982097410791452776449214446635671357519707417878752761895933104747199582531838714305022614904134506738511247696618513698871318914624938137416674596881724436242382943205716649496664131501091102879563857843031208992280893614063087964394912022421136928015233318011144243860597237613050611024432789921991289922378761307428111094457098264457145099945444765267932710530788173695233378407323077034767182,0:9912235527621363370177765461045903296757346464251250997934314384765381968455767811674327750035883028560327843635490083086230089733649800500491928845965808260177110097000550870708488183060088779215210481900113545281854124601490142211180660492441361405426298053896802091578235012988730731854809702026093664780523793649405978324745399501432045298507869343282835244908856693641856464415460033802080004246708824900236489959461486545994943320360059459917374730418136788819890973086342429995201653932338829740545718352667527142958499428354077966431655595175455785104618218647409782931121099857213491801531717606789462812743975739913830932552436532349361163108142395102143904119547756730321871557900417573185916761969667939077354954258105548072267528998411702020631497735552158986372677452750936969993423245268272976429454770189221077520557005286622417163333812030510164503314440581497599501417407932697447376958591635071781976491704916693799964449632893911830806101578411062044010045678256608720149155356874608716245388282176400921764516344436742619757576145128777884235797616593795005421758664915151768829194432974835591116318659671888399376705850603804666493415116788205809451378581533592708248188469927900316495904963905315042780485196
+mul:9281860481025428743103260720025399298938288092709373682664752121448026422364244176957076161560781963714610840062462308785533773682081509516924811454802263149810015499242805866671806182669824281823377004291671016071522932056033291108610609315306035746008726247945073883264784349702632503413711514594728450092072160898603477481125780254532680608704164997261749601100642928524030186658056860132922920804055208139127600955714414432667835794981195051773905850760614924210968557995928682559530646363463541164514351639956960443946215999260668876064044712007044169839741253208493501852117173644320085073436239558982298112600,6461820852819773895887891707090409545105222339300767589991593922286229155430279300935431963821489860557211392101557073166691740801924350342690481832500741574765066771636009594821433888176432105527291712269105001105197791973525400419521802156326222007905452621388581343089554119326311972031808789454501569850634390353513026195347029048776084662261279361336878277930892526127759184987426337401986666833244149616653136274450771865938000177859526607860886891713725823803723429415374914088095471203681073462945634413721478459297998380784046348477788577160851236668812562054262272695670208399244540961973019014052558168787,0:59977719609253892722042877572104051408101805397813781927843789294722416373486626629774528405272256981042258018309437739185326109543499153652843618549437079862481903741355077622392955980952291940377584494183016978345215858006577896133494138343531131577292900447484484933940153864330993312663423548963573589721592630804430303529313438416057807260878676382165577508312265364581705446497795257921765099792473625934500220786302375753400097833125635066325976636969158668550422583295871444269629329520664064347927080680043172866686997969891857469015379192927001271209231629114491574459392387236668293395718184725588195195152678956030072754849704861168107422055308610203187476081482745232498851974127247916788413967230550779676328898994935061206241398061433819969649590309647846577368325165533615473712118854791617654923496518553311816034223039109644818155748055376095608924486676004240127363839126636148993476097467363646856228375774851238347182483585640237087473022416289005469183518515797794634470718006577945646586807657786278665230204669208538087683902595460600395463199673225484879511079106227162215467672070600187376901683430397215820702335580004490264383605166178465290892905016286750248542616725432536301930399671042547182331416200
+mul:7912472862067339862128371179317677419131938894010486952786566311807271094923069332388514681475314477095129839383791878789616020411634591014351511065638534352498100902940229903010080076033147913858702310386781454704764453620638192722142673704997301635080657906841977228453431784636268795567399742877979696735712353260720882016758802630449316568009735495464820484500112849579042319792054180751808291492597692968145199206126879627571212323371773988020895279516215647740755736659817523229210171324629444663573614970129038286402265282862415058866062409919400686067571225883598025018993264993072866008153094783713777842233,3201725902397772208341447704654332382791919074661304465094673003562268414312780910138677841790209187781035267718271550359273576299056459823432739891496517659999050131295751440278895964609377686119310540452547253245263824257293859748569384694164098523184164132157046027096354720108308754361750383079701345225130461743071738716695085603994849362372761995341700678666090085339160622218852314697895484240550249851988347340743956951710723755778934782102893613303732727155104650554024190836124710855983325513102342105122420688920843770754330984726835478343584190293399561063733594503384748007915045169469662902517503038695,0:25333569314500437108599815772429501373680322608913314601365306943723819341950927345977940371140685035806629270878047237205018842387430734765189552850021696237198239642293495906804381299300903869208226135003940108018078759100293636602524498314852735550782128370170231188998120042175944314926905277276072583015211137886295474308983469549440318811455833426554950412383746982707726227053848985460478532792206103062118340221448441569085773835002535297094293453339349660395100207046263749435022808551287672469069089094272260153240006042417355640412016581090184175248699060812193046639667626562834648506089700951846853126579987123062116039551606757622165057350453806797625779923041984890801656780414838861143950031146465833755299675796593415374155208079244535350498995407594399059593691111928041690837178741233242536763431952235684501117687869354466659838302659999947981358427161420945738762676783164008518789595931971474305683979958242844858007484186182190899873321326797561319701242638077070008212803881009955276396752500690925651017578103332620257046368245654905509937113127728190752471098993165924776064643774593124028657833142320855925010595166301204722218705230663769696225288154861096367993176213914077427256483682770659737804205935
+mul:5808324187702080655474460793682039951322360995931125673869791371944228644211378816153373947301972618673468024419809216698234959175295640166063762988660558965367914554186920892629719688885314609703455963977845612750271884481278417471936841270780965441117412446282412169100969024758168373693942106624503929819630667668476732052476696223555182229399707506392013582768244824407047675765649910095793401597173883674841030712174173054018546762918277235618291532242003800812379951389007164665130775067356573065178773886633889021628231165391459939591112464657659598153999220909590051109791624395690563647765208381376662473375,918729402656599354295427509394488660812811650986545042142269515180033877242550175086096078333116750486296504860969753318764397360672070743283292590583724934273152632680100030114145522324231651230586226973102509131367913652288365962855153489305948459500758622220373494821215068462533405866936756424017653969429333910353069394383604797810245598567635036667927595346004843560767022814009296322200770357321286444971587792559784113298566437496673370692769029520191499051311630305921790132367949451008467412252240244679740653218546677567374795191493091691181895973054804640859501444377706515253377176192389740639658485554,0:5336278211403410225943519042620965615785619555317282219346015490965402490268953491398003239066178293858189178402401757111178985594855165207776985174779911791823768749096812598455271447538265382632879247518155595749750602819268050354139537957357918637213694511920007326845297089513356097333014041709972148731714014484445915988844776055070353805573753587598803658209910219837061261823670768974929077810129897859279877221144040999522002504993617242444634441005711709824155554871737671327646822053264060565735107228683619949429470582056504636832239947839478335167862425087205811476396561330661528512869808146764271405115946216597932921295579405822441084739925916695069723138186232413577801041059512270479551378420195541014794476699958865807286746222858840284109951768425928740087238483028034722002174473841150445679886458245212446868769523239331330174814615221560520986189551103233794829342754962915857263215385954151542007327435281109291419192156862517657537231189038431999019986573647246318902197844837896116701072282756311874936853442457550589683870364331449005930361210722151521672814074171107488735222046242474639960036313988979683887454104915755099621937143196324447593623621066203333451482527676410948714122996747858076347124750
+mul:4289351015617211853860547293440287163118502026849525600172204430479364457520139869848831815115110666309028281362257922027167887676604882712946357785774765671053291569361256480674248716110951095880149104811531028000846825692159030869973707804728263847551536308296065212083263317121194233870838444421131817712327319493025493358961844276996294363551631856740972199816713986701316425469067461982409331003038962007405485449957519072614334803913032240759760944833349605582847295426216585712797815837902507714668306750095431507743637803032894122691956397938532173109072764661515711293817060848120252743975673113125247753747,1129243400327281633151431371474891473455867467281646580615131416918186134500058210362967474476291935913056166817170589720180888384893984130837655605609160519483475686999411456978438146043336536562159220682249690564087391733538120293725815373571240283145745271266418667658265953408844001550460545760069911655331444115026283289502832470850559638590225665815329814544221402813003890575490644213046498706732967784948480361985741430703857522843819419578526133778265155095749489410876608829677795172822626775506026922427707604322446404480105940239935673644113523059324254840712255877427181434254002649024354681415060823887,0:4843721326072859217924739456975877871730592847101085181527790647663373107593901947296442009364096344634703274313593786101304850876247763256161098298112279311640124203085232376040570318789033357875445637660657625729801200284217407957188046703959398051857408830260318911921120701333722007653177281821055544288036482973644506286720667660669123827281708456990562589037743832216048193876408309523302257690396843316573270798223002206543082163754435230120328349462372851186274316082236306199355982964083210551564485517422220956818077182845893000928069354900697467244100517711217647512106740360746188198070167537230256896186561769720724666496535533088417070244576470000350911551644970207092820479716847918547327933258080841778598694603733794328556831506027782599545271976125608421461150637806657972513810116161800305056210665818016285706544698227685536076722128657311114222869723283459946629814469251976435853584113074214728600366960017102944781196949905674572781584251454518622141686465871411947838733201476173396601005947322753083122168399723089970121912770142886331646964005500389958994113759402037759299455183775918663007587029195358902062641122546567477401625532541758569470800211805386875050358317201026695356110634225798225911354589
+mul:2922598094751746153870691566295068444832682377449634443644452036808313025110180304221606287367480270511738542685007831198718549192848393891804644713550364054117828837916381145944541939810080376799967571912016414096689178814643326642017130538718508791191026602318951021214103395742936719511134851054150494365154144550755804519428501885962875546302716557826154750576355553275917160667544245815793363700075966760245307752621192750454214313695198971665682789483848832034351563529541544408090967307450920552147497375102711833800774226189505763460050841396334194550570633737523051548126923180438589141499584449356454157781,301263854476835865302831775981280157037775814731880717517906672139362327909576030289130356551031249856290116188787587208441664042085339381130045070287550419156538713298378724228993892995370333046698005135756870427773491796745257234813488146992861769360888649780752254778964967516001628591841720032608844779416229017746534677888032360001957340989928039014267141513178879025837777147645983010327629059951078283105727024828148762758710195230027569199491918547602586967248624457368763471524299806755969674122616318652168130325681600833992180785147209796398791957157839966041221298841443636110696808763448994316318819400,0:880473167111567810988117967961880121548976598870490103359907404451794288634314088754703982882682833177383915593219929916760062726336137217195565128836228831115945317704393055974317368390656797236936312760587634287099001130993733243945419647905839367532106871136628959505856124206216765869030390930116922779023015952215753780775710838592094598640777970191507874750041226456888332070206936111152887141719425417531881441970211071893599749277222881299254752348929477247066394923935790203657132250180904188191913717059363295447971852930353504673614060561262045695029116400460109271428627838849952738530831538881267424864968780605625590534156059660049417419319454100204293309555760730912655165939915172711384623654862226288504196439643394977024748646967678483943835665120965656012280087576516616128951989019537622931843487928203695095825088113381854602767942831065334578782746652133152957849781352666171117141170614812817658757480681486453133627351917446563065914034736341623821165223200244445057536369218334564861784940394704850907451562300721495943024972967062949640936264682263417359654728928172240308459032455914059483410980465823622773353548898797178794257922243219031264284831902460218578846768551900722035824054391273507243751400
+mul:5926829196540658675475456498963270367274167353270350161220559308972890667000611959077400634022036756298496888045889139127967069561321992685909920175362591913993270611799645183177425442645246583405296832015660977965704980797187259222752640840230405885131399744453603991696537021254629232292058451234918953535616811141856188592686058223965739982132693674564657697584188823828175787137971950097846827086108380914550087286625763777114003492300442812034505494306586173660076762683909293356952194336742697639190379957186138293602890079658463645699601808928093978909018729566309848085271814423786075811123687515222571521141,9951748549035347469939830875084342841213955171500540569908439680913759851880792256750294922770245208009299837781200411491572872855217655269162163547244594548791001649285963901760838066367556260426444830819384430864282488995682230931798936940632516431790824149442647895647799515499501451313199296478183164266650410143061944307590041145587301786773822623122005086984557462948454440882483631228680923933447857195870319437437969503685592935555841532972330863543676262890554252868386868097538156042902583850929860163229668324731088466679335541839144081462858536522998396202372335534127835253275227166439208550011362833647,0:58982313857053834210030369008701535470547846378883471574850906519661590920623239557155133816718872389461593523638664405853333986848705490618952594452832827902837873064739619027951652972791249957555491448326595877448003385631909355204580249078753687938446662770501781443141702574212326646295344874829910024290326910430502035229144841509314463725728935072109280568176044293667824135683356181998327810932214680277918878645875609893787816791489540198200526206052593279579085310784507516815859424425808996966049588369054806335526262661190188588991128921011359320086022801222253658894714772351423922462488376381753960122147656387949595523415175858244128147046721635779584519776716527922563179399569323397526878913784277530861145139796781253014531853594223956266367885067511225156573281630685001517329742811780233540173221050224903621919442416853554192768813644401915841492966828144740472647777117385889467734627421827100398019644421335032837486242511571228006782734808577532905812345873829690513970221918856437531183865939487578348802015996867422278241109287621714275599191991940919835845537011096714711601047529737712802340247704082674118292833054347839678093716883543951111177062577074608322061562989806239684134854317815924284926631227
+mul:4777034176054735892839001319154604024448982911062996662961434499047973311450046365095175854088514975567276445923641765710483565552588310101703859907398033663982963466700114736836981086820103724619793226902430054022230749484829232751622018429096822596030038641334221042974404610831943227778280482931541043539126216389807230921518942393713547539642721143788088068568685638257090375125430847183020265156489658843788411995875911054271475454361570597270062164847413843213234002767652983163982217031030775985346429845722052312845786262475405890214193945400669516695016006129145191835497619324112510419184839333823563038032,9827138548939292009245650065800975788958754975503505329013026058397999436949984425213239460163893334243646132127297454621612856901543246299673374601632283715496329281241648395821925002725694160249373602782352654357507333003611095526709537503510444389839900076419267762739355812530600135102575311854184301816642079363387499882043347624028484658998836131051290010878235398822043835106058212641700259728565297115088713153106682478432953135863939627050490807699853245333608896404452729513744632901892423136011428170599697693508420836045009263224191727733246096441225270861482533930349836055052069956275296881553010823844,0:46944576701107943679938938351717570276643024426351383376012128990331836851800394169999825926287789789923977857842224952030837018641751724128416777942347287817243085205947279140888810687502712653904720940250076045512070807034595001066901214351395013853583253749775182943641508176342644616344704991826014772126193902151538695286620417331840280282729602713896669409104608963314021947099534454163546746786314376632556034151803662894104512257731557376023921031478485341917927131527641804456632089758164963179174829067502841242835472135512255663254933420936078744362206666240251798031087309505320414834036730091215957763177449453464018931816818279479765564154397725457327968428958452351403338069002258937875534583660748382069795371892066725535235829019294948550962261648137489651867767182000050986894967544702207404744805388059998480229757580719768298728934644409403172897264279729988289280804868097625427040524002128803008253639601815039926425566665683322030827022419320049680101981176755790419161472786615666424889499802013777946532365772475376346129529789899467556777542539903184853306724757517591411008018192458452871055585402125971467717860280265556030939477806408511006676155314529119943122617934755061739058181638708393543824435008
+mul:4718526549709911993506825300392344853225467500177328568314994788126810717786579407393677363360732454086076553654622431077040278132967064493298016988387203796834942642515095105038480589941892582203464757978762451494680419073901829593050682173084623555079499639864808992561773015425098686639107710126506218374693057900167675112099207386871851914556838486427512658440072954892382195328941863291925131611709258615015617716874132201457077873908213746723440854928237000349411712082236090494727142820721728009499408048129273013743078395120046662079326001366135078211783789585155007423087104738440174209004586903786989164923,6864909625695099184857987413146793144809795231762816099678934112289429933759119594825554881121839952705699464175423549805747165577308703501708566885788095967212817910018877393281757866693495857986692383902136266802917073126657350936148259550527207353925931727830829709553153285795187708071469565512676957784213778578364574484904487858142015156737351049851111701482889769961092136069932966937675469744753107902213424358119650624652509775218017409565394932197216635621683624922457211807452760603826715508259815323885112220648677904268244358078258267292267766114067884100779411269652418038495358844980710175781452273298,0:32392258330201459760562074159505402666827022332133743824383722373771586724279936834893209475335792360740207288712753288966019272688772189727359830430112385377963211525866654614652734441343015702880600337106757047952016128925022121801109717569522414321736297039964518897435783148195384835215896781072440523968496981818936751998711792513353592722753606646586300140596112682346518934342989922440494425543851079417451668961455337221634115522324089759170630437711987215149300155598498709258144994089401776318144221493654769821130765906090094965112873750275198731396444109844761570671491936925731286931889673265998052517878340520697512644133898593713774598643978958986749813165344980644092219544151830910222269638171801555630525215918638130181021806972858430511411445741538921977552404857036735214137961033740561691592280961494473639844034425651660408422689100017005963792872277451240550916940855637560252384459024952693573633908574846415082397672705378909528200133322572418467010953663042748965810118650644957942518667994045551271839593077571232233290052571470146092765056400446256851048896070598829313006513443533069418336284379590405097307714842901615964467210622771049744023258299567880689880017261076464212353340481079608972991126054
+mul:9351359077717175899950414794158087603156751215661949004587120106073267545901109456791730860642333677736460489711278989024326442512123908471776539363116436679164824939981569343722408520504708037728468632659374071452933990971885163627008124264246742383054580586823189866118106292666120868893909093218961607925558747851310421259521224120112349616696032997520626166708182604366198593113508419711212092952552738381785471705126020208187067765049493707603435017168771840449365758256918178174456397001413868398658687746818925263901770782577181315131090723377262366519979729982933337084774328653741904208050516673656644156545,1216016766515133990299168668478735765845001733139931228142324729567294927452246949091528311290839436344864081129175577116760112996696086551953114162706042576570065867528105907714734959487715485323991160014202401109849117829323361272785163230303985302397208164280805555950490245017175800587222856847357832531423637659868015190810500399483016069191576487343684935319583093232012062136782881389216056886912824752493825582458023165949476390088955696767644291944525456085901327930362230500131946293930906615027984889540977885375442171280684232489081312736136944281636434187988121106769493755643246344604960317372762640669,0:11371409428207585816935645514971157399477456508122422645057323321908767523269456583816541352834881341044768023230578135410646986307902229480486969521756932041792070183404871499743753639195221172390950269396259738917572970086985537003463801797780611812023947668962735701914400160076584463668883897061046609698150079230869671219723047659413380098398681168541189318039580846097222930562274632561522358056585578630564543897574680699501191088545558042869487637213954033470545221407447339126024545625169695761828292387153041130103874335098480537357654083162452706238752455266859966099385082784949007603605080575226559633436587076629170515896969351447588541709062809148081408725380230173050904929264600376981651953193133627520880237674546041286603479563072447211757006563163317121555286268728294863795655638987849849029666001617848646789972884742730075162580289223257765499073795704140984717050187282907922384088916411395714743783224419377067797857302004785665907904680432071096387636727273241941645361614333739368488852077835547570517599052273376169343996742621847611518237883451876811880344515555813725251939567959622992970218067169395450107931883100562142495317614789690641680450835968600224117925675820963997683401725608775582419528605
diff --git a/polly/lib/External/isl/imath/tests/bigsqr.tc b/polly/lib/External/isl/imath/tests/bigsqr.tc
new file mode 100644 (file)
index 0000000..67aaa50
--- /dev/null
@@ -0,0 +1,11 @@
+sqr:1973284924569393016522181930166284437824113120930085705223363410232863255766399553325346410701486329074823374249547700471683909277697787590783678904983357211584574690370289495346677331618312561665754485123402827162476353576735207718451299565526093115255556962215997764515429748902159033904867393928929335369918394864191487555087825530530292436823694624357846430402766705368186347858763649288740551240105434820489955559033038872623623075504620415436212337263593361227009430895404467373404212231777284568356947010238293550872942631550054733886261493387307990754063500729850132294968984927109971586336754260617576297578,0:3893853393532835086992417436028929533017113693729112812565021883956380915141255996799612067028873878620962721020287843580667785031474733116478946359424550361012589585752973317305997480128700704790709288646018647234120006459544716434681174565732418911811134893433511190240729608798717705538511464455525691334268473593164287128437946659209216966182223959978048461766767048994203857805328335121781687530460374272192439643337616561191454804340602152636521570315735724808211136112178623597726761562233624418966697972730157242837023392799098096001348791292540282769112707428306351952761016511009581482140339266124773156503871585331333229748575546970788710593878329700066394630525667688977999379996797554988699433650675888676455423881055671268822403174758764173450801472107412934932928242628018889547481661696413558606207836289835238941646919528531917854164993719517257318458050248512708310597280868179529982466268126947562915613777011430797948425936457263384797803263966764408262497707996175287022739124394402973694264968889229848339525935294695324028820522528376607382070267797540723336423743427176925087940756280955052040945732043168661526388800230588103529678940221446182218158117656968368051493245055497411735966238847890150408666084
+sqr:5023215555039217191451486096670046812323372237867852342682903508090873804207633443539517026163606065770027196694503291009850587117226026773591715017125540836707619882023150680605967194554434367524090941938814045780235333982097410791452776449214446635671357519707417878752761895933104747199582531838714305022614904134506738511247696618513698871318914624938137416674596881724436242382943205716649496664131501091102879563857843031208992280893614063087964394912022421136928015233318011144243860597237613050611024432789921991289922378761307428111094457098264457145099945444765267932710530788173695233378407323077034767182,0:25232694512387950837246573965423768214659605305747920385364235438142069506752963638176638070663137697548178189512977583934503415751046457217304699834312165759735798834063392638459720554883875322668860726378103278773377069820923135889568597012480529331635521511826460253219709548240571066232289334814339006865253319737519393614525866345823654520523063598485936725991745466055344350193829007241842078415817997984841814058315445235956513287712770234190490867970313521815239706704426480962959318704528841466812066587818519893723352288704763970670959149274002543782704910304301127024275547153165875047466897500391977033070459139260182367193259631752968757844481234924736806232657312752696107333138306380229367277562995612116036553257307316583486420415930866764617533873750528784187657897741011800821517930103416987940072347360626799917296234474844881851193687709571104637725109465383256753161526510645230553484635324115139968700121652080718290604667285871496065225935146563937996599437542585972890644223726730952165788539505477436754054328420237106613886502086271044799562764032162609215838263998005175988570392248195621627510973258180359384380604104188938302848583871731189060087097132563112796351181762659883855872472102926784944221124
+sqr:9281860481025428743103260720025399298938288092709373682664752121448026422364244176957076161560781963714610840062462308785533773682081509516924811454802263149810015499242805866671806182669824281823377004291671016071522932056033291108610609315306035746008726247945073883264784349702632503413711514594728450092072160898603477481125780254532680608704164997261749601100642928524030186658056860132922920804055208139127600955714414432667835794981195051773905850760614924210968557995928682559530646363463541164514351639956960443946215999260668876064044712007044169839741253208493501852117173644320085073436239558982298112600,0:86152933989221603452383960579862529767754507451814327308106099502021338841158564739970946221037114450601947058545585968015185524235118008637093904307143275940199882886916868864207222193239426427361340073440244139751159451898557777069779343414467483495630400743470728307452356966341313677960852068933154671924573760734273611606091152908307935158991039816559413312322566981208062121327548308369676448001395998891570657014429725703319770781094147168569110700521525439009556347021461844081202006912863907929538746074819161945225863226888248444085706919956519264360573870762587910641782352656676156415732700656963630951402092115464901859063766186151616572411364019115388448066844528476234630236343390094769930168862863247247299575418570145375916876386437237082903988846801896214556691481561360799069054218343648585202335896476703207744614538742683914717622691916676976341150631784446520414431143406963418046854017770653263907209702756518001381533976295371716790304760562189392378368525802079624573216454183740278425217025651543107627286662679019527820835682239802308666416070981938963841923859050577866586430415553449794707717857305424419844800957514744493025148562704471289382692563184970909544450306975779736393494626043617522278760000
+sqr:6461820852819773895887891707090409545105222339300767589991593922286229155430279300935431963821489860557211392101557073166691740801924350342690481832500741574765066771636009594821433888176432105527291712269105001105197791973525400419521802156326222007905452621388581343089554119326311972031808789454501569850634390353513026195347029048776084662261279361336878277930892526127759184987426337401986666833244149616653136274450771865938000177859526607860886891713725823803723429415374914088095471203681073462945634413721478459297998380784046348477788577160851236668812562054262272695670208399244540961973019014052558168787,0:41755128733936470013419340614768581207469280475771932448759452471724306748308207056387185341042180822565865975190354615808904657250278538353955888696480598934323757476309374738685684994497716128880324468585630205909258071948935579506193339045950864572735480453777206082914955771593313309955856894724849311870450595834339482685071806743252667708340467642167114083116000124778596927193502323818049586734603742810042021276752915040017354940400178030129663940983913088794072426640243829816327008274324005485264616967551641307060646091607001504654635788964056297229985621142475464282158634817498369712218561902410195152713461864918871424016455091203930645713444133980971449546681537220327549312525941229246794507705534347619463146219624170792658352361826542837966194021639735363473953690177390313887375288592504393102090201580067126091162084412913867210871907813153659746483106875412725262090893163145926694590206586186591043900660223003982254816402106419038767972908977390372043067587105414843306130785601573472584510045946592593734424590918536936724371910844356800883765758566604517939781506812650805380392096724391320635856788305664509062325460162834870676905242982755100465091215613432199297726350243940958759758306993142242781051369
+sqr:6461820852819773895887891707090409545105222339300767589991593922286229155430279300935431963821489860557211392101557073166691740801924350342690481832500741574765066771636009594821433888176432105527291712269105001105197791973525400419521802156326222007905452621388581343089554119326311972031808789454501569850634390353513026195347029048776084662261279361336878277930892526127759184987426337401986666833244149616653136274450771865938000177859526607860886891713725823803723429415374914088095471203681073462945634413721478459297998380784046348477788577160851236668812562054262272695670208399244540961973019014052558168787,=1:41755128733936470013419340614768581207469280475771932448759452471724306748308207056387185341042180822565865975190354615808904657250278538353955888696480598934323757476309374738685684994497716128880324468585630205909258071948935579506193339045950864572735480453777206082914955771593313309955856894724849311870450595834339482685071806743252667708340467642167114083116000124778596927193502323818049586734603742810042021276752915040017354940400178030129663940983913088794072426640243829816327008274324005485264616967551641307060646091607001504654635788964056297229985621142475464282158634817498369712218561902410195152713461864918871424016455091203930645713444133980971449546681537220327549312525941229246794507705534347619463146219624170792658352361826542837966194021639735363473953690177390313887375288592504393102090201580067126091162084412913867210871907813153659746483106875412725262090893163145926694590206586186591043900660223003982254816402106419038767972908977390372043067587105414843306130785601573472584510045946592593734424590918536936724371910844356800883765758566604517939781506812650805380392096724391320635856788305664509062325460162834870676905242982755100465091215613432199297726350243940958759758306993142242781051369
+sqr:7912472862067339862128371179317677419131938894010486952786566311807271094923069332388514681475314477095129839383791878789616020411634591014351511065638534352498100902940229903010080076033147913858702310386781454704764453620638192722142673704997301635080657906841977228453431784636268795567399742877979696735712353260720882016758802630449316568009735495464820484500112849579042319792054180751808291492597692968145199206126879627571212323371773988020895279516215647740755736659817523229210171324629444663573614970129038286402265282862415058866062409919400686067571225883598025018993264993072866008153094783713777842233,0:62607226792952120707247651690259584550519870655409677855259967323970315280127523038352871914217595657318525178928588450738646984186124330548937584545791047411539195482412684246501620725878474982273096945918283314804856302186143180922532479221483774049169665661942575676028716750572824612078547029156326889126648510908500466713726943581967682677688720020286471235758599038656604686024251557579582894251121291196845804656311881653516178849444455844734491852772836158003590931403972989130702566686718563356156866003782202713979799591740568927365378424851203143470432976436058675581145034980081878073994378951069636407956044433595527157452771941753992894632221806355150244262738932228009536850616640523085668143546230350996800173647076957602749446577970514855423674477236535999309116324096409059875960147686741898480716484475884168020125576823399861877763053135612337099607591166573133277345115055382830446955279324436937777170960368837490516357978919384758079145639420844517829747508647571589827612402546568196379111371730312522985608775973653102317116479931771770023631636770509419737783921899453982796775527984382371135662826874391308916487368098573786023125281233044093938346589157068552970819362523463113448971217548940797438426289
+sqr:3201725902397772208341447704654332382791919074661304465094673003562268414312780910138677841790209187781035267718271550359273576299056459823432739891496517659999050131295751440278895964609377686119310540452547253245263824257293859748569384694164098523184164132157046027096354720108308754361750383079701345225130461743071738716695085603994849362372761995341700678666090085339160622218852314697895484240550249851988347340743956951710723755778934782102893613303732727155104650554024190836124710855983325513102342105122420688920843770754330984726835478343584190293399561063733594503384748007915045169469662902517503038695,0:10251048754084828769243329882069275971914890627613738671716877356696804611372225772535909788437192398839842991123901962510118430249474946611045135201967809016816348471137614785988048128241390515692315971455106778002837246102797924605981990933580811595517905674487926190125149743783912791172620685090710721294031418339826218705767020474113475213303982913823024270407367538077398654621734474924951831977997748681939864774457132880966130787121010568095721257658186826775993645732246207566570744542977468845272538470202747808100801988318054298959125301114504026010747921910115853973562914401985468980995690517283225637392666056494069338918735138921764426048557221613239082343742804403199476104847288722226052090168714977201702134281100828032952230896037194398681770354240611642273082773400855766704556982242260945911858324534827894030863019362601675206293366185548957348669774225514518006218467888321089699097391620575727815238097871345555390807646501726425056233120235063071527081727369212097120985047406879578675516214002560189818550388605034487273578377097275389460683099839403381468382578885231830676913607497216090992928203120279557550890527892898136710592601635774254477237306606095549841913591690732525191072433380838558667303025
+sqr:5808324187702080655474460793682039951322360995931125673869791371944228644211378816153373947301972618673468024419809216698234959175295640166063762988660558965367914554186920892629719688885314609703455963977845612750271884481278417471936841270780965441117412446282412169100969024758168373693942106624503929819630667668476732052476696223555182229399707506392013582768244824407047675765649910095793401597173883674841030712174173054018546762918277235618291532242003800812379951389007164665130775067356573065178773886633889021628231165391459939591112464657659598153999220909590051109791624395690563647765208381376662473375,0:33736629869445035074327166424244667388357269999486865605478076413334103798774353682775639542213830809145772052196100574522690756062172293340346900291485418359566994652736736860394553990711528438046447648607265759258849563437038985527522027887469536324986597076326498910837071795251458205904524980493828205498641172851466789655356761510862552511481361948668830231946389600859901152088906546349833795040838140061368522170448758952855372046595253341556353216263984297060270145341296413999867239761086030849655515473988519859922461900886021497209068404156115345891990869710785087691035884591154201820846643004027670616846756481869815422806896037776208720169056623748294226301861321525789456138753657995854650377786223245822168795756177015382020556433922740315469664231971951907243785787603463207205574424710054218646675174351835854569823483723752860910674029346480228748308601384452239082508478253308005445835634293503650832325029963894202698752252776230543203916010757514406789343217818289245459834266233887027255260435438561649500763399981546227245264080216426993032919933996719529973685635989795024502963596132673681479045820438921344384798517847291471865516742005312681288127831399544453631661789669782852521261353330598972583890625
+sqr:918729402656599354295427509394488660812811650986545042142269515180033877242550175086096078333116750486296504860969753318764397360672070743283292590583724934273152632680100030114145522324231651230586226973102509131367913652288365962855153489305948459500758622220373494821215068462533405866936756424017653969429333910353069394383604797810245598567635036667927595346004843560767022814009296322200770357321286444971587792559784113298566437496673370692769029520191499051311630305921790132367949451008467412252240244679740653218546677567374795191493091691181895973054804640859501444377706515253377176192389740639658485554,0:844063715305751868681971206141868238620448349106067649090713042117549119633369793955554348233719755746126280893464820812016005338079930881262278122705660442998154342355231619912542048747564579820455957515967658062579765882068075603317542476485725126614065677508294074683170609567910430859163617312267835677287917010092241479784627554606309976396139987941907937127453128868471672503456384949412832353492125047104125088327869349587314979541859707555223546684520169107982699720021602759206250992533576051949917523223132790224645209557953390063396322748548091847415504398952105342081716845349560247052750420294095678053428216713216713011181812689683492914196236985079977491424396246564512152250347194515570324811898058414788694226000558523630907238488791193859962605342734660937039255359759104296817461843423523782150363606482926217674814654230899763084537946295374731646288495775906239750491832422646745846855470956372588268290873333606787465192588104280578046176481855676139021153292248933293930046473039414083316216665998616344058420309846209053553460359073991880276416769133021195916404214034472772439130482850276889991434513090312643865962017932695340904893119106854707377145235453780149075870382271613690866218610061236826686916
+sqr:4289351015617211853860547293440287163118502026849525600172204430479364457520139869848831815115110666309028281362257922027167887676604882712946357785774765671053291569361256480674248716110951095880149104811531028000846825692159030869973707804728263847551536308296065212083263317121194233870838444421131817712327319493025493358961844276996294363551631856740972199816713986701316425469067461982409331003038962007405485449957519072614334803913032240759760944833349605582847295426216585712797815837902507714668306750095431507743637803032894122691956397938532173109072764661515711293817060848120252743975673113125247753747,0:18398532135176406809034490875693170758925004882141511261808766893882448134661308449674877552336295208917642945790156108898313095424805879501417605739586230929916416741917205011890576364165214842655074817157593175638265096642262911624804249958062053834777196200988231246651694562541632157282179693998749538692029970111424591747477697863942461566583625378474559289840644351696058468544250603519147443482666917127248552520455914618534358459972013595330956153533329148549282058238538359006965923000938192868814224682091707519285881336562876756579025080274645910079084625282553972963075141236187211115990844325515052297351541590023546664412131806032342665984009007162435318353241414465270052529631433227305387943571878454069329525592969380744392762518290885050324171445597112387157817625779490377052814617138025027758796703313537279036322299993462750908493008657797831919621067953926089315029584404727826473302371816974351550286725462756040416199337645083147388751639897989371703481110044912875697392570337540041944755640545845535510530045287632724843324253307769460477224412912973549722946229475760911133865605380194780577819320270517078651641752393246783502013220800728332790909778902389930435716496708472843056646872808640669152540009
+sqr:1129243400327281633151431371474891473455867467281646580615131416918186134500058210362967474476291935913056166817170589720180888384893984130837655605609160519483475686999411456978438146043336536562159220682249690564087391733538120293725815373571240283145745271266418667658265953408844001550460545760069911655331444115026283289502832470850559638590225665815329814544221402813003890575490644213046498706732967784948480361985741430703857522843819419578526133778265155095749489410876608829677795172822626775506026922427707604322446404480105940239935673644113523059324254840712255877427181434254002649024354681415060823887,0:1275190657182721248462063420980207026343022717532622175860219061730792418936740434742094796665906100480439897110257178409857469307077098501942134999624668547631597875340226548233364555044904897637802662331582604911532131450166620402887103231322314236615939231233057651679712668806821697694902550747299740911409056026074325413724541784521105637039150272466375734348928193048571410349655195899575836960732640894105648518962149080274129413128568380000791288924018568364735478182966987827049189244120982249845311602108211176904677903690707944807032554116276797233387539070384134761545289596978472118656073247977568361787904215232007927547273675655812990627547232348919520589298481108958425401154144890217117213559902391607690446197638363620347853484948687625457207482930736345600737267824848389507129569922536325291727973935250559919378188248920389764990722709984543141728260567769676565198058565461309218448131493714100586880045778660348267815919731674340804133476623427737669995140408727297933180816128182764727848278876101607499408120957922795369902531715310169128136970642349303253384538063850831674689811408417573400679901877915536329660371027882694070998224914758044726450736635586342639879086413949670062421005617619755229788769
diff --git a/polly/lib/External/isl/imath/tests/bintest.c b/polly/lib/External/isl/imath/tests/bintest.c
new file mode 100644 (file)
index 0000000..9fc6e57
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+  Name:     bintest.c
+  Purpose:  Test driver for binary input/output formats from IMath.
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "imath.h"
+
+int main(int argc, char *argv[]) {
+  unsigned char buf[512];
+  mpz_t v, w;
+  mp_result res;
+  int len;
+
+  if (argc < 2 || argv[1][0] == '\0') {
+    fprintf(stderr, "Usage: bintest <value>\n");
+    return 1;
+  }
+
+  mp_int_init(&v);
+  mp_int_init(&w);
+  res = mp_int_read_string(&v, 10, argv[1]);
+  printf("Result code from mp_int_read_string() = %d (%s)\n", res,
+         mp_error_string(res));
+
+  len = mp_int_binary_len(&v);
+  printf("%d bytes needed to write this value in 2's complement.\n", len);
+
+  res = mp_int_to_binary(&v, buf, sizeof(buf));
+  printf("Result code from mp_int_to_binary() = %d (%s)\n", res,
+         mp_error_string(res));
+  if (res != MP_OK) {
+    return 1;
+  }
+  int ix;
+  for (ix = 0; ix < (len - 1); ++ix) {
+    printf("%d.", buf[ix]);
+  }
+  printf("%d\n", buf[ix]);
+
+  /* Try converting back... */
+  res = mp_int_read_binary(&w, buf, len);
+  printf("Result code from mp_int_read_binary() = %d (%s)\n", res,
+         mp_error_string(res));
+  if (res == MP_OK) {
+    mp_int_to_string(&w, 10, (char *)buf, sizeof(buf));
+
+    printf("[%s]\n\n", buf);
+  }
+
+  len = mp_int_unsigned_len(&v);
+  printf("%d bytes needed to write this value as unsigned.\n", len);
+
+  res = mp_int_to_unsigned(&v, buf, sizeof(buf));
+  printf("Result code from mp_int_to_unsigned() = %d\n", res);
+  if (res == MP_OK) {
+    int ix;
+
+    for (ix = 0; ix < (len - 1); ++ix) {
+      printf("%d.", buf[ix]);
+    }
+
+    printf("%d\n", buf[ix]);
+  } else {
+    return 1;
+  }
+
+  res = mp_int_read_unsigned(&w, buf, len);
+  printf("Result code from mp_int_read_unsigned() = %d (%s)\n", res,
+         mp_error_string(res));
+  if (res == MP_OK) {
+    mp_int_to_string(&w, 10, (char *)buf, sizeof(buf));
+
+    printf("[%s]\n\n", buf);
+  }
+
+  mp_int_clear(&v);
+  mp_int_clear(&w);
+  return 0;
+}
diff --git a/polly/lib/External/isl/imath/tests/bug-swap.c b/polly/lib/External/isl/imath/tests/bug-swap.c
new file mode 100644 (file)
index 0000000..2fb8c03
--- /dev/null
@@ -0,0 +1,22 @@
+/* Regression test for mp_int_swap() bug on self-stored values. */
+#include <stdio.h>
+#include "imath.h"
+
+int main(int argc, char* argv[]) {
+  mpz_t a, b;
+  int result;
+
+  mp_int_init_value(&a, 1);
+  mp_int_init_value(&b, 16);
+
+  mp_int_swap(&a, &b);
+  result = (a.digits == &(a.single) && b.digits == &(b.single) &&
+            a.digits[0] == 16 && b.digits[0] == 1);
+
+  printf("REGRESSION: mp_int_swap() on self-stored values: %s\n",
+         result ? "OK" : "FAILED");
+
+  mp_int_clear(&b);
+  mp_int_clear(&a);
+  return !result;
+}
diff --git a/polly/lib/External/isl/imath/tests/compare.tc b/polly/lib/External/isl/imath/tests/compare.tc
new file mode 100644 (file)
index 0000000..98a1134
--- /dev/null
@@ -0,0 +1,31 @@
+# Test ordinary signed comparisons
+cmp:0,0:$#0
+cmp:0,1:$#-1
+cmp:1,0:$#1
+cmp:-1,1:$#-1
+cmp:1,-1:$#1
+cmp:123456789012345678901234567890,123456789012345678901234567891:$#-1
+
+# Test unsigned comparisons
+cmpu:0,0:$#0
+cmpu:0,1:$#-1
+cmpu:1,0:$#1
+cmpu:-1,1:$#0
+cmpu:1,-1:$#0
+cmpu:-25,15:$#1
+cmpu:#x-ffffffffffffffff,#xfffffffffffffffe:$#1
+
+# Test zero comparisons
+cmpz:0:$#0
+cmpz:-25:$#-1
+cmpz:105:$#1
+
+# Test small-value comparisons
+cmpv:0,0:$#0
+cmpv:0,1:$#-1
+cmpv:1,0:$#1
+cmpv:-1,1:$#-1
+cmpv:1,-1:$#1
+cmpv:499,108:$#1
+cmpv:499,499:$#0
+cmpv:499,-1024:$#1
diff --git a/polly/lib/External/isl/imath/tests/conv.tc b/polly/lib/External/isl/imath/tests/conv.tc
new file mode 100644 (file)
index 0000000..23bedfa
--- /dev/null
@@ -0,0 +1,228 @@
+# Output conversion tests
+
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,2:1111011101001010001010000111011010100001010000110010011010011000100100100011101100000111011001111101101000011001110111001111001111010111000101111001010111101110
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,3:22012212212000122111011022212212002120111111102001120012102211211202200102022110202002000211111221202
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,4:33131022022013122201100302122120210203230013121331220121313033033113011321113232
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,5:404041130042310320100141302000203430214122130002340212132414134210033
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,6:44515230120451152500101352430105520150025145320010504454125502
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,7:644641136612541136016610100564613624243140151310023515322
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,8:173512120732412062323044435407317550316717172705712756
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,9:265785018434285762514442046172754680368422060744852
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,10:1411774500397290569709059837552310354075408897518
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,11:184064268501499311A17746095910428222A241708032A
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,12:47706011B225950B02BB45602AA039893118A85950892
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,13:1A188C826B982353CB58422563AC602B783101671A86
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,14:105957B358B89B018958908A9114BC3DDC410B77982
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,15:CB7B3387E23452178846C55DD9D70C7CA9AEA78E8
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,16:F74A2876A1432698923B0767DA19DCF3D71795EE
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,17:17BF7C3673B76D7G7A5GA836277296F806E7453A
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,18:2EBG8HH3HFA6185D6H0596AH96G24C966DD3HG2
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,19:6G3HGBFEG8I3F25EAF61B904EIA40CFDH2124F
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,20:10AHC3D29EBHDF3HD97905CG0JA8061855C3FI
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,21:3BA5A55J5K699B2D09C38A4B237CH51IHA132
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,22:EDEA90DJ0B5CB3FGG1C8587FEB99D3C143CA
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,23:31M26JI1BBD56K3I028MML4EEDMAJK60LGLE
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,24:GGG5M3142FKKG82EJ28111D70EMHC241E4E
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,25:4446F4D5H10982023N297BF0DKBBHLLJB0I
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,26:12E9DEEOBMKAKEP0IM284MIP7FO1O521M46
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,27:85NN0HD48NN2FDDB1F5BMMKIB8CK20MDPK
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,28:2D882A7A0O0JPCJ4APDRIB77IABAKDGJP2
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,29:MFMCI0R7S27AAA3O3L2S8K44HKA7O02CN
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,30:7IGQS73FFSHC50NNH44B6PTTNLC3M6H78
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,31:2KLUB3U9850CSN6ANIDNIF1LB29MJ43LH
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,32:UT52GTL18CJ9H4HR0TJTK6ESUFBHF5FE
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,33:BTVL87QQBMUGF8PFWU4W3VU7U922QTMW
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,34:4OG10HW0MSWJBIDEE2PDH24GA7RIHIAA
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,35:1W8W9AX2DRUX48GXOLMK0PE42H0FEUWN
+tostr:#xF74A2876A1432698923B0767DA19DCF3D71795EE,36:SVWI84VBH069WR15W1U2VTK06USY8Z2
+
+# Conversion to binary
+
+tobin:0:0
+tobin:-1:255
+tobin:1:1
+tobin:97:97
+tobin:8492:33.44
+tobin:-69393016:251.221.37.136
+tobin:-218193:252.171.175
+tobin:662844:10.29.60
+tobin:8241131209300:7.126.201.178.194.84
+tobin:705223363410:0.164.50.150.139.82
+tobin:-28632557663:249.85.93.215.161
+tobin:-553325346410701486:248.82.49.135.113.248.93.82
+tobin:-907482337424:255.44.181.214.111.112
+tobin:4770047168390927:16.242.85.39.8.167.15
+tobin:977875907836789049:13.146.28.245.9.6.65.57
+tobin:3572115845746903:12.176.210.8.21.16.215
+tobin:28949534667733:26.84.86.186.243.213
+tobin:-183125616657544851234:246.18.159.29.228.28.174.208.222
+tobin:827162476353576735:11.122.171.227.198.150.95.31
+tobin:77184512995655260:1.18.54.231.215.68.126.92
+tobin:115255556962215997764:6.63.125.254.104.50.175.49.68
+tobin:54297489021590339048:2.241.135.110.149.175.144.125.232
+tobin:393928929335369918394864191:1.69.217.178.12.173.1.47.149.43.18.63
+tobin:-75550878255305302924368236946:255.11.225.199.59.30.217.134.166.120.200.174.110
+tobin:35784643040276670536818634:29.153.177.98.228.47.31.93.65.31.202
+tobin:-5876364928874055124010543482048:181.212.112.219.201.219.43.162.130.153.141.251.64
+tobin:555590330388726236230755046204154:27.100.137.45.209.201.206.212.69.137.217.165.34.250
+tobin:2123372635933612270094308954044:26.204.252.173.123.198.84.97.94.88.53.79.188
+tobin:373404212231777284568356947010238:18.105.6.21.0.246.144.164.13.115.91.8.162.190
+tobin:355087294263155005473388626149338730:68.99.39.192.10.100.204.157.215.128.79.45.43.110.106
+tobin:9075406350072985013229496898492710997:6.211.220.20.76.13.2.68.169.142.198.197.165.106.64.85
+tobin:8633675426061757629757850232155550:1.169.172.77.223.131.135.137.86.71.95.134.109.237.158
+tobin:-217191451486096670046812323372237867852:255.92.154.114.175.151.49.93.18.105.200.58.156.24.75.180.180
+tobin:26829035080908738042076334435395170:5.42.198.7.200.110.201.64.35.201.25.125.64.230.98
+tobin:16360606577002719669450329100985058711:12.78.240.46.160.248.51.247.149.232.48.220.205.240.69.151
+tobin:26026773591715017125540836707619882:5.3.56.17.26.95.176.214.116.53.154.110.71.84.42
+tobin:-315068060596719455443436752409094193:195.81.241.253.255.182.14.126.183.113.140.138.49.151.207
+tobin:1404578023533398209741079145277644921444663:16.31.175.15.121.161.137.196.26.125.240.115.59.220.1.85.25.55
+tobin:713575197074178787527618959331047471995825:8.49.2.79.246.51.45.90.242.199.86.95.47.64.104.90.91.177
+tobin:83871430502261490413450673851124769661:63.25.12.201.105.63.89.102.174.73.208.109.149.109.99.125
+tobin:1369887131891462493813741667459688172443624:15.185.188.136.198.40.60.46.152.22.161.146.105.88.210.253.87.232
+tobin:829432057166494966641315010911028795638578:9.133.123.83.146.186.254.230.112.155.225.249.127.219.248.43.131.50
+tobin:312089922808936140630879643949120224211369:3.149.38.92.196.150.155.232.60.223.247.126.50.176.14.127.177.169
+tobin:152333180111442438605972376130506110244327899219:26.174.219.37.168.212.28.162.39.139.47.209.114.56.212.157.2.33.192.83
+tobin:-2899223787613074281110944570982644571450999:222.183.242.113.50.20.39.238.192.239.78.170.102.70.102.231.209.137
+tobin:444765267932710530788173695233378407323077034767:77.231.246.225.189.253.236.180.85.80.95.147.220.91.211.171.195.205.195.15
+tobin:2928186048102542874310326072002539929893828809270937:7.211.139.211.153.76.242.8.164.101.41.243.188.255.255.239.194.98.21.205.38.153
+tobin:-826647521214480264223642441769570761615607819637146:253.202.98.131.34.175.212.21.119.210.126.69.61.176.197.180.182.201.116.60.110.102
+tobin:8400624623087855337736820815095169248114548022:1.120.178.112.248.52.41.234.187.122.100.10.161.143.20.186.83.68.157.54
+tobin:-14981001549924280586667180618266982428182337700429:245.191.228.168.55.2.155.157.248.12.207.194.168.98.220.91.66.110.69.189.179
+tobin:710160715229320560332911086106093153060357460087262479:7.106.23.173.245.150.209.228.252.222.62.180.93.143.150.200.182.76.119.140.239.205.15
+tobin:73883264784349702632503413711514594728450092072160898:0.197.120.251.47.105.95.210.233.70.183.8.43.3.136.2.36.106.51.96.215.206.130
+
+# Conversion from binary
+
+readbin:0:0
+readbin:255:-1
+readbin:1:1
+readbin:97:97
+readbin:33.44:8492
+readbin:251.221.37.136:-69393016
+readbin:252.171.175:-218193
+readbin:10.29.60:662844
+readbin:7.126.201.178.194.84:8241131209300
+readbin:0.164.50.150.139.82:705223363410
+readbin:249.85.93.215.161:-28632557663
+readbin:248.82.49.135.113.248.93.82:-553325346410701486
+readbin:255.44.181.214.111.112:-907482337424
+readbin:16.242.85.39.8.167.15:4770047168390927
+readbin:13.146.28.245.9.6.65.57:977875907836789049
+readbin:12.176.210.8.21.16.215:3572115845746903
+readbin:26.84.86.186.243.213:28949534667733
+readbin:246.18.159.29.228.28.174.208.222:-183125616657544851234
+readbin:11.122.171.227.198.150.95.31:827162476353576735
+readbin:1.18.54.231.215.68.126.92:77184512995655260
+readbin:6.63.125.254.104.50.175.49.68:115255556962215997764
+readbin:2.241.135.110.149.175.144.125.232:54297489021590339048
+readbin:1.69.217.178.12.173.1.47.149.43.18.63:393928929335369918394864191
+readbin:255.11.225.199.59.30.217.134.166.120.200.174.110:-75550878255305302924368236946
+readbin:29.153.177.98.228.47.31.93.65.31.202:35784643040276670536818634
+readbin:181.212.112.219.201.219.43.162.130.153.141.251.64:-5876364928874055124010543482048
+readbin:27.100.137.45.209.201.206.212.69.137.217.165.34.250:555590330388726236230755046204154
+readbin:26.204.252.173.123.198.84.97.94.88.53.79.188:2123372635933612270094308954044
+readbin:18.105.6.21.0.246.144.164.13.115.91.8.162.190:373404212231777284568356947010238
+readbin:68.99.39.192.10.100.204.157.215.128.79.45.43.110.106:355087294263155005473388626149338730
+readbin:6.211.220.20.76.13.2.68.169.142.198.197.165.106.64.85:9075406350072985013229496898492710997
+readbin:1.169.172.77.223.131.135.137.86.71.95.134.109.237.158:8633675426061757629757850232155550
+readbin:255.92.154.114.175.151.49.93.18.105.200.58.156.24.75.180.180:-217191451486096670046812323372237867852
+readbin:5.42.198.7.200.110.201.64.35.201.25.125.64.230.98:26829035080908738042076334435395170
+readbin:12.78.240.46.160.248.51.247.149.232.48.220.205.240.69.151:16360606577002719669450329100985058711
+readbin:5.3.56.17.26.95.176.214.116.53.154.110.71.84.42:26026773591715017125540836707619882
+readbin:195.81.241.253.255.182.14.126.183.113.140.138.49.151.207:-315068060596719455443436752409094193
+readbin:16.31.175.15.121.161.137.196.26.125.240.115.59.220.1.85.25.55:1404578023533398209741079145277644921444663
+readbin:8.49.2.79.246.51.45.90.242.199.86.95.47.64.104.90.91.177:713575197074178787527618959331047471995825
+readbin:63.25.12.201.105.63.89.102.174.73.208.109.149.109.99.125:83871430502261490413450673851124769661
+readbin:15.185.188.136.198.40.60.46.152.22.161.146.105.88.210.253.87.232:1369887131891462493813741667459688172443624
+readbin:9.133.123.83.146.186.254.230.112.155.225.249.127.219.248.43.131.50:829432057166494966641315010911028795638578
+readbin:3.149.38.92.196.150.155.232.60.223.247.126.50.176.14.127.177.169:312089922808936140630879643949120224211369
+readbin:26.174.219.37.168.212.28.162.39.139.47.209.114.56.212.157.2.33.192.83:152333180111442438605972376130506110244327899219
+readbin:222.183.242.113.50.20.39.238.192.239.78.170.102.70.102.231.209.137:-2899223787613074281110944570982644571450999
+readbin:77.231.246.225.189.253.236.180.85.80.95.147.220.91.211.171.195.205.195.15:444765267932710530788173695233378407323077034767
+readbin:7.211.139.211.153.76.242.8.164.101.41.243.188.255.255.239.194.98.21.205.38.153:2928186048102542874310326072002539929893828809270937
+readbin:253.202.98.131.34.175.212.21.119.210.126.69.61.176.197.180.182.201.116.60.110.102:-826647521214480264223642441769570761615607819637146
+readbin:1.120.178.112.248.52.41.234.187.122.100.10.161.143.20.186.83.68.157.54:8400624623087855337736820815095169248114548022
+readbin:245.191.228.168.55.2.155.157.248.12.207.194.168.98.220.91.66.110.69.189.179:-14981001549924280586667180618266982428182337700429
+readbin:7.106.23.173.245.150.209.228.252.222.62.180.93.143.150.200.182.76.119.140.239.205.15:710160715229320560332911086106093153060357460087262479
+readbin:0.197.120.251.47.105.95.210.233.70.183.8.43.3.136.2.36.106.51.96.215.206.130:73883264784349702632503413711514594728450092072160898
+#
+# -- From Tom Wu, triggered a bug in s_qmul():
+#
+readbin:22.200.146.12.243.10.174.111.79.92.242.37.59.156.205.75.163.223.107.103.20.203.19.168.35.69.241.146.93.87.91.210:10305260085868809781027103920001537650251216529133196585936939957967423757266
+
+# Conversion to unsigned
+
+to-uns:19:19
+to-uns:732849:11.46.177
+to-uns:2456939301:146.113.235.37
+to-uns:65221819301662:59.81.163.94.255.30
+to-uns:-844378241131209300:11.183.213.137.94.177.226.84
+to-uns:8570522336341023286325:1.208.155.227.240.84.37.160.100.53
+to-uns:57663995533253464107014863:47.178.211.118.41.71.211.74.100.90.207
+to-uns:290748233742495477004716839092:3.171.117.77.85.127.49.10.213.243.253.144.180
+to-uns:7769778759078367890498335721158457:1.127.20.101.49.86.0.169.68.4.237.33.216.119.57
+to-uns:46903702894953466773316183125616657544:35.73.83.24.98.4.211.124.18.69.32.88.95.142.132.136
+to-uns:-851234028271624763535767352077184512995655:9.197.141.78.121.20.132.41.143.246.59.33.126.2.92.102.177.71
+to-uns:-2609311525555696221599776451542974890215903390:117.1.109.101.2.62.220.206.134.57.198.156.134.252.135.230.114.144.158
+to-uns:48673939289293353699183948641914875550878255305302:33.77.214.236.147.20.12.74.7.55.12.207.229.43.143.81.121.102.216.82.86
+to-uns:924368236946243578464304027667053681863478587636492887:9.166.158.105.220.232.187.149.229.98.114.203.143.151.179.13.117.242.141.170.94.170.87
+to-uns:4055124010543482048995555903303887262362307550462041543621:165.97.120.89.181.168.202.95.163.0.0.6.89.126.141.209.204.168.88.165.194.166.83.197
+to-uns:23372635933612270094308954044673734042122317772845683569470102:14.139.121.201.25.49.14.230.89.139.204.223.141.232.201.189.74.36.63.100.115.152.44.110.42.150
+to-uns:382935508729426315500547338862614933873079907540635007298501322949:3.162.221.90.36.235.220.148.206.72.220.121.230.47.59.194.10.29.105.64.171.5.133.101.247.195.168.197
+to-uns:6898492710997158633675426061757629757850232155550392171914514860966700:255.225.26.217.121.147.85.123.62.227.155.115.151.17.14.226.20.151.216.70.129.251.123.127.200.253.229.131.44
+to-uns:46812323372237867852342682903508090873804207633443539517026163606065770027:26.126.173.147.234.225.62.206.132.172.56.142.212.124.86.139.56.123.128.83.59.140.190.156.37.116.71.8.107.238.43
+to-uns:196694503291009850587117226026773591715017125540836707619882023150680605967194:1.178.221.36.198.34.91.147.187.41.80.248.32.21.173.116.21.184.114.128.226.148.105.231.211.137.139.144.142.36.59.195.90
+to-uns:-5544343675240909419388140457802353339820974107914527764492144466356713575197074178:187.9.226.242.27.68.215.247.155.152.75.195.109.94.123.200.36.80.1.19.58.240.99.181.158.175.120.210.195.130.202.54.99.2
+to-uns:78752761895933104747199582531838714305022614904134506738511247696618513698871318914624:40.137.215.13.233.153.110.152.75.205.157.188.162.180.175.192.136.147.0.49.169.41.111.20.20.6.222.4.94.232.86.88.35.227.166.64
+to-uns:938137416674596881724436242382943205716649496664131501091102879563857843031208992280893614:7.94.95.163.78.130.176.52.11.67.110.168.191.141.240.164.45.130.231.131.248.48.191.162.48.249.20.181.82.141.159.150.82.213.105.159.88.174
+to-uns:-630879643949120224211369280152333180111442438605972376130506110244327899219912899223787613074:19.91.70.129.236.212.139.74.185.0.218.23.135.137.133.202.56.181.112.58.173.172.130.179.124.221.173.55.223.123.126.130.88.154.176.35.3.43.146
+to-uns:28111094457098264457145099945444765267932710530788173695233378407323077034767182928186048102542874:13.41.35.240.41.168.225.145.107.18.87.253.43.231.202.150.209.215.163.157.127.252.45.194.199.62.14.60.97.225.213.204.55.37.185.133.79.239.24.46.26
+
+# Conversion from unsigned
+
+readuns:19:19
+readuns:11.46.177:732849
+readuns:146.113.235.37:2456939301
+readuns:59.81.163.94.255.30:65221819301662
+readuns:11.183.213.137.94.177.226.84:844378241131209300
+readuns:1.208.155.227.240.84.37.160.100.53:8570522336341023286325
+readuns:47.178.211.118.41.71.211.74.100.90.207:57663995533253464107014863
+readuns:3.171.117.77.85.127.49.10.213.243.253.144.180:290748233742495477004716839092
+readuns:1.127.20.101.49.86.0.169.68.4.237.33.216.119.57:7769778759078367890498335721158457
+readuns:35.73.83.24.98.4.211.124.18.69.32.88.95.142.132.136:46903702894953466773316183125616657544
+readuns:9.197.141.78.121.20.132.41.143.246.59.33.126.2.92.102.177.71:851234028271624763535767352077184512995655
+readuns:117.1.109.101.2.62.220.206.134.57.198.156.134.252.135.230.114.144.158:2609311525555696221599776451542974890215903390
+readuns:33.77.214.236.147.20.12.74.7.55.12.207.229.43.143.81.121.102.216.82.86:48673939289293353699183948641914875550878255305302
+readuns:9.166.158.105.220.232.187.149.229.98.114.203.143.151.179.13.117.242.141.170.94.170.87:924368236946243578464304027667053681863478587636492887
+readuns:165.97.120.89.181.168.202.95.163.0.0.6.89.126.141.209.204.168.88.165.194.166.83.197:4055124010543482048995555903303887262362307550462041543621
+readuns:14.139.121.201.25.49.14.230.89.139.204.223.141.232.201.189.74.36.63.100.115.152.44.110.42.150:23372635933612270094308954044673734042122317772845683569470102
+readuns:3.162.221.90.36.235.220.148.206.72.220.121.230.47.59.194.10.29.105.64.171.5.133.101.247.195.168.197:382935508729426315500547338862614933873079907540635007298501322949
+readuns:255.225.26.217.121.147.85.123.62.227.155.115.151.17.14.226.20.151.216.70.129.251.123.127.200.253.229.131.44:6898492710997158633675426061757629757850232155550392171914514860966700
+readuns:26.126.173.147.234.225.62.206.132.172.56.142.212.124.86.139.56.123.128.83.59.140.190.156.37.116.71.8.107.238.43:46812323372237867852342682903508090873804207633443539517026163606065770027
+readuns:1.178.221.36.198.34.91.147.187.41.80.248.32.21.173.116.21.184.114.128.226.148.105.231.211.137.139.144.142.36.59.195.90:196694503291009850587117226026773591715017125540836707619882023150680605967194
+readuns:187.9.226.242.27.68.215.247.155.152.75.195.109.94.123.200.36.80.1.19.58.240.99.181.158.175.120.210.195.130.202.54.99.2:5544343675240909419388140457802353339820974107914527764492144466356713575197074178
+readuns:40.137.215.13.233.153.110.152.75.205.157.188.162.180.175.192.136.147.0.49.169.41.111.20.20.6.222.4.94.232.86.88.35.227.166.64:78752761895933104747199582531838714305022614904134506738511247696618513698871318914624
+readuns:7.94.95.163.78.130.176.52.11.67.110.168.191.141.240.164.45.130.231.131.248.48.191.162.48.249.20.181.82.141.159.150.82.213.105.159.88.174:938137416674596881724436242382943205716649496664131501091102879563857843031208992280893614
+readuns:19.91.70.129.236.212.139.74.185.0.218.23.135.137.133.202.56.181.112.58.173.172.130.179.124.221.173.55.223.123.126.130.88.154.176.35.3.43.146:630879643949120224211369280152333180111442438605972376130506110244327899219912899223787613074
+readuns:13.41.35.240.41.168.225.145.107.18.87.253.43.231.202.150.209.215.163.157.127.252.45.194.199.62.14.60.97.225.213.204.55.37.185.133.79.239.24.46.26:28111094457098264457145099945444765267932710530788173695233378407323077034767182928186048102542874
+
+# Conversion to small signed integers
+to-int:0:0
+to-int:399392010000012093849283940182938492839481928349823984:$MP_RANGE
+to-int:-29381082039841029384018230948203801985928309481203984:$MP_RANGE
+to-int:-25:-25
+to-int:101:101
+to-int:-1235:-1235
+
+# Conversion to small signed integers
+to-uint:0:0
+to-uint:1:1
+to-uint:10:10
+to-uint:-15:$MP_RANGE
+to-uint:101:101
+to-uint:100000000000000000000000000000000000000000000000000:$MP_RANGE
+
+# Tests to trigger off-by-one bug in computing number of digits needed for string
+tostr:99999999999999999999999999999,10:99999999999999999999999999999
+tostr:9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999,10:9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
+tostr:832136388736902947561088644572239329432528812529007215254079045034263648726187965907662527121488680217097287175564480588901672671661161,10:832136388736902947561088644572239329432528812529007215254079045034263648726187965907662527121488680217097287175564480588901672671661161
diff --git a/polly/lib/External/isl/imath/tests/div.tc b/polly/lib/External/isl/imath/tests/div.tc
new file mode 100644 (file)
index 0000000..36a4831
--- /dev/null
@@ -0,0 +1,963 @@
+# Division tests
+
+# Tests for error conditions
+
+div:102233,0,=1,1:$MP_UNDEF,?
+div:0,=1,583922,-12345:$MP_UNDEF,?
+
+# General division tests, verified using GNU bc
+
+div:0,847887705,0,0:0,0
+div:80000000000000000000,25,0,0:3200000000000000000,0
+div:65000,25,0,0:2600,0
+div:800000000000000,25,0,0:32000000000000,0
+div:-4,58,0,0:0,-4
+div:36869,818935,0,0:0,36869
+div:364,921,0,0:0,364
+div:5169,898,0,0:5,679
+div:#x100000000,#xE424,=1,0:#x11F42,#xD2B8
+div:-6144,15855207,0,0:0,-6144
+div:680441,-8247,0,0:-82,4187
+div:-31218529,577983165,0,0:0,-31218529
+div:3,6280,0,0:0,3
+div:-2,39790,0,0:0,-2
+div:-310,611711,0,0:0,-310
+div:46573596,6038351,0,0:7,4305139
+div:4525534,39110,0,0:115,27884
+div:5938,7789378,0,0:0,5938
+div:19732849245693930165221819301662844,18446744073709551616,=1,=2:1069719901075515,6029073732495380604
+div:9,456578633,=2,=1:0,9
+div:538090499,1858,0,0:289607,693
+div:572,3804550,0,0:0,572
+div:288850,21164,0,0:13,13718
+div:-5190106,34726,0,0:-149,-15932
+div:7795,72811,0,0:0,7795
+div:781579692,-5,0,0:-156315938,2
+div:781579692,-5,=1,=2:-156315938,2
+div:781579692,-5,=2,=1:-156315938,2
+div:453020143,-3473628,0,0:-130,1448503
+div:8,853320290,0,0:0,8
+div:852316479,2925,0,0:291390,729
+div:8,5,0,0:1,3
+div:859848,9,0,0:95538,6
+div:70,48,0,0:1,22
+div:253385147,659538174,0,0:0,253385147
+div:-455686878,87344,0,0:-5217,-13230
+div:28271,635389,0,0:0,28271
+div:-86,2692,0,0:0,-86
+div:8591158476,73,0,0:117687102,30
+div:9082,275389,0,0:0,9082
+div:-582874,74264,0,0:-7,-63026
+div:237,4104,0,0:0,237
+div:7076150589,92653,0,0:76372,55673
+div:28665011462,-1272,0,0:-22535386,470
+div:-8056787359,8082209,0,0:-996,-6907195
+div:53192266,900107,0,0:59,85953
+div:91513,740,0,0:123,493
+div:-98721211,8015090320,0,0:0,-98721211
+div:11450,-36952886107,0,0:0,11450
+div:13925193,949882,0,0:14,626845
+div:683469315,-73092992,0,0:-9,25632387
+div:1164719,42872,0,0:27,7175
+div:-83594243092,3591081825,0,0:-23,-999361117
+div:87138285,266592788,0,0:0,87138285
+div:936091,704216,0,0:1,231875
+div:142238814011,709885571028,0,0:0,142238814011
+div:580,-60286,0,0:0,580
+div:5794931,-5726480,0,0:-1,68451
+div:88764678929,-2091175751,0,0:-42,935297387
+div:950181713208,-13449,0,0:-70650733,5091
+div:97846262,387939152,0,0:0,97846262
+div:32321004,4640815041,0,0:0,32321004
+div:9059,24970299,0,0:0,9059
+div:-223020,974872432,0,0:0,-223020
+div:628713585932,70889408675,0,0:8,61598316532
+div:5404031582279,-4343762403,0,0:-1244,391152947
+div:-27687,92528708054,0,0:0,-27687
+div:71252,-444744751915,0,0:0,71252
+div:2821624059,830276221,0,0:3,330795396
+div:77957,604211270,0,0:0,77957
+div:4336867764,377604023491,0,0:0,4336867764
+div:-1183882,537011618,0,0:0,-1183882
+div:7224227137658,26159,0,0:276166028,11206
+div:40420610021,29600662602,0,0:1,10819947419
+div:-53857,7190456320,0,0:0,-53857
+div:9365,85703,0,0:0,9365
+div:84454441,7874100414786,0,0:0,84454441
+div:-692,-92802,0,0:0,-692
+div:-31682292914,2103996,0,0:-15058,-321146
+div:675174791229,617791,0,0:1092885,274194
+div:151503,-7352433026033,0,0:0,151503
+div:-5675649814790,-45077421077,0,0:125,-40972180165
+div:-259966,4211178684,0,0:0,-259966
+div:99243,8777962733,0,0:0,99243
+div:-603163384555,4331787866,0,0:-139,-1044871181
+div:602983,3355548,0,0:0,602983
+div:-6945091776175,64113609219877,0,0:0,-6945091776175
+div:637048330,39484763123,0,0:0,637048330
+div:-268774166,54251789102520,0,0:0,-268774166
+div:96621785,-44159202070842,0,0:0,96621785
+div:259095,798144185517,0,0:0,259095
+div:673478104612,6115944997,0,0:110,724154942
+div:64865142,-7529340145,0,0:0,64865142
+div:62901084202908,923068964,0,0:68143,395789056
+div:857311552,30222,0,0:28367,4078
+div:6646483,1292987,0,0:5,181548
+div:855267457921,77070194891856,0,0:0,855267457921
+div:930905,-429874001253,0,0:0,930905
+div:-82732,973702689,0,0:0,-82732
+div:7498877,33402368,0,0:0,7498877
+div:2891132,3009602159727,0,0:0,2891132
+div:-16580361,45469862,0,0:0,-16580361
+div:28811879,1156690,0,0:24,1051319
+div:681237481,42215447,0,0:16,5790329
+div:952119,65641,0,0:14,33145
+div:669100,32909317724335,0,0:0,669100
+div:406354444955,4811582310504,0,0:0,406354444955
+div:-87218901,5441737753,0,0:0,-87218901
+div:262693,279060,0,0:0,262693
+div:950539838,98609240829243,0,0:0,950539838
+div:8061719120,-28536222,0,0:-282,14504516
+div:-3551675,11288323481405,0,0:0,-3551675
+div:3133528691,1315285,0,0:2382,519821
+div:1588170591121,9023526203,0,0:176,29979393
+div:1709754910,343280090631449,0,0:0,1709754910
+div:7694474,6311674489334,0,0:0,7694474
+div:285071476,771758808364462,0,0:0,285071476
+div:4473571504184,5027949393624517,0,0:0,4473571504184
+div:-314089112111113,-8919383,0,0:35214219,-5804236
+div:919605168565,-857045700084,0,0:-1,62559468481
+div:-2803909388714,46792205688194,0,0:0,-2803909388714
+div:-864476,-809506582,0,0:0,-864476
+div:157477674603,932718332239208,0,0:0,157477674603
+div:-86938062350,44113358240184,0,0:0,-86938062350
+div:7332602805,35651734,0,0:205,23997335
+div:40677613,7075290162,0,0:0,40677613
+div:6636106412767060,-388484912,0,0:-17082018,153254644
+div:9453362014,-644867786149524,0,0:0,9453362014
+div:123163311944389,-16324640549,0,0:-7544,10223642733
+div:55603403145688,-51970044763,0,0:-1069,47425294041
+div:-54436610546,-9254821627256041,0,0:0,-54436610546
+div:34541223746384523,408005019,0,0:84658820,283766943
+div:23462284247353823,2661546,0,0:8815284142,350291
+div:417392442148,-30391736401961,0,0:0,417392442148
+div:-718458863,-73668989433156990,0,0:0,-718458863
+div:-1215789,25426915315,0,0:0,-1215789
+div:8299846204145462,9023932210324,0,0:919,6852502857706
+div:-82615892630,85109462984880568,0,0:0,-82615892630
+div:828237348372,822759132224411,0,0:0,828237348372
+div:35003657,287087229590,0,0:0,35003657
+div:741329413510689,600380266222,0,0:1234,460164992741
+div:-454795890210,66807881739,0,0:-6,-53948599776
+div:442416942,-79456387864,0,0:0,442416942
+div:7067406608460,507872176187,0,0:13,465068318029
+div:57674203676661022,3315186364,0,0:17396971,2642557578
+div:-6677233842,881012314,0,0:-7,-510147644
+div:828372724537918527,2204184463,0,0:375818239,1222097870
+div:-97445457356928,3845827480,0,0:-25337,-3726496168
+div:644919922824665106,692147849,0,0:931766130,174110736
+div:-54599915326211,-274657876971100,0,0:0,-54599915326211
+div:3507375128,373578606,0,0:9,145167674
+div:19124901,485472050038835999,0,0:0,19124901
+div:687842561,49925524361,0,0:0,687842561
+div:193224391137090311,84335903540,0,0:2291128,41131297191
+div:388138056,66626944,0,0:5,55003336
+div:-656523898932,84101085851135799,0,0:0,-656523898932
+div:86004003567986,713613577148692,0,0:0,86004003567986
+div:7992270343,87209595913499289,0,0:0,7992270343
+div:-890969253231921,739402045213270955,0,0:0,-890969253231921
+div:6345032414365,821532347711110478,0,0:0,6345032414365
+div:-2988926571013999683,766437559276027,0,0:-3899,-586527396770410
+div:-15464671727416040,-618822744180643,0,0:24,-612925867080608
+div:21542413221581,-12802725163,0,0:-1682,8229497415
+div:210193665939,3964410139763307,0,0:0,210193665939
+div:-79273337971,91480286016,0,0:0,-79273337971
+div:6859567649816379680,-89417752889,0,0:-76713710,85837971490
+div:4244108501419250,1773608945178,0,0:2392,1635904553474
+div:-7873175456557395,-541450782136,0,0:14540,-481084299955
+div:2898452653,8240117642629,0,0:0,2898452653
+div:-8585567176400751363,39056741283,0,0:-219822926,-27546697305
+div:4923064817310182,488568656518880796,0,0:0,4923064817310182
+div:3946741285053501,-8922249541453011,0,0:0,3946741285053501
+div:438914382542168,98348892578,0,0:4462,81623859132
+div:257824992496,-9594074905801512,0,0:0,257824992496
+div:6213773111135227489,251684062660,0,0:24688782,155248147369
+div:-851789213354610296,395154960128827139,0,0:-2,-61479293096956018
+div:234318209260,31123149038286353070,0,0:0,234318209260
+div:243854015291982,52511298700,0,0:4643,44055427882
+div:7259566528156,6524807428024562671,0,0:0,7259566528156
+div:-887488809078966765,845297673812,0,0:-1049912,-637771662221
+div:65325904373281379,40360887138954,0,0:1618,21988982453807
+div:85548880813,9240276773237567918,0,0:0,85548880813
+div:7737568342993115224,69017119565996596,0,0:112,7650951601496472
+div:-2862875578129,87167074447,0,0:-32,-73529195825
+div:48121669474016423,812759701293155,0,0:59,168847097720278
+div:-82120995972822350,9793327794599,0,0:-8385,-3942415109735
+div:96669753363716639,3137138094734,0,0:30814,1980112583163
+div:44554701178616,52377515472783262637,0,0:0,44554701178616
+div:12903174971697,577437337389558244582,0,0:0,12903174971697
+div:38970472084822,-12255774904287,0,0:-3,2203147371961
+div:-371784186042,36063372236212364134,0,0:0,-371784186042
+div:-5423240799687893943,69598779690234855,0,0:-77,-64134763539810108
+div:78261697698230901561,532057670838,0,0:147092508,494031019857
+div:-867163311151035436254,1681644368464785,0,0:-515663,-1531175379008799
+div:425847772644293,726262561530005,0,0:0,425847772644293
+div:623414319659742,26868506006719423291,0,0:0,623414319659742
+div:3999344581644,6784937040418183244,0,0:0,3999344581644
+div:-418166904889870721653,99856664384501754791,0,0:-4,-18740247351863702489
+div:4737717701335,43868455388327,0,0:0,4737717701335
+div:-170318802370599286974,88681362021061351331,0,0:-1,-81637440349537935643
+div:-401236499756120675284,617234855370415616,0,0:-650,-33843765350524884
+div:8507669577483416,1708320712715767,0,0:4,1674386726620348
+div:-779872398090729,9483722067689467,0,0:0,-779872398090729
+div:-6974404749995800334378,88119801211272782297,0,0:-79,-12940454305250532915
+div:1644424212644083246063,6570040442718779,0,0:250291,2220195557331374
+div:380529423855576,-66584160392695795292,0,0:0,380529423855576
+div:-59486508603350002,3049574533592654270009,0,0:0,-59486508603350002
+div:4670852164286,194818165100985439247,0,0:0,4670852164286
+div:-9242375894510748,427966685403010,0,0:-21,-255075501047538
+div:-2547406540907066001,9156772267145703887,0,0:0,-2547406540907066001
+div:41045576141401448,295376215711793,0,0:138,283658373174014
+div:-8596645367243,618616563342036461,0,0:0,-8596645367243
+div:-8190662465572761,4614103375660380354519,0,0:0,-8190662465572761
+div:13625026664287920203,962611652006092322040,0,0:0,13625026664287920203
+div:-140239543538185,-36750209483049,0,0:3,-29988915089038
+div:19272745315539563545972,4913276356215789258,0,0:3922,2875446461238076096
+div:81488845695775561589,6137038314233733147,0,0:13,1707347610737030678
+div:59682455708892,188993136701455,0,0:0,59682455708892
+div:-45017621011770980,5037281596391885620833,0,0:0,-45017621011770980
+div:12784502496583369914436,66775897063651761451,0,0:191,30306157425883477295
+div:69627779066297453,44437721988866612,0,0:1,25190057077430841
+div:-9837326629633299,980665943940704469610,0,0:0,-9837326629633299
+div:1548374752880296357809,-3696277363166782287,0,0:-418,3330815076581361843
+div:-708439719674935281,5147784263606738,0,0:-137,-3193275560812175
+div:-7570135590104019,22684260196955,0,0:-333,-16276944518004
+div:7197857209654848797343,5395261067987895097519,0,0:1,1802596141666953699824
+div:42034917537094135582,97988383165721711085970,0,0:0,42034917537094135582
+div:231126155949672582,9057297455411228,0,0:25,4693719564391882
+div:-911497664257321106698,-18662736693873,0,0:48840514,-11481903135976
+div:64066981598227998719,731669238473176,0,0:87562,559739039761807
+div:35960724694947949779,-747063649911230162,0,0:-48,101669499208902003
+div:624879014956928,17179603356281093930126,0,0:0,624879014956928
+div:-3559399723529186749748,153806520430475822650,0,0:-23,-21849753628242828798
+div:-375790972015605,113007880734109473,0,0:0,-375790972015605
+div:-8787548671098011,8921111513701891873,0,0:0,-8787548671098011
+div:-4332240904268358207600,202327025748990,0,0:-21412072,-61385130400320
+div:9234628706335936400446,65579862120113054437,0,0:140,53448009520108779266
+div:-598537435499087,-2334884709153191798659,0,0:0,-598537435499087
+div:-8778093680300813378318,-5335331111760467,0,0:1645276,-1450067999274426
+div:834964892558660,4731312923556947,0,0:0,834964892558660
+div:697663848949724,16714097460480423,0,0:0,697663848949724
+div:660124536913505493,-400393621100679,0,0:-1648,275849339586501
+div:67401867410433679076,433247521397462506,0,0:155,248501593826990646
+div:-3192841130293725192,94067632460761922343048,0,0:0,-3192841130293725192
+div:-888171986451016091961,61046771373537922044313,0,0:0,-888171986451016091961
+div:5413476093760118894,436643671457387927452325,0,0:0,5413476093760118894
+div:3390818445571570,71193890227980923543296,0,0:0,3390818445571570
+div:3709278299197858947885,622346666342073,0,0:5960148,60492485241081
+div:61046636418932697473,752452096310648123,0,0:81,98016617770199510
+div:-9490582336573659,6796700304740895609,0,0:0,-9490582336573659
+div:-6770091537873296360125723,894260210116688124412,0,0:-7570,-541747289967258326883
+div:8265260740385351513048054,-37568692482712647407307,0,0:-220,148394188569083440514
+div:29941612974211919398,17117150207877877221595,0,0:0,29941612974211919398
+div:904565427385797381401147,732377327803549406181,0,0:1235,79427548413864767612
+div:828695336330867,665449887430200916,0,0:0,828695336330867
+div:583964043448404224,-159103379771833684164472,0,0:0,583964043448404224
+div:68659884135230073,3794043309187845772,0,0:0,68659884135230073
+div:-19577883397074285891599,89166539289139219809001,0,0:0,-19577883397074285891599
+div:47123114739550322,81879863505548403487,0,0:0,47123114739550322
+div:2081796666654613977139,-5323946267713561205491896,0,0:0,2081796666654613977139
+div:5580573071674875331019254,48049594740533118,0,0:116141938,18394751853316570
+div:-827318924045362735,6765606250148903029558502,0,0:0,-827318924045362735
+div:74355428058748494058359,-21632036475261687692382908,0,0:0,74355428058748494058359
+div:-704818230891696889912403,4179012972972804984179,0,0:-168,-2744051432265652570331
+div:54203012886802530,8642657915176877761716,0,0:0,54203012886802530
+div:99602518405709989487439,181452400672924186,0,0:548918,29533129791156691
+div:669551881716343753,65924540094419185740265,0,0:0,669551881716343753
+div:17773767489747228176421376,99265471480253104908,0,0:179052,86290264949236434160
+div:68861552761996536283999,3032962718342296259044166,0,0:0,68861552761996536283999
+div:-13017342749140884149199232,79805947528944429,0,0:-163112439,-988735239546901
+div:-846660807407559032521972,77200873303583960046,0,0:-10966,-76030760457326657536
+div:20732670221446843791112897,158830667623944099,0,0:130533168,938387893737265
+div:87479614966913872614027,-20093149492209048359,0,0:-4353,14135227327885107300
+div:815811689877913117,-96853054749489063852925232,0,0:0,815811689877913117
+div:88424170141166441101228,41882896205789554161109080,0,0:0,88424170141166441101228
+div:8907792217571919630,1822019507410919085762,0,0:0,8907792217571919630
+div:508794162072510930223084886,-69410487054586064946,0,0:-7330220,21655243065234616766
+div:7560829661415328254781,71577097034806313439,0,0:105,45234472760665343686
+div:7451615053542910305,1115867448037197150640,0,0:0,7451615053542910305
+div:1420226199720665341735779,832064548724686659546,0,0:1706,724079596349900550303
+div:-389977371089920999571936723,8114703647013040404,0,0:-48058116,-1916145250323817859
+div:675206408971175566604,36474013799024907341535694,0,0:0,675206408971175566604
+div:-502561109202609111272,-414660684126386698299,0,0:1,-87900425076222412973
+div:-7443609476960080458698600,-92469297206353960522,0,0:80498,-15990442999344598644
+div:24688964911945445107348,-799787361463460092976944,0,0:0,24688964911945445107348
+div:74622389634816941348941747,361423050927986753697692,0,0:206,169241143651670087217195
+div:57087631963106216588129,60933956374125435992007156,0,0:0,57087631963106216588129
+div:24667793118599351096874664,944711324818117322023856,0,0:26,105298673328300724254408
+div:564352217106369256763287,81622332712601232269,0,0:6914,15408731444336855421
+div:-419643083493336850638945386,-90994516601676379,0,0:4611740346,-16619082369458252
+div:3968897352690734435372,22251724057784007850845,0,0:0,3968897352690734435372
+div:657621764031152559636,1284248378184585349838990,0,0:0,657621764031152559636
+div:478747162724364955902006,88051418458918816631123,0,0:5,38490070429770872746391
+div:6665622554429783258955137608,694490725232295413492445192,0,0:9,415206027339124537523130880
+div:739043574063917325584775,6568858167203582304319770218,0,0:0,739043574063917325584775
+div:488239617545415130712260,-175755600464230772602,0,0:-2777,166315056246275196506
+div:-45020591983716715,29238208588753924571931348,0,0:0,-45020591983716715
+div:7127560906474483695,2443668648642679038,0,0:2,2240223609189125619
+div:56992002738244984812189281,5608720362174497796029,0,0:10161,1795138189912706738612
+div:6460467352419769344150698,317411399503484718457,0,0:20353,193138325344869395377
+div:-932907356818921691594434039,-97184909630029367110035347,0,0:9,-58243170148657387604115916
+div:3995705323622443163782,89030590085262709211588,0,0:0,3995705323622443163782
+div:767569373426935379750,1549154787571680632324257,0,0:0,767569373426935379750
+div:931318846320283067427330537,-86130685020277950106,0,0:-10812857,65883975492678017695
+div:31826303162303263286188,5737442550621928753,0,0:5547,709334003424493297
+div:57706427262137233402480,76482797550886260948017,0,0:0,57706427262137233402480
+div:72853807229779038632,3169975417424853790892514721,0,0:0,72853807229779038632
+div:656860988961860702860500038,2051614607117987332942,0,0:320167,1695044716052434458724
+div:419136122263611128595,629629147994291589835819893,0,0:0,419136122263611128595
+div:21718233877577237636870231772,28954985957426921952977486934,0,0:0,21718233877577237636870231772
+div:8137115583255366542038482,-53056312894008476008,0,0:-153367,28043639968602119546
+div:350144503855608500819,279913875130875757713464,0,0:0,350144503855608500819
+div:67536193348303696626965587175,157462565791912473045994827,0,0:428,142215189365158163279801219
+div:-6653909716122388287977917,-456461036794945909189066,0,0:14,-263455200993145559330993
+div:37893238038459578489871345783,58476986428077111625242,0,0:648002,33879092754002491279299
+div:9750862793806595478546835,831707298467569713898,0,0:11723,758133871275722520581
+div:82929154752623245294293,793446150807998771837734747,0,0:0,82929154752623245294293
+div:966515993017183338978310,77669990894453129707640,0,0:12,34476102283745782486630
+div:158090994204861340057333,31910675611432229121455470549,0,0:0,158090994204861340057333
+div:1330572162878429717062,21084117694617750279966598211,0,0:0,1330572162878429717062
+div:832245616705658749585054836,-6079221966362676227357795958,0,0:0,832245616705658749585054836
+div:-566340281799124821634,146366719895661144175,0,0:-3,-127240122112141389109
+div:4970340520764553911461,91205816337394717102255090410,0,0:0,4970340520764553911461
+div:3278473198323030526681,2105717666245284028185,0,0:1,1172755532077746498496
+div:2122422503626206527321754,17148805521927416661130,0,0:123,13119424429134278002764
+div:1912021218223919631352475809,38185948805565948914414505595,0,0:0,1912021218223919631352475809
+div:941796603263493070268724375,444845019508763781185108406,0,0:2,52106564245965507898507563
+div:104754716329414707284533930,43667472164404259911976738073,0,0:0,104754716329414707284533930
+div:89122706354696915439758538,31455209252293039108428126,0,0:2,26212287850110837222902286
+div:118480448597792962897533,67244410472175197017373,0,0:1,51236038125617765880160
+div:352695831583961620878034763371,8582622957634803011445036406,0,0:41,808290320934697408788270725
+div:-624005759812006640839,8172000984425101361637221854,0,0:0,-624005759812006640839
+div:7384400794640347039203,-628293484000022806320912136,0,0:0,7384400794640347039203
+div:-2828685708623719356215,7634212328177549702763918762,0,0:0,-2828685708623719356215
+div:-86550506492571342719558,666034531900739098444599,0,0:0,-86550506492571342719558
+div:642452648202950019476496886617,604805196719437392366385471,0,0:1062,149529286907508783395516415
+div:4662456248509569207839,-33567555776748285848111,0,0:0,4662456248509569207839
+div:62996041896426933131446657891,763936004120034809021339118482,0,0:0,62996041896426933131446657891
+div:8345367673768217736530,3642617362546668617513754,0,0:0,8345367673768217736530
+div:-84451394313979740929245775,1334835508641575600458674242637,0,0:0,-84451394313979740929245775
+div:1176029794050678765470272286249,40628825039402391375029153,0,0:28945,28453285176547120053452664
+div:7707482263998465479379,-2829972969411199798203141,0,0:0,7707482263998465479379
+div:-11136894339272544791100807454,67013816338042624404219,0,0:-166188,-2229685917126612460282
+div:-428729652188276782322695284232,-774565897177367154457859446208,0,0:0,-428729652188276782322695284232
+div:626676530287556077206017712837,908674926870287524187734,0,0:689659,688897120453562229270131
+div:2773148741407028218531427,557528937606955521382821134,0,0:0,2773148741407028218531427
+div:75539539184325529932345561314,-502273785664131486016696176,0,0:-150,198471334705807029841134914
+div:3606180022705211288777456393,122973836595862158705454565,0,0:29,39938761425208686319274008
+div:-30856676793350414230630,38692347037119733077452,0,0:0,-30856676793350414230630
+div:28070532442085800846842,6911568634505880039237117,0,0:0,28070532442085800846842
+div:94746783288740489316741633573,86780043180255118744681,0,0:1091803,71804408409905942683730
+div:-24888475865091602999453808074899,-2607720766137261712927817388,0,0:9544,-388873077577211270718923827
+div:53207047214418054977598334400421,4391350648985919720756952364,0,0:12116,1442751304651640907099558197
+div:944627096784739396211350732172,47554680361438235326247368315,0,0:19,41088169917412925012650734187
+div:90507814687564826997063490,263428140883010973433496,0,0:343,151962364692063109374362
+div:40830360719924046206003172846797,289018741615486979391301844046,0,0:141,78718152140382111829612836311
+div:46815309089103159131589670878273,844714076577304483690089137,0,0:55421,410251112367341001240816596
+div:766097719529863726042659,864954870692483641146857,0,0:0,766097719529863726042659
+div:36588837904828449995291554992448,5981291437419281216117821938,0,0:6117,1278182134706796298838197702
+div:744905055097349284759083504,-402232162933870784393172,0,0:-1851,373321506754462847322132
+div:-496174511680228005426626189898,6850190505814392535531175627173,0,0:0,-496174511680228005426626189898
+div:117807976873474930026716,72472466715338440688738889,0,0:0,117807976873474930026716
+div:29688886500382323149926912509,171231756792519788711530194,0,0:173,65792575276399702832188947
+div:95600026518374000257859,99155834015695214013381,0,0:0,95600026518374000257859
+div:947283711638216525748681460035,375183675933541675266484,0,0:2524853,81906386026327073533183
+div:41432664026918887246001356,89293848269510580767075145704,0,0:0,41432664026918887246001356
+div:347133325715091646723859014383300,8007256671477794251698509596618,0,0:43,2821288841546493900823101728726
+div:-72131155022320848089529987358,607237864853852225127081848,0,0:-118,-477086969566285524534329294
+div:52607679919645038811433035271755,-86393659667162016384842618430,0,0:-608,80334842010532849448723266315
+div:507690908006392398957998748,2764904388542893841465155862,0,0:0,507690908006392398957998748
+div:65723044947927998584588839362573,-414671665541745655865677654655,0,0:-158,204921792332184957811769927083
+div:58581181220230933312243002393,727812383468376773626369395972,0,0:0,58581181220230933312243002393
+div:55621061599265643370130457,75058109335016054327498821167125,0,0:0,55621061599265643370130457
+div:8042490680681402413656869107,985374040566072816763255884821,0,0:0,8042490680681402413656869107
+div:205865392688566277909245217913157,188746850681839171579701059,0,0:1090695,146384137702663123171367152
+div:645469876768555458540596006480343,-1176209889279660120170867010701,0,0:-548,906857443301712686960884616195
+div:-372748268475137934411499506,-6952751051457138928077564508,0,0:0,-372748268475137934411499506
+div:-53726448220098738825476944862,666316374954612779881255280093902,0,0:0,-53726448220098738825476944862
+div:3999043104096914451698824,53972081370928852391234278,0,0:0,3999043104096914451698824
+div:6875840365821778484266515548732,-48235349383818088293481585385242,0,0:0,6875840365821778484266515548732
+div:464946247859367335487708854577230,-91038566114714256247221434416,0,0:-5107,12290711521628833148989014718
+div:774638812953340934130134234932,1781076313255841252742417918164985,0,0:0,774638812953340934130134234932
+div:181439807984506382551684665,983773852096178563301436779,0,0:0,181439807984506382551684665
+div:-16817917749776745039099453680,29825644384864912855101360,0,0:-563,-26079961097799101677388000
+div:22133214432524045001245001353,-198976752808774771294935518769806,0,0:0,22133214432524045001245001353
+div:2921499120428770523924215,57361572214425723589097781,0,0:0,2921499120428770523924215
+div:123171649003149782751271079,-73094968897222766037958236983376,0,0:0,123171649003149782751271079
+div:769172117059026460908975826,97495810773186124439901474,0,0:7,86701441646723589829665508
+div:94112063717361782849247888341,9764365600045726199272325886020217,0,0:0,94112063717361782849247888341
+div:9469809875854665598033283678676801,13423826176729482294685830678,0,0:705447,11970959382501694048484373735
+div:-842464855184253146889699,56551832462429857048225522,0,0:0,-842464855184253146889699
+div:598571783530686410412162091727492,943878487966896512387279950152,0,0:634,152822159674021558626603331124
+div:6953911548504792867117243682880,-1243290077624733705142673151816,0,0:-5,737461160381124341403877923800
+div:-9281561117131091717433858956,24045037010263371696747810870864,0,0:0,-9281561117131091717433858956
+div:143976137737540251569359185478383,265536580911922810877928898030231,0,0:0,143976137737540251569359185478383
+div:40928612217108238156488248958516,652899471410195581619563697,0,0:62687,303052817307731502659484677
+div:-70884981920443005098389267,994979502748896336180903347917699,0,0:0,-70884981920443005098389267
+div:6634749014277303650696175833,495438828683857357740137178054,0,0:0,6634749014277303650696175833
+div:7422909929360831470432375670687378,44420776675922024505687379448537,0,0:167,4640224481853377982583302781699
+div:46314400055365971953154263039,8152799875814716360460312147,0,0:5,5550400676292390150852702304
+div:6591812486274558813658703427,17421702938564211067047963695822,0,0:0,6591812486274558813658703427
+div:124008796997131146663153333663944,123778079237035114605937158,0,0:1001863,119198477435638705314738590
+div:7901064786124799043739659032,5571379890858077238984496202525017,0,0:0,7901064786124799043739659032
+div:-6965802504602789618852220893,639736224353884761032877844589149,0,0:0,-6965802504602789618852220893
+div:971873099542038287548098257,33891065268003504765508649367,0,0:0,971873099542038287548098257
+div:675025802085588841328307981424510,5883130258364185867146732282508,0,0:114,4348952632071652473580501218598
+div:3002202702401536393223671580,32010263936497485071510555,0,0:93,25248156307270281573189965
+div:34972912833617921349910233,474530829196480379440614753566093,0,0:0,34972912833617921349910233
+div:276535788922741466724367182792751,-9977731202427442856055105791931326,0,0:0,276535788922741466724367182792751
+div:14688056569711843047315045,33632661368158430395335244297,0,0:0,14688056569711843047315045
+div:-879571497507836359459742179631,46691865250496831422027355865479980,0,0:0,-879571497507836359459742179631
+div:494117042357580878818138056,29316968901414007402594292795459,0,0:0,494117042357580878818138056
+div:1256269358576514580546391822558882,-5715622931835594771199373401675,0,0:-219,4547936504519325653729047592057
+div:-7954432693582559842284447426278,-1415175992700551307691498753891217,0,0:0,-7954432693582559842284447426278
+div:9290637525511632506517536450,31193173758140935479273605091020135,0,0:0,9290637525511632506517536450
+div:741965597318745797468077425593,5090853342489379493387893,0,0:145744,4267770973672583752348201
+div:28726807242801656618422278445,-66260445037131724567939080371803922,0,0:0,28726807242801656618422278445
+div:600680612706025211965401567803,601606994582634974447563159467,0,0:0,600680612706025211965401567803
+div:-66914527546382741959361703369956,7595234786937152212557447828,0,0:-8810,-509073466430966730588005276
+div:-477200248767482289180868434831103210,299754033389841609330851428,0,0:-1591972736,-104820787767789757788436202
+div:1602055237860095405473195539557021,-482613481963019529862911261825616,0,0:-3,154214791971036815884461754080173
+div:5847782734638264086149188726633444,856996324395574391409855532415801398,0,0:0,5847782734638264086149188726633444
+div:79271780305017072764462340,334727107872141024597713303,0,0:0,79271780305017072764462340
+div:-8309528822503909832876248028239283,-280321240085800591419535364757,0,0:29642,-246623880608702018380746112289
+div:-7036110366628173318660022670592,28316814714059617609323292157,0,0:-248,-13540317541388151547846215656
+div:948009776246268508005837034128,9919518492899054009114568949283,0,0:0,948009776246268508005837034128
+div:18836117763174709382287464458,-95991422838941512823432481785039,0,0:0,18836117763174709382287464458
+div:46329535017445104282274302989008943,2426057049787109955278434918171122342,0,0:0,46329535017445104282274302989008943
+div:297935043427322209379153089088,5013180436585374804022483003677803281,0,0:0,297935043427322209379153089088
+div:-118750521055580916050992218218817,60015490720625049417386142837,0,0:-1978,-39880410184568303402427687231
+div:575684179239053603789472576628353,7053037456193336012438564397416,0,0:81,4388145287393386781948860437657
+div:-22678246623112702170004970988490199,56088891589189424871010131732,0,0:-404326,-49442422098769608928465817567
+div:6471427876906983381994784223,7282306840714785835314255152341703,0,0:0,6471427876906983381994784223
+div:603142728037804458149682405206,-650651299197030110194378722974,0,0:0,603142728037804458149682405206
+div:95931851622486456387293188404091,30758076059621180125667261744973187,0,0:0,95931851622486456387293188404091
+div:-726881908942360166762114252209703,363140012331598428300964292698,0,0:-2001,-238744266831711731884702521005
+div:615441001400268210176031416893518,64796591895996509835103891278541,0,0:9,32271674336299621660096395386649
+div:-84863286321984569539608600726350943,95803928515186040910470967405915312,0,0:0,-84863286321984569539608600726350943
+div:127629355200690947978534550183,797344806129236668518995114759425,0,0:0,127629355200690947978534550183
+div:2288916268196725535426416610805794415,4632856553925567389796050303893057,0,0:494,285130557495244867167760682624257
+div:976908939861250135603632878187851391,-6608040757199335387091406901838035,0,0:-147,5526948552947833701196063617660246
+div:-12183790198926859582276525192366339,3503085624005426351029343283863,0,0:-3478,-58398635986733396469251090825
+div:162265381015355009933791722345838,7623537904684559645894301151112382716,0,0:0,162265381015355009933791722345838
+div:-593766143424589564713907089125639,224331769330731597387481028255128,0,0:-2,-145102604763126369938945032615383
+div:604869729619335696245226863211466041,93942209533557682128293773108407,0,0:6438,69784642291338703271551939541775
+div:742895297953619211242501957373791,531142018450802021651202332570,0,0:1398,358756159397984974121096440931
+div:27653047597891730507139754824,5480890077990244820355276983606,0,0:0,27653047597891730507139754824
+div:3784487646863079978435416373977,694796147453752363831293132728,0,0:5,310506909594318159278950710337
+div:2973223272105672225946453215625903,19361627619874023404230915287,0,0:153562,13011542577443945945402323609
+div:245900231135215525853387549499,-7177692471091872136903418261273,0,0:0,245900231135215525853387549499
+div:9997981965333038339861175645427,-4045879607573312864719096965459966764,0,0:0,9997981965333038339861175645427
+div:6806842983457720589405220668623962,-927052066456609430942182858322,0,0:-7342,426711533294147427714122823838
+div:-122270014267619817663497887649323141,-2162707234463692663424997827917303191,0,0:0,-122270014267619817663497887649323141
+div:-73410057200050892585310982601,-2781563564880350086545084449330,0,0:0,-73410057200050892585310982601
+div:41074074074626336295845220577523,73580647879659031572628791338989878719,0,0:0,41074074074626336295845220577523
+div:38518920335521852358928552909455,934752467373574138232063654381123270465,0,0:0,38518920335521852358928552909455
+div:4300545050696782443239516173845124,-9078020631753897849258060104921396,0,0:0,4300545050696782443239516173845124
+div:9125102035522831694438174632387280948,14030892071253083076166776508287771,0,0:650,5022189208327694929769902000229798
+div:10049229592281672286226252965830,-947015519470033748849687371329705317719,0,0:0,10049229592281672286226252965830
+div:74199952025194030063111669270731296,53730729670173947678290654632594,0,0:1380,51545080353982267070565877751576
+div:62962644403023975314385553509953336,18661881999119919255366397124335,0,0:3373,16116419992487666034696009571381
+div:-48885268599530160005042589357517742267,1224963343286960109782754733806,0,0:-39907535,-1103588784380283462421739114057
+div:8260532189465861184106347872307,8068023378797368816499164870542708410,0,0:0,8260532189465861184106347872307
+div:-873293644410280888333970242222255556855,-53468033733881855748079429886216144,0,0:16333,-249434788538400588913890687276903
+div:8118527378780784121252739484687134,7449409022714146507892440406735208908,0,0:0,8118527378780784121252739484687134
+div:28529491283005611559168619648453262781,-883723803503785940933815830371,0,0:-32283266,663961158020941954801575391095
+div:899559711064017522862617539102500,-566535897303370911043077254061825,0,0:-1,333023813760646611819540285040675
+div:15574337293150371571515035679594790928,-55555266615224096139156320494291715,0,0:-280,18862640887624652551265941193110728
+div:4585681465427957919096525629579,66250889555016187900342661335447207,0,0:0,4585681465427957919096525629579
+div:740366425347027728645955294884621471,-8981847007405192941035608249485839462,0,0:0,740366425347027728645955294884621471
+div:995741708152482543471981480782324347091,21342276145547465497291491758534,0,0:46655834,15123660154109622191683793959735
+div:-3250628989112846425058431588079956,188350448043333903099558871335715,0,0:-17,-48671372376170072365930775372801
+div:876756580410958121101100042110445,700377806984105935223010779109492,0,0:1,176378773426852185878089263000953
+div:273777021637125264614902200521817247,5596822025834012700584044296044,0,0:48916,2875421428699353133089736528943
+div:-464090250274653177412801749314226,331074623300822560323451165878,0,0:-1401,-254703030200770399646665919148
+div:396075925225537300206063956732379,43995671606762821537409289353046922,0,0:0,396075925225537300206063956732379
+div:-18658324380438997683615076571716,5092778408442460759386491384527084996615,0,0:0,-18658324380438997683615076571716
+div:-3965312367885757866883408465644,62732726984931603243998191276757746,0,0:0,-3965312367885757866883408465644
+div:18384490431288410418670437084794892,251064583418108672333112094297258,0,0:73,56775841766477338353254201095058
+div:5162911931645462592809376061314438,276766756569293637905979057590818,0,0:18,181110313398177110501753024679714
+div:8135417534757202149267580550442399,57219388491890904146726624261571751057,0,0:0,8135417534757202149267580550442399
+div:182770016919229728734188047616685,-40885421527209929308823628618058876,0,0:0,182770016919229728734188047616685
+div:92048299381294008029880374643382,11111217138310865417953673269446,0,0:8,3158562274807084686250988487814
+div:5200981870655088437520091813182496782,8050665661143383427978138223450564832,0,0:0,5200981870655088437520091813182496782
+div:756533369514441505798425699358577956,213131801093410029221386684045445047,0,0:3,117137966234211418134265647222242815
+div:799371912191908595027684426426504203412,17112684578666430604042990191541053858717,0,0:0,799371912191908595027684426426504203412
+div:1298725911189943981172370165599649,65794189885654690328812265324475773,0,0:0,1298725911189943981172370165599649
+div:860525228612860972598185202071685976152,151574827288199259902280707159394761797,0,0:5,102651092171864673086781666274712167167
+div:3584182117338772880305442381515310406513,415718227605762773246300051378162,0,0:8621662,71682816997193200587950163461269
+div:3468267249506034567392210570575412440358,2065367734321219422680254672539,0,0:1679249264,1757779312273888004381735679062
+div:50367071916831078065713924791723412318,65724451969804512659247548060987947789728,0,0:0,50367071916831078065713924791723412318
+div:79874071719000306927937931805669,6145217682421427626924604560525904590,0,0:0,79874071719000306927937931805669
+div:423797068560673311763985503147656006,69667145306964427593061472412068457736722,0,0:0,423797068560673311763985503147656006
+div:41523275633578269444354516606248777741194,-694978110274856348249211949536413124775,0,0:-59,519567127361744897651011583600403379469
+div:-87407113783597425860610212435025646,22427444695442827429769682014306,0,0:-3897,-7361805456727366797761625275164
+div:-5398995964042513456203407110806239,759328487523337723297727841375739581,0,0:0,-5398995964042513456203407110806239
+div:-486450683665060870587027665253017864,98034404319738594732566595585128,0,0:-4962,-3969430517963524032217959612728
+div:82802462159510025179539722591174489656,-7995658647747583535810574975199511344136,0,0:0,82802462159510025179539722591174489656
+div:-9247518837150320354892251517725,95037788396291796059988855373871527896146,0,0:0,-9247518837150320354892251517725
+div:-5710350451928497877474611321475359,884522303455599132933755693677751985,0,0:0,-5710350451928497877474611321475359
+div:-6247471877283545360155543727272765071,675373004151999159209581260366203727893602,0,0:0,-6247471877283545360155543727272765071
+div:549120950829660962410197911937811,48123906347804179379843793292937012521427,0,0:0,549120950829660962410197911937811
+div:-106448127960021997407899520808890,9065012874636494312839056387435045253097,0,0:0,-106448127960021997407899520808890
+div:69560159021211857117768649206402791,351520915367913488351778070201730208854,0,0:0,69560159021211857117768649206402791
+div:603624320694634013723571987622589,2701844331050375027455889272518786,0,0:0,603624320694634013723571987622589
+div:67014256406500009956329723823638317486,-1091809123530714597985512683792998,0,0:-61379,104213308278646576940805107893244
+div:235637292979855521853832255322576,-189051691838200548750099363324518519845,0,0:0,235637292979855521853832255322576
+div:46621760725175766077357844382212912326,382903788461287808084560177696868561667,0,0:0,46621760725175766077357844382212912326
+div:17972807610345735075506894651990254671255,55415225623081699101048670679962759717300,0,0:0,17972807610345735075506894651990254671255
+div:-99369177703763557258065488925907194288158,6888487468349330333818924437618675770942,0,0:-14,-2930353146872932584600546799245733494970
+div:6974086110297401606708008289033796059,298190885369602196463446343967843,0,0:23387,295874158515038017388642657851818
+div:22082353893401399289701395360491738,34004577923140732261317680713467602,0,0:0,22082353893401399289701395360491738
+div:3021321469279908093607775280467343863,54418828629265035058612376701138652,0,0:55,28285894670331165384094561904718003
+div:-773023736068095185985747288307356,62254616741081128985277622196480901,0,0:0,-773023736068095185985747288307356
+div:-2914004549648558380597177821180027971982,41945684266123534509905568470747536706,0,0:-69,-19752335286034499413693596698447939268
+div:7760354325840316590533609759835164008896,868363194633558774643668133661139838,0,0:8936,660818594835380317791317439218416528
+div:62481824056284557813538132809580514163491,3063406952822650811300655756477238,0,0:20396187,2989413594030548244777844306671985
+div:999032777586519798809642100185769791083086,53063722362186015952243063915405514648,0,0:18827,2076673643676476761935850430166805190
+div:1470131951969797494200280446936328952439,-985834190529311083948780402821210768,0,0:-1491,253173890594668032648866329903697351
+div:695257822575467619322639555633582443264,6467796678447835413755920250534956,0,0:107495,2018625717551520946908302327348044
+div:34431866058056304430649293119014790521,-66121478435132244087535870280208408759829,0,0:0,34431866058056304430649293119014790521
+div:458534877296422067611914397253412590469,229983379105475980155252782290948271559418,0,0:0,458534877296422067611914397253412590469
+div:2185065840509747880280098827050369,-23363950333069346956170201374188305,0,0:0,2185065840509747880280098827050369
+div:660127414048214811857806676633782977984,64123543109305824067686258949394280427,0,0:10,18891982955156571180944087139840173714
+div:748036409612739266280596599738236249637,-89094948094100676872295250639398845430367,0,0:0,748036409612739266280596599738236249637
+div:9049727473118706892393777842066328396165263,3856651773197697798307166289847038513869,0,0:2346,2022413196907857565165726085176042628589
+div:980189895420499303642948634803744800389758,-3190314421704305860902855244770982859,0,0:-307239,882810490075245016292255552797773457
+div:6108171433112534565184964245024814724366,4260996317082295106607737650284809362606641,0,0:0,6108171433112534565184964245024814724366
+div:358196359808272615858599795581371458918250,9543484816419438536292482064209522533404722,0,0:0,358196359808272615858599795581371458918250
+div:44482449128693269579458765976093879533678,400743721350983175894244132476709300635,0,0:110,400639780085120231091911403655856463828
+div:832339795151923812236511477767777941,2368224477252854985783540371974941967671687,0,0:0,832339795151923812236511477767777941
+div:-27251313242004640465020477977011074115415,2399123426123186914483922523780597130907,0,0:-11,-860955554649584405697330215424505675438
+div:434369443368140265771072488323999183210887,7582603002573727151808563609276596120660,0,0:57,2161072221437818117984362595233204333267
+div:-797664602996630747189073160786968930897788,8488149668482536480367533655921312940145901,0,0:0,-797664602996630747189073160786968930897788
+div:59063238214543857057620510112580247310883,28114133320457432516252314750546246,0,0:2100837,26711994025902474545948986923502981
+div:1573691164802147334879722389254185849497882,-7127075045154454822615337483298105005772756,0,0:0,1573691164802147334879722389254185849497882
+div:-40379721983479963451044525213342063379,5752617301360961501951105993116579979599761,0,0:0,-40379721983479963451044525213342063379
+div:-66553094204238345681366812314746973,179491260943660304940853680122139916257,0,0:0,-66553094204238345681366812314746973
+div:41557707370513928375878448109901883,632935174723424546856310964927309397,0,0:0,41557707370513928375878448109901883
+div:87216666974663503011714591959065214272591,-362212517956666997849487067083877113331,0,0:-240,285662665063423527837695858934707073151
+div:600930802118279524585230000011936249444105,276956438642688260499397309603052638,0,0:2169766,138070288388354494697143759139301397
+div:-9062026573948610573181435477111972535105632,26459705612915075584081819752039455108,0,0:-342484,-756815003826842757521154491791897360
+div:17653370013085499100472199530821555711,-7698383733180213420749857647904028433762549,0,0:0,17653370013085499100472199530821555711
+div:30662369693082036358310810281385879664,22236287546685236318100930067052020060194,0,0:0,30662369693082036358310810281385879664
+div:-512521060439171480106970932632563580,89514481912211104455621084880967327358452,0,0:0,-512521060439171480106970932632563580
+div:21086477798868875028201033077501739509,-32949987996179141109692270028847703801843,0,0:0,21086477798868875028201033077501739509
+div:-708751005350456170908462092345570661,20771494122418135637231294901492781698,0,0:0,-708751005350456170908462092345570661
+div:4761140473028193547540165802031057658,6168913684826084448506253549769822795,0,0:0,4761140473028193547540165802031057658
+div:1006721746946704053236444265263223831,-68339952093888456017995310177868766706,0,0:0,1006721746946704053236444265263223831
+div:49477930040212907700651237822802690917,932149775404881165633388914278605445476133039,0,0:0,49477930040212907700651237822802690917
+div:191141779546296204030941021563218099367,3656389331006196783212925046242222356116162,0,0:0,191141779546296204030941021563218099367
+div:52321773961113824095699208419101883834511175,3945419458824649179733387424219698232106948,0,0:13,1031320996393384759165171904245806817120851
+div:1778145454400348709637901904657092758,878609889134331105537302232981688580,0,0:2,20925676131686498563297438693715598
+div:74713594237827753439495191401245889889,5392802592936410381907322733518534312,0,0:13,4607160529654418474699995865504943833
+div:270095098083877602963826744218949767,47636389981971696673999931157764182609,0,0:0,270095098083877602963826744218949767
+div:7520391039221099182471773929113536857,381897415343050691905932641495648269699614,0,0:0,7520391039221099182471773929113536857
+div:63508808128380210731820150543656327585,-616515868713883945771114329692765309888882,0,0:0,63508808128380210731820150543656327585
+div:500726636417051241894505979036450257584284510,-2188106361907716060317149708820198851710,0,0:-228840,376558089498651529439670035952358968110
+div:9644202180018661897773323824784604735459,889341707658332087101739860527895964627301119,0,0:0,9644202180018661897773323824784604735459
+div:2169616399713342398130612752657502922,-320164160717395068313105728380324945,0,0:-6,248631435408971988251978382375553252
+div:-5377162725601993828110678056377142779006,55796345170536010537794307342731868052,0,0:-96,-20713589230536816482424551474883446014
+div:2037294950563567811082451474155649111,2834014022081568485840663386191616163,0,0:0,2037294950563567811082451474155649111
+div:614981246208238240735840654289003858288,59358494220000869333484696079415051563764262,0,0:0,614981246208238240735840654289003858288
+div:-869974954402953214631782702522562619117445900,461625972083775526198257072077692914743043,0,0:-1884,-271622997120123274266378728189167741552888
+div:502948632448506662993366487259075217376090892,42616114515034714091468739214068502864104,0,0:11801,35865056582001999943895793852815076799588
+div:6366779403200391484287273535628255514,82250958048563873223556347205141650947263970,0,0:0,6366779403200391484287273535628255514
+div:23811157225570913409830665082241103895611,7476929574668972035850358498197955282806,0,0:3,1380368501563997302279589587647238047193
+div:4433024520272083942063140827835336668419,-6814734610056822899976511626133696026724,0,0:0,4433024520272083942063140827835336668419
+div:968786326198881698061088417967223975939,599601873015338765622213846860944593816,0,0:1,369184453183542932438874571106279382123
+div:9195492262506042027630313206086692630450795,64887542474450141869346719067771980637953781,0,0:0,9195492262506042027630313206086692630450795
+div:167036152523476713010727258508768159942500,515803210529897970656947678674520384659564747,0,0:0,167036152523476713010727258508768159942500
+div:8138478748257408221805876607659300558448,49661986735515173743313027014090079675,0,0:163,43574910368434901645853204362617571423
+div:59222143484521909529262811142486420090033691,-51030363360606792052118776207857821648905144,0,0:-1,8191780123915117477144034934628598441128547
+div:-467669865565641334900015053005237790,-4166801708575196388168955453453946582052,0,0:0,-467669865565641334900015053005237790
+div:77373277085707339767125359451768440817535,1763315960012269607653138271304663086,0,0:43879,736076328961652913305245191129266941
+div:55495442705704588053146646518531149753186,-5663458625155167579301715514248517944795126414,0,0:0,55495442705704588053146646518531149753186
+div:488849922299811997818757217594597733202150566,939685030270889494431285974083671162411745,0,0:520,213706558949460714488511071088728748043166
+div:2400821515253609347478984845179365395392,174683346240076973534036449659865563554754338,0,0:0,2400821515253609347478984845179365395392
+div:94256886099064494671287831080381327786727083,933612219301830695726258097049775646275143622,0,0:0,94256886099064494671287831080381327786727083
+div:423105830682881413387057917631404228266134,257145583503215058907245918993287651344,0,0:1645,101345820092641484638380887446041805254
+div:9725239973027586290174961618324279259233,128059695274170533356219539907244279505,0,0:75,120762827464796288458496125280958296358
+div:8575857564646639781619620979013176021242222,-79327770769273229627122866232866675878,0,0:-108106,49577863588019549876402042891158775154
+div:8813097514151610923608219242438159700407184937,7989256671292882171963354392382046005647066,0,0:1103,947405715561887932639347640762956178471139
+div:-4220854853661426119955083509997540633581226963,-3143361547579787840091976435701544993088232,0,0:1342,-2463656809350838551651133286067252856819619
+div:18064088683968825697348480535147810355871,5304724916018022284963666250494765425823768215,0,0:0,18064088683968825697348480535147810355871
+div:668152482128694155192224637784736382693510,-95257956151627868536527340956566505149833532,0,0:0,668152482128694155192224637784736382693510
+div:61701221596016091555562189539716738900156785,-204037550501076287029400288051994390707,0,0:-302401,62286940121281584513032505583155969278
+div:9028974806172994844965393599047382592,34693980268705780311458320694963675758359651,0,0:0,9028974806172994844965393599047382592
+div:89063698366423052530435721631252853122745595691,-559482379459044468566903354300289497747749008,0,0:-159,106000032434982028298088297506822980853503419
+div:-1824554464595257659941777994663246309941052,73623748997742382675661945460325724770677,0,0:-24,-57584488649440475725891303615428915444804
+div:-55142421317035129657275321126826228423017036239,28826110399433506733627712523209314338730651,0,0:-1912,-26898233318264782579134782450019407364031527
+div:756782070286814928506227576085403683630,4000214993529718974257266487592194977145045820,0,0:0,756782070286814928506227576085403683630
+div:13159677289487357602217280155496420963004939,767301253318942647744497962442472942956,0,0:17150,460795067491193399140099608009991309539
+div:-88187589231094865339990742097539889292776818,510825751942051438265912944524438114392912,0,0:-172,-325559897062017958253715639336533617195954
+div:489109845016577010833075435898092017791090,110123269200994712057868031610104395461351967,0,0:0,489109845016577010833075435898092017791090
+div:19217131883780524110230989478044970954979,970929416394097229812264700944439582834558,0,0:0,19217131883780524110230989478044970954979
+div:24527357215769113990068349908153315315362058,-266862918096402442472122404915934028297493384268,0,0:0,24527357215769113990068349908153315315362058
+div:187180335008792237327827003721933462481,-854140420436008308741513900838309996093,0,0:0,187180335008792237327827003721933462481
+div:545261221970766906869881791377703238778715469,-8788464536650499527970204831752102396425142510,0,0:0,545261221970766906869881791377703238778715469
+div:-8978883239491077969334655758351790550761758569,404693816228247849601154967878424829635,0,0:-22186855,-219438296026172022653503521227250310644
+div:1672482949489286830657071584694755544154,-16569314415512041409298987093228138867183570,0,0:0,1672482949489286830657071584694755544154
+div:774730270533571544207396913338620375028137352997,48786260906229317422119214339872570992323,0,0:15880091,7792907516676258376772939019266087811604
+div:8223377606023157629124739253629162465167167,520715840696524916222797841353549481506911,0,0:15,412639995575283885782771633325920242563502
+div:19134961218524422663618095601519767611971718057,3320597299770542518684500859989485655905,0,0:5762505,2675610172546986065973326056572390876032
+div:9685331182266568794457591582614487872504040,213566802520062116223869626405725301078500,0,0:45,74825068863773564383458394356849323971540
+div:59252244414367138020160608470582658601544,-3576888946047794041513522160303428731243100275,0,0:0,59252244414367138020160608470582658601544
+div:9042130790289921021769539257940643994441439005,7080061253408914683252703075136834100504476,0,0:1277,892569686736971255837430990906848097223153
+div:37181356995874904748900986598480003983051,519027821181254318600589595065858229824972513884,0,0:0,37181356995874904748900986598480003983051
+div:4809573571268875241068163376639283894303,397857290741686940249008741474516933138008,0,0:0,4809573571268875241068163376639283894303
+div:57672160438267186781489366189915687528444846039,4311847164079124929339394059428992929411,0,0:13375279,1613350112775719684954110326408545415370
+div:8624907898892313136658244150578480770110291,18756723497726238453263886656453055357901904440,0,0:0,8624907898892313136658244150578480770110291
+div:4229153408642008158454182552166239580124743197222,723306877996286799790273745169628337170848,0,0:5846969,515510937124971245462645522951165247237510
+div:6302453408140626668691370469108993823368172,-26870693985061276927685322296318387971972897857,0,0:0,6302453408140626668691370469108993823368172
+div:-26183394096110224783461710144582526395666,8931365187310300822957876202988418128476294,0,0:0,-26183394096110224783461710144582526395666
+div:1337734304086488205388200603174151745237404,-37555196523265867970637056819130422860022,0,0:-35,23302425772182826415903614504586945136634
+div:1394934047175944473993592421680155397883435756719,3316595803755393152259408400413331925963184238,0,0:420,1963809598679350044640893506555988978898376759
+div:-3923445604156694953553293681269071976204126084324,-2385865039714571024603149142302411580843310590047,0,0:1,-1537580564442123928950144538966660395360815494277
+div:-4666574422365035446555661286742673507442477825880,6511395679936223490637275038009230986077915234,0,0:-716,-4415115530699427259372359528064121410690518336
+div:25682320341721789029990750876038989350503,2075225204575110735785546638041462321365144552208,0,0:0,25682320341721789029990750876038989350503
+div:507066551593936721924672174902109570507318,-90150385867099161583728850458645628165485311877,0,0:0,507066551593936721924672174902109570507318
+div:56460765920562193755877284769059649453013,106293089508542656937426290853822589311742,0,0:0,56460765920562193755877284769059649453013
+div:113389347059878790962060029189435317366606631,9123943931303946176502291145148092536746735300,0,0:0,113389347059878790962060029189435317366606631
+div:90965037743938985628689890077906379958065298745,355159479956085299356917050991168761100055,0,0:256124,171099666594416198867309844272190074811925
+div:-165340776845080586286334926027619556728505,4315813260375908780045944338058657645416510920831,0,0:0,-165340776845080586286334926027619556728505
+div:9675893678882076470951813438529414802324809,-49138410559062258960736821789190923818163376047,0,0:0,9675893678882076470951813438529414802324809
+div:52196020861900342939093799976830869614855,898691237498364401852494744239741816001653191,0,0:0,52196020861900342939093799976830869614855
+div:546701462352913231490095779602087905799659,27796772128829838971566803617855813694963277,0,0:0,546701462352913231490095779602087905799659
+div:-239361790908041495849499565651036682869595828,59582341264073879085346989042621623014587677976339,0,0:0,-239361790908041495849499565651036682869595828
+div:26247208631803295885744522675941429011719441867,94578293352355651122868883826971735945985150768,0,0:0,26247208631803295885744522675941429011719441867
+div:7151462784689393204933488144237700308252236907106,4869138896069717850331723402637093025616552,0,0:1468732,2675587124367180075367635717394552387255042
+div:444179011665054388522294113788022095382753092,87809235040601661387269133961569114730886240155,0,0:0,444179011665054388522294113788022095382753092
+div:9396002262631352355829080408353148431716175837629,627009066609807681311137500374921292105192019668,0,0:14,617875330094044817473155403104250342243487562277
+div:-67404859652885739843969210485993809184078129851,46946911826310720654816125341841364822782750,0,0:-1435,-36041182129855704308070620451450663384883601
+div:-857317750867775465958757317203227431120067,92423921722813825213538574566017075976934245071208,0,0:0,-857317750867775465958757317203227431120067
+div:-604814342197174902063835288834217421426135297,30987537976824612265560882867080135947080229,0,0:-19,-16051120637507269018178514359694838431610946
+div:537582514919678675297229509855601144545558,97995250751872994415105767317261578435382881110966,0,0:0,537582514919678675297229509855601144545558
+div:39007116647886661941726367331622958240358112679,-5144176915242189162509107363545822402755422,0,0:-7582,3967276520383711582315301218532782666503075
+div:720186514683083735071865829645724624020144283905,921875961665713476662472782679559347600188961,0,0:781,201388622161509798474586372988773544396705364
+div:4925300524276512099528492538263141469746686350,-21746080565844400504762758043901034656358047765835,0,0:0,4925300524276512099528492538263141469746686350
+div:5966000116741864064364725002160835848207074879,452383546194102189149587219685512801821102583315,0,0:0,5966000116741864064364725002160835848207074879
+div:1730022951574373079411594826626220707013971004,867119495065650306148038934759853852208599,0,0:1995,119558918400718646257151780312271857815999
+div:565379733109542105910214574424401953032077613,51059839129853759630343322732850868439955821491756,0,0:0,565379733109542105910214574424401953032077613
+div:380859104711500390575977473068323845888716252660,6180121353081961565969801679654221330060450855,0,0:61,3871702173500735051819570609416344755028750505
+div:68068921222429620875809588817152460375197553199,70847310210650369483877621724938884574632970327227,0,0:0,68068921222429620875809588817152460375197553199
+div:-722057802895969286253197273768040930277501,24306448094583832291685007488076569960645346636,0,0:0,-722057802895969286253197273768040930277501
+div:317592535736773933828600449815426639893020969423190,-93086204599568503148872348535005098881410913,0,0:-3411810,92021920119100246282360210893478434402340660
+div:611020260549327414799176188444349897969388695,3705943065234383781833374645394121853197511,0,0:164,3245597850888474578502746599713914044996891
+div:311597138605996430909903314778924265380533841573,900097580338833508210694004713940730225636589400,0,0:0,311597138605996430909903314778924265380533841573
+div:1471368037568797633184945517471946826925463570,-51986614090044718428104256857291140310189522,0,0:-28,15742843047545517198026325467794898240156954
+div:764577682558529028045406367446280331248422324968,3284529318538080158133345096780067681846690345,0,0:232,2566880657694431358470304993304629059990164928
+div:25345733340779680384223438130261035483720695,-4963832661075587414370207844502105067515360717435242,0,0:0,25345733340779680384223438130261035483720695
+div:9728219568997241790958216942026281594007662902,4830901363966824643813184028118279269292788953297,0,0:0,9728219568997241790958216942026281594007662902
+div:378990675295147250343254009937685278864098648256945,1608729233755427518873468676407616643664376791798088,0,0:0,378990675295147250343254009937685278864098648256945
+div:898267137520595727470006439782753575720539020,-10549538784345819645739254144254774260670381268575,0,0:0,898267137520595727470006439782753575720539020
+div:5995515572054268086933479746008640056780766451925,8030600055411670042494710011412948461403231,0,0:746583,6090884857231597651661557926755620958042252
+div:-29108480583332747319862771298993930146421704,1070825121844450385018502033657868394429345713,0,0:0,-29108480583332747319862771298993930146421704
+div:1309351864286127912492763722652139231241412,67215284518814518103811333196815587050385227,0,0:0,1309351864286127912492763722652139231241412
+div:5057770892603033060848565127774886456638357230325,4560833131311412489432012223910819044848375100332,0,0:1,496937761291620571416552903864067411789982129993
+div:633417011776645191559278275893992860044140785076,9267459276776555758115340080177517575774981964493,0,0:0,633417011776645191559278275893992860044140785076
+div:81198441395376013971576012512699341529160887275,7447901692377824339480278247455048336927582640790763,0,0:0,81198441395376013971576012512699341529160887275
+div:9051874321306026560005193316581192573940541867187,37537551211896722531771511300407567291038941024813,0,0:0,9051874321306026560005193316581192573940541867187
+div:2608213478636475749024179986585033501198860091868353,4860413071332838243659712432305837800300477,0,0:536623830,915784885941031884462459089442842973301443
+div:407598478820396357158686484143933270533665010845,4355992703916618082567359020934982484449368723357,0,0:0,407598478820396357158686484143933270533665010845
+div:630711778218873882494940824096903507347713330,57238514966674350042018295073350807282445218805,0,0:0,630711778218873882494940824096903507347713330
+div:93688378632955946315197302995234838965963790793683,3160654096505987021546437056562511465114160,0,0:29642085,1248727276013620984317459066303575325370083
+div:-2525656519498119353338247264242041272975381031,327276040767955818809485641052992513513655213981074,0,0:0,-2525656519498119353338247264242041272975381031
+div:66016468795885111884527337073458991710229978420,16320322768232010844919027662356786278707098868275,0,0:0,66016468795885111884527337073458991710229978420
+div:-2302712368656752027279644835027749767667073228557819,9316845119063833412338569173366972112730895383,0,0:-247155,-7513254530280253105770984235775145068780172454
+div:48838864669737321321234466529333448212306449830,-32564162155964258347156982593283846680395226572752488,0,0:0,48838864669737321321234466529333448212306449830
+div:-220645217365027594041560662624047120760954694026473,478332284603296206017913627846840038736821534931564,0,0:0,-220645217365027594041560662624047120760954694026473
+div:-72981125020238190928338132724424652132640002,39188164680782185128568299727848835374297549277320,0,0:0,-72981125020238190928338132724424652132640002
+div:848294406307295588337784985646050321749073734744419,1894284566269937543645699304914191326539279181,0,0:447817,1574693990967354998860017291904472233349746542
+div:88331621619959932308180786862825270799091494710705534,2178577739962310780960655130496700895938054790,0,0:40545544,2006897502197066182000445542767995672948349774
+div:-6856699040860275517650307648299585141626669701068,271009865938172922862180983261519271114664396,0,0:-25300,-149432624500569237128771783147582425660482268
+div:-88407824671930579360204282767163259115148101495,999762964506455261651611324045254876016161327250,0,0:0,-88407824671930579360204282767163259115148101495
+div:77210128389009986005731678815189051918123188603393,1004893588971319006745864695885807127204177369,0,0:76834,134373987661441419910771498947106517424633647
+div:297784613656392099571586950531714472282249229,38243230119670761105711715396092668555574825,0,0:7,30082002818696771831604942759065792393225454
+div:-35509945917648756037422888630539391852716391754248754,597284352710239029652457972715277271026334934549395,0,0:-59,-270169107744653287927868240338032862162630615834449
+div:801533871821359460893588251165565622439064765617,822025202425769092976017224921611946029366105,0,0:975,59299456234595241971456866993975060432813242
+div:-522010146755299559121351482887404344773949966,-3932667350437494585764045269025085811459344224177389,0,0:0,-522010146755299559121351482887404344773949966
+div:-58459624214325180544444869117416512994249719120541094,42099937836886376971951088854357470492133289729419,0,0:-1388,-24910496726889307376757787568343951168712976107522
+div:-253345562577317672511220652744246967807793182895907110,5749989880936090964050051849193062955356828797,0,0:-44060175,-2175044340819256659509727005208754118655047635
+div:929733472033240998779303334258721213318162598707,767612759141593942240674520830211174476840069251,0,0:1,162120712891647056538628813428510038841322529456
+div:964194291196691142924085838110342670268423649945,95195593030727305502485226537387747371662899678,0,0:10,12238360889418087899233572736465196551794653165
+div:-930824010798502796427972044794470458904018793646,59612624490118074742886336029812178788101136417100079,0,0:0,-930824010798502796427972044794470458904018793646
+div:4496931676886813794791418684601244183539575641824,17411178665119193136820706152905856572839870547600463,0,0:0,4496931676886813794791418684601244183539575641824
+div:-538173513290298732583524004704645684413620731176123,5191614740631357425621901873779740989648663178,0,0:-103662,-346046970959128706412664890173944661008818287
+div:645223072897535515198700423081805044495125969741938129,-4527829932821589910817760274407207149545929368,0,0:-142501613,4080777311682643434931455406859698817217867545
+div:99627943961043088669512673603139357672824609930416,466295743266513578268755141190344363951636566,0,0:213658,128046206330563766987646692761559645844511988
+div:8378463829762121913631626419465685262621092341,277603732177643189147101934156154702276101226001738,0,0:0,8378463829762121913631626419465685262621092341
+div:9842615010830513092601043514307725085136324358384,982829207195358411241726125114558021029115376,0,0:10014,563329976193962426398097410541062550762983120
+div:62320220612711436764404545275083408051364828569716359,29238061288213780350752248589890807799224738132935,0,0:2131,13912007527870836951503530026096631216911608431874
+div:-95796294809205390217092020218600576789023181059,165301144024373968274096547718999489219277029418,0,0:0,-95796294809205390217092020218600576789023181059
+div:87456781258209959765037687145068876793116934415493249,12068929953842578406244505715637579551016022265904027,0,0:7,2974271581311910921326147135605819936004778554165060
+div:4650729780737505464243409512735245030691695372618246,84864736041440063700547247893177477447164617313268,0,0:54,68034034499742024413858126503661248544806037701774
+div:-625358026462075054949936252035182773523079306781808,-7037095653882435960759081957329932874958248091338799,0,0:0,-625358026462075054949936252035182773523079306781808
+div:2568284414900282086629402504199999865573825319657504,5768783213527705673129403864116463929738223137152322675,0,0:0,2568284414900282086629402504199999865573825319657504
+div:21872791887330497853718749618057463060198347580531402,1324557936763556387760743907736237330887941028,0,0:16513276,1099563344481062563504290440813742452313443674
+div:-33663209218662096950671228753577152738857975888365,64455980252274430283628664249222461742909356825,0,0:-522,-17187526974844342617066015483027709059291625715
+div:897547639705131822906931936065160910250510030878007,5363864878695927157573012052790958211464944313132948910,0,0:0,897547639705131822906931936065160910250510030878007
+div:5009490811735999584822449253729050585733274306709319,2406843316925106774841027948556192949607544362335487460,0,0:0,5009490811735999584822449253729050585733274306709319
+div:26946852936100376197741904167965017845209833397099,308919640253848342394664627646584079095578466190402123,0,0:0,26946852936100376197741904167965017845209833397099
+div:1985893148050510215060586789904119885262534441,5866449806057188251900630030898916114586086296,0,0:0,1985893148050510215060586789904119885262534441
+div:5562239080137747796995442181907475991350284893459206265,156398892363409903713342341853412785128113829406,0,0:35564440,56612798080976501265602288199428588294379283625
+div:65178480098314895239449345070432724637440125039775,1290757832744933770056846180890168907973673153410496,0,0:0,65178480098314895239449345070432724637440125039775
+div:23657300680705528280619872949865464121904006372229057,54009346128207976631438579725539802296822123315,0,0:438022,18870935613940563883381325068840245386273546127
+div:2465896601579984309597565211236176792392608862458577021,-40289404326330144787151484318600863409012051557183,0,0:-61204,23899191274128044745765000529548307435258952748689
+div:4530895653520455283627656673385442171856783842314,-93233120674213574021733372853213159559027357138117667,0,0:0,4530895653520455283627656673385442171856783842314
+div:916112574807335146788888377531188026131378675176,967597859681274796485056494940030314717751207208858625,0,0:0,916112574807335146788888377531188026131378675176
+div:2836353387405193828295144729357504288167954496834813,-47750867938530360881039623534374164321838133495716184,0,0:0,2836353387405193828295144729357504288167954496834813
+div:888544290269727108571429100899398323213047387976643,232593764199419096127199419642853734112674182121501231,0,0:0,888544290269727108571429100899398323213047387976643
+div:-95528231285086139734583293340171808952248738222733284,793897402237626526946706417222476481392026422526754,0,0:-120,-260543016570956500978523273474631185205567519522804
+div:5037223546635984893254983907596574271648794864585,-135600768236385462209166458097331958573087149090026,0,0:0,5037223546635984893254983907596574271648794864585
+div:3597926907607703532951852295319420299540575082900605212,32397904521210638837288370977004776603517163371689911,0,0:111,1759505753322622012843116871890096550169948643025091
+div:2949870570599287735739111770944723963347077343574168440,13426005226039726224409657686289401061489856647303547,0,0:219,9575426096587692593396737647345130880798737814691647
+div:-6292945917085019054270321590350396947352956870846986425,341295410748594067077010194722238510564411359595737,0,0:-18438,-141133702441645504407620061763289566340222620787619
+div:576504230473861553261538972452278105135349421005,-435859823015036299275541119431403593387201588094,0,0:-1,140644407458825253985997853020874511748147832911
+div:513271751605046021061398181450246519536581003892,1804974737576433978846636236205909460681769870983,0,0:0,513271751605046021061398181450246519536581003892
+div:518565283589729505911763776861051767197425505162856,80256044584676536034995400588268683853363345693,0,0:6461,30979528134406589658493660247800820844928640383
+div:-8803453406819218000000306371196263081095678566028295082,-55765725990796735310893334087719738405325766157271534,0,0:157,-48234426264130556190052919424264151459533279336664244
+div:30910800403711655057148039026242334689849626271558314256,83948578597192063348545167380196449977141674761638849,0,0:368,17723479944975744883417430330041098261489959275217824
+div:49242996359867738984900367600384020935433157154372,2708783714074411929119022487862398012033030877105302717,0,0:0,49242996359867738984900367600384020935433157154372
+div:21379071756862143968426604961644165060562036140310,461158186026323145332549423710888480451753865883923090,0,0:0,21379071756862143968426604961644165060562036140310
+div:890497438806243182741322174370053431770114463163083,-553230364990398459699806691827737650133760743598577997,0,0:0,890497438806243182741322174370053431770114463163083
+div:3023647463972332206442886065358904974207929712372177354,954649340832479585995977185409104558411042237463566294,0,0:3,159699441474893448454954509131591298974802999981478472
+div:35489760963836552056324219511199170577078030263500,9911937794382297889765816250290479042378434631444578,0,0:0,35489760963836552056324219511199170577078030263500
+div:4135741741874158916022517640987066604514941788107532,-28163724964933933312984726177284380068495757852680949,0,0:0,4135741741874158916022517640987066604514941788107532
+div:545414705998769838413644038929944315836407586765492978003,40142701966897036750492630938275806447937324811027279,0,0:13586,35957076506697121451155002529209434731091882876365509
+div:75058649832069709510468311408895020488684235853480,-2888974200822060946807576793636547307530522265641548,0,0:0,75058649832069709510468311408895020488684235853480
+div:-66933551184377520017610837511897921700694960480368326,653887787579904832254964727311893728850303235046236,0,0:-102,-236996851227227127604435326084761357964030505652254
+div:2435629492619014604053848939625684854601784871657,-291893351983540450002470218001632642526157243983032264,0,0:0,2435629492619014604053848939625684854601784871657
+div:4353873124828196561972948174190449777941113312128,54820424043864696600903577780832618011158946935730643,0,0:0,4353873124828196561972948174190449777941113312128
+div:6563332558449452126564485551259042246419252988238165,698324403420861093632423144820174865039557171760521,0,0:9,278412927661702283872677247877468461063238442393476
+div:6651389855462289995786489027518276832180673970627,-491461095877924735369902036753617462691001210108931850366,0,0:0,6651389855462289995786489027518276832180673970627
+div:6927903135341590486179736781500384096788524701827,218829613953562480451106314783086433106706968172108955440,0,0:0,6927903135341590486179736781500384096788524701827
+div:545264621820945020606844611617845056531423301824882054149,875522645453735240583714479359375422140055663654,0,0:622787571,103319057246612448860090001299718413253014409715
+div:86684332448285178538540680259953842278268190530391877,1004758465343373611009533596159290181785288025548175925,0,0:0,86684332448285178538540680259953842278268190530391877
+div:-92317828450423143272179560065430627651793040689272,22070418041935886277960894290327131047538612473095276,0,0:0,-92317828450423143272179560065430627651793040689272
+div:7971256552090299009697202541746345670252715480656564528,201282600297357182844197939592816412476029915756077647398,0,0:0,7971256552090299009697202541746345670252715480656564528
+div:51609533271954429925110080029550304256694456133044809,485763884901242868745815971537580121006369686192,0,0:106244,35084506782578079607949511641880493715193261961
+div:55881591305337924534730793672599558668292512146650104410,2222509574710359486675225376172946110121737537397794673,0,0:25,318851937578937367850159268275905915249073711705237585
+div:19368449809775464181696546358821387683250538685332,24510908730652135218597094611704093063219507437128,0,0:0,19368449809775464181696546358821387683250538685332
+div:-2935049511482530629217049856269086660794528627329678715946,37471582465832914952060760873346941905859586735847868746,0,0:-78,-12266079147563262956310508148025192137480861933544953758
+div:36100788373557792247173517969159682950517798879230,5080501101336645920307905996377195554239168429725057140,0,0:0,36100788373557792247173517969159682950517798879230
+div:-619343993545565489581918826619755522056336720755028240,5722220737779420639556807213632172372985391133964,0,0:-108234,-5154212747676080127354659490977438635896761568664
+div:2214624479709129652867518274099800744215833156381,596426619358648105117142458022253139919252174606588,0,0:0,2214624479709129652867518274099800744215833156381
+div:5033621023669077052146401601213685801870950098584920712831,6799225107652133581418467714714131055036511563510,0,0:740322749,902228583435466263288772550060049562516909423841
+div:5358032037701639498140968139141468348228418868104,8558469544431829473340967206378658910509072615323310050,0,0:0,5358032037701639498140968139141468348228418868104
+div:9748963428125495559040360700047156483695054417931835757,89907138812423274211888428791450791283996367956807224600,0,0:0,9748963428125495559040360700047156483695054417931835757
+div:-37234857139625248358511007131249688678503673691725663734,-9768451005959695483831603140151504358763270636290461,0,0:3811,-7290355912848869628767564132305567256849296822716863
+div:14140350728384927368127641043017594043341305190489552,678387465698256214286200006608789600890351284725416,0,0:20,572601414419803082403640910841802025534279495981232
+div:16226406385251314022733101915283965938409231292486,-3756447461810096116929418499028120801376280771059460,0,0:0,16226406385251314022733101915283965938409231292486
+div:6545974979782747370293360546030862327851785067995680,-8744885285916351107220120754451051904389636789416979493,0,0:0,6545974979782747370293360546030862327851785067995680
+div:1152408063163445395815670313984522609667667839270597239381,95249480242199210996494814595420706184321580039151,0,0:12098838,32128876378241260984354491943697962902472875632843
+div:1690204685535914155988172971158586449220783297513957809,9929613337808118536737016690304412293482744573038,0,0:170218,5762400891834901871464168349997448737481780575525
+
+# Division by powers of 2
+
+divp2:6650822,18,0,0:25,97222
+divp2:-22,3,0,0:-2,-6
+divp2:626665862,11,0,0:305989,390
+divp2:382,7,0,0:2,126
+divp2:-8554783,11,0,0:-4177,-287
+divp2:80613086,5,0,0:2519158,30
+divp2:2476669303,30,0,0:2,329185655
+divp2:234993203,12,0,0:57371,1587
+divp2:78175,1,0,0:39087,1
+divp2:1092697,3,0,0:136587,1
+divp2:-51601200,8,0,0:-201567,-48
+divp2:-133,8,0,0:0,-133
+divp2:67494772097,28,0,0:251,117472641
+divp2:81070756,20,0,0:77,330404
+divp2:597,10,0,0:0,597
+divp2:-6061,14,0,0:0,-6061
+divp2:914736,17,0,0:6,128304
+divp2:5146181168,8,0,0:20102270,48
+divp2:908169,16,0,0:13,56201
+divp2:99131,5,0,0:3097,27
+divp2:828749,17,0,0:6,42317
+divp2:57934632020,24,0,0:3453,2905172
+divp2:374659,20,0,0:0,374659
+divp2:881062175551,18,0,0:3360985,123711
+divp2:8978255,9,0,0:17535,335
+divp2:-306454,22,0,0:0,-306454
+divp2:455535314,22,0,0:108,2550482
+divp2:-7013481097,8,0,0:-27396410,-137
+divp2:1902116776574,7,0,0:14860287316,126
+divp2:57980384,6,0,0:905943,32
+divp2:-6429952,10,0,0:-6279,-256
+divp2:-121080553817,25,0,0:-3608,-16163161
+divp2:9486785,18,0,0:36,49601
+divp2:-264976349260,22,0,0:-63175,-1194060
+divp2:-9957437441589,16,0,0:-151938437,-34357
+divp2:42280023,10,0,0:41289,87
+divp2:9445756856,10,0,0:9224371,952
+divp2:542833427595245,43,0,0:61,6271753240557
+divp2:-1989040985179,37,0,0:-14,-64895636571
+divp2:-842046065662,21,0,0:-401518,-1788926
+divp2:-36486783654,37,0,0:0,-36486783654
+divp2:12161238,12,0,0:2969,214
+divp2:522437544246,12,0,0:127548228,2358
+divp2:5771713949080,24,0,0:344020,16100760
+divp2:-192975675937641,21,0,0:-92017972,-1921897
+divp2:51399227509,40,0,0:0,51399227509
+divp2:76781489061746141,15,0,0:2343185090995,21981
+divp2:624421287579358777,15,0,0:19055825426616,5689
+divp2:585792449987,17,0,0:4469241,93635
+divp2:64111034807,16,0,0:978256,49591
+divp2:-4872049514614819145,60,0,0:-4,-260363496187431241
+divp2:-513726738058624,27,0,0:-3827562,-62639488
+divp2:-5129414645415250,35,0,0:-149285,-21103148370
+divp2:9777073958585027,20,0,0:9324144323,950979
+divp2:4917705257,31,0,0:2,622737961
+divp2:9309157350108809,25,0,0:277434508,16969353
+divp2:549889891480003,40,0,0:500,134077592003
+divp2:43259632605223,33,0,0:5036,721999911
+divp2:80760535636025,12,0,0:19716927645,2105
+divp2:95148114869248768947,22,0,0:22685078351318,2276275
+divp2:72784357307196492,23,0,0:8676571525,9292
+divp2:8695487295473310914,48,0,0:30892,162314927725762
+divp2:-999894977194,21,0,0:-476787,-166570
+divp2:422873004052896,16,0,0:6452529969,4512
+divp2:5850059500167,33,0,0:681,314043015
+divp2:279461298693250805,55,0,0:7,27259719560503029
+divp2:-2391765116812271696,39,0,0:-4350595,-221690208336
+divp2:93848076004932,44,0,0:5,5887145782852
+divp2:54463987988137594412,48,0,0:193494,268844485922348
+divp2:9735669349328114,31,0,0:4533524,691512562
+divp2:-96573804848256945392306,69,0,0:-163,-355587759787924163250
+divp2:693910684713664114,18,0,0:2647059191565,48754
+divp2:56085146568929935461,53,0,0:6226,6324008912519269
+divp2:7090107398039299,30,0,0:6603177,81864451
+divp2:767239571830013898753,66,0,0:10,29369808881631834113
+divp2:-74636360117262549362461,43,0,0:-8485171760,-6890174916381
+divp2:5461169750136459,50,0,0:4,957570122765963
+divp2:976702847245116276,37,0,0:7106448,71221928820
+divp2:3617864287401198,48,0,0:12,240164566873326
+divp2:-1309978694518086461,40,0,0:-1191418,-749976460093
+divp2:-2386749120888691269,33,0,0:-277854167,-244046405
+divp2:7266512965529689,33,0,0:845933,3826315353
+divp2:-6961513563355648932180971,48,0,0:-24732264461,-193888863384555
+divp2:5143351773441402886258,50,0,0:4568214,56404232132722
+divp2:900799510679250396,62,0,0:0,900799510679250396
+divp2:30978095034050773575947556,48,0,0:110056301970,184099523155236
+divp2:398942302365209775391228,57,0,0:2768218,44660240185115132
+divp2:914903526125867075664,27,0,0:6816562459810,77563984
+divp2:2551094792632393428431439,87,0,0:0,2551094792632393428431439
+divp2:6909886286515846175008,60,0,0:5993,427709407012247840
+divp2:461670131377821667,44,0,0:26242,15985200256995
+divp2:7884527998899506514865191,44,0,0:448183527561,3748608715815
+divp2:-17784618887403951072,44,0,0:-1010938,-9512034128864
+divp2:-2928855265612995457576576,88,0,0:0,-2928855265612995457576576
+divp2:8468445340017772238,58,0,0:29,109764431618131662
+divp2:97699128177500917404004263,94,0,0:0,97699128177500917404004263
+divp2:-901210903909447624384117,51,0,0:-400218038,-507572120280693
+divp2:-9099254471589743272646814275,80,0,0:-7526,-878753170044103808133699
+divp2:88420842262358445100031098,32,0,0:20587081616362194,3379223674
+divp2:5920604485769478876616913,30,0,0:5513992612966782,320526545
+
+# Division by small integers
+
+divv:-5721818303,-31144,0:183721,-11479
+divv:100359289911028,16,0:6272455619439,4
+divv:-80498620,-41490,0:1940,-8020
+divv:37386622,55859,0:669,16951
+divv:501578,15096,0:33,3410
+divv:6823,11067,0:0,6823
+divv:-56695604,31395,0:-1805,-27629
+divv:396,1627,0:0,396
+divv:82237128,16423,0:5007,7167
+divv:274600467,39390,0:6971,12777
+divv:258805,22852,0:11,7433
+divv:5139922232,23459,0:219102,8414
+divv:8755497783395,46470,0:188411830,43295
+divv:56370361453114,52292,0:1077992072,24090
+divv:81119249096,17631,0:4600944,5432
+divv:3925148017708459,17729,0:221397034108,7727
+divv:-289130964,59901,0:-4826,-48738
+divv:-2394107507926474,13709,0:-174637647379,-7763
+divv:-50229865870,26540,0:-1892609,-23010
+divv:3694598237147,64566,0:57222040,2507
+divv:-158417511658676756,-64615,0:2451714178730,-37806
+divv:4290308067505999,15193,0:282387156421,1746
+divv:560784439224,18032,0:31099403,4328
+divv:9207709447044,43308,0:212609897,27768
+divv:42833310641849859264,57815,0:740868470844069,10029
+divv:-95089845960500,-61243,0:1552664728,-23596
+divv:80687877739837,-30796,0:-2620076559,28873
+divv:87851714436662969875,61349,0:1431999126907740,28615
+divv:-5469457537,11848,0:-461635,-6057
+divv:-87902672172139257996,27307,0:-3219052703414481,-25329
+divv:-694576880064214,41179,0:-16867259527,-1881
+divv:47595892116434828,47204,0:1008302095509,27992
+divv:-505437926464614447947,63863,0:-7914409383596361,-45404
+divv:-747214784268033231559289,38881,0:-19217992959749832348,-36701
+divv:40648086806090824914,-26501,0:-1533832187694457,19957
+divv:23860923193973296,51883,0:459898679605,27081
+divv:-54927711987466879,-11937,0:4601467034218,-6613
+divv:4311756940677447464744993405,57924,0:74438176587898754656877,50057
+divv:6015889311543917179186719299,-50635,0:-118808913035329656940588,45919
+divv:3915173119649887691276,20797,0:188256629304702009,10103
+divv:209840208083311316090,36847,0:5694906181868573,6759
+divv:80000000000000000000,25,0:3200000000000000000,0
+divv:65000,25,0:2600,0
+divv:800000000000000,25,0:32000000000000,0
+
+# More regular division tests, all with remainder zero
+
+div:2546905999569583642767,14957376976449,0,0:170277583,0
+div:8820890915810513585008,1290654714992,0,0:6834431249,0
+div:32722399167479650872,485171756,0,0:67444979562,0
+div:281565136283209685892638788,662476076955569,0,0:425019326852,0
+div:378946105625441540737303,730177609549,0,0:518977986547,0
+div:4582336996784637790714331883462,524659399010705751,0,0:8733927201962,0
+div:30908196512568974558050436710,558351619821782,0,0:55356150882905,0
+div:22323179841972640636983704753,52956211127329649,0,0:421540351297,0
+div:52861155259463695471936251160,9468000366853,0,0:5583138277489720,0
+div:63260535208765360919938678377,42122224781389,0,0:1501832715082893,0
+div:28984143265639802151626094051438,400082299653446,0,0:72445452574997853,0
+div:3317964166851176108015612343691026488,4043377664512227983,0,0:820592198441457736,0
+div:66344183633702866132053676311141052606577,91178778320288608847,0,0:727627468320008374591,0
+div:5695550794829300030546270882518324992076491,700880200540761512031,0,0:8126282908883599504661,0
+div:39037424763225371397599506194643545880,7823304879274443640,0,0:4989889230399751117,0
+div:436302766535175847931361924986715811355695802824125,539874776595118725233603625,0,0:808155493551392334022517,0
+div:346745970223883677972239586841121624456285168,91526846077189641641348,0,0:3788461911289433710716,0
+div:52724986995800116311347732059133990047851510404883234,568154076534742483223872266,0,0:92800508125151146767566749,0
+div:2377848542111935708145523356022435793438514852230023651,78161062689778162572883876143153,0,0:30422418276855244470867,0
+div:232771550187355002750375300477927538332648185231317422242,385169380058229884085331084789,0,0:604335552717520311627548378,0
+
+# Bug fix regression tests
+div:#xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,#xFFFFFFFFFFFFFFFFFFFFFFFC7,=1,=2:#x100000000000000000000000390000000000000000000000CB1000000000000000000002D369,#xA11260
+
+div:#xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,#xFFFFFFFFFFFFFFFFFFFFFFFC7,0,0:#x100000000000000000000000390000000000000000000000CB1000000000000000000002D369,#xA11260
+
+div:#xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,65532,=1,=2:#x100040010004001000400100040010004001000400100040010004001000400100040010004001000400100040010004000fe03f80fe03f80fe03f80fe03f80fe03f80fe03f80fe03f80fe03f80fe03f80fe03f80fe03f80fe03f80fe03f80fe03f80,#xfe01
+
+div:#x0144E8D32EFB430AB38966D6CF217276A50D882C9BB1956E47F0C11F809819482F6671C7CDD70EBFD40A67E96E8728B1FB26092168F13A2689FEB0B86D689F12949DDF22AF0A030FDF2A27BB4CE09998ADFDD014B507C487D2BB6C71122AF93F13E99F22A7C5F2E728A50C7761551C4E9322502DB31D03BDED78A9301C50D57AEA88C1FEE4EAC7F0B38002C0F86D434B7D8311D4C410A0CECD6B81D40E8289F31045CC6F6C4EC203BF2A6BCF549759C92875BE633E20801C130874CAAEB8FD7276BE101898F12FE7648FB2C76C09D3643386B7F99B26FFA462DF54DBF401C8B73B5101B0A45D83774DC307ABB9F52A54E152E6FE5EBA1F5C91E0CFC2B84791413448023D6BAA4BB3B765DAC3C7D679832378C6737EAAFDB1395DDA29887653C17A4F16330550D9F71C99BD7D81777943CA1437F0C6C9AE89472A5CDC304DA0952AB154FF9F0B73A68FB5B7E661389AF3E407B4456A9FB5EC7FD7F78D0FA97C09DF4BEE8048687BFFA8B6231D9893ACCB75904A16BEB45C9B58DD4C63C9902D0C5015D2325EF7294EFD442CF7C6F837A8D6661DA492459429F9D7CE1251CA3375CFDD74A1C8EF5FFB8370245295E3C09B47D697EA3B5924F7181B1F9810FE479D2B17E63F1886053C32E53B4D6990DFE036BB50CCE32E76EB5BE5F2E0B40EFAB32D19968C0275277A4FFBABD2C5A24C982218DA3B32703381399A653A3CB9FA3009695581F18A7023727D6BE13E5D9829E9788BBC94DCFC493307101A0D7A8A212AA5FFAA45CAC31212202C23DC6ABB39D6192FEFF6FC3C084547036E2DBD6AE3DBB16D0101E10E899B32C70CEF1056DDFAD104E165F7D147C8143C6E6D08C0315D01D41D5FCDF528A8E2AF9B68526949742C691DD8EA545D9F450B54F447E52ACF59172A9BA2284703A6A525BA28664EAADA9CC9A1AA7875CE0273AA591F2AA8C20925EAA62037D109CA0EEA3824C1ABC869978B5B62F853980C,527,0,0:#x9DD4AE7AE3F3E047AB2F86F36EF8F04867BA224C9A45AC9596780B6AAC0290D95539B3274501D2411CDB86482673F35C5E41A4638DF46A28CD54634DEBE64A1E6ACE84760F8CE729DB28303CA956C1AA8026E69908252D172FCFA340B05236EDFBEE17A29F4EA5B964178B1D4EBF8AB92495B4130001D154C0AF742703CE32F707A796896EA61A92758FAAF9E4705B13ADF05F952998701DD5FC07CCC198FE167A50D95812D3CD5B67AC5AFFCD2A28654365B6C44FE8BC83A8C8856E9ED769A317D54C8E4D53FDC310DAF9677CC203032B951E697C5B26903614D1D448C2A7B3E357C60508FE4886ED8E2B9614F7E72AE7AA0410DE8A9EA328B6885D67423030B6A7388DAE88D78B1F8119A3A00C649F13525064648CB92FC88CF3A1038F2EDDA916ED8D06BA84AB4840D869A372C51EA44BC04179C5F7E08164001776D50CB6038FC968F29E30D97BBBF19C865DBAF7C1AD8D133F7EBFA2A80F5394F77DD530B88F0F323B7FC1A7EF8CEDD48FA12CE9EDAE6F1DF95FFDBD62452B214E4B51467A53A5D3C73E5408632E9E4097AA56DFA5B40BEF9DAB8E518867FD3D972BF155EA5C9A5EB17CD58074A742D5AF3DFCBC664CB5CA3FB4B0613485DFF8B5D03507D1513E399332A257DF90E7E9719BDF125430F7339462926404D531677F42E3E937A9CC83613A86394FFDF89A4BECDBA1CEDD9F6D82C4FB406A16F10E70AFF07927FECA0D60E176BEA8C4312E535AEB11B7665E858517F109BA90CEF68464219955024423D88981BC0DAF6E33B1A9283D412F16D06335EF9D86142025C37B54F0CAC5B5AE55097D9F6DACF547ECBBED87ED107543819C8DBD0099B65EBDD07D04DC74A3E2C2496D9E4E0E61D6615A7E08D3FE996DBE187750C4C1FB9B18B928B6550DAEAFAB8D7E4E8662AEBE7F77299D516BBCC8F2242B9FD28EA7460282819525F63E7E5C66E4D0C73181CE8577D3342D76CABD26D8CFB6,98
+
+div:#xC085B984D2F30F92A00B8814DCF9A909C8672B081225AA88A7293D276E46B240B96E345B76A5E2D4E5CE7F4C208616DD38CA2029C37FAA8EF2561C688DA55150788FF7F34E484596590DDE971387608FB88D92A8868F4A2F165D0222A272C5AC300AFEBB152B25D3FAB5999458B1AC27FAE5E2ED6D50E7F8FDE7E22178E4C954,#xD607ECBE4F4608C16A0FBDF0F4DC57278E937A73D2226CE8388C6B9B9DF9C58464CF3E05F29FC58B59CD34CBA4F47810D92B7B4FCAAD1860C76E091D0B1491B9,=1,=2:#xE64618B3D9A1E9B5DC38D204743994492C406B98FFFFFF95EF529A267E06AF4364F984172C9569DC33FCA47F08195C2937CD1CAAE1F954A2A78AA08AF59EC954,#x5BAA50658645474B56E43FF89470E38A4D69E90D43F0E1D5DBCAFDE8853AEDBAC364F06CE50511DEA15DE5D944D9ABBEA76EF56D1E1E2732AC396304B28CB7A0
+div:#xFFFFFFFF400000002,#x7FFFFFFFE,0,0:#x1FFFFFFFF,0
+
+# Spin in s_udiv(), rep. by Andres Navarro.
+div:45035996273705000,45035996273704960,0,0:1,40
+
+# ISL test failures
+div:-110768999339257979395151936604514986,384307167128540502,0,0:-288230376151711743,0
+div:-1141798147252782335678234520236874583761538254,990352029122461210705605426,0,0:-1152921500311879679,0
+div:-11417981504429295188771564013355757832033533955,2475880072806153026764013565,0,0:-4611686014132420607,0
+div:-19746054620424668475119147467564405598366894325375493578959094720,137015778031883893401769208133025156060969696320,0,0:-144115188075855871,0
+div:81791893044,81791893043,0,0:1,1
+div:66461399479760783996783510248698675,57646074961906893,0,0:1152921504606846975,0
+div:4951760153682756594365890554,8589934586,0,0:576460752303423489,0
+div:9903520270472025075672416238,25769803758,0,0:384307166770626561,0
+div:11141460315522012760862883825,48318382095,0,0:230584300062375935,0
diff --git a/polly/lib/External/isl/imath/tests/egcd.tc b/polly/lib/External/isl/imath/tests/egcd.tc
new file mode 100644 (file)
index 0000000..8d9b695
--- /dev/null
@@ -0,0 +1,752 @@
+# Extended greatest common divisor tests, including
+# constants satisfying Bezout's identity
+
+egcd:7,328492456,0,0,0:1,-140782481,3
+egcd:930165221,819,0,=1,0:1,-85,96537294
+egcd:166,0,0,0,=1:166,1,0
+egcd:44,37824113,0,0,0:1,12894584,-15
+egcd:0,93,0,0,0:93,0,1
+egcd:70522336,34102,0,0,0:2,-2785,5759331
+egcd:863,25,0,0,0:1,2,-69
+egcd:66399,5533253,0,0,0:1,1229584,-14755
+egcd:4107,14863,0,0,0:1,-1643,454
+egcd:7,482337424,0,0,0:1,206716039,-3
+egcd:477004716,83909,0,0,0:1,26067,-148185319
+egcd:76,9778759,0,0,0:1,2187354,-17
+egcd:0,8367890,0,0,0:8367890,0,1
+egcd:8335,721158457,0,0,0:1,-159892121,1848
+egcd:90370,2894953,0,0,0:1,591452,-18463
+egcd:67733,1618312,0,0,0:1,-106035,4438
+egcd:166575,4485123,0,0,0:3,-397448,14761
+egcd:28271,6,0,0,0:1,-1,4712
+egcd:763,53576,0,0,0:1,-18397,262
+egcd:52077184,5129,0,0,0:1,1375,-13961031
+egcd:6552609311,525555,0,0,0:1,173606,-2164516163
+egcd:6221599,7764515429,0,0,0:1,2913991310,-2334941
+egcd:89021590,33904,0,0,0:2,-5437,14275908
+egcd:739392892,9335369,0,0,=2:1,817116,-64718359
+egcd:8394864191,48,0,0,0:1,-1,174893004
+egcd:55087825,530530,0,0,0:65,-1805,187423
+egcd:243,6823694624,0,0,0:1,2218402779,-79
+egcd:7846,430402,0,0,0:2,-77457,1412
+egcd:67053681,8634785,0,0,0:1,-3793089,29455346
+egcd:6364928874,55124010,=1,=2,0:6,4571384,-527837761
+egcd:3482048,995555,0,0,0:1,328872,-1150261
+egcd:33038872623,62,0,0,0:1,-13,6927505550
+egcd:75504,62,0,0,0:2,5,-6089
+egcd:15,436212,0,0,0:3,29081,-1
+egcd:72635,93361,0,=1,=2:1,-22347,17386
+egcd:7009,4308,0,0,0:1,697,-1134
+egcd:40446737340,4212231,0,0,0:3,100060,-960797387
+egcd:728456835,694701023,0,0,0:1,99101538,-103916923
+egcd:9355087294,2631,0,0,0:1,790,-2809015189
+egcd:54733,8862614,0,0,0:1,-1246171,7696
+egcd:38730799075,40635,0,0,0:5,-514,489913393
+egcd:72,98,0,0,0:2,15,-11
+egcd:1322949,68,0,0,0:1,-15,291827
+egcd:49271099715,8633675426,0,0,0:1,-3947828585,22529669726
+egcd:175,762975785,0,0,0:5,-34878893,8
+egcd:321,55550,0,0,0:1,26131,-151
+egcd:217191,451486096670,0,0,0:1,198071748991,-95284
+egcd:681,2323372,0,0,0:1,917749,-269
+egcd:78678,523426,0,0,0:2,98880,-14863
+egcd:90350809087,38042,0,0,0:1,7341,-17435079373
+egcd:633,4435395170,0,0,0:1,406402717,-58
+egcd:16360,606577002,0,0,0:2,-128322922,3461
+egcd:9669450329,1009,0,0,0:1,293,-2807878044
+egcd:5871172260,26773591,0,0,0:1,6401741,-1403835749
+egcd:5017125540,8367,0,0,0:3,71,-42573911
+egcd:619,8820231506,0,0,0:1,270734085,-19
+egcd:60596719455,443,0,0,0:1,-151,20654863742
+egcd:6752409,94193,0,0,0:1,3303,-236782
+egcd:14045780235,33398209741,0,0,0:1,-7792585660,3277209961
+egcd:9145,27764492144,0,0,0:1,-4065243847,1339
+egcd:63567135,7519707417,0,0,0:3,-485762107,4106344
+egcd:875276189593,31047471995,0,0,0:1,-4089317138,115284166233
+egcd:531838714305,22614,0,0,0:3,-2211,51998558297
+egcd:4134506738511,2476,0,0,0:1,-377,629527076098
+egcd:6185136988713,1891462493,0,0,0:1,-495247968,1619475161045
+egcd:374166745968,81724,0,0,0:4,9131,-41805547421
+egcd:62423829,4320571,0,0,0:1,-1655596,23920135
+egcd:4949666413,1501091102,0,0,0:1,494932087,-1631978715
+egcd:956385784303,12089922808,0,0,0:1,1485803831,-117536040949
+egcd:6140630879643,9491202,0,0,0:3,631459,-408542209367
+egcd:211369,28015233,0,0,0:1,-7466081,56330
+egcd:8011144,24386,0,0,0:2,4799,-1576539
+egcd:9723,761305061,0,0,0:1,146419877,-1870
+egcd:24432,7899,0,0,0:3,892,-2759
+egcd:9912899,223787,0,0,0:1,82520,-3655317
+egcd:30742811109,445709,0,0,0:1,100330,-6920269141
+egcd:6445714509994,5444765,0,0,0:1,1710399,-2024833698457
+egcd:7932710,53078817369,0,0,0:1,-4132035559,617539
+egcd:3337840732,3077034,0,0,0:2,723227,-784527093
+egcd:718292818604,81025428743,0,0,0:1,34254894424,-303670650665
+egcd:326072,253,0,0,0:1,-45,57997
+egcd:29893828809270,93736826647521,0,0,0:3,-7295461626941,2326612589313
+egcd:4480264,223642,0,0,0:2,-23286,466493
+egcd:176957076,161560781,0,0,0:1,-31655390,34672061
+egcd:37146108400624,62308785533,0,0,0:1,28939329218,-17252518260107
+egcd:368208150951,692481145480,0,0,0:1,61559555031,-32732631176
+egcd:6314981,15499,0,0,0:1,-3877,1579662
+egcd:2805866,671806182,0,0,0:2,45436714,-189771
+egcd:98242818233,77004291671,0,0,0:1,37912166082,-48368707255
+egcd:607152,2932056,0,0,0:24,13034,-2699
+egcd:329110,861060931,0,0,0:1,423790795,-161979
+egcd:6035746008,726247945,0,0,0:1,-51545008,428383417
+egcd:388326,4784349702632,0,0,0:2,-1147292297345,93121
+egcd:34137115145,947284,0,0,0:1,456621,-16455174641
+egcd:9207216089,860347,0,0,0:1,-394196,4218585935
+egcd:8112578025453,2680608704,0,0,0:1,-855589147,2589349837748
+egcd:4997261,749601100642,0,0,0:1,-67513226341,450081
+egcd:852403018665805,68601329,0,0,0:1,-30001234,372779110814299
+egcd:92080405,52081391,0,0,0:1,-12636003,22340576
+egcd:60095571,4414432667835,0,0,0:3,-74437007062,1013343
+egcd:4981195051773,905850760614924,0,0,0:3,-146240346450057,804163027486
+egcd:9685579,9592868,0,0,0:1,1793043,-1810372
+egcd:59530646,36346354116,0,0,0:2,-4115037905,6739902
+egcd:1435163995,69604439462,0,0,0:1,7586354849,-156421967
+egcd:99926066,887606404471,0,0,0:1,169670756253,-19101407
+egcd:70441698,3974125,0,0,0:1,58887,-1043777
+egcd:849350185,211717364,0,0,0:1,-59186631,237440024
+egcd:20085073436,2395589822,0,0,0:2,-341128500,2860085191
+egcd:1126006461820852,819773895887891,0,0,0:61,-706362472938,970229368007
+egcd:70904095451052,2233930,0,0,0:2,400136,-12700165688899
+egcd:6758999,15939222862291,0,0,0:1,4123564111309,-1748590
+egcd:430279300935,431963821489,0,0,0:1,98776246963,-98391051236
+egcd:55721139210155,7073166691740,0,0,0:5,-369561824033,2911341799388
+egcd:192435034269048,1832500,0,0,0:4,7198,-755878513871
+egcd:15747650667716,36009594821,0,0,0:1,7200472117,-3148897400951
+egcd:38881764321,552729171,0,0,0:3,63876322,-4493383429
+egcd:691050011,51977919,0,0,0:1,22745801,-302406990
+egcd:52540041952180,2156326222,0,0,0:2,-170294052,4149305677871
+egcd:7905452,6213885,0,0,0:1,2027303,-2579183
+egcd:3430895541193263,119720318,0,0,0:1,-12421015,355956329656547
+egcd:78945450,1569850634390353,0,0,0:1,-213574967886499,10740367
+egcd:3026195347029,48776084,0,0,0:1,709073,-43992736549
+egcd:22612793613368,78277930892526,0,0,0:2,14856095743435,-4291603305253
+egcd:775918498,7426337401,0,0,0:1,-3568692411,372864079
+egcd:66668332441496166,5313627445077186,0,0,0:6,-18855448933863,236573103938824
+egcd:3800017785952,66078608868917137,0,0,0:1,-5030282046793581,289279111249
+egcd:8238037234,2941537491408,0,0,0:2,282888965705,-792255696
+egcd:9547120368107346,29456344,0,0,0:2,-2851235,924116168074373
+egcd:721478459,29799838078,0,0,0:1,-4113566985,99592822
+egcd:463484777885,77160851,0,0,0:1,-38346752,230338774171
+egcd:6668812562,5426227269,0,0,0:1,-1878258319,2308372291
+egcd:7020839924454,9619730190140,0,0,0:2,1676947567713,-1223899236455
+egcd:5581687877912,4728620673,0,0,0:1,-1477827499,1744435091593
+egcd:86212837117,93176774191319388,0,0,0:1,-16333778951401391,15113008971
+egcd:10486952786566311,8072710949230,0,0,0:1,162596692991,-211223200405940
+egcd:332388514681475,314477095129839383,0,0,0:7,-4152534349932681,4389046916654
+egcd:1878789616020411,634591014351511065,0,0,0:3,-55735306584035142,165011657725421
+egcd:853435249810090,294022990301,0,0,0:1,-71973674612,208911796010781
+egcd:800760331,479138587,0,0,0:59,2283452,-3816219
+egcd:310386781,45470476445,0,0,0:1,9204755541,-62832736
+egcd:206381927221,426737049973016,0,0,0:1,-51635348161827,24972293048
+egcd:80657906841,97722845343178,0,0,0:1,-44940641023991,37092841744
+egcd:3626879556739,974287797969673,0,0,0:1,-416739368163900,1551352175437
+egcd:12353260720882,167588026304493,0,0,0:1,-4766112882926,351320057681
+egcd:5680097354,954648204845001,0,0,0:1,-206590628821018,1229201373
+egcd:8495790423,19792054180,0,0,0:1,8077970807,-3467489852
+egcd:1808291492597692,96814519920612,0,0,0:4,-3825789187820,71457690917437
+egcd:796275712123233,71773988020895279,0,0,0:1,16421100444870785,-182179140537376
+egcd:62156477407557,3665981752,0,0,0:1,1292733717,-21918214413059
+egcd:2921017132462,944466357361,0,0,0:1,-167559490864,518222951729
+egcd:70129038286402,2652828624150588660,0,0,0:2,61204814273941601,-1617984186560
+egcd:4099194006860675,712258835980,0,0,0:5,-46544273205,267871728840131
+egcd:18993264993,72866008153094,0,0,0:1,-10126377677909,2639543177
+egcd:37137778422333201,725902397772208341,0,0,0:3,36710995342741392,-1878165459827929
+egcd:77046543323827,91919074661304,0,0,0:11,-3080180234575,2581806232959
+egcd:50946730035622,6841431278091013,0,0,0:1,790206978840254,-5884508662999
+egcd:778417902091877810,3526771827155035,0,0,0:5,-62143495200058,13716115340897371
+egcd:7357629905645982343,273989149651,0,0,0:1,-10489681694,281687051588686593
+egcd:59999050131295751,4402788959646093,0,0,0:1,2181599081375342,-29729763077344837
+egcd:68611931054045254,72532452638242572,0,0,0:2,5482399071936641,-5186064629726171
+egcd:8597485693846941640,9852318416413,0,0,0:1,4640854869916,-4049776069443081003
+egcd:570460270963,54720108308,0,0,0:1,16083505887,-167671472335
+egcd:43617503830797013,452251304617430,0,0,0:1,76760132288467,-7403152472886549
+egcd:73871669508560399,48493623727,0,0,0:1,15908333574,-24233601655059575
+egcd:99534170067866609,8533916062,0,0,0:1,-3636610149,42415108188475141
+egcd:1885231469789,5484240550249,0,0,0:1,1215645072521,-417883264932
+egcd:1988347340743956951,7107237557789347,0,0,0:11,216195821117034,-60483750895153609
+egcd:1028936133037327271,5510465055402,0,0,0:1,1073852868395,-200514113917520622
+egcd:908361247108559,833255131023,0,0,0:1,70168847825,-76493572911138
+egcd:105122420688920,8437707543309,0,0,0:1,1099150493096,-13693928112891
+egcd:7268354783435841902,933995610637335,0,0,0:1,177721439316803,-1383028419904388383
+egcd:50338474800791504516,946966290251750,0,0,0:2,-82754441959453,4399029230620270937
+egcd:38695580832418,77020806554,0,0,0:2,7049841355,-3541870284322
+egcd:460793682039951322,360995931125673,0,0,0:1,-12872500500857,16431118446002835
+egcd:9791371944228644211,37881615337394730,0,0,0:3,-994456930616087,257040192279396732
+egcd:726186734680,24419809216698234959,0,0,0:1,-2766640019167190414,82273258719
+egcd:529564016606,376298866055896536,0,0,0:2,28277719651140475,-39795131343
+egcd:145541869208926297,19688885314609703455,0,0,0:1,-4361261236227472297,32238803887896062
+egcd:39778456127502718844,81278417471936841,0,0,0:1,-7120109086823404,3484651347093815497
+egcd:7809654411174,1244628241216910096,0,0,0:2,-284584948977462005,1785681883582
+egcd:247581683736939421066,245039298196,0,0,0:2,-51357390229,51890244702955249521
+egcd:667668476732052,476696223555,0,0,0:3,60657763034,-84958248556823
+egcd:2229399707506,39201358276824482440,0,0,0:2,-5131877014016252583,291852262700
+egcd:4767576564991009579,340159717388,0,0,0:1,-29682941117,416027199034854288
+egcd:748410307121741,730540185467629182,0,0,0:1,-213318504992896387,218536599371724
+egcd:2356182915322420038,81237995138900716,0,0,0:2,5252342047370707,-152336090720664004
+egcd:6513077506735657,306517877388663388,0,0,0:1,85680643466766665,-1820594206381108
+egcd:216282311653914599395,911124646576,0,0,0:1,429112007291,-101862393081040854019
+egcd:59815399922090959,5110979162439569056,0,0,0:1,-1114788966780819601,13046726616842810
+egcd:477652083813766,624733750918729402,0,0,0:2,-154413302241487321,118059630163644
+egcd:659935429542750939,44886608128116509,0,0,0:1,15839652572247565,-232878989079292726
+egcd:54504214226951518003,387724255017508609,0,0,0:1,31301361124239357,-4400178916414896230
+egcd:783331167504862965,48609697533,0,0,0:3,-629742688,10148120643700831
+egcd:7643973606720,70743283292590583724,0,0,0:12,1182943528930131602,-127819754647
+egcd:4273152632680100030114,1455223242316512,0,0,0:2,12098554144849,-35526486240961014982
+egcd:5862269731025091,3136791365228,0,0,0:1,-386529556073,722375272334573
+egcd:659628551534893059484,5950075862222037,0,0,0:1,2470161881316403,-273843450328876151623
+egcd:9482121506846253,34058669367564240,0,0,0:3,-1589045402569649,442399009322730
+egcd:65396942933391,3530693943836047978,0,0,0:1,1333698073169157271,-24703295773820
+egcd:24559856763503,6667927595346,0,0,0:1,-250002320323,920829011695
+egcd:4843560767022,8140092963222,0,0,0:6,-479036307613,285038693786
+egcd:7703573212864,4497158779255,0,0,0:1,1735016188064,-2972059668409
+egcd:8411329856643749667337,6927690295201914990,0,0,0:1,57955419569688883,-70367197465289023043
+egcd:311630305921790132,36794945100846,0,0,0:2,5335676048581,-45189858410215015
+egcd:12252240244679740653,21854667756737479,0,0,0:1,7408241549029968,-4153234277439483257
+egcd:914930916911818959,73054804640859,0,0,0:3,3000864169057,-37582516567124740
+egcd:144437770651525337,7176192389740,0,0,0:1,-2917598661927,58723543558714060
+egcd:9658485554428935101,5617211853860547,0,0,0:1,449096244749153,-772196190086168116
+egcd:344028716311850,2026849525600172204430,0,0,0:10,4273604619400616489,-725383257448
+egcd:936445752013986984,883181511511066630902,0,0,0:6,37504920718991502298,-39766823953131263
+egcd:8136225792202716788767,6604882712946357,0,0,0:1,-763274997603269,940240423932206378732
+egcd:577476567105329156936,1256480674248716110951,0,0,0:1,165865135596220858037,-76231358802105687681
+egcd:58801491048115,31028000846825692159030,0,0,0:5,2620151256531588957285,-4965476229559
+egcd:9973707804728263847551,53630829606521208326,0,0,0:1,16368451878013344235,-3044035631088017117934
+egcd:17121194233870838,44442113181771232,0,0,0:2,-5375949729958541,2071068923785980
+egcd:194930254933589618442,76996294363551631,0,0,0:1,-38281520562566769,96916697409778838629
+egcd:6740972199816713986701,3164254690674619824,0,0,0:3,304736351600199807,-649195300386062944621
+egcd:33100303896200,74054854499575190726143,0,0,0:1,-30231828546967434629772,13512722683807
+egcd:80391303224075976,94483334960558284,0,0,0:4,9695304929308312,-8249266378534037
+egcd:954262165857127978158,3790250771466830,0,0,0:22,53714840833849,-13523654091347297164
+egcd:50095431507743637803,32894122691956397938,0,0,0:1,11834908275426407707,-18023731548159747940
+egcd:2173109072764661515,71129381706084812,0,0,0:11,-844279059631827,25793988931499293
+egcd:52743975673113,1252477537471129,0,0,0:1,198187508901071,-8346015665318
+egcd:3400327281633151,431371474891473455,0,0,0:1,205422443946739001,-1619262239320730
+egcd:74672816465806151314169,181861345000582103629,0,0,0:1,27254332141007722192,-11190710933415108645643
+egcd:474476291935913056166,8171705897201808883848,0,0,0:2,-1170007477720025417249,67934506766326698557
+egcd:984130837655605609160519,483475686999411456,0,0,0:1,30260545442548343,-61596346486657707977136
+egcd:843814604333653656215922,682249690564087391733,0,0,0:3,38030549017256981789,-47036639393790777318635
+egcd:81202937258153735712,402831457452712664,0,0,0:8,13421756749885189,-2705563458591282665
+egcd:6676582659534088,44001550460545760069911,0,0,0:7,1211181274540019933457,-183778794394919
+egcd:533144411502628328950,28324708505596385902,0,0,0:2,-1398171989606979473,26317219908236327476
+egcd:66581532981454422,14028130038905754906,0,0,0:6,517088823759485624,-2454252026321337
+egcd:2130464987067329677,8494848036198574143,0,0,0:17,-7062764335631653,1771305627228686
+egcd:38575228438194,1957852613377826515509,0,0,0:3,129868619328885840117,-2558778747355
+egcd:49489410876608829677,7951728226267755060269,0,0,0:1,3860693946871021816365,-24027917399688934216
+egcd:42770760432244640,44801059402399356,0,0,0:4,5296495695549791,-5056468564505481
+egcd:6441135230593242548407,122558774271814342,0,0,0:1,36997056041193015,-1944398045028139827512
+egcd:264902435468141506,823887292259809475,0,0,0:1,120342636882041621,-38693469240520931
+egcd:4615387069156629,5068444832682377449634,0,0,0:1,-2198712149475939054985,2002173834082799
+egcd:36444520368083130251,10180304221606287367,0,0,0:1,3547776565155412457,-12700702501188462318
+egcd:2705117385426850078,311987185491928483938918,0,0,0:2,48604570190513342423426,-421430988026778607
+egcd:6447135503640541,17828837916381145944,0,0,0:1,-5783155035268931939,2091262724234125
+egcd:193981008037679996757,19120164140966891788,0,0,0:1,-1586493554887429351,16095553194700936591
+egcd:64332664201713053,87185087911910266023,0,0,0:1,19609332567597552767,-14469453865385550
+egcd:95102121410339574,293671951113485105415049,0,0,0:1,106953417739910482828300,-34635575105438351
+egcd:65154144550755804519,4285018859628755463,0,0,0:3,-609852871996317628,9272874514298907745
+egcd:7165578261547505,763555532759171606,0,0,0:1,-174953906015578927,1641852952316256
+egcd:5442458157933637000759,66760245307752621192750,0,0,0:1,29074397305494111881389,-2370215838375818515507
+egcd:42143136951989716656,827894838488320343515,0,0,0:1,370905938581526544116,-18880586083238491373
+egcd:5295415444080909673074,5092055214749737510,0,0,0:2,-79624725963726612,82804680196255688279
+egcd:118338007742261895,5763460050841396334194,0,0,0:1,39330742550539324473,-807556862613311
+egcd:57063373752305154812,692318043858914149958,0,0,0:2,-70368857818416495450,5800057458900243919
+egcd:49356454157781030126,38544768358653028317,0,0,0:3,-1638594177535601368,2098214669607345263
+egcd:98128015703777581473188,71751790667213936232,0,0,0:4,1131009376775245397,-1546772628993544572326
+egcd:95760302891303565510312,49856290116188787587208441,0,0,0:3,-3088248308134997399905293,5931680690668486327459
+egcd:40420853393811300450702,87550419156538713298378,0,0,0:2,-17578959514036280337967,8115969657005769255362
+egcd:422899389299537033304669,8005135756870427773,0,0,0:1,1826207874406781724,-96475839795446732840135
+egcd:179674525723481348814,69928617693608886497807522,0,0,0:2,-17176881265197584758274313,44134262860096480672
+egcd:7789649675160016285918,417200326088447794162,0,0,0:2,-94835249783231044512,1770692222592009406889
+egcd:177465346778880323,60001957340989928039014267,0,0,0:1,24984084908903832591086708,-73894410929202849
+egcd:151317887902583777,714764598301032762905,0,0,0:1,183810322507486902798,-38913216802619989
+egcd:51078283105727024828148762,75871019523002756919949191,0,0,0:3,11485911105291504406000748,-7732604924142639690250403
+egcd:4760258696724862445736876,3471524299806755969674,0,0,0:2,856359023818037629295,-1174265290574387452901557
+egcd:261631865216813032,5681600833992180785,0,0,0:1,709538151924588968,-32673500929505135
+egcd:720979639879195715,783996604122129884144,0,0,0:1,376019130933410843211,-345795040670644006
+egcd:36110696808763448994,31631881940059268291965,0,0,0:1,-2383142920549669168891,2720576398805277667
+egcd:658675475456498963270,36727416735327035,0,0,0:5,3298655738340100,-59158629436863579657
+egcd:61220559308972890,667000611959077400,0,0,0:10,-26640911325438571,2445232377004423
+egcd:40220367562984968880458,89139127967069561321,0,0,0:1,26548285035112330181,-11978822394062224915657
+egcd:268590992017536259191399327,61179964518317742544264524,0,0,0:3,600487671783052773266369,-2636248332740054832357965
+egcd:834052968320156609779657,4980797187259222752640,0,0,0:7,-284790928354963265969,47689297559175644596626
+egcd:2304058851313997444536039,9169653702125462923229,0,0,0:1,-130649054522071275152,32828187439358617259301
+egcd:58451234918953535616,811141856188592686,0,0,0:2,-99923944925714621,7200562927828430183
+egcd:822396573998213269,36745646576975841888238,0,0,0:1,6092800501072128894693,-136361684305643132
+egcd:17578713797195009784,68270861083809145500872866,0,0,0:2,10088182822145144907111889,-2597554443418689739
+egcd:76377711400349230044,28120345054943065861736,0,0,0:4,-2062007766043178352451,5600622387542163743
+egcd:76762683909293356952194,336742697639190379,0,0,0:1,-75512400432970134,17213541871304020806343
+egcd:718613829360289007965846364,56996018089280939789090,0,0,0:2,-2524732262127936558957,31832180208715887766629415
+egcd:7295663098480852718,14423786075811123687515222,0,0,0:2,-3469836111463770997012649,1755070072665297072
+egcd:15211419951748549035347,4699398308750843428412139,0,0,0:1,6946404824215205904662,-22484725489054469667
+egcd:17150054056990843968091,37598518807922567502949,0,0,0:1,-7518057558796082945642,3429259918338934660227
+egcd:77024520800929983778,12004114915728728552,0,0,0:2,-2120493047554731255,13606164385813996546
+egcd:6552691621635472445,9454879100164928596390176,0,0,0:1,227870736946333719833045,-157925516866534574
+egcd:380663675562604264,44830819384430864282488995,0,0,0:1,-16273991432157066610391981,138184344602692003
+egcd:2230931798936940632516431,790824149442647895647799515,0,0,0:1,331133100467518126491471001,-934133541615045780146562
+egcd:95014513131992964781831,6426665041014306194430759004,0,0,0:1,239158098260009820460949479,-3535813695397102752012
+egcd:45587301786773822623,12200508698455746294,0,0,0:1,-4813378778407164821,17985229666126454386
+egcd:544408824836312286809239334,47857195870319437437969,0,0,0:1,-3285821056099126073737,37378495485205612484001511
+egcd:368559293555584153297233,863543676262890554,0,0,0:1,182689982444744817,-77971841749691835919840
+egcd:286838686809753815604,290258385092986016322966,0,0,0:42,-3439904517337276235112,3399377055680475215
+egcd:247310884666793355418391440,8146285853652299839620,0,0,0:20,77671205038431135851,-2357999065620583642815591
+egcd:723355341278352532752,2716643920855001136283,0,0,0:1,-647343221413917008844,172366784345707798483
+egcd:4747770341760547358928,3900131915460402444898291,0,0,0:1,-48191502504962163320631,58665242939847808459
+egcd:62996662961434499047,9733114500463650951,0,0,0:1,-2609387863316684519,16889016126666164094
+egcd:85408851497556727644592364,176571048356555258831010,0,0,0:2,10373200197110227040698,-5017601262696030666591307
+egcd:3859907398033663982,96346670011473683698108682,0,0,0:2,23114207598170766553332033,-926017483502444222
+egcd:372461979322690243,540222307494848292,0,0,0:1,-216390837474738389,149192949855933584
+egcd:7516220184290968225960,300386413342210429744,0,0,0:8,-15749172306804321015,394073238736743444182
+egcd:6108319432277782804,82931541043539126216389,0,0,0:1,14516925059734418621210,-1069243551048233051
+egcd:7230921518942393713547539642,72114378808806856868,0,0,0:2,-16718190793824596963,1676335948054892581924595036
+egcd:3825709037512543084718302,2651564896588437884119958,0,0,0:2,-590856988072406763814624,852495415840807251070275
+egcd:911054271475454361570597270,621648474138432132340027,0,0,0:1,177507600588673885690903,-260145507410443226451439067
+egcd:65298316398221703103077598,534642984572205231284578626,0,0,0:2,27704620476219826795345676,-3383688041836699547596371
+egcd:7540589021419394540066,951669501600612914519183,0,0,0:1,331190832641661629577944,-2624202995275280476641
+egcd:9761932411251041918483933,382356303803298271385489,0,0,0:1,-174786897144790383992576,4462481353982094260231281
+egcd:29200924565006580097578,89587549755035053290130260583,0,0,0:1,-12724495224425705121391303686,4147529720281901737723
+egcd:99943694998442521323946016389,333424364613212729745462161,0,0,0:1,-5705329051108614724676136,1710167963313731051974706105
+egcd:5690154324629967337460,1632283715496329281241648395,0,0,0:5,56290934452012514099439970,-196230655901744389641
+egcd:1925002725694160249373602782,3526543575073330036110,0,0,0:2,-3919880867811415654,2139710227393535147948013
+egcd:52670953750351044438983990007,6419267762739355812530600,0,0,0:1,-203989820551702316343657,1673763862318789910544563426
+egcd:510257531185418430181,66420793633874998820433,0,0,0:1,11533829131275308680081,-88605131851925052020
+egcd:624028484658998836131051,290010878235398822043835106,0,0,0:1,-122928139167747537660445423,264509596583252200647779
+egcd:82126417002597285652,9711508871315310668247843,0,0,0:1,1977141009391962114230902,-16719905131309273821
+egcd:5313586393962705049080,76998532453336088964044527295,0,0,0:5,7351068169285296934826456278,-507289354236443273333
+egcd:7446329018924231360114,281705996976935084208360,0,0,0:2,61771771846187437852753,-1632812017439206420394
+egcd:92632241917277332460964,41225270861482533930349836,0,0,0:36,-232831718389563965069268,523167552648600475583
+egcd:505206995627529688155,30108238444718526549709911,0,0,0:3,2815345833969785332425863,-47240638572857371542
+egcd:350682530039234485322546750017,732856831499478812681071778657,0,0,0:1,114634298969783930190784719020,-54854160136223590904319282827
+egcd:73936773633607324540860765536,5462243107704027813296706,0,0,0:2,434277168489579388852756,-5878363900642009138649028319
+egcd:9329801698838720379683494,2642515095105038480589941,0,0,0:7,174846258141415342001899,-617321323637898767831439
+egcd:25822034647579787624514946804,190739018295930506821730846235,0,0,0:1,17294294853830144704620058819,-2341282265740751416856382785
+egcd:7949963986480899256177301,54250986866391077101265062,0,0,0:1,-4923803556165288789334505,721536385032484788574613
+egcd:3746930579001676751120,99207386871851914556838486427,0,0,0:1,-48583865685594090026984533471,1834947756648482241123
+egcd:26584400729548923821953289,4186329192513161170925,0,0,0:1,1656738211241031433334,-10520766639746090510993433
+egcd:15015617716874132201457077873,908213746723440854928237000,0,0,0:1,408879360871055069439454937,-6760056426484746584749467457
+egcd:941171208223609049472714,2820721728009499408048129,0,0,0:1,-561073227079218020506735,187209522225614099075479
+egcd:30137430783951200466620,7932600136613507821178378958,0,0,0:2,874263946876564747820132932,-3321492162990162597361
+egcd:55007423087104738440174209,45869037869891649236,0,0,0:1,6370717719612306117,-7639941477849380770592557
+egcd:49096256950991848579874131467,931448097952317628160996789,0,0,0:1,-326595408525690731353759748,17214713445914733493338694553
+egcd:1122894299337591195948255,54881121839952705699464175,0,0,0:15,1530959605417535453487243,-31324174065771247623514
+egcd:35498057471655773087035017,85668857880959672128179,0,0,0:9,413483537492374633285,-171332532504207423622284
+egcd:1887739328175786669349,5857986692383902136266,0,0,0:1,-1152123029924601355085,371272259343532579901
+egcd:291707312665735093614825955052,7207353925931727830829,0,0,0:1,-3501220426060812684211,141706874954742490398970247737
+egcd:95531532857951877080714695655,1267695778421377857836,0,0,0:1,437662312686039158539,-32981534147821284545085645329
+egcd:74484904487858142015156737,351049851111701482889769961,0,0,0:1,17139443017007319377607732,-3636605376854762326364603
+egcd:2136069932966937675469,7447531079022134243581196506246,0,0,0:1,545901561496939760038844699835,-156573218627833145909
+egcd:509775218017409565394932197,216635621683624922457211,0,0,0:1,42814883976773638426025,-100749667317060906989689284
+egcd:745276060382671550825981532388,5112220648677904268244,0,0,0:4,-58944865145259393149,8593173083522474449221607614
+egcd:8078258267292267766114067,884100779411269652418038495,0,0,0:1,278129835236887309130321543,-2541344486065477531385724
+egcd:8844980710175781452273298,935135907771717589995041479,0,0,0:1,-48834539676535952819435698,461901374804996053728595
+egcd:58087603156751215661949004,58712010607326754590110,0,0,0:2,1191143911590048935583,-1178475990232715912474903
+egcd:5679173086064233367773646048971,12789890243264425121239084,0,0,0:1,105424447625040632402467,-46812261417225737221083455184
+egcd:77653936311643667916482493998,15693437224085205047080,0,0,0:2,2640971088036021388319,-13067997644040407190632050442
+egcd:7284686326593740714529339,90971885163627008124264246742,0,0,0:1,7198130762602806275082298459,-576399232016044918973300
+egcd:30545805868231898661181062,9266612086889390909321896160792,0,0,0:2,-538109282848491556444597462033,1773785449920680245879519
+egcd:5874785131042125952122412011,2349616696032997520626166708,0,0,0:1,561505530055217292587132395,-1403941478853022044849375718
+egcd:260436619859311350841971,1212092952552738381785471705126,0,0,0:1,249307384938854393628000175415,-53567486307626529321214
+egcd:2081870677650494937076,343501716877184044936575,0,0,0:13,-8002592767368064135037,48501542813302049871
+egcd:5691817817445639700141386839865,8687746818925263901770782,0,0,0:1,800431353877405067350643,-524406331883086413378341354467
+egcd:7181315131090723377262366519,979729982933337084774328653741,0,0,0:1,234315848781865941936193642222,-1717509905406328622700624837
+egcd:42080505166736566441565451216016,76651513399029916866847,0,0,0:1,-10862717669575888116265,5963465387040535737057564145103
+egcd:3576584500173313993122814232472,956729492745224694909152831129,0,0,0:1,112997896952360433126909373108,-422425074022064413751985822775
+egcd:39436344864081129175577,1167601129966960865519531141627,0,0,0:1,171787444425430917487358673786,-5802211669555479977323
+egcd:4257657006586752810590,77147349594877154853239911600,0,0,0:10,563538244311585376718458939,-31100907120886287790
+egcd:202401109849117829323361,272785163230303985302397208,0,0,0:1,23898973633160449229831945,-17732558216601391500943
+egcd:428080555595049024501717,58005872228568473578325314236,0,0,0:3,-27025471292559437633908505,199446682235027309708
+egcd:65986801519081050039948301,606919157648734368493531958309,0,0,0:1,177217106981913490775680119487,-19267788661516250973518154
+egcd:32012062136782881389216056,8869128247524938255824580,0,0,0:4,65752954911363551966964,-237327459876009040631431
+egcd:1659494763900889556967676,44291944525456085901327930,0,0,0:2,-1939570066390918372994278,72670242950040945291001
+egcd:223050013194629393090661502,798488954097788537544217128068,0,0,0:2,-161550947050238364712712345521,45127663552810491926056008
+egcd:3248908131273613694428163643,41879881211067694937556432,0,0,0:27,152368979327239401229505,-11820301337418926358261534
+egcd:3446049603173727626406694518,128204824207783873176312600555,0,0,0:3,1056928424865089617706172356,-28409444040782355854331071
+egcd:700031253558626136214208233370,52123353846012574000878521623,0,0,0:1,18394042136597105147975391256,-247037142178779880729238222953
+egcd:435876668588605457895900237986,271303986771473105323219943001,0,0,0:1,75954147113817500975823522812,-122027844129493972049386903631
+egcd:21894869356689284742223217,560101383667765190092124546814,0,0,0:1,-267658820677239482560763028061,10463025233963471610122617
+egcd:93550360054222226284955381499753,862954759319855471087513825,0,0,0:1,46956904727976525514024192,-5090458447435021286477243513311
+egcd:163036556076233835371222,325253846064704092481611715780,0,0,0:2,54681731490561412578180374911,-27409733321748193593258
+egcd:298760510595869651060219530,2623576823283807936237615,0,0,0:5,-2274816856798681184620,259045376379949119206227
+egcd:296230762513979639442717636233354,744175580561578635268252771,0,0,0:1,-32683945300355203946061855,13010357086674471069800614815901
+egcd:98928114229803289645575952596,348257401408420844843182275974,0,0,0:2,64013299296094164502149959938,-18184006885079414479620311729
+egcd:25494984833088459284053502,55538387170360999263101791354861,0,0,0:1,-13961772810342240040396540580435,6409173981787208904855911
+egcd:9359069710378270733841468708,7964135606537379331278169,0,0,0:1,-85301538328543188593444,100242271485686143586274937
+egcd:195970387106442905335558970212,98516089210647543971591302645,0,0,0:1,41045531049286373118094757998,-81648679653930215927296149435
+egcd:56089374569303066947729808,3639958663360642892752262467447,0,0,0:1,-1082612960697886770974458433228,16682355345789150259831175
+egcd:77185220697583421203504780317,38956103306675053558083657208,0,0,0:1,-15968896903521518756033811651,31639787534500855950959809021
+egcd:7188758981017613732187784596,8631409677648057462898487410251534,0,0,0:6,699438759027432535326542480920388,-582534817418185462274574963
+egcd:13002008635939628191889025,2592210142742456161455160840997695,0,0,0:5,75548903633041076033203125863138,-378938220044671750740451
+egcd:5392206357529202370293290582,948791676960011700258391458218182,0,0,0:2,187120500260806390833148058965610,-1063449833754065004912067599
+egcd:56544377896569143411201431214146,76585331663390150529866457483782,0,0,0:2,9058983102991352121685655626679,-6688416081888426016772130405426
+egcd:1031141749989374985000595839,2009599508279438972802543089088229,0,0,0:1,-126919473322514828506873048560747,65123407569678662184010846
+egcd:298829367007901182284218491,86088936999033370088419809276,0,0,0:1,-15810428616337484255943286769,54880691297149907598944205
+egcd:89096238096139543100186984,6280657804119840743206710613975,0,0,0:1,-2167845076635776547503368565936,30752645204900197093113959
+egcd:72302302888163686505438102,216294628465581933787047635,0,0,0:1,-41789803774641178599701942,13969367023054995629391271
+egcd:7344423585894563618479886291,64742746516225911812839171195,0,0,0:1,3780593925465397372719483346,-428870949858745274825015983
+egcd:476166266511928480941810303162,18227725793516746361381041226,0,0,0:2,4455414192209412199765379430,-116389612489299070719517452233
+egcd:2947038272293705986916176,304655516887206203888885395,0,0,0:1,-109032350828407811155001224,1054707671446621662700315
+egcd:5336534152617403337493975,121693724313422319665633935007584,0,0,0:1,-20927747392063258189216772528249,917727182113838425381039
+egcd:7843688392207875316169462536803513,961373577118119555001824067724,0,0,0:1,15264598965786873678488692173,-124541344352904002665189888529827
+egcd:57707445075805800484005722,3193791338236737476237368616160,0,0,0:2,-726032458195877241439267854299,13118414375725016916077568
+egcd:3888164897150599425315896428,205183819721771722595087705,0,0,0:1,89162997566753336326543942,-1689609042924883873671187935
+egcd:602417296292970251426446187098,518146488443536951749769338863282,0,0,0:2,-94681801709378439277053173041833,110080751806786360731992754598
+egcd:15607864856380204759343924600056208,85052708198112429563844521,0,0,0:1,36709574212910552715797330,-6736505931307702456822986279949959
+egcd:82966223347346884138560378408,387550826708631961461927727625,0,0,0:1,40689557976537119419523190072,-8710751525565014944116387463
+egcd:457941790845177233752849712592384,906379077457778070185230350,0,0,0:6,-38742338721240980168476766,19574299999617999644302509928229
+egcd:17520719333212917099310752269335,777312604525614950110016270,0,0,0:5,-37751502797693573191966387,850923400797104861105824821195
+egcd:7306687969771772551064816345560,93860833710620402880693367063925434,0,0,0:2,-22267197686818972849668228015866402,1733411680109554581599314098733
+egcd:9217304562871982912081196416939115,45870849307880337525730087,0,0,0:1,11332401339029049951636388,-2277136703300246618193509803178237
+egcd:2134005353764205569149428712160814,18399584757091279388913554789316258,0,0,0:2,3505886019286566312711773541099241,-406616759759275454593644975464334
+egcd:328060478808294918960133208057727,5348905699347524558908735435,0,0,0:1,-1625801360474358080252404807,99714072885871998294880707908974
+egcd:152187719989614115335894105182,345706102040316044204222170,0,0,0:2,76351546968434028595864981,-33611694390777105417832332162
+egcd:90466176767209784417980607,47937980732897762962198916204,0,0,0:1,18691494153161079961152768391,-35273659596235640430430634
+egcd:22191701690446556393936729275,39127301370409752749065478506260,0,0,0:5,-1218868518522681739916085065245,691301613338140203683659113
+egcd:2775905315510344742322701111035,7936207786535867419090958193322,0,0,0:1,1862857017468570252301586587547,-651585094029390131031434362252
+egcd:514225903257242358267890795752,12195287538749560345215842,0,0,0:2,2593213573051136744157827,-109345317829044919259315081931
+egcd:5110340321650167437688203484,5898223610382806099689579027273,0,0,0:1,-1018061900744385391688765044676,882069437338979035072954345
+egcd:44404545087402155313016176366973,25830952532663780058171102811682180,0,0,0:1,8891719587254083391047997850029457,-15285257592320164601304464794387
+egcd:63300097463298300923000480926,16725067069928349236075120182800720,0,0,0:2,-857298523517998961630904929133553,3244655454410895040363088764
+egcd:93746022629651569339267076554163,59574007540242509707977428342,0,0,0:1,11788481187505597040178059987,-18550426096928359281490940224140
+egcd:836458939105765496287004470978244,993138957276858432408154782964382,0,0,0:2,-230968215392250987185055187226932,194530107794670768100558065725255
+egcd:80307477121258242272132678185446,332941739408686566344932888055688,0,0,0:6,-19596167789673034226948559353263,4726709241167753753045385329608
+egcd:3788453611470993575354311943,818010566804135634923861221704098,0,0,0:1,-137813490037976101809867354792809,638255830952858499594495856
+egcd:259587623659498181771581731880751744,58285944586801516286178106,0,0,0:2,12918436162055871131672937,-57534731031267918251576351240716171
+egcd:958710310132392913096861246,493657249388271089046091328590299905,0,0,0:1,135918487767490572772558916150543076,-263961393703363123681764919
+egcd:4551280541337185611914329527123,908864538052498723441933539502998,0,0,0:1,7268920160967968521955585604127,-36400248331876396282408916690
+egcd:13070475233480910888148121360,4413285328570554568205135584756141,0,0,0:1,-1717230732757565870913316011799224,5085785325815291001604078501
+egcd:14182858242524025309933936657556,3681095590818104384942178227869,0,0,0:1,1066740967448959129497195096699,-4110036142652596636215627796247
+egcd:30711728727831843417803691928823465,812520406510931643757197797324,0,0,0:1,194250898522863680149137450729,-7342315162507265729295009482678716
+egcd:569581482051982147368669338544,92228924551131117274576467984481,0,0,0:1,-15253790413013464064435116976927,94203381343103503173116637169
+egcd:48368135803685842814525775885,40003260510798989461787462217258154,0,0,0:1,-10067998535127146280640641119302781,12173265733848893973291833209
+egcd:4930018459600661874298066807914,2880020912442370329450214542118524,0,0,0:6,99607976318992660230378108507283,-170508887575977201168637981194
+egcd:711972151064706829096321326250,7007757329792910915127427981,0,0,0:1,-2295746860897920906029564326,233242641537338029349184727921
+egcd:4867220801462747830964320558865,559593908596537627162047055199,0,0,0:1,-136024405963053072514365585053,1183109408518107154940668015954
+egcd:1945367852716329243161308578831818,27652505202701349899029917766402433,0,0,0:1,-4394234229043878775227521709624144,309136620491535022574591706581921
+egcd:2412119651934489718572203112,71072673842732776958058175719000,0,0,0:216,39866022094797375420918506243,-1353004046985744635384612
+egcd:6670138054949154699848469764210,11854940081839078859576304802,0,0,0:2,-798743094019718928779709705,449409838495131194424053526626
+egcd:5079267998502677211817352966622046,725385967799535801573193170671426,0,0,0:2,-8733269027224634938993697761408,61151739710183405161934626994145
+egcd:4480886776816194313314948946313097,7994809135117481733885678298185027,0,0,0:3,1325601507700856805107662436885592,-742965862823827740623264222516423
+egcd:1874083707489243811559858061454,9579456370990495994658664409458725694,0,0,0:14,297611345884849035866817528293453049,-58223405680490774590261172728
+egcd:8686331588156731815552370068,3661502563583219068024887206,0,0,0:2,434080449473510327885732734,-1029786721321607796844318985
+egcd:9453863620833568356276223534918,23089387412280380517663003882151,0,0,0:1,-733315877883858422418297112256,300253453100215815170432043159
+egcd:55969320483418908248140871212,85079326328092084335875608943,0,0,0:1,6383961327473919368001838883,-4199680379617232871527304365
+egcd:920794688460040921882938496,500020334426725550170801887474283487,0,0,0:1,-164831869162100766351156834325468988,303540274591861720062941727
+egcd:2844850591475245305055592454156239745,217485336689197516110267978741866,0,0,0:1,-16965642610700236477617589115003,221921712748763436022152765469317446
+egcd:2250199404990420542899432858,805700188980281851693883900245317954,0,0,0:2,-125668559037065384081466548929550437,350973377738811240057657762
+egcd:2676253116351366843635779601279052,36480162826421640007834066520660170608,0,0,0:12,587251884638716966437757250151967981,-43081898889148741230200589919875
+egcd:434143745379431441298635777347861647,3321086261271951935256233282,0,0,0:1,217185906813395152991805457,-28391283938371176479724338141821279
+egcd:328831327716598552708493006826883,5998904017653902496457354820710614,0,0,0:1,-1691762719070528355733005679612283,92734369387521661720402695326635
+egcd:82257549943062294615386699467607,981668433037552750731455606581623,0,0,0:1,459255931703398524802713311124392,-38482716228173528870552258975841
+egcd:74258380804562546584265075951,77261232078825514789206570986101,0,0,0:1,-17606092948365433867565372298025,16921810841773443299096443176
+egcd:16604612215694436405195267479037791,12088809689403272378161906752667109,0,0,0:1,3335737012027898468082114279119872,-4581809207139284046012442723179539
+egcd:117187641044570371899825799649735,8178592535769464440682270853557106,0,0,0:1,2457083678190030290584253972331461,-35206527142278737093501147598489
+egcd:68116770003229052128759620238,45736612498624533810503009289382345575,0,0,0:1,3731521474495048658135396258227407127,-5557455529701362669272570263
+egcd:2342779644629940837325383152346,35028149264501773716827009029,0,0,0:1,9345366038727486594063066374,-625043965692319665157982363807
+egcd:41835886127596634688804793376,2957403801973782095124355461083505178,0,0,0:2,-140338661769489730626292727126091297,1985252155681011990306970133
+egcd:25097271744035338424812948162775851793,6632509587157028992269773636929691,0,0,0:1,-1033804362959546806519618544340632,3911893181067603431716224112635814747
+egcd:96520534936943177089214535009509,153964299411236835495293391645461,0,0,0:1,-46118336610084143333960687917,28911679766215052420281648314
+egcd:351485939694896123221486285958,258506570841696812103157651165770,0,0,0:2,-46453451455854421472351814714311,63161779539565138403359187422
+egcd:28007417021035441195271408027331994,676148020718828368622335803516,0,0,0:2,7786979935141692020919165551,-322552440730491285420662042795887
+egcd:4413362764336697663014052800322,65693610499398083043787280412,0,0,0:2,-6078361211144309430831885779,408350413891448394748721866070
+egcd:197461225716508808586959311780588571,454511236742266442066996230684,0,0,0:1,-219776105748141429162113653733,95481158035346356765866516205288166
+egcd:744324786002890919135978033721,2141150730373780972923060548366089391,0,0,0:1,-874346039933062214689297981457141765,303947508147659392320612047426
+egcd:372181197908829408250471651219,78669259391484278000787446068847,0,0,0:1,-39097687514411049901323408115062,184969634735797925888333342957
+egcd:684001754049621391333368494606676207530,811149742697476858677211191126653,0,0,0:1,-10915635617581306251815187309810,9204606148505852521943359730207435417
+egcd:364115078887792552377812666799607025862,8827301542572999906405869168316,0,0,0:6,353056586514687016404428485663,-14563139848644964464623772510953465875
+egcd:938042970041490895536761429291587,259757840576661229754224229243143,0,0,0:1,98100150147783338002545568916477,-354261322783767043672286176280986
+egcd:820267097131794751974736885266425315,82778860358839053567709120364638296644,0,0,0:1,-6400683257976970254293978091743005009,63425249549479075033990058036517669
+egcd:5457600674875173931733854800284,215111250666665397843928050541,0,0,0:1,15698966476127453640130012992,-398299437009563514118180872347
+egcd:6974124210886759868095546470042140,692694405426414064223497416146001,0,0,0:1,29811566834519349840902140899878,-300146166038548580439590878684919
+egcd:578127999598677928196850592197,7973510834560431357694126562765421,0,0,0:3,1163976746730659318155746392537117,-84395388948370397153290973126
+egcd:14723115671662580034450839772216631448,337895382484927435971195174146558,0,0,0:2,-83832862484269350178843664235104,3652849359365062786475539074792751743
+egcd:5703374596739162783083891159661674696,33366082296877919793073058464756227504,0,0,0:8,-1420826709123263094052675997824009987,242866599892681179183222633947553490
+egcd:3887856931052935625932193493988,2024878462802165949196024488137162136,0,0,0:4,-38889854468224057532149506069268181,74670254545888366761385533837
+egcd:116797886673620424155638344455575785,81954763999357052682292188450710,0,0,0:5,3939912856352315655141769553963,-5614969439772751205749020485962445
+egcd:39829595917373567921976064035194822733,3324835861238165638267965325306,0,0,0:1,-506495325242796237927113416249,6067518813078093176620314277655697103
+egcd:172216102857743621234283534482806021,145818479011898244797230396928023167980,0,0,0:1,-39678809736017016135656043364181182859,46861893122703407143312718238723498
+egcd:7727386332979968071664568403819269717,8575912217193880571454308157117336041576,0,0,0:1,-2268426632858813001110639846963498854811,2043981854778897974533067749584386763
+egcd:1257841454013765362088088015288120393334,5205555031313951556768022638995305531,0,0,0:1,-2069900289624638164056699910111515249,500159228805191194406298831997643647957
+egcd:329035719059507603931777828933787916,63174092441176600783246575745147736,0,0,0:4,-245032949249890737539102034446971,1276228744002642318798325126059915
+egcd:87426773521557211600093712732512,508336012580310863309243338497305585,0,0,0:1,-205653577638095609940604488277326932,35369575066695095584232158908561
+egcd:362736691322477088361764242120205,3310232079384692960069748150503077194,0,0,0:3,-298020242142018021148617862617948095,32657189583460645957996941439487
+egcd:119651446745096900798041375200448579,34904565501135027467488578221618555201,0,0,0:1,3540823847551645875601198046573235235,-12137801744454264167914107388308264
+egcd:33213056682266640333567121628934,394975398517140989884982468602916178,0,0,0:126,618949137634363451274564985445508,-52046767643929692458960957957
+egcd:73953631593374110277606522091274192654,472933146030124955694766250141468288,0,0,0:2,-25101980308935881143484630826554441,3925253748048624389535318040775271182
+egcd:8710580473357199589908718434142,809420061697430276091837694297806840287,0,0,0:1,139259190736440579781799630396860501656,-1498638895878772876966684998673
+egcd:77046997340564369387791662570845,4689854151349789784672220940122,0,0,0:1,-1962814468060010425072973823553,32245983823849957256883772384363
+egcd:9502904350676529706040238562436114,120812359166607505889223477518,0,0,0:2,-23295919059968979396801881056,1832419233554513311030927129706327
+egcd:31192932152325411540357484553215718,868422046212786848257208790061091,0,0,0:1,-230532004021048809280348128406617,8280500468324364563224586249922077
+egcd:4323608585320872985487445640831972992,4084657409651854768355784706431953538,0,0,0:6,54695934287773592257749571957761641,-57895629266230261159874845651528957
+egcd:3107887987298186821475596783022,17295539125083136515530515139788847,0,0,0:1,-4548338553569994765732871853161292,817304777293980388775383524775
+egcd:6492834786527134721523710453730006412699,17967549886740060364182315507603,0,0,0:7,470846050128324576077742494869,-170147050245744662628832662693122120208
+egcd:799805327081992551235962453510248660453,527300566054543088930412034236453,0,0,0:1,-237075289836488158904993771580490,359593924105739027278040604269201695607
+egcd:833510079586844189468222881538313142775,163464471091603074311918213259985533,0,0,0:1,-61563360576469717421897023746373636,313913361301437981499182950778660790497
+egcd:49929157404053899498216569279542495014,52392311954248457857910547305304892,0,0,0:2,-12646518967361681435848485552856301,12051959773910155320611318460802797748
+egcd:8019914013817036621081087587164121,46265590541944209649621467308503531211227,0,0,0:1,13683404292013421097959669212670785871407,-2371951261245719997345654872544098
+egcd:6793690558655838315726513011194313858016,36465391197483395356496390604936557,0,0,0:1,17578619745456361142487500175464301,-3274987572521910182985712771749335932795
+egcd:321787145894134330720247393571488832,18281500192882799634120662107983334952501,0,0,0:1,-6095953088727896985909292224676751826817,107299692324481991773965193337745245
+egcd:6047548862579556374720382350020069977,568658196833000836860083279186765,0,0,0:1,-60242414519379328797326699138997,640664194123467451661791719429686438
+egcd:2870680665840606619961146285976303711365,201189029370140692788327587076886544,0,0,0:1,-17987198256416229496582948278184755,256651679413089218267919705828623910104
+egcd:39798370242867453845816667887487587,35013670694520682198689629893928314,0,0,0:1,2054010924317556869064391839728301,-2334696295115298268400128614101999
+egcd:73858651956033138177599059035112771,52098398670389170171335995363841,0,0,0:1,17240380939183249647785945691706,-24441275123112177186980477847169325
+egcd:7644571930682061497288549926132,785802125855010277645849882091997,0,0,0:1,271947942761049618119207873759383,-2645609551610500508344199027815
+egcd:41557893857172527363631252083795195,1371686406573225335634810457756964207,0,0,0:1,-655209336639216756304666696201636448,19850834662935335118652391694675823
+egcd:973653542609832491247256728338117715,2002969097578635540682944029408420962675,0,0,0:5,175219282530720533493371867912236604557,-85174991154795587826633985259908870
+egcd:831391603082990206528467891742567543,91348680460502373319036115086068410,0,0,0:1,7961031378909225546181572782336037,-72455722479397588386999277916029549
+egcd:176911664463691309750764037723638110826689,460013441967893539463255590714202,0,0,0:11,361642599535882299511849044819,-139080271113761217419393593167310893140
+egcd:6348236474737074437089035380543803,95699625549966825347938548412205080931792,0,0,0:1,-24203197508040948460999995184599094127421,1605519565440601434387009540507317
+egcd:36378047425993403908760151690761395656927,8324175954260445983822589970605585871744,0,0,0:1,-37338373251079967191012744395502594657,163174964152701799172289301950393962035
+egcd:5858122486508222854576912675764622,153452046194711393162502085210831888,0,0,0:2,-1917578181935824357411526205393145,73204679545178717228315912714034
+egcd:112814326530446724164485340282110380257,1110948014051557856317025720135946251,0,0,0:1,-463407619011972388363881014261728099,47058024125949149529869264751419106444
+egcd:6762936490294534151595858255833949,728054939347597344951631101746688290337,0,0,0:3,-3202433078336335166791354061436519790,29747551115599101396300822706649
+egcd:605526563136558093297316930606967635244,9300793514406874242288831761716510,0,0,0:2,1345751153121394580612078693754308,-87614897516475468831438470665488535865
+egcd:4991270541520370370359273753865001,20395641239574465006088950312639388,0,0,0:1,-6874587192924230257223537357557787,1682365567137806304784656152958051
+egcd:500946862886657134755071848342560490955748,3247882743399223852727598527588480210044,0,0,0:4,-23547587498989715538211417876627327203,3631932251908272984390735044167733370292
+egcd:35871368552972366494601834117723560353107,1239860437073895516621923584113449874234,0,0,0:11,51469208630308277351083609242535070737,-1489095785865112466538607676302494302572
+egcd:81015511060223907703360673011829949,18579927224926372016967617691018603546752,0,0,0:1,5992620067510956522835707392099844262933,-26130090364822596580080018527487583
+egcd:686805747950297226208831836097754506778,415846263888979485125026003401455197236311,0,0,0:1,110107419398192448360459918988248994607406,-181851840695728638721354366896502478797
+egcd:1552581181786867650628866738064485666,85001787017719566705908468802934139661004,0,0,0:2,-14586161026251782336851603095136839467709,266420270895607062006639549884867549
+egcd:2851667439961142964793942899685249435,5962772303345585675470039928831166,0,0,0:1,-2115221698102148418532942878583229,1011594697552485521822302637286789576
+egcd:976351980138172140382095386377096085376164,333761105209340508973257305004288242553584,0,0,0:4,-11680691421845751055896280275529788227959,34169548281993462971582117489794480071420
+egcd:20256356281064282905418422186773378,36340325278599621781402169518780276,0,0,0:2,-7025630039156045892929526907737769,3916136250324079267011293834961209
+egcd:394033413204458189167729459825446183,8154588797405589591500377773574341,0,0,0:9,165356907535808812271372935734782,-7990120445312753421042830670631317
+egcd:665386750398767451333668812103953203673693,8552358001531037761606275007435960,0,0,0:1,955024064062749227842006843214437,-74302357130697440661858910661622274980954
+egcd:5687975873047240253725753499538688,999307950133750868872575786467795722,0,0,0:2,-124602922769525950861094557747847926,709229240425208460210072090208845
+egcd:874386700310057076622355171620744115078787,6285850330763062054705785971806513126150457,0,0,0:1,-1288975686576661743329027505076878260385105,179301627951558198068988999319064038000148
+egcd:1355399916760756632497111838694490983,18711706480754058334085390313570835572010,0,0,0:1,2437253796054429273026706937620795028837,-176544752649619721719844994195203277
+egcd:36233162261680351064206988631037080,28152769682211333909464292684458349851046,0,0,0:6,-441278995396378059385736368512158452537,567934651664879095404422678700021
+egcd:4627432565929377000942281079613356,26956649857247707823755540417743526,0,0,0:2,4330342191483523965289985331335031,-743355223464507160483903148381059
+egcd:6854846008427410556215762033804468577678,7155117253417530565506970580853273,0,0,0:1,-2452250746495250667905605947764875,2349339730700732618876715217888241493587
+egcd:2209645186813254112014092471353574880075,64182917222911163587618920972678745056,0,0,0:3,-4461195093044247750680745185136778743,153586946360569502568644586700147510013
+egcd:3025313331138953295279745199525101,8653524593948850180321261885145757158940,0,0,0:1,904226340311477989339899624174300049361,-316121826662884025029029485732009
+egcd:8175371412709228305420266641849867,82198171379976862350953285654395132,0,0,0:1,-2003681145318731802560456037905993,199284695518342758166966519484151
+egcd:84689792444868552924138110130100582,948880824334996164969139354006847,0,0,0:1,335813075011390237303675237523472,-29972088057443111534563303078311649
+egcd:8798524220512740895216632300585304,949715540408757144575796561647960443,0,0,0:1,-365201672634729056326900567364188532,3383366519058383956113494719486803
+egcd:217649222873019166379207709389541260,16404476006672084886049791516665079733587,0,0,0:1,4012192602792553158779189839801583942744,-53232459339725558831435308832318597
+egcd:594697321798546733359335415436661243,385951688100825419173743409926063859804,0,0,0:1,116343479007815023999562971626758550519,-179268953881601291313670792169485229
+egcd:56227820964445229423667006497516016715601,81892476688838156595578659146703309694103027,0,0,0:1,25913798344112231705938155558240294564843998,-17792555222598091584460603000915882858511
+egcd:836582345984336327468570096848318493595052,901634981123482446675039618318674827,0,0,0:1,429320451122865276676843207141615999,-398345137110681379270140802352205993417561
+egcd:70540891202696028214987115150030744,9583233767357631859259680519209578191440,0,0,0:8,-65514112814860871412811677812543980163,482240548076342233536804327541737
+egcd:9903948980685538036955142798518546054188477,73908402033109722105152729700594715538850,0,0,0:1,-31422618411370648401934291718142285762887,4210725722988152216237083404707290444549206
+egcd:540759354899060646610120700119399427327,91829281306603966715331478896265100858175,0,0,0:1,-9770047081196394787775469051083116371787,57533330129430781482128884413734461642
+egcd:87721157714374242858698347997325066587969,3284901878940400480442656721233156988,0,0,0:11,-123316683391743383266271066589127117,3293091432036939336610864709449064364218
+egcd:4743734019370435439736155675086368671242,373647739342207812233533011552089267317,0,0,0:1,-108245641206455177441179302126281646589,1374258363087126030891243596578927294967
+egcd:84363520867921952836929767189559325742,422634774589111146040596691819371580962015,0,0,0:1,3529869940822424493948866300794579980218,-704608977581504060641229871924854517
+egcd:8145193020311860837319395234399151215,532483509543719726427588068482044258548,0,0,0:1,230786770856496735053640355467784076499,-3530255419123562891236643633077796683
+egcd:2377647587095841620160668696819055129523472,773096322510799886986749609397216837,0,0,0:1,263630662321274282849039145784297888,-810792639805759699888475288147822340650355
+egcd:75184748541587873957500013097478130,838111431578529041793523211422510010621443,0,0,0:1,170760592066107917165103873007351219014134,-15318478774501769393625664676412633
+egcd:579262716093774075220251800110978515474,6043876047565477568423604334043743356163,0,0,0:1,1258844697728783566949425789115960891115,-120651349069335995640079130709736259543
+egcd:66383499181676556938103877122737166934035,530832541812442581934024695453113464955694,0,0,0:3,58293023611847179837332973337639810769253,-7289859947210577726709498679713475897458
+egcd:7920960396383675142682578572154754762141,798535291859442961798164423259513237,0,0,0:1,151926171612145541807953823850652973,-1507010649099546070150810894614252028216
+egcd:175236050519274673434166760526111360606823,281877686251107928756886484438054967,0,0,0:1,30236916062321703712671871858025268,-18797506894262892734920915273989626884589
+egcd:4355982041361439306851196662378203909,230636237869932319651414274905344806569567,0,0,0:1,-64199936549664682976687684995834852683768,1212531791403025059927999150787108039
+egcd:72466256004741341461529939955428815241048,404507868131062510694999082807036449755,0,0,0:1,21713717675376618978762676626454759457,-3889941204725080048332941044415757290037
+egcd:7876383615744606969586418493837128431527179,897248260026492001519641792023993581200574,0,0,0:1,328885352293723988890704291802089818369491,-2887079658631153099411074216761336194523512
+egcd:823746082909669336405179113773513767930385343,37536559251756687921153410535826723241292939,0,0,0:7,-2029208842362729101726422682288492660756476,44531328087129752982635593229262336345380225
+egcd:658695079684573590715110773468603499162,3354130807798642409123305655417010832860771,0,0,0:3,318657279290364283792244027119488336746923,-62578949361845124027649122556776393513
+egcd:4349656478540188481997316018037862985088490,688164220169053746563537722321624153,0,0,0:1,56153129479244282567341033533205593,-354925199932218939235077939287991582863873
+egcd:7196129991932253742247456920599960563583,1551953095381685219390198409960379051033,0,0,0:1,651009094600825687351894649336633273547,-3018613181428336616312033224198849913300
+egcd:33718565587845077554141406672209629947944,694018815107815973458210855280455125239178134,0,0,0:22,-11818955283142246659701315974948629193544001,574218177114593127458433250572665313149
+egcd:48034338404178048948731566945929396028527,245664579509095487326837561653834012231174,0,0,0:3,24571615785870174014749679914459909098657,-4804442342296368964974395821258650295714
+egcd:485688355671330103332655405066123104761671,70636792660478486808211498921213574664883214,0,0,0:1,19547946123779409908059764963032815931101605,-134408846325241118506649731947663309341911
+egcd:6405149591444338689334448812244664862636234,9522703507242637580231918951297251454383627,0,0,0:1,4648320274874893850302119473915399249290504,-3126547695921952271338054472863305659139405
+egcd:64888595504329753453829805980940122981,73955307031239460966127905414203750404095,0,0,0:1,9965146616771182675098528346228259968446,-8743447818881541791120354159157072395
+egcd:624397623292152787575544548499552047680257187,960228998573111999015226085451185104,0,0,0:1,419057942589135698988432238815099419,-272496231381448951268571570751366533430073263
+egcd:60540572208222349219969550724682829020471030,4146162156445517660494465536041682341,0,0,0:1,-1307551616090572205211276468970533788,19092336489263721226601454355991849598797301
+egcd:415933355431563557683948328005258732307,5191044700097573019754760781524192087,0,0,0:1,1272462334566092003025721823752845041,-101956264885641864639215199859367306478
+egcd:9944542537317183395984185860699341460076,7450240798258772130917228765744091077415,0,0,0:1,-2889467954547926066102243756339464559009,3856846746608830907837548122674598401739
+egcd:4675993042036765219044958471374401510644291,6536407542677511110744163901635941172672,0,0,0:1,-785059225257024547643372954589113914325,561613003920024127328079524546062364650733
+egcd:500068345406386239937220975858990964037635,31309949109544510956180803197239985764729,0,0,0:3,-1337847095354555157020998431688305125259,21367488686743026560783774598424528170692
+egcd:806337865275549066573685960631804017167976,42306413004831134281119351290563344128,0,0,0:184,109822054528620172938148368508740339,-2093150298482413200450472447557203137060
+egcd:75157219623632887126944407240803003838398,4795768824229131006026406965734558941262273,0,0,0:1,375827824436403534958920350232021578113439,-5889811493651217920413308759091284230977
+egcd:277262123821617241116745186212290538176548,4446513976462629109342017933070790727,0,0,0:1,734493945181565476977850175671555945,-45799327799969845689934000551863252036517
+egcd:98171317282291412247388001560687711655155,51444743731067016851540276812580755320,0,0,0:5,5036290558758038355810670649180532431,-9610686000386638919489216467402354664865
+egcd:11014904274052317243271908163944833907947641,71515011684041336572702882283905967103935856,0,0,0:1,22425609806502481498757965832664201241272121,-3454043276916581370784741983560371109627385
+egcd:87146147055128061249851083940353618024451530,227751615279709532340759791204097256262332638,0,0,0:2,-48331440979237806245330122927282663110593182,18493387446627430920818738708903565546903449
+egcd:402410699751971626070151333628642606391822950,9235049484375572036983799138607635445972248515,0,0,0:5,153549074522224851922845419478631135245172365,-6690791492703523748388769353438975615410083
+egcd:949267985651789297050574941117571101295556,5494464173916711420285490445361551565873818839,0,0,0:1,2312316926578234231731272711847855389498723615,-399494538794444801285919505216009539379901
+egcd:2652808479750993333843650846776418156707877,915987161711340965720691406464012679987924553,0,0,0:1,213033065472660034588639329773318587419735771,-616969261334816443264024565709812558076022
+egcd:1163472262648389280712221532386409222890356,857318074714986117766247044705267090767144356,0,0,0:4,-58043325122501989349933223216924978819779359,78770996207404485098817007910493906597668
+egcd:10406098257685455333151512936763024878968848,132372816094796368125357785730208051589,0,0,0:1,-32359440420839902616239305059134083709,2543841904381874254942688300338927982667997
+egcd:9959025918172523065346020240503154713303537545,33255835687967680839900430396715330645,0,0,0:5,-2158235906216683429459031976527278345,646320469261857919214099624368160581238329214
+egcd:20019690353839180990330900629296501436697659484,19010146624748888880368271406285795722061,0,0,0:1,1935509632476532363016337521607327705259,-2038295878718141770102878985700637985667333055
+egcd:5207112395329419329605828389549218469303865220,385309659461901750334677757380851297191,0,0,0:1,165915572078042391660107459840258089603,-2242199256442908119061230570559516064159668349
+egcd:601993736892612416519724463932736313173624,96686409886473200154411387090103804018,0,0,0:2,-10124237854286044843764528144646895899,63036033567153639591480721728193636660221
+egcd:9451492454940277922879179145156727251630812630,890293318906622270914566376145745936579427,0,0,0:1,-43405247621678402209625928105193852993915,460796865133092194091416698827502410647445713
+egcd:421136320827745191070632842619729525606371205,5096571308608922651479373999535629936434586,0,0,0:1,2075009266732940120807179123930369827773227,-171460716501561691306683845372085898878504919
+egcd:6991302085135094450298373606130554478351,38899616762470308043236153517332129921230176375,0,0,0:1,14126040436007201764984293331381102890858042526,-2538827478892831192526315111045693967367
+egcd:27088648614991201551819724048844336626611308269,66943487424321378156955754932465286944711,0,0,0:1,3124674948499217771505415118094328323367,-1264398150927660424730004830166744953548129302
+egcd:26633206192249265107832407597998778309,28885683872079634891270314620229364998599495,0,0,0:1,9892272799081534529886664444698656529168119,-9120882937536253989479027571007889246
+egcd:1293392085583226795107306787473899947221,227416266407034301082063615024346171491,0,0,0:1,-29907285136077480460193096683361056071,170092696126889751795759289938962958812
+egcd:79278263825216401490025404779637155001507461,6902468820227813108248070623732536421506899016,0,0,0:1,-828360674462642860581800632473551541382892027,9514131509009287407522188041794942836491653
+egcd:1369065262257696288586379151913703456926925,3921318368201662164740427949862301432814147,0,0,0:1,-410960600654239702792755872263158438997325,143480286394165720161890484611766660313358
+egcd:306811423659369908685018354614281524950,502749149014618067791749640767411770493,0,0,0:1,141326450781475203732924651029513241656,-86246927816738114071710451592343402043
+egcd:9719811370227578672711620046487180969505460,433430579275086048076182917145558458171286,0,0,0:2,-21526798977219262508638934913326592901682,482744954943713828666591712770941953706527
+egcd:5788020148019388092466048940831790038394,75552141815311856081164996922322733981520384,0,0,0:2,-10518739104218372390717930642371017316511851,805836504487242701754398309597647648769
+egcd:856377298658655395314577199206116518702414869,7440017597742186912190292505781910769381749,0,0,0:1,3131903658221817580778138665646284726818753,-360495275616161421170385112657167062910608644
+egcd:1689647907310953553519794122563381184305246481,7013833160958039894149455543255572091142877259,0,0,0:1,3398821499458899262672354561225223368687478979,-818783609774341856728010232260343119764124822
+egcd:7909384989092513144957228763780800053405820795,21477020481637847440258297023176370214097826,0,0,0:1,8859749519842138091084779610567087626046933,-3262797552354666439266711401038798592605600059
+egcd:30979357654518132817819836417705740257922764,260940405630631925922236059628149432070542923194,0,0,0:2,-31298236747286947106814487094222102681769572678,3715788161694199667767789519431128923820201
+egcd:984850871549275259750343917908080800989821,977566457784993078336038170702548828397820,0,0,0:1,-129037873131119636035172993956125957494919,129999409046825903670134925875065572390725
+egcd:259004643342990580972799103658759292285,825595283492252050104233175225637957516,0,0,0:1,-375346335685149725207452317778364301475,117753148241117547777519554141059751586
+egcd:794001855955218991102614066001175910817213141182,174022684013084507387799105725951096751,0,0,0:3,-10938806147098475396784404050656099019,49909771430013704026181882273607321813941786211
+egcd:9811672997383161859807242291870208222778,13360741920658508650761847028208454943504591143,0,0,0:1,-1533646877846983951433473286385655919684529373,1126257938986564477278948068254744237365
+egcd:814664124635912365609614464622452998365491267078,6619294472928701717769024660487632849749,0,0,0:1,-20513340331737189016390223384951047090,2524662184626944204865785704990399314361764729
+egcd:65349983887385540524173152888970462548991658424,660961177147869398908783897959724877565,0,0,0:1,136074117943219163120699904988199259974,-13453802919940888187441439968788876247928595515
+egcd:9480849241792212657354357845320329169823,109501469778488317937641164193300571933305,0,0,0:1,3804987659970807633940154130872070360587,-329443197831394171414676889854922460020
+egcd:27503221926847760895555182327237470261,628279771111583514714898881996093117588062576805,0,0,0:1,-220013546416993125291275595704774951395099395899,9631189276257473190741590492577938648
+egcd:9168322681946840027266828729455827850468,17545637116438090457732596682574619803340605948,0,0,0:36,-5813964096141413249612569112312284994308162,3038037236318899283433014963271953349
+egcd:2822315921382556721951896564280262300560,9667399667971791940314575307296845555254630,0,0,0:10,5947088441699739947657932361375488982750,-1736202388578886042166718097228730473
+egcd:5505800972045902016093732268279937842194207316,51771316999189365770795878029705923949174,0,0,0:6,-3811017207863891625916436251841504892445,405295894788019795906550250885730982995283199
+egcd:315267941927920486224102737047056204820506827,53799684850237810468689873350190525649040,0,0,0:1,-5914499459775939664589775100476101941437,34659163476663297256696619263386415724342510
+egcd:9236131800332788704514704731129950333068432256,263545285729806754190856317347550775965605470790,0,0,0:82,-536397367813719623726930035810410515130829203,18798426891833334693523979076019903671419395
+egcd:4691968437686244138977558753087888903984652912321,529627716152176622105651175417186500904294321336,0,0,0:3,-62906908078037944919327151653884810577788339093,557291882983286077007886029051098501072983943821
+egcd:26280657162235005084493562155644126686642367,1370831800919999167427179169348201053666488416,0,0,0:1,-668950545558535940883160448398038518399005825,12824665968877633003981478280580109910324086
+egcd:6045536043693122656233686475730851232212520209,9098289067800470455174047447178904376043370047963,0,0,0:1,-4206871815253583433092955625418062663341089554958,2795338222470951124088702397531861215608753021
+egcd:975864626523714146502659630640337751487212439,6940988044327081299708879840237906908066266,0,0,0:1,182253857832309393566019050168841800978819,-25623886940908208028290520855889573665491690
+egcd:7654068749692096886133022573587354873176,8748850507770691102882209873577170582376569780827,0,0,0:1,1964615562778113529408565381234249139996181774218,-1718774663124332015670834305172702577021
+egcd:850756247079996358624434449149782878253590,77804648630198634241116586202790778174949752,0,0,0:2,15630184779111518797262593460062779851865543,-170908519965767105980455355954051171663309
+egcd:82272488067830066441292242534154314172131040679,688350307921755313885460920932900835434083205040,0,0,0:1,122655586374168160071266274502558269222291956119,-14659948793933732247908546146130285866296684120
+egcd:50275540077712584568735998044458763684689,12487524215373463010691321732158466401371527,0,0,0:1,-4310272707559638258553658315624231083512470,17353422865679261179696672421592621956753
+egcd:392457454844037291990581880634611045578102532,2006776942135757695410535631587193797511467,0,0,0:1,199439819133605873020173563252516107678750,-39003659135343525760309650090094101928308197
+egcd:122656263585184646029569124623378862644114041656,280853932414286875647350581672340197593777,0,0,0:1,109974473329532838224195381954535972984910,-48028731064556951924576138949303550622577592767
+egcd:122723560516597269398769177665063637962901,765616664403695605489624269692889608096979049375,0,0,0:1,-258226752172223790724516164492921485841472381649,41392132539192550495968547772584597424794
+egcd:6372235942926383038761681930859971388824310569,450457134311977647755977405844641979355735844426,0,0,0:1,31158770674255982909157224955056954353717569041,-440776764988213077644482491833524983838080428
+egcd:55710124200643562666353596472476352006557402,129521722711569048118860224844308955120907039667,0,0,0:1,55524240351481153050668122616773552997196032054,-23882189499716295999156216742362854145492121
+egcd:52638437489786006097404197485813719704184482762165,38484575113442816269970218082013142493165049225433,0,0,0:1,8178630279958745518165064668394460744601578134160,-11186568059401556693065851931124978194437124969703
+egcd:8865739212422336318534105978323392918519865739,156466530229954316319347454260872006246776,0,0,0:1,-22332727854888622695494970502136839031101,1265421689689503887387017047199762890477050140
+egcd:265397516257014571242786403736445985853962,32533852784248587969347758598232018992116038855339,0,0,0:1,-12908032440841768357183540035974013542745984846425,105298311032592235052498055248608994180209
+egcd:3535080036435391574837524982968689282803781,74249567587110445850983262206024731586008,0,0,0:3,276939285966568545124733076132658099351,-13185296196863522858383215997152316071266
+egcd:47346135611124365598287053304187866567992166810,576740218461234987857552610598030250941997676415,0,0,0:65,-2126430640686396085034515662972949280965477373,174564336349217453788449880226773993486353933
+egcd:820830106986357361740709716178206505926491986956,3217456208051702777250937472105195691807814504596,0,0,0:36,-11508975978649369323663700445407671174097770014,2936143764821793638026885620541736768610769895
+egcd:61739911443386844943500901189571167227813737,3848550281723202830510194085486377628651546,0,0,0:1,282984239815910264880297243679049891924891,-4539741104353078811173218272678740948066221
+egcd:4935130472338939834485774824152368863725458605,1035806531451219174441688602906921731365011,0,0,0:1,-351908970967360751930093135356643002982497,1676680570528195395018821587922991870638322426
+egcd:3266540541396232463580738683146696014840917,4935087952292184155374454402916005109216111873405,0,0,0:1,924328175593731869854608058802170988017990845743,-611813910576679910370160267913438850314786
+egcd:14026215249956339676506155791652279539578905172124,30781337324124641929530137787213325258646,0,0,0:2,444505386198527884956851751358641210372,-202548971831029013803042093087467123341818781381
+egcd:4294047460058049577385615940946646673529873,7888285331485320409101196690477192599721030309,0,0,0:7,-535244381384157584881763833984960586681612928,291364305398447665235093604580474039882939
+egcd:3323417013847245232113101349532994925521490334138,5122451664153873677965641025886074343796981341587,0,0,0:1,1425515532127150707596577092883695524648753420721,-924866232731438695305713017060351754850266688931
+egcd:80935426461988829507228088844586242462996089069583,653780401944410326556349775523493660318880484692,0,0,0:1,-2131004721544266945571387397182966694100115521,263809951197286132655279411613822876325373015332
+egcd:226598141134799568921266709711899059121200358247,76992399049617831317308817003284176072753,0,0,0:3,-11448437027496398690279470751607992954914,33694164376637528064598542583627016152058686337
+egcd:664319721933063857023655129340934847648590823,658199665265274466519942300240556524715643,0,0,0:1,124352795083709078633408434668474547721672,-125509049322160532052275511129607044720504885
+egcd:8884738003622398686160547451276690420223171,4299975907886085056063300778367761002052776699,0,0,0:1,-1116654257404751368771631661850560365381800860,2307264210358821074298460923747673330704239
+egcd:59719426635130468128765525893511605775762068605,15511948776571237043257049623825428922813014745,0,0,0:5,97984350967559952500670074951721914832581821,-377229795126457555963914383461705837385561060
+egcd:363283435899720839207247713911327116143466,2646681445153091542108809095748079207088831696,0,0,0:2,-645295047870741251832001677370106736568796843,88573183821900377839952804802844006175665
+egcd:52931164096003232205392055066962781951605227742808,947807568550870804286088054962593413637490,0,0,0:2,194186113496156753567887057914625616943499,-10844497743719497124422772319106386069172727940731
+egcd:795766141035085366569782895765897502125872618,5246887073403305711124413150544060139255883684657,0,0,0:1,127592149200051856506732829832319739908307643715,-19351190672651565653969035751475639783463117
+egcd:82250667724186953595968128381514526686421673,289549134724791932338507372783255493005385,0,0,0:1,86151709811972420581533505911642683307877,-24472653542377849432010330789204946130679372
+egcd:61639425939671741256997475006356513882668519581250,3578514828596765772820255901738596048541569387462,0,0,0:2,20996407912033026016667547576264242700583756497,-361660239647628207370955868455456400780266234704
+egcd:27684537637183448026151946909258691476828389542,9528939357362238270010422927669825442411130925,0,0,0:1,-1491403989803236735430244778811958637923713822,4332993247150086860055318193545031767864356713
+egcd:5435307729184909003359952075698243178049039204593,81652326357120772943208044441275143659212363293,0,0,0:1,-18786061737353190995893206957396074979160669634,1250521952251468167669960168322598898079025280191
+egcd:10924773406337855054647765543952064725613723120618,14527409504138198936169926863040904530587755,0,0,0:3,1943780369495648845597031433407372402007186,-1461744441249394454828419839546381797839691182739
+egcd:52213006390422220435171878651888270946818062,871645758909254953745968603137179283818003972840,0,0,0:2,-29741256420958113534899191845042319813299285189,1781549896496816094656316432366924841439533
+egcd:4688712561272866795875010705784298446804017837,70990811276700678878005205180077865101611393303,0,0,0:1,-25861123710957590275105742577281286038202175280,1708043244069738879850646003632659154370684087
+egcd:601876680344350654318757321802040059504236,57573030176060116021084277750039823155966100,0,0,0:4,833675530078099686733366641090550664373764,-8715363061372584744643797829391972554063
+egcd:857505478933565140863302872774416730451047627,974314057900536449023558662039365613006496,0,0,0:1,29431249747985173674309139068596168851555,-25902795619249680104451374326446194507504004
+egcd:45485812933729425157241764872535935492149300,423866118406290068921435664923874810909565066,0,0,0:2,-92026904416450995131867199112617558634435512,9875567726185991444222573035098359638524797
+egcd:8708905393403458838119906185182390415193154723813,2649214839375624500171797402777266233996857,0,0,0:1,-878693520989369471627635491452708391853508,2888576128426243950131007882950541927952108467965
+egcd:669875536982562277168757149616294771674281736129,97516567980777338564845413606958767175755421280,0,0,0:1,46381889226420155390297645103754990574679184769,-318613478664861551321523526265950713581534609390
+egcd:552142172787258525043120366564284640581592165713,863962961122054854184533799151634607728550493,0,0,0:1,-120985334199661742489066675182491559538012882,77319408708953488066818827922573705864500213519
+egcd:8912171393647579492805585431506224333605369238663,52587987699344024446727521307243310639764632765,0,0,0:1,-24208869892720635889960417808933792198197524458,4102716364884452109263231978180096274383271959027
+egcd:275693664465005824088249757937188874572769224053886,3466602115356222955936873595606282941132234317,0,0,0:3,-221006434365087927325688159903180401056179309,17576310096434242315782225656574466646053079410381
+egcd:5028642354464479207857147979297496218105888083856,6176113771729541577635381980538182053262643750137555,0,0,0:1,-710631712528650391026653778416986011431221346318294,578602153413129397137286808053013793718378471803
+egcd:8465402742576453065707574311196744344728516738,61661356518501223354721904644532208588697512,0,0,0:2,14937393734471008272165421983397469074399301,-2050734220366918264382181168692457172485461053
+egcd:33090073711191135330109687427439016660084475,445642221929395862212411325653215048318205553,0,0,0:1,-165351447151677755593906743574229677911339226,12277767467392269710361072198887310106213167
+egcd:38084383375564641238722495396072746414069859975328,95831351502059780199491060292730447215506096476577,0,0,0:1,44701417714871641774374755091058724540366425072078,-17764811859591030607619685717710642838720797546079
+egcd:39669808567342798362844877241009314051976791967,99119958834519191165493856402857838929818011836481,0,0,0:1,21195389536433434447160930459850047078305039520162,-8482822786723704528943403211431983212657912413
+egcd:656394443821895273811037542396860681243032484395,734418747296348194673752402369075033727947320580668,0,0,0:1,-198348208669444102178880145335745201028303476849097,177275787950594932355555641521970313763246167487
+egcd:4151672272018474022265799254859348963458925,8657522863384451966497522640761563355339408510876,0,0,0:1,-2593012562485881796973545247397827317361955393143,1243466350195667180206121886940940782727901
+egcd:616193338763982804182193956310277879275176598293949,1991282968221128113819350795131871998526550,0,0,0:1,672187344044686564879107554044311287720999,-208005276202308979536534651654988391029147577601071
+egcd:8687537844058264818625968633794987777114571540965,4588008014762873083430262838940515379172783903,0,0,0:1,-273131667435174631012578706118035112399381704,517183424618854791062408052693760196421481021687
+egcd:94299417704457808128488838366264331063646462702181,378910566091211661215935743383333262065042992,0,0,0:1,128249482146971828065759668548405619393919421,-31917430047190763670990418627993655771034878683475
+egcd:436084754250362560867427019991801320098048671740882,654347024914243888183493882710929942025818488523755,0,0,0:1,-124697661855776361333795036367240691582603011762292,83103838109598963945718792347908533185519371904059
+egcd:576845066105037981878716311963244757143336175108810,47169550600388313323767894641195570046736010,0,0,0:10,1719524489809815702007774620101569793957264,-21028379651032953624905166044366014052373893560783
+egcd:455450311793013669133010532968680473621765301849,196887903745437577462662843393301335218213938749,0,0,0:1,-62895287849643879856045665234849365671155433961,145492322872554565259262962480158041518555693610
+egcd:3900215337216547857536549769208785869150917,703107675983691037178395903530670398382868009,0,0,0:1,-291772656941803838282558784634427859227791877,1618494905481932988460302827539233588975690
+egcd:4235417950821263716456215603171042810879865369448,30099855971642941146023855759175128865528083067679923,0,0,0:1,5433558916670879875362806366021878036014090738651158,-764568209037069458320253834476596864323900548821
+egcd:220042544397196218820917335251808518190371752175199,933535692277684232594974193302788809761883748,0,0,0:1,-449365625423429659602361441217910654207591337,105919416258801934451915453319879733490159050690718
+egcd:5686178248384112550645420272297349915998890583392866,6394565636060087046686488902334128218389439375166652,0,0,0:2,-386878534783330326592254369705226038342074430538853,344020287608948398285006281037355413110304951350725
+egcd:794165469687755539056069459111608933432404895,782304420953549695337102011535232984737054552,0,0,0:1,15995811988912600943335882434276695389371735,-16238335360201271890738766944404884526025987
+egcd:9449310146893908465306850102371521287231298790519,13201049101057800842831327281338645274946911094123582,0,0,0:1,2999793730046215341383581586839770857893954084651465,-2147252170256912651603598387202626192386287752937
+egcd:107247303626237439573377913856037555329228637,248037365489312307060126693885968609330300538729254,0,0,0:1,3295187394963377883360979486845920526196477093867,-1424785182489835167324341201022464061856757
+egcd:77133522083392356030810996444450842713578606,362446320582641682962892932453319089993578656338136,0,0,0:6,-12252467688569006394870089744676118644607994086307,2607492291584185635921553686052009701918118
+egcd:3746529922356093187817513741403069494944937614875518,21163192571109744382435762015727356715830696078192,0,0,0:2,3360441477707708557262863370472736448288910259287,-594900533379131316626599736433550281233005427135467
+egcd:1480332370019794273587942168003226621597722167298822,76107169267609678850598825056993761581288230,0,0,0:2,14857689610118706993669180053071538933427241,-288991419405294102329201336816763365353292004875870
+egcd:87998368974239358270522399707979936427930543218697,29464787743750967717125516987996695441482348481,0,0,0:1,-10786185369002819879240292144429281969862945959,32213594347963902773511656741076864997101194881504
+egcd:6380501221201357438439263574761686303469688367209765,2101187057561466700690279154331921103508225955903802,0,0,0:1,145825347333296093990690878414508843106434447353569,-442815789957334350484616630550368772984065306700842
+egcd:175895697545417190557526178538864907787776215968336227,5776330255785661509841982629017072861313591718920,0,0,0:1,-1178091011635241644387254463790507228219378563237,35874185008035358988026900184682989666782145774075290
+egcd:93915008302504565970294462868559347357873734156532,843248938319701518093307338244595352966717434,0,0,0:2,151276724006692666989516063064725067523333305,-16848114649719091351395265497230824419920506759837
+egcd:5976711283802179473855536437769569634799149864037,172795022672485802101638449934309020644291613,0,0,0:1,-82366904453391796214074238888113409850549992,2848943214015556962691631373397667435722686056285
+egcd:2205248615867285476540661866508420170225141139,983067017505522956565352285112444457364117116888337095,0,0,0:1,218267429603838059510873324752454714497132891681911749,-489624754418200054062883904405297170239063538
+egcd:197117471835494353404914690778881470433860149135581,14191428012947823659636428685835151126952873593,0,0,0:1,4459525876016258192519437797582725274696114004,-61942354600486601745601801863681456852754652027611
+egcd:83820729536850105215720647153262328929793073678,98655882859633233870604900342857378466000427081,0,0,0:1,-47880418250666765255679449182794532875903726259,40680509585126232668822359561687380513654344563
+egcd:85021523085826077943750195658443246760234911045931,47005020817553666242267156046836837169033298,0,0,0:1,-22669310085724864052132047557226288756475911,41003689335106972184099227663484803158330242761279
+egcd:5946017255219161818471671405255932514415767039839,6345872556760394171049368149822641242688180053,0,0,0:13,187171763444601755684128559806849993896322673,-175378015422918739007590870520259264416567583578
+egcd:71419612666385070427345623221576087904278400094,54972479988506664671028428434907112336472819338750,0,0,0:2,2179890297903206135328344242764978585525743095133,-2832088360648962656287313107815515563957911534
+egcd:5562790597381394993959486043063470014111501298412109,626590695183962064663009600613096722773908377293252,0,0,0:1,-303862519026371604863957069193342886543269595527523,2697651875025465536959295692693138029979462283932754
+egcd:90975070092326503556334167670828683463142797887371,295231087609240283637008177080140457131796372960954,0,0,0:1,-47867129509253228973744519011198722760573329294115,14750192798078785017913570665381167139156130951029
+egcd:42687927598884676578701708409630846818779523811494,523099282468377097295263711037946167371766507649747737,0,0,0:1,26078560817221509087425598130571631203765655378478163,-2128161428162465937231181781214658658975752224633
+egcd:149816245892721291534122835342563111201446590523,42288103374933513898890089821708822543153841946467,0,0,0:1,-5793317563557773262285017616969069220347034903402,20524285067631197541636488904710796574034942341
+egcd:12209271420687937418818672144031853294587657600243,62252474450489282538022150950275214557489689,0,0,0:1,-29660844749864463057583581069915997873519776,5817235496494160175697352420052606379606904518921
+egcd:379128079964034811949790348241734661654811843827149599,87839782929720118794817037174959224009493462534,0,0,0:1,-18238653567217319969185225852935419777019511901,78720432558454288371409573793995440050250015166426550
+egcd:114215100939505653408300174032176291289669380562,23741400935738901134986324457933329645223539201365657,0,0,0:1,-1827217335953581276681577241157959216199445411446483,8790374798405201192178937348284544880847527471
+egcd:1926579880365706875550579926206866629082953879469101769,3149513448830666223576844897044248210956111085,0,0,0:1,-25053848460898792135835176590575779166100741,15325618116798233452500443229076217786312231314349798
+egcd:34061999712899400597535018329561333406378163617467742,171772975832275747480880934476689264812053050103356,0,0,0:2,-30353734173948016840673304098829017018627498398083,6019042749355297425828459633966808378067330339305673
+egcd:69099794678760243778781800244520189661090743680330,84272230826240573484054504866235051739757277304495597,0,0,0:1,28460232196411257321137881889341868158873397195672407,-23336230475929248726663652223642021667308541046297
+egcd:3730778374119404797425236403038460041746582520101,7496868998594071853311205794112072400183459199,0,0,0:1,-3417158685287301201140604914926004319611879342,1700531478727317431970501601480361491459818880857
+egcd:694479210821228795777963254574810624923840260622974,85973514938807029266086479669558486228659003996037,0,0,0:1,-4363087914001491864265409481816897855579273618450,35244270906174989824540564289343982280916293290873
+egcd:976689567441345731919313645335687701163688099904322773,265009793970603358383229061050229738244347533205920,0,0,0:1,-96111738809058080341677874192436389369700333445283,354218352450277244615910581013823408191179307271342353
+egcd:11306238535217366491646986230523588259738750710860,9711793888012260176296349031139366341426284472,0,0,0:12,-88605262509097782289291274601914001329437685,103152130796347815361130641167067199415554197871
+egcd:51967669483767224464737921823977975662824880006456,1280946574522273740836915199783500350492882920,0,0,0:8,10268330208562887554239646266539240997802113,-416583486807630194700790333441124375693097218206
+egcd:2608000098327642864267195515218438837191124764,76463054831351286123635518055043629109951547944085,0,0,0:1,-2838713528640047131970640855543361319685828626166,96822775105523699697177482202209085573424645
+egcd:4468842728483750749309421622173029139461617867432562,104288232549062003896035112908374600291926031581641,0,0,0:1,-40897526108506312057324550666951171967489049680830,1752495058126446443607941125177833715948426475092021
+egcd:9515999226131724451239821556730726791154394377871161,7017412308925966316941922876372144830810785912251994145,0,0,0:1,711542578372858898917028457620268762515142703628762671,-964891091911944776459586890186052584752080420639414
+egcd:213839504515148236538273214896810704701481567163944,7404902411186480168131101360415567235929305381970861083,0,0,0:1,3380833338481241432824569741692207456495975720502139882,-97632039668337051697511687169125113631113481270429
+egcd:4704143575442564619226639933367529686541295734236339,6208190661916178838888950379033665108451167558784,0,0,0:1,1036231609662380598181323571412442265592690061947,-785185657902980530502486174709506058502162341225648
+egcd:7800918125130733756931790281898023131423182325003,49727855698492641147972884260023067177838769605345,0,0,0:1,19886322404414182208422530205281052324435144823897,-3119611145659963799957590789424626986012404758802
+egcd:16259480181384339216392327597672842436080220095778,4211887904631546369945283484243515208523965162735,0,0,0:1,60867090942630605523831629233862298664493090172,-234969990011354799892126958820227867474219476729
+egcd:250262833515008658954045947163909193707871367256381,9360574256964093238653836590939739950376635341916,0,0,0:1,-4577416570401947847275576528151972968266287934083,122381085779547263818532525602930002569551981217314
+egcd:49350305588299753800512832973348076363359882929159394640,82697581133815540138675428448684737574082443779556532,0,0,0:4,-7094756990744589041872300640946840405432374076597223,4233841193026162290519658157361356032844712511769908257
+egcd:6929763065061301565614851166591733819231208368855577,7015852829866459363250622386383961076838110347968449,0,0,0:21,-140151926963831515623623343137474264566890746373088,138432157931912474126854600439744488201286606016053
+egcd:798771392168930640410188390828161875038624287357,26910611328285765453242714553447940950358339441064142,0,0,0:9,-589064228600178541791155571644660170053125967736035,17484837048696468032579268233817988200645136912
+egcd:25397454048672817537966781867771032309891340572691,23256250389273255570062468054746082424429806429,0,0,0:1,6728497363996047750398121428930431990223003005,-7347990314789774434378123575091130429836158761726
+egcd:123423695423831974268547456942149055439119884772839,46840700163848752557976957753546114906692522490120,0,0,0:67,338082829316269748785166702372267870226049440293,-890837071341720045931329882131992024423327017348
+egcd:255083834192307897983466926757917955799611163337033,19691274316552711716703825178816583758491484527599,0,0,0:1,8267652047084102914471657271320768345286498962274,-107100452212241711960185536892796650356109725315359
+egcd:12995280360832692505430343465201277534610726091988596,59465235355121959404752559527335404508679919016,0,0,0:4,-7141155689480540101632551150483184164353752087,1560597880945943136073564871687625551494286751865366
+egcd:22991573949171758827108078165749233594263284484912054137,283817289083807864939015806533699958979417645701638,0,0,0:3,-14276343780208855857892287243849657918266920759821,1156503237720469287676414796512164794747302414005802460
+egcd:73499010438519566918821582344590421556887663107370504520,3896393550660794088432191407076243899495579652351675,0,0,0:5,-256046171286391936281227275615268399494905890920906,4829886912457785280143525162619404419581682774707946415
+egcd:9583870140187439825440257165562832875040106160360,144350435363505176257999415244713117818105415897,0,0,0:1,-47530478459628272998131044625702170795099568341,3155694903939446205334553339280276087238902971313
+egcd:2461253900541942202429868097665121039076482321402912,4470103014382515051213146843793545738275750665419,0,0,0:7,-245912852093874846806381542597934573753889813353,135400451502357810057163583858882200066572301755797
+egcd:7046608505460840717651450079359511868310129053953828335,58898419892762238699911322923913407676555176583579748895,0,0,0:5,29358649717475420636966955061254137346962695123318402,-3512469624561697691831838742681262193506315801921927
+egcd:506826573770755010074059089662551590730419138892682,2122797248606187597520041255704732461621253654865,0,0,0:1,383346693931445995397683618340486631342217567423,-91525599809021126197144665711931909038630799314789
+egcd:651539360489382353856038642218105742846167090450124082,62040904220472849789353991154770087142114255535343,0,0,0:3,-2355997477848366312104173979342645132007028304972,24742145675004203493726030544699958619654829318107349
+egcd:21241404865403392359971818730574585605571301440311980,633711839015175748736538000969606849077009552352665518,0,0,0:2,-29634494220450461639960895856430281807980194035925990,993319441051141196492952842918573155102238513897539
+egcd:705059512890402826453839323123808449258609192987,54700053492589412596920621965162616297504870254670606577,0,0,0:1,17209927692044096764621482310232491609809545108074829881,-221828361412398689301748597143984873381349400098
+egcd:415394044144508415296949741318653110880449387898,712027399337932687761182029057846295919208016685209861,0,0,0:1,311602633323208816932778876458826680113268935109136666,-181787776906565417455080707523448468254230808647
+egcd:83651009241467439062630103095611805553814512321696,446490369450787055845922775483794833260870810890813375784,0,0,0:72,-1344835414515943831032725871506341368981976803617565435,251958042961384654578843735842923162844346873473
+egcd:6070283815502486157201490923461524628539767903594155636,3804770539341434134928308971505690245714256366681925,0,0,0:1,891543412196165172397968883307773535161244063478816,-1422404187036464521764325842283917202125611790642909427
+egcd:96178348424332762060134475763000420774833630208152855,2806142261547257037797431000328431629728168038259049468,0,0,0:1,-225250250276381610381864841594193349660878357372833721,7720277532117966753867311498921456722048818963874392
+egcd:865765710958745231463327672884696335768725685962,880656889492281564646438436388571726030066590436314543548,0,0,0:2,62379218473169386716154064883279697033462165217514103793,-61324437558888497176774502622595381331609802518
+egcd:3070091985634497235831095568321669340142231224753241,3872660861602828375769437905423007683683302354983,0,0,0:9,-130408390759835341307955887188778334976643191426,103382601688896077821738216002703636813104276203725
+egcd:9504468312001233029402718544926917268255994088587,210179277000215612334709921044939204096404089694219,0,0,0:1,-54268679178541938321110274347377533333619467634554,2454071347795548035690892610366452456534032251421
+egcd:9812086714469743421916608502147765364717936946446424,233160386400300595605996182320148818062281081024933671783,0,0,0:1,14451818554970487550218007381375932641589632889155020753,-608175767043463911892366241689545509336116825541137
+egcd:4360347517898600722460235991841444558919923303109907,283395924916312034671252929842416261359155988664543,0,0,0:1,-105355408855707603292421311080809208231429401696971,1621004944361269525623546575360221751817290611287086
+egcd:907128595118057734919250855358256235977656150196435477,4751580206547799719609283650403815057095853254068516282,0,0,0:1,-889356095279141478429404461825805439836321286132426239,169787799048096169202610086149258055777141370865005422
+egcd:3973997826695458235929341947630757918334953729985,919677988629130382841929983511305489218360268786013503512,0,0,0:1,384594482287927020029873640499023823049367287552218834897,-1661861712108041873322099084387127370672735847462
+egcd:324009569902112154788016906941706831494599024684,58395597253468362692345409336860870479092825229925,0,0,0:1,-24289711240864138406494464493033446495436364142986,134772127734877303605549194460068805419486762181
+egcd:9872056470535077418025544166904013532879288870389,987664828323257512963011567924222937884833452375999089884,0,0,0:1,-258549889378418898215810868491864809363285916014306422747,2584296853749008257728523207193933514360103172426
+egcd:6138432786866037932815463907301440109085864021227742475,9643623319216552530346508247173742908756209280545686430,0,0,0:5,405384190611356540803926039847087441116531679787752407,-258038241909272527261791760130585315013837095770089124
+egcd:9769529614309261031704728459798815700297631096679,3517848632227013216032933216030143937697714956834420809911,0,0,0:1,824442973956188793176135575810678140011131714049438939237,-2289586872950597937723114927397934685180169653102
+egcd:147669070524401967353624660276651246996312407855626175,618549790847610101709816507641892193136137457678390333,0,0,0:1,-236805668183208014750730197115976279202350305381572622,56533642776931164630044536099572395597955604255694447
+egcd:80869456296117844580165320271841144299624178440949,1514427424327350480216517445312029963129987647776900447567,0,0,0:1,42937034698172799579489980026944211003937200326398387877,-2292810203533548889500989218354940644696579422616
+egcd:780887627633271006167866160971476360466719486004445,6754024108447725515883403276228352886002003364798583358,0,0,0:1,-1452325437600127814516627181590300017598700651740748185,167915149147974595643816598065833917458080039787797
+egcd:7199869643335698558244236956584912995424331052926,1527691037819148269409741859243943945701460882281456,0,0,0:2,57636477641770614383597878932375099638471007783959,-271635504463112985014746084869260309486608865147
+egcd:455180951765525170462545338088508018606122351276980553,556221150703226579334767784298557173503136268977244374088,0,0,0:9,-26099094677797268547154896038734560717230667555583420223,21358070869183507434245801704745654317447493932633856
+egcd:93476519277392442254618836667858506817969980392044,987802175681385610339163711595695835800228648753133,0,0,0:1,453471836205864432156593588057832292869365167568759,-42912406838557667802187349192829335384746711750815
+egcd:9180181445786644280041614496157713989549610132944896,7069909765059709568140852896063908165359626347795742,65537,-59832818838,667:2,210652202891822695654795784473414654009859303252815,-273529013631655892016199829860413659231566937548689
+egcd:273907002017625351000357839595395794496103882311,58944774459707213986630692862708398194596783791903184158,0,0,0:1,-12003726808325219248723901188186062373690817244591520681,55779411376906145094866211582214461320097963024
+egcd:22771998405981875169000582212334819990253681885689,60821984515441323586153842147099185189621658456861319,0,0,0:1,-23264721625000571047177124342948563692619090190183688,8710406409472299618111529542234963792113787292207
+egcd:3842241889401713108515872147470991560356182059740378113,6515515734620532620891823824801930655919134250326,0,0,0:3,153369059865421665432317909089784699996324017593,-90442729379334735477828876314356700692421064332545681
+egcd:2864468548588229088711156824748351772387325226285,715849610154437365072792769096891349579259900786933,0,0,0:1,268550748090675670123276782608442742660458501428618,-1074604443019284165403977646554099860591230618013
+egcd:3810898561978236785388520202269462480808294248695893,1062108199707865331145512609955734128758543891943,0,0,0:1,339617394241108857543260840698815161575640725383,-1218564586632720303123702323672631316897985132530526
diff --git a/polly/lib/External/isl/imath/tests/emod.tc b/polly/lib/External/isl/imath/tests/emod.tc
new file mode 100644 (file)
index 0000000..cb23408
--- /dev/null
@@ -0,0 +1,756 @@
+# Modular exponentiation tests
+
+emod:26,73,10858,0:4748
+emod:-79268,611,80,0:48
+emod:46600826,0,8487413,0:1
+emod:1465748,364434193,5,0:3
+emod:873883,48223971,348,0:127
+emod:-52,183,125544,0:49784
+emod:-846,394,969114928,0:877192256
+emod:7054382,917,9,0:5
+emod:3768,797,42,0:18
+emod:357352724,2093262,84225,0:72601
+emod:109912993,364,8323,0:5279
+emod:-3224,270672,198893010,0:47016406
+emod:55,95723840,523703559,0:372050017
+emod:791480518,904571,581451304,0:444873224
+emod:7278,922,2398,0:2040
+emod:-5,925972,33496,0:15809
+emod:0,649246,262,0:0
+emod:52004,997,2,0:0
+emod:-4115715,8,234398,0:3299
+emod:-13612,2576,57,0:7
+emod:9843599271,9688373,8509,0:5780
+emod:3415850521,762,3050240,0:760241
+emod:38873,18109,6791035,0:4721568
+emod:504242,66851907,859955181,0:352955933
+emod:67731070,2628566175,7885095,0:6298660
+emod:575051,8,72796410,0:35016721
+emod:3,0,6595628337,0:1
+emod:80479332,13,9,0:0
+emod:35578433693,9608165878,32791508266,0:32575013339
+emod:9998073,96042198253,2871019117,0:94477702
+emod:8502,88462049796,288668,0:234260
+emod:966350153,6125446381,940,0:33
+emod:51249,46773,83983261446,0:2570243355
+emod:2571204,205,4404831987,0:2226688593
+emod:19,439650,888059767,0:247638574
+emod:9485028101,55407,3066739,0:2994746
+emod:868043,56705619,183207,0:162593
+emod:7072012,750002,2399910888,0:1322891440
+emod:55779049,27843295,96,0:25
+emod:57835434,31279309,90443,0:13168
+emod:-6511,7486344275,346901687,0:325667244
+emod:635099,3669199,81611251,0:59252827
+emod:8010935551,34,9927,0:1405
+emod:24885132,4526383,58404,0:15444
+emod:613003,6878758,49607641,0:43381288
+emod:132639004426,81043,587317316867,0:532884551555
+emod:4439384,43262747,10119,0:7922
+emod:689907710540,460484866,82087637,0:30398950
+emod:84094,867130,62309,0:9025
+emod:-33557432,60878,580294942,0:194480658
+emod:3869257,4125450573,456883055,0:129529247
+emod:9878539157,15920872437,4738245,0:2745542
+emod:8582013178,46758,28059,0:26806
+emod:48259672,37258629489,7377276929,0:1692584431
+emod:920350,289730727,1122526,0:471310
+emod:13029603,4503668042,8665149,0:1456593
+emod:6938077836,651113,5180493,0:2235984
+emod:-352466,9169937470,70675259176,0:18255076720
+emod:612474,308813590252,510155,0:383521
+emod:180356946205,710633896291,575721,0:242878
+emod:83046,3518,9768613,0:8644737
+emod:8670878985584,7549509958953,968064799634,0:673069231488
+emod:-37831593555,141781,3434657,0:2539127
+emod:94250019226,452692809515,99738576,0:82526128
+emod:-1746555354919,310727,6925934085655,0:2276231760446
+emod:777851791,126226427233,84192406004,0:11526643943
+emod:3511,42864,89474,0:53201
+emod:611596753206,17005495050,3708625387380,0:2318918831736
+emod:482182433948,97822330605,90338471939,0:27830209373
+emod:8971927,5117957930887,1928567236065,0:1437815380378
+emod:67445777442,3930771,4541604,0:773076
+emod:-52133,16783,3337,0:541
+emod:22,7787554274,823549,0:503210
+emod:46816685133,272923,22855404855,0:4704305202
+emod:181225207536,22085689725,67955765111,0:5581219593
+emod:207971493064,41707850,9115746425,0:6454330776
+emod:42840650,206759347,852090956,0:15995168
+emod:27703329637330,20686092,8407250,0:6767250
+emod:-4953,669615,741766623319,0:660186892888
+emod:11957529241,380932179443,973373783,0:970856001
+emod:78726001052485,62593863,24053,0:22766
+emod:340516095,798875,2556443616,0:348235359
+emod:954899979887,472716,979176,0:21817
+emod:1669727071,1008664017563,37837,0:17717
+emod:592681,30974401363809,65653048867352,0:2039369146553
+emod:-47884,525888510,60238953788774,0:8466915489354
+emod:5643430747,31164,8629966388917,0:7441630635230
+emod:-9134817647675,7013427758650,14493293680,0:10069704265
+emod:16875464,4824632,157384425878173,0:110131510850102
+emod:-1891400577,334033142140099,1461471589,0:500051598
+emod:337804687158388,2747595,7100373337,0:3797937129
+emod:597469670,80669751974,564129148100,0:462736594600
+emod:-373150,494511905,69961532,0:44955656
+emod:541002,396515,663670,0:448308
+emod:7443329,192200716115,819064750,0:75062949
+emod:352331718576096,937115695,121165545639266,0:64461611886972
+emod:94655436207250,2442730,199021327246786,0:98351560387664
+emod:450100,441162616,8233398,0:5554612
+emod:-562161185511147,564556372236072,6280258,0:3623203
+emod:-87181577138119,6636401624,33493475420,0:22078084821
+emod:63757825,675193212577,791180,0:551825
+emod:75719430,7834623506500,81861106,0:11697720
+emod:7636428268,342917,424075566,0:382499056
+emod:2847036414481441,3486471,96180960030,0:59848561291
+emod:7605693821889,6857556039961694,9340113967299,0:2791642232520
+emod:8460275679756,1249967640481565,3530286614,0:1855000398
+emod:-21034390,9455714874055,499517062,0:436407454
+emod:-67878984199,6771837956,26518969637,0:25569641018
+emod:24845854,38512788750888,97880493,0:44709115
+emod:913222119920236,89756684,24503538,0:2358514
+emod:282825837874763,49707087,4419250635,0:2888992652
+emod:63007338,778023537730086,51807416,0:42047040
+emod:86515727,37854772745819,932061443536802,0:913958455659941
+emod:16752138958,84132272429,883645897,0:66146743
+emod:76020717,31715587905196,205759754,0:84248649
+emod:408229656454238,503345091356,5122409740,0:1428721156
+emod:335638746639,5761369582225304,4092173299,0:3495108299
+emod:4118216,163393347759,33772615,0:18314396
+emod:6140126413594,8416471601616,48576280861410361,0:26480949886245014
+emod:-654797902884,3118772351656763,49622473264915,0:8452790798791
+emod:724850698,6033802538378749,5080656658,0:3131590110
+emod:-67747240120320,5206803331886510,16513427532371,0:9305404239198
+emod:571096000432,140739165,2954342334466067,0:1353110426217941
+emod:-99625731171,97620037702645811,44537854660922914,0:235109017589213
+emod:33191179298252,90227008,7699370104843722,0:3200733061202818
+emod:63893120170170773,976336027,635053357,0:242474238
+emod:42622029452,37698167195197,75773078526,0:28876796648
+emod:83620114446490,8610382003,464773010095268,0:378308871158308
+emod:9574472571,9560271542,228122075654,0:119978765197
+emod:56753833744514594,333744771296,46684214084,0:22141695456
+emod:-72021302,2716854503311092,329338426,0:308255178
+emod:-12837777900800,17117883244,11645469,0:4924588
+emod:517104019809,96545405933271150,48276368795,0:10960026506
+emod:749819481,17040593450696047,13586015736,0:2311264233
+emod:-3050009718172511,728537309,5801457671812805,0:5155502323398924
+emod:583365344369904345,274298196969,206968876678,0:178154366245
+emod:38505842262,85917484751521,136556283742,0:107808326812
+emod:15796803,666915498303283,9286239329074,0:2947240710171
+emod:1386598857453,2520081676103,9050689134,0:1960415451
+emod:837113484763,3657616517904,83176471315,0:52463786271
+emod:4678899921,2786079987037,15314196040,0:13824191401
+emod:326751076,992797863718,911067433083695337,0:303879844417619866
+emod:756697895735,14491908578947766,2765309614060,0:864557526445
+emod:11248294,4566321352111312,1353192745166,0:172343816040
+emod:7099878002228869,59309793877,927000340655945159,0:5356010609771131
+emod:-52873339014,197683370410545570,9868414456,0:6992876320
+emod:413327450631,3360204571,9303944255,0:1706685666
+emod:-50582368810,137417275741,67023586922155120,0:46974101556682880
+emod:557831168094776659,36136648411374,6960687433,0:6184527385
+emod:7693794217685,34977654183341149,7387705549462024391,0:5937660734860285181
+emod:1230160392609995,985408024602754529,44727668402979310,0:16636048945342015
+emod:20103166039699,5221451032884,543018728744286356,0:478895368134894537
+emod:87410236728907840,255693035925652,37882890299906,0:34530311513908
+emod:-302501648157631,240206529977,230243222283595,0:46069838353259
+emod:71032979947810,4416429704,2419723038477582,0:15218189462248
+emod:355188737187056,6605255426444793,75874689681,0:60034193666
+emod:6806384607660,60639456674,98209051459683,0:1432252996158
+emod:65303175086889,48887808654898,73427910350,0:4396384481
+emod:7752516269162058,62869883943828471,54774176016,0:2099905536
+emod:4326860229332706,2310571812316625763,54001071080,0:33511865496
+emod:6209542490007593568,8412972472856318,788629588235,0:362055759304
+emod:49913992353929542,2486110799,4585324963758433261,0:995513978680870140
+emod:349243489434121,6540085499657705,1389913007264228051,0:177284383643046305
+emod:375679038462457,2350871880932563,6382236922719413,0:6083733543560031
+emod:-30721033347396,77626742323874,523758275336801,0:84240020331255
+emod:5192099267362805,550370357942059,3061410194809,0:1707076237630
+emod:3546331202177649495,63420031374822,91402241031313,0:53901671764582
+emod:-79044395581,9116190241482576941,239200013057,0:188422584849
+emod:286354276465,8227634038665534,8044901060955,0:5958399217675
+emod:826012386295,49355018525,20566214354390,0:4083971754695
+emod:557522956445489849,32695219802913423753,6644227791725857,0:4886117301253388
+emod:-970081051547602,98172198401841564685,928763975802,0:22343542292
+emod:321415667027595,92728916953004350117,4993968573660723,0:2876297201989143
+emod:-8699136317926938091,34913749137460,747114775995,0:558798686791
+emod:-750347276056433413,65602570699247,72710009984856228277,0:105504442183260111
+emod:796490992759,979812498143888903,84011139142607244,0:27172815871253503
+emod:11599197279102044,36330854506634,5869662463842692,0:4784840887360516
+emod:-34727277565261165051,53891223619,2799195351079917048,0:2607666110843551325
+emod:36836705996677,91726402457474120970,787136088375328120,0:479138071357571209
+emod:786215427840767085,6538388351143408779,402285004679,0:145021397316
+emod:970294384045960,339246418487,392505811982975275,0:228766017656314150
+emod:346820606266075,751258033318226,999763369665239019738,0:843347570419357235431
+emod:5301442588198654136,6353479688437885432,36561155260520,0:30332565944536
+emod:-983848133889575,94515815574826812,64461274919837567,0:37200063729864517
+emod:1440437495907,707949003595768210252,773151956245425964025,0:534921841457783741126
+emod:9193524500595,90938893533,22068045096454773348,0:2946366481749712299
+emod:380288714663108486927,73556495897685,78844051786179,0:11766474674606
+emod:-26813489896157,716398856020,4739728890232268011,0:1219466999743008960
+emod:70217805755997,315269791230838613,7083375858304586,0:3059227926161215
+emod:-504603375916094,8554599200483,203113429839514225,0:156384813943715991
+emod:165732904527293745,925640726772320963,700604179708906,0:676451920881317
+emod:8166221848180,76217001334707,46983566031377519480,0:36926290142288602000
+emod:-709635175190425441750,1295562689422083413,78349035380937817045,0:39271509694798926445
+emod:-2183184852451752183835,379414486190148900,724528035479902191477,0:637578758017403897095
+emod:4238159883750584463888,7386606561456,5728437931813448,0:4306066978435024
+emod:1805409007202,743465586820332156,626695586336006980,0:577226884938331876
+emod:941901705860483,972657766381340158572,16833834708698,0:382737644745
+emod:36719313097210,86800505504547056103,565303478138221,0:473055435424504
+emod:-2666022326987011,3591998328200,40859674965133754,0:23789375408884171
+emod:7645153844358510457,209771482022016006,905933746892551078,0:296096846282298881
+emod:7851918408989360228,84734870178640245420,17989167921034697586,0:903417754686768694
+emod:46165799974266,2935049136348,8423621229264979968786,0:6706766736891832422390
+emod:546378248247723,8703795888148,20029030818332,0:13614240516425
+emod:811349021801350852565,48747346545449,8830100158031,0:5382741806069
+emod:885481101754677356504,7096462381701,455223655560834,0:43346926638854
+emod:-80474402802255,3514824850066,78159132039306813,0:54916880583163335
+emod:7131297407676,3315297183633054184085,934198951388076635723,0:651097991912957628236
+emod:12957689764990,546447634520927,3127766567382808,0:233348459584880
+emod:52914542138895536,376010137099253465,490953375293336830,0:36400103844339446
+emod:45685344805562074769093,61394436169997,80543985329602650474818,0:71110063880403297977149
+emod:-3761985423518632726760,956482080293262442007,25753912455108628113,0:8836130744460244129
+emod:80642483462801,144058405752215292120,106396321855736640702,0:8066898094483615543
+emod:529953061572415,79301418791778407635,92480175275263158380,0:39970833689504413995
+emod:74684906365344856040383,442523186603390862631,9182842638237756,0:8987946408749887
+emod:-71808994356961094403637,86526866467357,8474332396093731,0:2594467781892122
+emod:407234425686004311062,856447201531274,99637771372094,0:11888452937044
+emod:93295648386572486115412,25979074094596934000,83211005582689,0:77383113960508
+emod:9427365949717166,750902522043226813,9221846367078539073,0:7648128015969044021
+emod:92605054801073,5909052810075662,88928490696637500993,0:37110323432146043137
+emod:-82692010434673,814335630290109048818,53615009335053,0:46299654891349
+emod:45016205353589874668,95117600743459,2986728093611093895058,0:319442824024520549342
+emod:-47452361244427905002,7926505809295224807,3915672967969228,0:229192748539424
+emod:-2641799394644983,25158485319487,548355600533885000,0:46465320728116873
+emod:767992806236118220,58099104472634917573004,48648467500194542,0:23718576556107152
+emod:-85155145157549109,521405736695668,339367664853783,0:2173663047474
+emod:3109969578772647428011,22269815033051372764,91121430284940146293642,0:52586393883507723599717
+emod:504356843590479398148,4419882553863792022,9212984461142295,0:1998044953256529
+emod:-10529450854970073999,5289053916959379831,999122926156817831483980,0:128976265175682275841921
+emod:25251527460055267035,26387387620759906501,323214288066858358673,0:254793115154305799288
+emod:6257997874497129340,9035751438224410218,1608008778482293,0:444618779310887
+emod:-9314563912100585682096,5935830113611844768083,947452458146468426,0:907834316089122654
+emod:3164647012237657886390,72243936723121379261,8112420611117792966,0:6801353756302558894
+emod:908809580547671,11401194426509342,3883128241166899713060,0:688491805461764918101
+emod:829435256639678,469855084024947,237050421425357196,0:185926450835794340
+emod:-193452572186083034,763665077760046967,629827785597782,0:574275231643438
+emod:7638580239647112236,383888251385090059747,356384740003525821086,0:304972626268345366750
+emod:-72910784081163807426,4623502102569648619,293471055432367196531956,0:13722886778137743252076
+emod:156391592094203189804337,180577077123580,281066969751444,0:219820379090949
+emod:93982143896834595,99254856446162105637797,82935001019817754026,0:28907883734889605835
+emod:82453615072254173,9862903307325418383,569773975023302632076,0:311001760399812937577
+emod:3599043000903587396023,1768639534098606,38013039729215754,0:1079943278228851
+emod:863869462578254620,414856952917501776,32810489269754337315502,0:30667070092013729127996
+emod:-67081501875735917569336,2248358004479895344546,812436139390882,0:530577288676906
+emod:-932875447143221697244421,22884241204983991,156603178117421124,0:5900450340225199
+emod:-4456681099810903468721166,99859000729568447523,4675399066130721,0:113161030847184
+emod:-843621806462466979,168009327704701836752481,10448286951664808938217,0:2076672088394686331297
+emod:4833390360325487794744,8202438083226798875527459,271225323310380890,0:109131151997473424
+emod:657374545071472745,615300564202736701004,50439174668838374,0:15625484688443795
+emod:334093752354839787827005,401544420239962514,99419641355758954494574,0:38382862135390739723851
+emod:156986963896657756211092,9173759581769093378967163,8482190150813633225,0:846371056378442363
+emod:1965032331757601512,642865979115343140209,9373512589399604415598947,0:7634824208068996776380749
+emod:-884974536295232799227800,81559669471762219,77787068435634953,0:63000181811454420
+emod:2100689836805842766786405,3628560134433649198454,34727948234158164340523,0:13219112123623843462414
+emod:204578349882954931508,882862780583656098107,571211084473029381559,0:187547454428552727366
+emod:35013594249255180219043301,910526477139765124,281006281284018940,0:134109664959487161
+emod:-467870778338402348427,54493035145105123686,5912947085723132571998682,0:1228965263004421246389831
+emod:94103148636604290205719396,6986083069335320780020283,858637669487264716206825,0:855205440944993038852461
+emod:9132908171171712697673,41809905452128490,174186492804184908063,0:154317930053007308485
+emod:7763434019228270224295,2502174946472481,71917943549435776979260745,0:6076366391198365677016715
+emod:-624036880788622535703082,608930212992798754,7235811042721337412628,0:1325308214356957324816
+emod:41112778559515327410738,82601330734126683,389247780403397923,0:182819510299862932
+emod:-647553347892336647456803,634286301340932198340,4512267124852163233,0:4111852157418352314
+emod:79428691080290217,198093832523396251835,150772939563126693976322,0:36470696123667183989883
+emod:6751000393418867022,67240075486544827,663245235329581121676,0:362034082749896584032
+emod:57296278532026543994019,519712307129820052877,663606606885427005,0:297293712817608939
+emod:531634944201680433,69864774974090600,96423733207237312620797,0:20862933415144438574915
+emod:4605715778913218047806,7769596422373325424743519,563574411491581221,0:123599395766971416
+emod:910034907691723750329932,17528561702379847624714,7515500539229911873279,0:6808962399448284143279
+emod:61052317026574460778685340,77880774451137672778485,69232824274358824169,0:51811780816940817487
+emod:7504746423220767824904370,1945066924906518322,80909556817814270662793,0:22566971663084142719867
+emod:929639344035642594793369698,3240062063297979069920119,850413690404585997068724106,0:175349368401050551985442488
+emod:-55736601709440224634358,811055227679722468934466,1713909333328494414590,0:1152624446078802914104
+emod:-1356054913265870994230220,28314681428333792392,42265180710762324353,0:34292912442229873713
+emod:795295333902960419,8481745029583236616,343155151194196011568598680,0:313527770347784158498537041
+emod:2432870569967522452,48595187151195492,378387522780739724,0:233064959084707632
+emod:6831853307491550923094341,4409540435311149052023,91972635448121089016,0:52155803105308856869
+emod:99769909628484709088680438,668486550259622211760148794,99625276554619484105,0:10139590869737725659
+emod:5889039212181347754641685,676061753141375585943062606,776941837814809562309,0:443449450881823633972
+emod:479351744822383002190971448,468173515469111051509,167960102357712774,0:66373795292168212
+emod:373219776743647759815237747,78249029163204510445,237186840834301611953,0:93966418449839408977
+emod:548375816882114508561323746,896053512213126651537,4677386569405408164,0:4478771625586068820
+emod:543601581214625935,1432960291544699189690679,924713807666487815493709763,0:862081075000207249513732210
+emod:1726232497710046755875742,5018298664228901655980708,7598365887065911342569,0:4962214251289027951290
+emod:9940521109172176165804017,4735918364128985502,350872142370229985,0:77630482962237299
+emod:935844817555228747927989470,350944095522512127242,825141475757917666304,0:534643899908921707520
+emod:2636017152603937585811,88011950079842198071310,5957119762224240516059563,0:2064861372547160647113440
+emod:459469197042596126,604919581582116554623882,89801712022876493637,0:68195913281093479378
+emod:4677369076208454967820890632,13495127487606866501768,951687217731413972141,0:425940812723542345395
+emod:1566835275008318146,21867518155515654397956,7894931071725936607844864896,0:5253224487355519414221016704
+emod:3095066120724771665597351,7840426399106867615329405,705258460541720096620295,0:414423194663820488096331
+emod:91875762895950687211242590,6694585759057681706987,7365408657949985936,0:4938741305415608976
+emod:443023899338514715234998,24793081831491994199,24949681672266832443634,0:22293819994495988487874
+emod:8441986070029128775,997522126456942441153610,11266967419294676193463,0:4453548841469958625938
+emod:295284416391225922343593,3617280519422675857505683400,14967809405365615010815,0:7477177024743894714751
+emod:2748651151308839006,37444237944901366482969738,351048919067619839,0:320910471543612655
+emod:-856968271079561907778735,54979731653719035309,13976862935818813774447156,0:9945835571304601097054109
+emod:-3585077692884519189,1798930632211469960587972,70639908743442539388,0:23667983555955792981
+emod:6524605456430450605,56279387249888817212050,3814442499042852567,0:1145383276626865816
+emod:85234961390603945529096,75018358449394308437641627,12556653126866666115633914,0:5730557471924420585444024
+emod:2456775653742592876022454990,3560359960250729589724528,66846897799509249930222618344,0:17148877353421047482932486912
+emod:60282271857634247950,2052963624811178191751039152,906040428126999262088429727,0:32620681800129303136189897
+emod:54070246300857636559309,22183829543621704345694286,197786250025515478569975,0:12804855038900748642766
+emod:9617136486380916397202,4126846760685727322075123,78146300710034615866,0:51417588230377161780
+emod:62448246499005815495980,271071921688103354259,84492924742872826420211992495,0:66230579346601533104993148070
+emod:291386580832558654322705,764558287307875268927802656,447484733675418860019,0:11605899890452215403
+emod:32205011691602629984379183426,29358614276116380282,907702927282762504936328,0:643210659902127157683712
+emod:432494591994967547828093,358695607350358964677676,38957308299840969040967042,0:16197996155411494418456541
+emod:62528660927816817311355639978,47252461860428008289625225,6282175389133291127280,0:3555910613503639333728
+emod:-7614434286778285473167,474945456781970658327,621222471994372349220,0:549700448153054416597
+emod:311184079845536545337250910,9227029559805107004632726,52006471030183808566923631,0:25043301259244786049173911
+emod:3230868170439410850659865082,898186274112724548080138325,97707512380767417641,0:86932054306036765096
+emod:834011756636699109536519415,655009820336167759334332874,6890219519286864975018117944,0:2569215046679239758839951841
+emod:92892177448912750218,741399635351000593290121,624016777142908239971157,0:25136877523502693125494
+emod:836992515247957659739610,2583612763764193545264,1174519855635794829842116895,0:750264993625612676826364480
+emod:320791582460540931132160011,677439026930118779930468052,7415527559007185772557,0:6931004685726629652067
+emod:101060981222042386397,835069990698118657833498051093,304411313271626308269946786609,0:285961239724909691347928816210
+emod:-9581797085167617798550,69848378277411149359046,669942888182689235848827883504,0:254947621159139967003748108640
+emod:-94964174425453007033,714714872860590256160828941,146992630364320648886162567,0:112947428019587305836657677
+emod:490519145948557684335954,9081227005048911779923546,22555674763700463167272317713,0:5273066867735076907883920377
+emod:1222395170293635119614342,198182065457378753800,396502033389928296562225041686,0:76278932978086825000656068226
+emod:51847702997938374834482757925,65476864639254697225873266265,9982159563202907510238115896,0:520589670319457135074666741
+emod:444956279289663791215,101406862272274292233509,2521187648951207508813886007,0:1270796539216569834626269783
+emod:241755197289597987901,2982588579376062144566419683,46590075624035346402027176400,0:2234222576652608430033640501
+emod:30298268536110439415,5662223601814697342044103898,1675333306953772484178502284,0:956756379448476070508796445
+emod:9243876208586685329510289,358317687877159897071845946358,23373687043380292463158517976,0:18143528811380542759393916529
+emod:23933345236350049832324943731,1463874466227132752562758546,30285509683054247993598313,0:22909785183159204540182817
+emod:8232014647356048136737851,23114731717567737971387,5589633642881113626832,0:4835838093570844807475
+emod:1572721001930467120310,32884392623150618360081,127189088301879894538319,0:56473705512662665317934
+emod:-6309990340663959494270231,54301230262284516360861,714321021064688153899314430099,0:84913950012890099224323844767
+emod:724404836134898298450826978,79473347677565218701802220,85097228863562935294353,0:23425975598985124017685
+emod:1248615504830621338524,4939277515828927242493219,856480994935389549295086483,0:208559579900786673941630403
+emod:71694075133584459673485423,491471707800513684058387625,57613309973036459402620201485,0:9334604736522066347584171098
+emod:487205142874162363228855132,32170196309678727121574378501,2365947677964956706238797837018,0:1460443051085803997813915083462
+emod:10498793931533837751986544,83121914354650984352606,84780501352556446964608987,0:2663500197542495228867200
+emod:858271416618515546128946278,461548172771122263789060099,290346398222664413963288252,0:199454897909502042282033164
+emod:194961196331029028416806,3010397360933184988474874531100,8894255215761028137154900,0:4725434487338660122833576
+emod:406136918536976813980235355,373377808309891123266509790,8051548562083247464877013,0:6712616553296291113074471
+emod:-2530001401510124123338044,9596531290218038290076321444660,94617861891432411698686664,0:82720940727488645909580144
+emod:962341019433102549599309756,87959647015007020857271,4814935972310202770646,0:1937702586166074196292
+emod:-9481051936536536822112378933,19198535394666739186712937,381277436963458897720268488253,0:221821071935200208681658632115
+emod:188158462154750488255090,5147960444849946425093800,557834326930177732304779,0:535548855861651576845189
+emod:320937896085553144086178,691095750038113040331093041,26671339372282533818130976644,0:16304271928904332907031077440
+emod:6459406930432717296751,26393034277242496542604,95792580547993865659473661096,0:16263747513649826536284379625
+emod:-3955284617135866036386266,88955985063356610183176901,47993723273921407452861564818084,0:36345079468314192494573668280420
+emod:4469223387855120286647143627227,112486512731974346137499409882,674951744546236842962508833599,0:263941892665547640864795291242
+emod:5842180236545542508010186,3813995676143309308292843196544,419290459505201296652777,0:194534437035210733745993
+emod:52508914199335388219666638736,609717218258403246894120563,365684533154366812172288342,0:306118597360054606711715756
+emod:5797432698581273588431858,441479045571067025706603688,282607387577967901654384422862,0:110229077503714060775972506150
+emod:65328925252943246789191171238484,96713927150618911532802278,22277460692198085977483518,0:7608494060818884444883860
+emod:-3505111910190253821104955721,8184864474744270904051127420,194419774575051270128492444,0:162992788664326488651926473
+emod:-604067818162739797934946139,9043516039569227564714121728292,7767059317109793197108173473745,0:6948009587818483763849064344026
+emod:7754422959972636616784266184,659289209085822436564762,8509024996912387887787842,0:2665536004048450967780290
+emod:36416867151518840487645460967878,844372541160118666333682064,952635585495157217378104,0:851359968458957942741896
+emod:6507853401807441673041800837243,34718667350062293363755353,5468669123427020938108147,0:4716020318197938412234249
+emod:51211857820907905381543,77515986228844405658622,52805031690609904659313514144,0:46181146040418002449595796465
+emod:-3481005717923100913496633,72515117151236778732398780112,164464215085523994586779407667,0:110489875791376642480427623726
+emod:9727520131157808840831645280,924001182352699721614717943074,93954856739560714418171822477006,0:53602981268650203244797808464888
+emod:6268799672425688143953868,65752004602477767685988190527369,919519002172663755283332370,0:743721248544699996778206728
+emod:217255430663108140697379866,5639408060368994877725872115390,827864622867155990409562324662297,0:346888052171315931113255266057390
+emod:9584126703131986575758741162,32590496648447908561813496450,160498103515332847853363,0:53968810450556766053341
+emod:-76826728747216724677957902631,961349485758023144791477276257,137367232300949721808331182,0:4959768054309457695928319
+emod:62055398452252367690310080057082,129229535556008217119353115725686,9981426678099891826285608,0:805998125116661384829888
+emod:202510417400115156940889305598,15341206726182593212766128,996183974088677690094216724625421,0:817289450583828545947664474415931
+emod:-25516453293605744322947001163,5071219340735886356369047,602175104818483716891162778987,0:411839702152622861532714876139
+emod:993183387816460492640272,1614311327330565172683092096222,497972804217752566422039,0:494226915046684056423589
+emod:-139458968709342780820670342293,84079268451086347933669527964491,7982294793121272710766231686742,0:4200752285053689019247323342313
+emod:-642079420338207037888590791886,5097585020105759079603894,1749318042304737154855400042,0:202512538887870570156602468
+emod:526399148116041173415852373,940696687718156710488520497,50662078590094962860547244145,0:45895605101830456875539711113
+emod:8906813754152277992921404,80888477226023092123029527,13570789641532548676576422141690,0:11991254102988651371230177697914
+emod:93310258111859031487846046,779504595719824871139074,2316452607286039459212508186835,0:1841260888091242285457152387296
+emod:90444057415261195182482901256,534224787389163242275249003871,5364056042511354002232797243,0:2973840956442065396692091111
+emod:3159667409620907467186412,992919840843965860035887,83366646442680814563981888244,0:48427633954764114194397665660
+emod:99320619586506347666588920440,4405632885227428882941735745,19542923441973303902244764,0:2496404967738009049373508
+emod:80097846201870647655651438569,7478823295278459690728990,760398924078893349243418019,0:626123454565827223374998274
+emod:-617776158199232099295079230176249,968254047400958548769181004211204,44388668787389960907543,0:12309724362933796108087
+emod:1941484805465095241888868932546,28318560596248215297413369,78732478295542770828847418,0:11323556200622810322816682
+emod:6902476729554822701916716,82251167994228841481066017,35882713885308531026666821,0:34780023777540678364801405
+emod:5062468746465213498385560089,8136268100978763412711554289,68866609367366454712369109,0:44871781917238275621305468
+emod:88628634209852159542629660518,9900653566206690096097393485358,5146762817312746650783957833123075,0:1130545067675413155892767251194249
+emod:4183039741492584407492357481,978182783653208012914682683,64655693200972774031969126,0:5025716145757911119761805
+emod:5009607688574515313104324,2147563655528822623340385945,6236086785233460500733859,0:1405104917101339899753318
+emod:936982273588401762969515216739112,973707182278032902057390292,1894889840757299574823297466,0:1186002927649083815020840328
+emod:-979316518105993608150102623315,2370209457844401593122209941555,54428721194110089109350854,0:26913462600141970364018171
+emod:-5655018125941779786582905,17920278334613052052585561795,924138192567854018477877769509401,0:61476589026820682320306888608974
+emod:84489372498470137649774035034,7109018035481124695636450,5797230889810299281193349634019,0:5612051483938131301074837863677
+emod:107426142087823893785249225,5226421952107015855967156538,834564679898397955796242150,0:374409797926018190303172625
+emod:157094343256569268019396107347412,3363666015878047053403499712,3077292378832241991737688300,0:2345199073898407378386288256
+emod:4599347793505224871406391916492561,10349753756389543100648649,65816642199331170025417801554157,0:24079921356378393197992579532100
+emod:847167595799527189060120024265075,9107386461422683351260870279493410,92958250555849386269043855,0:35153939443890825069457375
+emod:-1191675132738936968619514,74950542877141809186776499,30939415755921402575464055877087805,0:17053440194220346967773901128643571
+emod:-6782161375037252568833831731,21588926184031614794842404042439,87384900356318490043390649044683,0:78411924985423842001255202388041
+emod:725370238412744340662463645,801132128288180827454102757582711,620855082501145881156782549,0:359871609759550116946514648
+emod:-874379189856445894179721337013,990125527305844856332150787749081,8231539277268138641840413167,0:2289484932966836920485418470
+emod:-83008902474732975330921978226,82794210686607729439615194829247,147791999288202013476656713406,0:146693025926271847405525671222
+emod:993041496775769783771922013177,652198618560534787722679399482,14725280081827750297488969316270418,0:12116281278492392720710544362298223
+emod:46622323497579971935863115,394817683428792448650089831981,275712081411878292477481334593,0:158697271488808580622506705623
+emod:-3898794108935715830804259645307545,8539310275091037665015112113,410028214486245399572630623,0:154269296324614984783868211
+emod:79671715478701846571943769152118,50747562547703106180109929449357,4023635598183808950664694822818865,0:1391680419606609518497878438964728
+emod:559336542916921480977013076660,3500214095929566980492663465,336757157474053361967887529292827,0:205213355551911588287255669283398
+emod:67082036968759143737139839,523004801838061152155611054,471652207874138548702202353,0:106442966546624668524597821
+emod:-3256665451209505423898886159916,59781980277755911367047005074,91129573344353344374535568122224243,0:32050945513189163759638087657164892
+emod:421990276114311172439204299235,35826815490436606511044043492,15446384327646373190492730438585,0:9198468415514629536422965781785
+emod:44343136069714981893949445602918,74625812833376942712384866,8553344812866281257132806310141,0:5783836105657448834498697176854
+emod:-3350599651069474402466963632288428,111533243609492247217520718860965,19776907108357809938962249484450996,0:8355570250148181808922442971171888
+emod:1174811337592368749244214511251994,42091803705746744966101838336617,845309015023334575607631339,0:328886787862996931441907071
+emod:-29148586556051713564217625193,68513553022673456091977636318,517234274741375130441484814600195366,0:261242636773611113876824326123905043
+emod:6504167945767766564692832116,79109138160593227576416337070705,859309929776480635814520707,0:653461697201929229418946370
+emod:93782137244393346713836734,79816233695566241785503895940612,47212904918142268923262812947,0:35930841356748083688108060545
+emod:-481374015950451874599738760,971500384056236606682756504,449203445432063323041956755151715073,0:326479696526020517109710611255112326
+emod:33975864000889551938267169,96711853837688512196605358270819,1078256621965966374431724388,0:90992844234742791085579521
+emod:108501037609635132976961872036788203,6219795372158712553653962311654,8716372274939376496374246159612450,0:46493029021502557862865275214619
+emod:-2231157093133343418986538244814994,83376994288776233556841533573723558,947070007417842767887988323,0:569695285035798211404990578
+emod:4320183260196502618997084267,41119367893002798881298799670088,928548312561033253354469301,0:685331663284665282972257551
+emod:989219761371718106548064391401720215,746254976033978038152730412247975,899234555824809502131806801683692,0:353153945728216728164717147859487
+emod:70249906941776493080760539479,449610892140392817236359849962857788,4178349342228788164226432276235,0:1335233721704565001505221772011
+emod:545502797337663151341732385037258,90145671428166124528612984500230,65353209667979259637734612828610332,0:56057131907461848190987965655332892
+emod:70201665323655856669206321215,82151238444466709049154516320141984,720986595714891193688614781,0:434647021965056085408831563
+emod:421198830106569057199561575692,1004609557346343726386068926525410,633868114840728850333551602744,0:604704399006232077090793233120
+emod:4615256370681079013157800020325,8400414787259268709004735030130,44141279558739534891246414484563077,0:18767312155202497589136865119303869
+emod:51901922040540262359036981493,66541229620660433942048401110186352,604842069438884017503376380377487,0:560241581983999804968823332813883
+emod:865876649476766227336308707540,54523494380158570191694786271952,30189625477183041262303690798037,0:5517799863814849137124453024505
+emod:540104790337412628896589738918163962,25517420734892235958218943479822962,516223444101948157559494280688,0:285444604149225295822139831184
+emod:-120865564927993207924741653485624,913588382476805140812832387555144,5292849031978636063718154558956,0:379625045854381376013487318700
+emod:70630316045710645831137056416098,472369686133234789698150515963,59384539168300629700324758824,0:15022806530946436030583838784
+emod:3922428518882665203875466914597759,68182625456652248599363364893901806,6502711284299228524855233028593,0:2808475877330758629142848372619
+emod:-767906197466320392395972570845,5881247518778543233940000315537304,287419172400279725552523866012,0:208494064792679452780358308329
+emod:-183473058607238695125794649,5195900726421669056563048427,4401632354842192930996857262,0:4089525058119677938261594431
+emod:165422203258159204617067246120,96059662222900813086080021260,42765970916596985181285425013,0:3450069033793034400281980621
+emod:-6202976578952904184671995477658,2047878587371155342936292231391653173,638007817147957433105556793060,0:264771935095789602347821114292
+emod:5715510499720116696692085743763,585913772675513473362454296932,1051092429534137447273592584087,0:682705608964805508054206642997
+emod:8554351601263637934780353184462472,2234206121089089275957949179,718140465388982120919431110935367,0:184669837268894201543573681894661
+emod:80692144241982166867606755367641125,2849616930185309069767665166,23879511236239108118965785436012,0:20523073803895280124615325144457
+emod:99791107145824395590258329666,325370594025067544378522706736314,96399847267939282102767305772251127,0:2325174100015879854256600082049436
+emod:4159932940100685089115794076141116759,23990995412460118678564628973765928,80832081463108433977538716243727639946,0:67527463845329678499612133471786203313
+emod:788157166896159069390966287243419,1486322813809144772467638907874658537,891915835907995407210370317163200,0:102062258185041646930644428900539
+emod:39482400163217130341378273663281863,5988616246240813543901974803730,5233286401955663097666421133559,0:1266706417570788723251682663891
+emod:37283395352033119876301598293239416669,13544410706066077917137340119619527,90922298984492607133074207595203967287,0:29635409004691233225521023456097882412
+emod:997092394433838709995127446401,945171627926561384468473783312841500,810366180441978415788967038942786,0:208268256396490525163362174178287
+emod:8028402014609956835909160326346782,26557618265296731376128156126,460114218338498016675422156130523617,0:57220159633664593786040042202487645
+emod:82562576995621135938138768719119421725,80752496992618170687901372956534626,1448566551160810322268830690053691854,0:646521647376500058682612093836622553
+emod:85548648520427764614796522518452921164,89651898605887779463577396538675594569,65124148378449835470532787649213,0:40497439208050142443242215136607
+emod:16837336872939465286295768414551331,569935780141651744430445423490,8783437523930110362354247602517607,0:2046943362901310534745130604075491
+emod:-4440812678686390091523604851953175,389451017692789149570538026068781,1428843786528259273557255613906046765,0:1080150304658630116675444179316296480
+emod:967128946679209456313061694178754547,71927999075234140765964350500643464922,5912388198893179472569863818550882,0:519919011257421171091112245394593
+emod:50956630538253741318888787410839027467,7254477767965547955941480470459567,615206000459040658792942579937518,0:553679691619602644270040205425927
+emod:3275455955848771032620932860648810050,31488699805619979770222331680514,80458424575688534547636632889962148887,0:6244384826050692991633033848953781669
+emod:-21389208725934970402070480138,83394267330366428453791161248271,435867681437150310057862989648368134,0:48165848424304409414740281589776608
+emod:85613012922122238849286197885966265,6264623415046666744379998032348811600,4673861359129062110917409479097,0:922666804172116833801730611634
+emod:280083488936332437588802230890313578923,244124978249612335794064534642,2375736859306949519167609169171687,0:551623669267415869843380453511910
+emod:781188309374419725364720820335533,135014953285485878049171718509399492969,344084387156056462159513838518,0:106507543249649319840719909431
+emod:98561799065473561371563615410812461706,9134726040214334897451541211570930222,77036158481210325032314040316433349581,0:10604005574133189996015761603720044688
+emod:5834647121579885467217130407763503632,200264652092134485478998460165283,49796811768811795244403981652327326,0:12616757208278628842077030859699158
+emod:7156274802094801607862890235975,298547310278869882278519047422,3385164957713213782961023671150442537,0:2365150345459624684113261880718766685
+emod:79536547656264208689393334480936544,8321385671827825288762542280445,785140248493770428377830327387,0:667723641201713821468357364660
+emod:2401918006460405664310271707131,7938856973411329632754746333467451353,50252536011125420227927790886850,0:2560962372344356633910159134191
+emod:-640484386299773856766873434498216561663,521312377097674590222482921347754,2076627816299488817471309926917653,0:1044102083342050524913059924893882
+emod:45733835810902836305620972021854492,637659651938075050952475958589,780295381235534049283047240996085162,0:356302494046578600997282893502520224
+emod:-705304982613296623295125876847640,664590498867602222651797274067257719868,7499703984527131597058855628260006298,0:4482230223758031512649996652730841066
+emod:9684252440964253807141800312433763,190043365382656690493696042245955707225,3095261211042298242370348907837021107,0:2250643148518714515189768690498752024
+emod:-89032437425480643935967748757354416,621983182028088553431259572347916435410,38079815655996180160875323024441762,0:32643143118487494012451637529005930
+emod:6548447424813914775693159183257,65121910212312442407559411924073,985538984256472333797587014404581436986,0:740155433087747455737389029181370989287
+emod:4289065821289287300568064096399722,9121623380688074176040884046612007916,961296580001696582058791225882,0:45381992080327999853100134788
+emod:-72973996651785334626703541251510,851343162677051554053312177517930014,11415255076241129984914658151314087,0:11296475116822862530646104043954143
+emod:6215781314311141827082903466280283111,82690774957918159004435315373320417,27716342728984668538238211473421,0:2433474471136329719554510283452
+emod:39290925538924182292886302889784,3013982337030112395184480691476,2874832168405952076336884530324927723027,0:2409837907629149262138096279585792264660
+emod:9277827192686619891057091530556789562,96429757152650874683611007657644,4535029359155968493194223758827,0:3867452547234619026743402511805
+emod:5694258184281411312360339289572762440841,7178050879307469422753687401052115032679,9753293426594405370122100566371326332981,0:1459323522232121155703484803621777382578
+emod:2631708872518347779478401470159636,69245107191231315124801771805922519,5376563717710166640876235141463100221,0:1586930529708153725166340638954835393
+emod:-532822740296211412518831858845632,40668524195320929579193193936667373,505606545836126920558776593155866029,0:421534471253420106860659063178492972
+emod:-18119290713835899269532794976004002911,37879676757802798170292588489563693,51891136935808235992985547250049168,0:14815387892201994526759362316856817
+emod:944625015888233591695043379987489,7693259777885983120642487312415887,3163174379156957158184811373016,0:868511369288625949950763838225
+emod:-8261719628034460466290601450600373559914,269611237440354291239517315110858,799350125207208117394870062241902513223,0:399235834451270298186875260990350588241
+emod:79473780570881594097438192951192117314,7169647683642226403729056378024586066648,22954171389461145428057650940743,0:2168846776879932971592555333531
+emod:95869904428201135413560110749448802753,158340104707707507507946829328121,90984891161322604272382067470532492205,0:5924564037970417636455059119103926748
+emod:-22521492621302175192658392780275102359,7693302694515406325578226762983037994984,782722878640118008162156430550954718,0:119815974456412544146474518425004437
+emod:9963842744602755276656167034564168,48412659540989981271789655274768,43293723041754769021056672485976,0:38945698446931926733887929540536
+emod:1320877778921077387166182925462256771230,57630920609252345178704453175970,3193372771615772702336566528721798637962,0:788819527153114047491271244519182772544
+emod:668849032341201560206891871233861747403,888433768055712910244091518751770,267361236110795236214710559012632439586,0:155637798445501597369455066609821901151
+emod:6512075833061087798080551616254563514,32092556887038243782172094249883515187,7726674502992997466882017926352963171,0:3997773747495074686605793565307898133
+emod:175331741086869721483946575985451578,498971069791965179508784120214414266,36153226259659293800129850353069792,0:11517636272100517299763240352733600
+emod:-677346278108428877376669412246870,9122326662016035239584815083992070495176,8466447950617025601185822550216037750,0:7996073485764019141592014511479503500
+emod:3004006376153998272508651886671867319,89420637491378914617711759949193596,94841662569213792123219861089357581,0:91022466232802632841224039771245469
+emod:141963083020862928745284661527006268743,1094074097142911406442396572480839364679,14372416626149499532166554918559602886813,0:10501331757552726404117414997172439332093
+emod:3537251641169958447429792087940591841,85312557100182485395003016294806105,4933954336062823716515388316534139210277,0:1264190504163163061419402586060377117556
+emod:7613372643252414055043698859413975454452,8104856536803203203690055640315246210,22350828251203871238906729812254148392345,0:13852329926953072565535594189985589893489
+emod:5496200720802281470038810856743043086,13398984382633586073486065955736662183,79312825247526611330966937485082122,0:66661235819185738734811419475614276
+emod:63918543446915084085082601250202595579,8493763746998771444323258554325712411,4937677683346782838292257801829180799,0:3333170338194997537460486316124046513
+emod:36261747289234573444167038136694149416,2349120291543932920428306772143,686686391823818082220818261012540,0:264297913952895694560131373515156
+emod:91704684660004985825508358858995087038874,2015370309491008506921827067333129594,9135792372038219712944984119888962386,0:4529804613575839287527481063380800506
+emod:30278645824646334826846693204541658068926,12818636001054407099890316510058892,7851583114283368731828210428552882985,0:5669753244104840595149054032720029076
+emod:2796270570869456261650857714163957,11563304674625187778126296571762555,6215093511413186796467390016946078,0:4670137082336559942534996304341551
+emod:768218963811498104890466470855528,87947819439418684675632728454831941,1973550877645428060151378123682620,0:441798238493938931699648323746568
+emod:-2428535063509936208105830667774640,3035965301290018588642321798578636,188189970059256072630697270059421551204,0:187579612082668219226020920724838998284
+emod:-68851281721881705328338599426899449637,61411216780529093075213667248360855790,762904049248955019330945036218634,0:462150975555814307044400024262763
+emod:50381922933536391983048133911745304,1327567537265931585748836565776184592881,802215654672213785119298527941754940929,0:390003904015432758428242187678591715653
+emod:529101440911633844520662940603032143,43786012747535262261511038179577399,511020742387225982022507255362265561978107,0:43144871536679970770284455068495104451271
+emod:-83888631215376392729015255508425419556,2987291005239618438509136686862070733775,961384311110037617113682300965438706,0:29648441889315953286284555584666926
+emod:-821196282249805910413962910577363,899754172277729178591041212333965173866,28634570307010794416106940080087125523,0:13173340434987909802210494442005883282
+emod:381631360270395672709101001383167564,5158459604313031569589122775835258400018,179977223820697561825527184706001338,0:90425662788930319644902518702187078
+emod:86931293242801082346374758755111010579020,2626551520446310376390615092828594222,938653251144169045231475456784193560847491,0:365195163429401966471156565576650759315955
+emod:571783539909088029876839939054322959996,3089568378114138198880587155086119890,2744081752554506253029969486161407282,0:1264543407557838374228627104087788028
+emod:-90886625513314511815555188570608546,51200053536142533814421471973168803,3158468647093861876601465341868309,0:2925547080612167963149993945191255
+emod:678603997120076532741658796530004849,43414916815768520427422498534418015,8716484032032480216675313011200057709,0:76319340105732892359044842900479950
+emod:612730541295585524235353860578447295001,22424302005854819986022320120713071951,173790728285176883772120949725911541084,0:137975127594893849412331247896142478137
+emod:13948884468878712500594129935211199120603,9383236477661484239823311361156037555,7150124390877159720608122766898971171111,0:5539575869437504207805443963399777689601
+emod:54492739252211246006137151994700249,67190668798711463919179422578016332737406,5016308665959551730292366483247498,0:4961979712444768037254544658761431
+emod:29680512164999518310606641453082247,1353001032424138907392467987475747589038,459082082784205465090366530024559,0:450480541453779074511769512964428
+emod:15403192267035685992492637058662708278079,691714738501419527821402660938221344683,7782687609483337882572886515961628752,0:7725198743465314962321221679530076511
+emod:126478593002688908873146865473634929634525,6358340236015836865079291052256775,642178072362342080585886203440168430935,0:218622928181521828894284595162507920145
+emod:13913359834837755549848482705915052266,903509443568563265008997239488312244,38405152518791040164077250979465916520,0:28518709836314856470772911348321435016
+emod:83931848804764686468764875474979982242,37231771700852953560669364821981996529,8064976106252567560098554617279771,0:3942705697569048252011335611766898
+emod:87898783621436420303252969787195069,967379407272322490869598290122854378588,601280977875708034746188580088928109,0:411325933760221674646671409872577059
+emod:-574877736091741275350898383808389927915699,594958545957868400560169903622579655897,4423949440914171636206327704817250586403446,0:3323591297752691954350870547829008827201931
+emod:124800993363976911520180513839889298395611,3963571144428060960568682938453332161723183,674078271234292330095446224557694423193,0:422135852569833954257620597634971621477
+emod:90777341202629209516486441959509025385211,33892788023206849882232725042383975802458,965834508749187083956638172933001579344,0:656580209956545000201526160758647431417
+emod:428177661658876831707141329481947688426,65730335739816729185618200604751902,5583905204611961380972834719217342953,0:1199936539591520430103110063283203324
+emod:7784166932835047133921651620293244411254,45683020890860577526532414749737728,8865546781759541156004910823031924045350,0:8781672808470559198269957754771904762286
+emod:-50974859063823766693159687850998551,4260289458698540774171384011548170301484,3075280497472455596559827351977048841679,0:640353521741095591912508608109444685750
+emod:-44302701915422822099105814706266768585326,352328336928075991743029118271328701469969,197750610229907539580754650086642390905,0:93246465784416858941838796225126642669
+emod:766771922418857228732717683752395675,53187483912419491901307730154421458430,92096091103428097138850170920718803085695,0:57565491053888594101424663327538976145125
+emod:52721172881006130419437464601359973583,52365059560631450286814267296264202147,498576604623229902884884195640797562,0:181571367769928285755960377087597847
+emod:-130061614640638992198273716595411981919,2346118145486800692560690336691790893,1645004080847919147880779643424152795003,0:465587055828660570780657181568452731225
+emod:307876682184042075642894436987556451604446,414568064245406529394828107789210339588896,477711345483924032017056685517738462284,0:109389690976160199299716512672430415312
+emod:5371610880889161920476163626282917268,671190145264797106864756436651734380622028,857741777438607646271321549114765205923350,0:287287981571642915909267131628181821120776
+emod:5204868302533203940801436297790593533332860,83487861479973096451480151041003379,71382668037578608278694683426146288,0:30832566835341111033409687661632112
+emod:556625156486454810659526673624620788538,4626440741141159394644754018141116454244,72891055350325059886351235380188925751695331,0:57282604851594939929936357788070706169855035
+emod:-89511300923170376817021029243002896666477,903721376056645176029730798837754904819,2013905533937026971053538084460982634236907,0:570791309010977172526727690555890004463372
+emod:69694851714973479181534773177163535244,386316471197222025887461600408882433030749,490469070636694229175921907889063586231473,0:427487689181588318519876546414273004996449
+emod:-588196597032453101052930493773379817093105,42480403111373035847406143062717911612705,4544690508644322943234886196205261164011,0:2047663912083358415178872122408088880103
+emod:18601385516319880347082113262021644716,353623982591699522702650394835799306077,882857015216699962449940196076317077670033,0:167450675786501647351135027234844843065181
+emod:8987750839863791535937648238891007778,4992783303820924306757780883007042021257,44078061546357456041964194188918599,0:7906772385757741707231672436897321
+emod:3066043816339025712845503823677606013,902933129598925384688189274201201551,9952994249589962222132861005360182224154,0:1174534817927019518079679504541484744197
+emod:-8621225450444798677120486482628514696,99155842760569961250514993113606863884,25114933437945893268599527258089494552599091,0:2901441178432592927100180880754049113544590
+emod:90281107710916849341198657251024115664365,754667850911713614499014770880887141334,30898295870918445141561498179371522917819,0:13951738483311575701788614225768771977539
+emod:-377295017128784286263228943698366029281236,815351785301111612401048321797886149066,29710296428625255526774084470011099286,0:16786657050746173886424618254498209594
+emod:90209342286956964721158878154317059477,1184109459781060213060226071584865744,30538892118817816797303238023509341587403,0:28384974665672321900008538327342162253338
+emod:-76207593117960738992003792949566245548142,85201520873038006008429375802296986890284067,9310049288843035339384905918862674083743,0:702354734188303284325632288622165913045
+emod:3050032614782701178357664755062786032,6801863531876714949028658176036217984466954,43950118108330216557290417378894698723105,0:39620291264605476263313200424175332570554
+emod:677773161150320527783770738001557704372,737402634272859936882908890962095194591840,6047292927355913043161167285175711434800,0:1483012736746464157045759924622953000576
+emod:42088022811917334978597559931011799497514,588319468481766273347382652716318465,741545598763153697103785060193676712330111,0:531456297231876059205154397650433936193557
+emod:687777305090023482357070950201516321450289,6133564983213467693779486826114552977,7627976248578721073068053781703769523841594,0:5843136042246311804421931194539413550947857
+emod:91512065672092684699107288546273626439473487,77707078677517557779288077287329555442145,77507839007463389547163721496077953290665164,0:38085531137788908878444542689408043701328043
+emod:212359500386820079595762158387084577,717033680869242497989232895502553209306,57994712116702439737072157729729872704610052,0:50129132851246790997550498079907544729976657
+emod:-825584369512058731518137754499088478179447156,1557907027924626933995813818185230430454,687117774891041750881385770197632894,0:469172376510748056891468208407987466
+emod:-637734412004053009388081157566315826855075,36476067391256503367264361488762844508,8901726487790531465993910110654847381,0:4608357665978022682117013835997146678
+emod:-54456151981942190750703318217840449704343130,99982993771652282608320462546135364960046,75503441196796803933415452275033785162139990,0:1100695159195786352512500747472823910559430
+emod:56697516355737268216190660504482018822,88504062521017516515948614320857837302,31042097144177216624878213666191323514,0:27351339735066170958422624002651576306
+emod:-98852251157147894938842540415683732209931823,1103039394658513749769074015498619281,7550633351197275605040420550766377478,0:5707985330709738472127894458871700507
+emod:852323466440811463681452434704718127867279,34051201027780798621123886995870064920,795262345784174548938737711612423959,0:548570523642232944065382365273044931
+emod:889194223622807557021642095643419375,97697994551840383739114494141322582209674192,70985658980570759747746606912921132003556472,0:54920500907444323447367511646922423261389401
+emod:-59429009735672945055727939898766153531198,3806951738924291817324705452300312658284621,90645462413613180896154498632105428944,0:8969737683089946972629350404791649984
+emod:-788749280314228561044345431332920373159,44015816904317649966556444126647542275202,81067964499763345132379481470512547700720528,0:421573413445326284503993935343886089184977
+emod:9008250476728385872623793527898989079,2093760923583615910781525258418818015395,84876061848991122343034995751598547888,0:60481132777467814904735222040023224935
+emod:7323424567945169155005613073259826377279633,5345346096429285612041846952680414187,7435331969248825511490730370379710920,0:5701245548135054050237139667347533017
+emod:51404894860307832493700969749859131586957518,9938875974899784631458092317153698579925696852,919124325203452723338865802119093445414631,0:581269944116304841135442821130730046480816
+emod:6976423617979510411465515007491044851,811899783025865657772563202580630898795428571,6842295935464600709869948911248187992875653,0:1463570911818405692736959800443272136874063
+emod:9244740154784184489624653851590988118413336333,74724797442153844622872240019401506034596,415430272200957807957520540642458327434814547,0:227245764253849571682827833616120828123015976
+emod:926378595873538467696967488061013453069,13726821339710674251825283897470743239,984332184269068978074654811562030364,0:366045593329883963651763814907781689
+emod:-2813562000424875340357193353899248540030,886165849336487766393906742230529958590960,2271217318347813010825877828107460187565073890,0:736934018978417266185885759728676558811563740
+emod:272054208241621617590554322826124010321,247618769151239284337079695008609818283496686,649481706449462881752315195565911763474,0:256814202110410998800134363843790671923
+emod:528587416597254711558479148286684876795995,56025560898493899721803630575638541012744107,9092163742836866873755879991932002700857700053,0:588768500717688902898041234316335534968163070
+emod:-36376510103909754880425141038180683008,697554526126494541279186939566773312469,7678019691033242250502480954454444789783096,0:5565390320666040024632809464519631265578088
+emod:27353070533528810361133250533207881585,454632738024798173419305392484295653512789,8645616700024063945147977100235060594126432,0:4587159063853018443969072957434344637693713
+emod:4564708845856171353601915371168338496301854853,7977961275571093400571875056194861455149,813927549830561854195243397042782008374,0:175995834338047549986610112197044992575
+emod:78175395789694647002168837493633590621186642,8578229500974640597201805617750253952058296,20420572460880064835714904978798146323419,0:13267874012653989247914000024945154331041
+emod:140750235074048885495514519935667682244,2119009829407208281675487240867001784,80904987806406684614200209335872193933373288,0:20538605766997209360435961966799813436662320
+emod:9887824160642886854268459508821295133,164654330601600177496087425862536885517,74733613066493027861988707350740433987311667,0:5362288908065092864439824122867646582501022
+emod:55287594962561555095068246083044803040880723,936954069289825306215654233135813117759441,745114678852371902761659303193044148784138736,0:290151193402965126922268234821385444873479187
+emod:49271627767039808526745187094137141719732,30065281370305611177302331797431914619013097,484472846194900484542233448660288882119501,0:458376187678161540698348417833456289330989
+emod:-33619977831470526307371048811162970364476,3021585613307372422202371415945287499364,41518376269473392058127463402457118308536,0:24307170522911035642636754257602979386776
+emod:-25382128605388905979122243374547045342,828302867171033162078210088228770176829233725,8266339347894794362758578546936481856264205,0:4167869286530376166812379465397611080036603
+emod:7806062802262727519367165518120421617547186762,51990474722372679127714742060768843445794,274591070028574724870239318997476790646356,0:180286762288683513660209941777027215969804
+emod:-14318350583742657677501199469782146645295,961806524953716379402040320560202880271077808,3687275580612869739753747169826129862213334399,0:2737868566562935158202389734126986146079719735
+emod:5760787392296885353944866764267524928758610,46155936499409386931117510358618192060334282485,9185503223984382023640943204999579979071680929,0:7506254742023345352482567480829597623259247559
+emod:758462979498659646336246209035644159621552,136635434728102133698904796510225702345660178,9498019876743551759329514429520428372065505605,0:5565366837043674646400082916150410306576873804
+emod:182033670937033200311127104143473575388632458,465202911160104863025573660937504913136,394894056005762580037702893386135121788,0:316367714111986031710088217259606247428
+emod:2632031473801519112928562274312812079466,2498635333283012493093325455044250943493,799862304047991036206572453520324334513,0:260071365955878514310663254591271630685
+emod:1021726135630824830413448736592392545545812,4431216689055888716659906849751643616246362757,595012854621587453243625735815790460446478875,0:506405473722516168522817128617260580471663667
+emod:-74647441813141773592808970599111638815902798,9458739990542641030328044128925695503721278,67632705274078858494220871541834514286,0:43860643833521638278988180954457097574
+emod:74347467735199697397903862391515976816,27228101096114329060763685814389121867,2329466465821059768201256128129347846,0:527826993612543999076744976068461088
+emod:70535640036795289071039498872891011642193,175763117977529697478928626604560680829675857,705090454888208372647565597170374314517,0:179091754275860670608755581507296361572
+emod:243670574841881773841146078165542230152996248,27224356467518163226383802462318164385847,52881980947180661815959615676455311403364453,0:6543936847510216013770565818083740841303302
+emod:-3063522500685962875075820880911603917,3092546229913230570432064938454622435247872,445936607970411171632403906819964092617858,0:244095099022673834362318413541677305006965
+emod:39258083183616152671542900110410755401440,89093980612505699952982513757457937212093,962271109020614661437340991578568879083263254,0:305927769953786743646130969214578455895721012
+emod:-898028156876410713010493580194881547802568137,51663960553269149619746641641026382469722494,88192102753654247658195333315719037577000020,0:85184597556224178158455641450790019451878649
+emod:420238670197853908213239792155799109438,56874184795237971698065659542105288066970508072,7039994314494472877016149904621158951181,0:4195556681277481820163873546402003983965
+emod:988537214014327037772289213676835383723493,513562354885152593212937649884550491754906560818,93157394660505505194821589054314827610053,0:12739336675286048975363676477920500556548
+emod:842740677032405514674303211263314042915529378,8831402402931313770942586028473722467913,682852291371107996249203176454681279672468752353,0:650699316446407153033148645266760437516984688808
+emod:825599814726370563248636889273016715133942454,475680601046386573129475547513603110412899,416247625434559948206627127417433632778118351,0:339574109914067304840079566026200464971617828
+emod:567648490639035833763803769141627245584615838614,50724317254941774744692403469242853096809,41148923802029037929684987081095814446741364,0:20502707948232123804215524099617477740021816
+emod:115087026829239549004467892483132444989997188,4535425742394168264586248943679679529149663,433955044135381795877250546954925503743568344878,0:251660326553696762196196778824084224173978677678
+emod:12036785909772650615373227006202901241216144834,7640930319417728873563211760140268194907,413484971952354004891213262066509431492,0:386239521261870781782143346233879040668
+emod:320557378119349288211730243419102961495,84587343773197883044120518369669143774565,450141050577587452674598657343574939265610,0:231814299231780092365918681959558354516555
+emod:4760513985682144284402040197893582245744274,700922306891278320888270773879393663215011878,508613578824050038059978191899173905936352067,0:226155180059930658457926847583608180369805551
+emod:-1986722625420716592016545661236480979772,6587808211180976790034063002169935351319078136,248018664573312581284613240553608321163,0:47757498985820966232985385469724481611
+emod:878958607745362254467126051915110114983,76503615843648834046772312529145734419,599816542297740804095006213529020435923894574,0:250411227594713677669720417184781499038401385
+emod:842403714056568268363014451655139215576923530245,882962407685597232301145770370705099374,82560775215139790378071910956865546821689,0:16330945270987575660257305978980256916947
+emod:34552684591792222791353473595987201905919750508,212190283105668244835487282221966055090390808214,911560266007572327824644939132754269623196,0:375847062861355613267496115505135609589744
+emod:-255595855064966654171339977100486303810714342893,6536377115945497812146512349336490454281691,2358447779128139560919507162522654854246713,0:464809906345666089854305504087451343505919
+emod:18482506274556543305894610082680844279454,209945312016600815281820143389332478519181,699102020350956658786203685996030350661513312761,0:72242030557111920456295390210910475158413094888
+emod:6415210528618065990871168801815200139332991888,597649022838328236100124856044642774484278,7231830016713662975924622826283198323690910,0:4006117305107713700741948795422083910788724
+emod:6064555073982428831750221623690023330296876,92735364529176955551691773164814148521984,57696657922579845113546414118019201058924665,0:6870916878745310102921277390541323644461026
+emod:9386717595978609521086313430321645886736486585691,1936977561716961194789196774828364291100085,308710514484691606827023276042134027471318,0:55355445075743293412821307947169157597655
+emod:853095304936028332312865139673151355180032547,402516533127912932547366145735034332969264851347,3612211333648128600921169717824883676314264487,0:1447874577344295276390988945761876053311260753
+emod:61856527307782794639480931649487570761759,981353953577921813238706114977389364158181496476,2875727585132422327960555829952850177070241,0:501562823449987389919037987877783485624875
+emod:-3267284769511763375166288313542521834448737,75871983689910147433442901613935364192726737,598080070299105299737322321312252319973858,0:412778730998143883082550011380441775883929
+emod:405422539092856845025942882047354831627260512213,1337913948299733086787799108945523111815394227,36305189460456946509918912104812255759867575,0:30995366858217213552892783895317137044496967
+emod:6960366366888598610646870748629752920549287367,39434037540809306957325491962655662351828,3736135718526702463297936582263494485512861834479,0:2992479585704247653816936018623391133511705239998
+emod:-1826866256845184317995843519306378742885,6087838149038632125552666538607155530202455862,3505196452565303635830882879536478893015661284510,0:2876258092163187750168292253816666759927848105405
+emod:-30453880527433344036376413763327782174850922,958106051241874716971554801010144468715392785302,83704796154657119123303823148452214065244,0:12172291368658411466771610032308050809112
+emod:-356428887897712690551027940776016664193551,974311528436818547612106283639362895440535373,4175822946282741428795690626208558273399181,0:2217100635742324748464089855768646097870944
+emod:15887850640158985382379829997884660521441664,3279446731722646638040158087688724381294988413421,52724586555424276758984551014477985909146482,0:35842723031112195508473058690940883109069966
+emod:-2754358773916450393380020466377500694537892748,6693196828758606502929005505195902945008422,81987501340134124186844933306300364101202601696,0:64957670918930713389913976423032686263311873504
+emod:64795655511571826535953650784879339331120906280,201781316213631005455227216755502850172048,9183404199411504412156373561368468657063847925055,0:2917132830074900548165772586526792013580435602635
+emod:322376591049977138697730895670752146989338805,223962315373891826478293010620538065565321,134425497979583765111585462044979782868043951339,0:12680763077525899140335801175036995248897549410
+emod:7378293498837163030108494500023638035245941999,2701192105797571727239301264973963904903943488,61103840672560006595434005526860223512609429784,0:10575104110432808219323836371535482428895151433
+emod:6586150511971850295907641345124913235499024397884,25513878140895710942385809529884547574325,402623421320542043817163858150135923312140690478,0:212703145455744928999402867801599663279882403300
+emod:1148513813380533679268801317870273567836422766,78264425883354201492861909224929965803589851,888529022913756404039252857597221260693723470,0:344612069767725463911981963977120251304004566
+emod:156897858936863936558762112272942619182648359,5998398850499440904999529048665563755755197719,4114314816923307068086587017590920904175696,0:2365605906155718722370615329402928970075415
+emod:87182346175010426980309825602413855400180387897,6881708075476719061473118229291803541629550,874317437435696504884100729090652126764764928199,0:358356267780280626874735799972579854632076151004
+emod:911804580943517196035138307824767637716096,51910018818079388343993224114362468044260,755719409656106996416099738309867560127420,0:619648429452324074929397811402394241260156
+emod:7907371058268574577015600989784286442091497358826,51384490845283761025532093399709612887400222268,714932241344452067231089183566607442645499,0:39652714695362677793061396306809603985720
+emod:74152151887141438565558836677120157654525413725,3865673216281651353443515507748331062737635617119,39515541452736626357498604574956947118936,0:3348164210948022420110568984992044206893
+emod:1921212600092818926909753666688437613889202174324,15126673218216417698630762186472446617543479982,1513247907205025148358918017400696573029502,0:47771732582221332296766778100437627607854
+emod:62177741738385906366557378447871109683100,42062431220303473355860970126711938425550656184,773958434020341693602047125826174529582651,0:442082897911401536767776238214849664334966
+emod:-1806808081053455087879198258615146551580359661,44724668030512207581826980240922859464701,5189597819742605059176771398730210738088315756312,0:4809675330086812178815566854450153052638869156587
+emod:139380296373533535850169111091445251133031553,5568131554680055330705039219787143467175996,518185013729942602529965143602253217637466,0:193773139480058911982453569250459620737303
+emod:974121940443001500503304094214484700334099,728467767024352630604669587731875660396330,44674919076720204028296797718736637414521026104,0:21438174710368725104589700570479560530599609609
+emod:-527405333948184200720039219764919299319468854,635924082359258060601853893045398322160190689738,947819620520708699044943964793321010513297329179858,0:342816230736644110664562034099738209027304408209052
+emod:4964014414366266067601563988433897971039777,972491441089677662999190229721797813272801,938609136796638825673168709652895939249020,0:757905229497791954404463471617284756626357
+emod:-3836548959134851265232468756686852887039589263025,91958638726161076829164170565310939352504345492,9842518325582477123987885320987474902828056396473,0:1785937883725230279579795187739041151659042418262
+emod:362003077050650651287331998851003608874005730075,7224278456794231058200539570034490392355119609450,686491790315346927921146778571888891553496,0:316447529525677730606205777277031419657281
+emod:511417748058568151891786589987253660165796727,8094482124265898686460762144280960033447161606040,186381274246323455788720228571054777422314708850,0:45279922457870097101374197162961699877223826551
+emod:81264000690609604351458160311340827489802109902,391885387725085278459091170640814114585520,862357107879749607217822835234106152392133001671034,0:589199761114611925556876493283500689288324693424922
+emod:60467632250983508695725501646784109879778908745114,837672302787514343932615418244003255566590288,469196685288767236431865642803573408203650783,0:47351563702942679095591216340308509524717890
+emod:-459476727597478328887650694792354077730065535006,6551100280420641334568069542701824749257357,44015235164158274406848669553614570342982958461378,0:28017796628275197434019563629223716729911088938710
+emod:895843043275999934611988163188471273684218111033342,7246774352032830692528490542295484830970866278,861847510016050471694148161127317335094105768,0:654035466899277641878411664189821364246515408
+emod:286589462111588691084089929906408043383921020101,9692415030522370188366193590872225386635917218031,719298087261564603655693066504254890048009456875,0:427302318670364247525213648717424428327518555601
+emod:676436471530083898997041363054013845405132592805,9826535789561484874848870984693688846169671622,81123191412086856575942178138898627611978864,0:58559446218187016378111352068475314798576601
+emod:82851204887068882391372029299659256702159316,172869110320082328384071354204393838581736,67056444908658930881509973314864718767829541458,0:19106724465380212672652647774912584474721840748
+emod:696109009687864457810113686337232495156421183,3401811110841371494776087049474111559799131700,4299920714282089106120610636935635090268618368,0:2020511812293185382323106458123683937285282817
+emod:642181116705547745922861595409305314439788715713,3191544116958009442265013426506709691563847359096,11503959864174296512003111411775254312499675635074,0:4542807727654055188419122200833174452933393471703
+emod:-43473592792665227303659232677180275856179335420193,367337932661391050359451420336432743104912012849579,40336899717936194492442741600463146885238391884,0:33883445452210304367843379593615127696274144511
+emod:149677082879100259644810248166250018278560400684397,67835958963093533534750484479612188112600772232,2417319759617452658480101694897700221629257,0:413114555403103000658332346965315753541371
+emod:4308690827834618796779071688055990154958119217979550,8139792103252594022614523084666149717083186251,15533037471757153506550580840055923919409189,0:7020715664515618963916470331313209937794066
+emod:4607793512504764431422636985189117330151450,5810855517430042248184284609190428320492582797693,254077145071398684004350471347456740109867649920,0:249414146109210156171911011976187568245339994880
+emod:75015031620454344801239233353680150096201722256401,4993964830386180911249138189300268494685186990942,4241132252523512745096917242615525253291052986,0:433337045531299838053635884507298069666061467
+emod:44960897309673530453555266827045004683193626,9864385579695978005342342313046773936648945269556,64756470723619643596096247881962254980723676611,0:49116998830009971503948732099380336099106902368
+emod:824638657497552691308275418547421010797730757488,7102337564045908912215659769896546075594806,7549559927659163526633926834915307075816410605,0:431856052905253153141408472781012880375756789
+emod:-8258821865451861122164335490949730530149357550,91240131099914556769212391842754945963419588729545,608091538039563385874042418452351103116377287,0:138416095708955483721209050087621590198128350
+emod:6918006637544381236582913953764444433570928,142116742659743263417878030971625713139395825277,42465778998553599048069556979313575711603846192266,0:21075269211617428685041608731276059490981153877082
+emod:22864575309091005999606038194627722799352002613109,896391086004059443203372771274754832310503484093,891750130247908667659048761409012710669636399491,0:291616836488219220269230095553451995714008687531
+emod:-8194888032441259199630599625358473476489205,5233704072524169370158667063506533972281083980647,1489037233721004711195744120696209782731350261503,0:552028516294652365815212711109824092516937002021
+emod:402772636759093114336215386282519687390989479435779,189516067274441373930013687419363508463761721803660,80415811227458788175575610653906545982219330975,0:22728298548876566392049076077182437096372400601
+emod:25478733323871259877912385362343090774624815,7071155968374703054163176660383261326011527019503126,6134327557381540088147721199406548730558126028,0:1024740410140626130936532360899124497564707733
+emod:1373842982649207730088589912059387373550201,5632296300635658701077632379614186637591919259,15391327625104216613547146396703256586018696280834,0:4302181480010047578962481977259846491527280155375
+emod:9495802289929888822634017883238054795580349,5002682765682429592404202303916871057826935,15884650860342620721715065457253891894018967206,0:8941067791071558272472337248264693834973616755
+emod:31600516776786509284343708819765575234628755,228791299265655690472626502236069938161188391,40936664868340332393928739047239776545553829753710,0:30627744149685105327689441848075123499867991131765
+emod:38524550306915104068946046715826855759569613774844658,9194419836976281683587306717261558747169442193954208,7779595009435858929206493144805114063764499766215590,0:7087991661129889057406934247049530530993451959597276
+emod:554411708679558039842538802463328992263904679,6237197282110482695552284318126536429504723341,10950325577001918036371982331444541813617574475194180,0:5787600514717071948035385347363174161644959891539359
+emod:-65036555989091136374058985938454117449763159,34831798653870828072406297626104961773750661,31676515243089740330950585861176809143792092,0:30732949823978690229767791353264924799202285
+emod:519484888832782036702272050651904638826888669,753074873494165067376985336730357180001686201437,26162868641248965913351015420400997201482504702269,0:18484433084399526415475352405874231763303729896278
+emod:486622002393256987329857884862358772922652299948862,5397488133084406712845993173123874999792355443180,52221363514636645344562494690476680459663806696245,0:31424877006247871341476564009060753196816273746886
+emod:2519545249333346583863745851735514920346268018,5762304897220756179596577719327585953058564086,25968687826793482314025869361353695830319122017723364,0:11446923482269709284929175954873487230221266306098484
+emod:25181558468391709065005750569128856213137442801,17395204260174949840937998424068393371443165843074,5405603350542397445284851120217561963941561607,0:4017170326519248316993458817903116669933612061
+emod:407900825111562209157049195681691242826792800,267987715516648071532918817255425280495590423956301,68776425368933157858220727119994638551746175,0:47031090204538290387899250133897480746869275
+emod:-98803819636216862704666508079523455809956165947,98671412267375938209192375718233476934668297,55621612703501672327703967617091220387319483168426,0:32713255624638051486342207442183163021264516435649
+emod:3699193512054702576853653403075240437897079123,8717079191539632537960810302588868157436232036,48522242477672943422659170492335520141870413,0:8651476435014431039453023117472444582400514
+emod:77936539433974741743578486606140093995870301132423,954499217422932957346614451159347140560185480521281,163215414633308466314077081093001860212713379,0:103758294538389867607040992307260424637536023
+emod:-4028502338091434385570286181712320072468742558,96989036369391542800442739082061530586823254263116116,78068537791270178387717266347434743278287908,0:21669953939490893566721670542161427811188984
+emod:918884247467748036366436587703999780118117975546957,5615852005546776682559779744353394064478095142,2401794658690427064436304716694865657554211766,0:960515354911580091015228026871019794883284885
+emod:9780239941823826659833679733394177755526189646937,89322777323067153562491076481435606732771405285,29157211787311713009469704820603173835586448915,0:21784603970310613711389261139944185838629281707
+emod:96098774697583148524351932903096795874200556392,6980912905868697403003059554264649562235986501752363,208924194204367947369626074783038546699206285520,0:79697661577989072841423526677085730430307916048
+emod:-573991994177224613634480756482666353761100288807,7158287307293331130042236674166424104745547165,9922520662865454426464919345018943051389988697,0:5619512846811035521678742038957891764003573958
+emod:59911103774024380942223423632168855379630335,6818486079655068602807082064093124643116770724,8864024398516747656055508658685364700493232356531142,0:2383722465709179243642856098503264547092886596175227
+emod:-62313348406991266015553975744856571685314477634,21991981158838978996770304861386400122523958836,954507703567266334987920599572200024950117776,0:673874525887635950319127294209157951664603712
+emod:9820087452416196217911209095780565350316442900,148320444363560053307036007569156568389928195017362253,3631113047524475643723456921191780561936707959783575,0:1549830330276375593962772767912210881310119448216925
+emod:-25798647424975836057412872830909832741720494281462,9299188364970643235457620086027788049113237501724,522064657371945322423320375992281138757129069042588001,0:314662317723871224913513394778330419886523487691115165
+emod:930783335744991271355677086538660736067905998974646378,776787459928168870257234381028892429138274839820310577,3676898834201974197391604163986622259912692963,0:1454707990857958111219870293206602713503203390
+emod:754324807048657228679765605878761298609690360511998,958586904489606201890927436646020906824192582152,225179126294857543684132265900588355218787359997532,0:184341533271280210707350262029004357506956964249100
+emod:-4277241617014152774634908150956976406225721463619,740666737188827503974760746294458696679071963170918433,84911564006449909724569329147240459921838626102161,0:32837984989291416730559017868100153859989248628941
+emod:7690914272601666512634428163546937580730709939602,14197296902658248167889786104196831416278344312144,81931815436335281188537823089415033249544638767808135,0:3199600947635353412828955610370257711774177287067436
+emod:40693757858681089447717885993659911215985324585652278,39136056473317073147714521234945625238580560862152494,56180103978500893124049541126696155778770577135,0:35530182604079785705672771377947698867955134584
+emod:-61262007457380831475587401250265303407703358053,5605602757602617615751362780250832755031303714,39786650424951253014286369945896326084999234541,0:30624920045735321607213022533773280830319909832
+emod:-8294197985009320613004835515579701550690472035947,27497176409134737028455478387441759659126437088890626,878254584167789416959102500401944397284939932959,0:96787593049516460622263353747535019044011554347
+emod:936948855951886126122485690093336688820905438,952037324756179560869502130218077067074192084922,33269225773280332072695417422958575761899978253499,0:31343729843026164021419525495602740164653732233547
+emod:1825784156631469036083553494921853600892959329084,1792152855908535702866815908479066064573203506328,7584434492468684030603996404862850988077230764966,0:5668645854080378677534840608739670840420553612804
+emod:4771542980687362499528587321796090255401127670935,49673918430106064176014347389103358990211599558,566808710453386184370243734899518529679284370157755,0:122614051205229170899163057352055351000892027836640
+emod:1823975371238131949336117473697450176001493124551422412,105862300137903514746181350899950234467623927399,872150475093096064129104506408316916638215646399,0:41655575950454700889468004661814966001328043635
+emod:-7403599133408228298723066626194976743023770563,8091134022905952963104699681073539225469153697858,5425355350845048150843160638835947264066541393,0:2741144821308534612335116015287775234294403710
+emod:890646208254935784836741265729061048252488750371261965,3014682556575993233966766524815533447095651265,546627202244553599303777629347742865125211029412308759,0:129189292373035871943643466963326800150883513587943803
+emod:-478301676028477872037215528133488673909770705969021,4776644958028138697511933491453433971900379293,9804006501217419003156374248597140990532373604359741200,0:4256526039075877642788870040517474793472829088151023139
+emod:-2685385133378038265400322588836701680595103090,6682051156600485359090971175835317671334686963274670,272381294217617274132435187599076952898337370816,0:160448248258559406045792992578310861095674214848
+emod:5610352369978196066557531911583288845257728872885,29105174820600183606830671874489670474983812495,10153364462051971143078318734983556641603678006,0:5654495476089063930689151404880397736789807021
+emod:226106902099977963681448571570521911815066120995317231,1707966440323110108128795246285372866871484571190343733,3022313205119289698061840897980713840817653246137,0:1577789001757918961027109729382551177312942381192
+emod:56994398320188483459448108143592444430607410910,776571171150667113541269029583357392475898590899457,2952252481199115860737553986433506978840458215941629739,0:2115048663787786340261444189400738968421587522302410834
+emod:3490308621678382172799094687550532898406999135779394,92096452137945096831873480789275081374251295752,41859985473397465016337344479699193310470254681186836,0:13883201384282345984019723588819996850955384028405568
+emod:78199345624452323665538899878571977010103711120353586,426889339090868016603770192089391858795483010444,614591398724869622540933622810612317245462099,0:522221021562810412369119229465715299116874680
+emod:24494234546606769948911248691757492347200292227140712,737664088655731527937609365429682453415687199299030,41867909567513789892657868211831771169136305959589936,0:29639257666757184257116019424419930205524205997421488
+emod:56340168172071966259164709446976804762407806722929085,9330607041404161548877129661058575432184418559,9073094112420733297526890865499708444478527878927152123,0:154033683820095649526112863414229406070106242714564017
+emod:-98557586380727162991959870302640551435620563142855,352179144624443366108174660913068150097236769961283,82957931261705630469780521065649609232909069967906297,0:4611469772581670990273871321012941407812443591119341
+emod:-327557046252127633720556940076118229316928253056031837,87561673782562800570041955183322599955629735731,999914991747113895498838412296608587151797268932915993,0:394844471425716300825167828282861382716619299699558452
+emod:62239294453310399816462667483598707872602240932142297,4658914995757017485299221864332093690860930515,2486140058721179216992139245736934931657664228105707838,0:1785631544920858868455392242463320012563257587191303743
+emod:98844248773908427486663349850376500066907267527022459,30192206183400841123051111248262548983869820657370418,68953646632746416359816661196045006942249287619,0:46348894487037788897865804485372390262476609587
+emod:157314584387460613339515315779646913728585159983563958,7129487243609251992087268468464230874147780513130629,7635331003686312032946464576006029771208342239,0:4241581628875360523816771058381935521234659115
+emod:-20413864406387948000986404651284225843901612271532247,60570204203293653144874911182227469571265725493933396798,74868812887175685382885501310045723065586089753,0:19048798896908808195904371996264452593501059126
+emod:-9994818638674529038541342163911785506433155975282,2441529131191726286407021656054505236538534218505,868763054397265950319354411340564521520500110285341,0:713646341945805538982296660502179127412919111592110
+emod:89928590797284478729252348706855088798121290869809060,59274533239795541803239071337695221071797917061551,458720998639333601494661224903885165927950415283068,0:238541586391208422370502281952541020478014766570928
+emod:95798368921402497294705740910984389802169456614551866,5780238728300624701546948669191486225967922222,17602545836464476089657116165016615105637757631075883410,0:78935491841772453025866169047063528694493328256027716
+emod:-6285988010245529074539471748460012192454923426879038527,4464035763112866760911458677964807167647554031374417,557426143112327094606990154681823173588434990737834515,0:492308894761273719919857937651384253941194670007301468
+emod:9216609859426876786581364775917107940830826147193,2584656223509851604195298909793029088361431700609487947,97854661860659618908160182622420008085466240143877617,0:85437882709473882823892529660893798801236147303713473
+emod:9369310120459129777778887291797647697234777683432051,29114272244461903760267994837317966967186291374,9778907141259037429006274419046033685045015909549812,0:6158258816758612931552439105354775382106793792840429
+emod:121095461268256661739120249224368430821121813080,24216928007688542369493467184086532629768906571974067315,1289101505296127733900239534120001726302383453437972,0:559264053276767206654909871928116713399654543670428
+emod:182013722639261555865084991953687573500429962535766,5312171499532129540711226268300910853763234503893756460,373925090068292154121977949608424249047611823254,0:314492433924568960493434943112384754084000516952
+emod:93122409584336684208634425627697110814180323391,14785829877381197130422634393843365096818009069934141,71932199753627287791733451362196318752438103297,0:8651254301747600278741940327234016885952587642
+emod:47314169772357749238033685118725095245857710174326752251,7737526111797627477363360414613284237413174897695810,22636439121232576533369780871442014748582558494258753099,0:13481881160769756096301137118624702877253559402875253449
+emod:40437135697420911841447145598134529938086874417869482,34142834203311856114775566332299272975314691621831451157,61483400000688184187598139984127464523117551228,0:24693895005298972635867796289890449288509340480
+emod:602105062592660782251188458378445123063805101057628877,8347043677742730027972079328186098141974290663352,26831519142227837662521069711039879610686983918942079815,0:19346421778661788162968173970766981230660937987122859431
+emod:-631401827295443763663013499197680737231639584989,4430590554183773954781048837898216988481838421600006676,2298393896534361874746279427962482679705626081354993,0:902945851002567106949268418213474969113107638762554
+emod:27786418359632188385534950865019584947593363685667,98296086104810263777729111156693306399745439517905843246,885588959591327389647962772187472088293854582596501585,0:219691806105674835153486211154061118027834335467768059
+emod:544755872510174513208896610649845089424204895203973,87613019793007744065404211674234696040702876770839324,4802706142382015625537025588688720114067633075179938214,0:4385825975408070392248170302791202812902625274088936755
+emod:266945202318091617395513307631280644325314217797596447,327566429748960361523726509719626329764280050772,11519336904029441280173947176416866297494364467208,0:9214541334269337101551342582484701318239260425185
+emod:462274575377872280232466472100106379919338255223,55208106570738920386188352962242729542845793547908872955,394947463398055276743090558014108833519958843326036,0:14090943624401742126636618168767136948067183397671
+emod:498588690178207860433541173652626793819053542771822736281,7320383073654496423015034860141911017275032239632,864143543362782361157239005190574446540608427530,0:405837700105174778010475141584205874050426805841
+emod:9889983273673267055836467894511050393862566401427167421,9249465646754817541871880579390030265752574382697001,25959701663622988366438447815418575609294742760915,0:14146692686195759173905915586727366427907029148496
+emod:8977490701791885156174343111351369788045969359197758,310958534312954656622864682281335777958703646747002872696,174885990030766375557335981487351371779234545791,0:172268700100468974308770735824988553302287984097
+emod:75891699691571906472460353214537778119193566652164258472,75642710398299172975011498854625838470353049691991252,955726338299637204220414390179262210175010011084260057,0:871551220400711242628454200406202564111664531240532043
+emod:817687870329204460156610156013195890028396416937162234,71199838789107588122529185516473983414598608665610,9797217400749418393402581106919553154845468700907872,0:9732835751266971971517518815617086242024182057719936
+emod:656535389260219421975691249279051158130957449883966,9965820125071850776397934471591602941345422709213,7172697024967323900460450488928712811727935935053426,0:952029660753929926293707648671191250800460252928490
+emod:66765940995445083043566397231259337861214788967954,698949221229345492777837382914330269944860925101870058401,370977162689246158196783733149906357225503977003,0:56780810013712823080333031377883978714594923759
+emod:-24860118467430048016063231699711679455683726879672563278,546329058333516554426292196577372643895447816095329334984,102083942512514956911062347152596366057306100868,0:89329427941719016468252169448693561927858667460
+emod:518281434431704435940150792966272899127164218411,19290830216216089485046976601623655817078004660590796816,216069676358948655463888215158143195786697578360538582,0:86506166688482117996142986160440612354876384284094157
+emod:517542901438648396791987658999334820221431246981278,4954735021213009892606598900462212813613793939697004110,5546708620630276172568015746256008412046274679011721163,0:114558840275328029858937724196533085168759209383758948
+emod:97796431105417086121597265848245224080646880891314620699,3566309852926516051758561425477409449674731444065,4237358411463841472327670289343773756088420869185382928335,0:1728379035119996080675313770460691892171354788520339293899
+emod:8797217794906750966627546899905389746578400755524,87461473070045326370501974269638901791524473673607812671,63579576817694957532492907897275166360331019259167287988,0:10068755237067361214693799084814132014570304060924282180
+emod:3559874918456198560844107856956492116344121248206,45190612746644425408414684724540657030439304479324039,684772758312255825130987448842421703263477856778082,0:500105229544177258096786497048655528691069662344352
+emod:244693542815021761876325478432698673186866834942911366704,569049151750280294347914587638406693043104703456596078,40418336644392592645116495825339904699620388961770,0:29946736018608816763137681085572521922498414649586
+emod:9552030352913538449959248911819718532447389423411634,15303289522386175735929093158193781525599040386989921,17905297851878021472325954407339512702437837940804355,0:7227207308763570886905006773221274115571235787935329
+emod:2427953611523095508885901603899411553216124564768970531,84219397598182701873267938504642229898519369455120690652,5124565221346746692094768907421280792680721722663049,0:2356962294194965054880021165404451023189256523983359
+emod:4450272023458109693579519823508011943468990250887770429477,9852180148050086854797451708622242708750405652182828950510,53218591961090046740426308696077544888041718958796756705,0:20722361228858746975332642022116538507546307084688876639
+emod:-3004436507840212393446088399233355090512633931853,49762352101558708510764823100128412949214842904414503,62339832791097134323794421391092834208651832053582621969,0:18644587060060960018044094951299852000053162441627275349
+emod:88466522329785151709268834138668446416231472463853002,84423940822580221018912007091908955924620089965579353300,4272746558814012659752446371362908792507498696285890777,0:2076687497522815194513922920413442770240123518700437310
+emod:-452137704321173773725358540484655780134513962685597,108536825158896375705138771152627679486775845056880757255,7443505375179903958445129175383134980666720252160978,0:2626655033625685458909447520232601675412626580083149
+emod:3646226144731352080332815382512112527325988973642,736730185733372156433101295886081895604485817722725,187559548105706428460460100309284194685793795827962,0:153703862976742792640135721867824635074042235940792
+emod:7128578973288696116455318246508827884395148700024035843,120044617176238734085406385417402387651027645325661,437777976047468143063879147080739099513994845762621846093,0:383512808517870785600076597930828756369001886406596109329
+emod:92651404329219142594991415600374429189694983250618442,1831956594370082650320589803647600704949512437508530740,989079198090857685320779737579388665165981389775724354,0:429473741854566274661236706264645428539362137664132958
+emod:783048980600864030214223520282343154949582263988130988029,5640798680918146067495300825091961866365823288705,712576055151408429943237184396668347415006718010549447,0:132303576760619346367560792334725765196706066347238184
+emod:54419766013288244584593400647946050509291116271357,37442044497849759156397618484039469808263267657304,55409955411797081810766022756739065410388681698701498,0:625989815794948434601895148375843191288774735399931
+
+# Regression for overflow bug
+emod:#x02,#x6FDD97BC0A760282D5A180D2308BE3B075BB6456F26B1DD0BEB2C1B0F880CF2C8EB724F2AD0567F7899D9A980C7DB93E418ED09AA3E35357F4F2E05963CB636A0C91B1BC7A000ADAC40F332D6ACCF4A3285112EDBAA95BB27904794ACC8D6FF188E2B04888ABFB11665BD1D915DEC8C6575706067AF3F7179BA57D1465D78129,#xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF,0:#xD2C80DADBC0C72DBAC45F380064FDC5FECEEED268C7E86368DFC436908B2D33426C67DFAFAA56FAE89722EAE3644270B0512BE69DE61FDE07585001B5EA4FFDA1B8B98393D657E2EC4073CE4A6953093EF7C3B130CE1BB316C97CAAA88F83C32575D6E1128E107BF66910AAD2B84C44128370DEACFE7EC8A98B2CEA4DB7B09F1
+
+# Jacob Refstrup reported this failed in 1.11.
+emod:2,#x10001,#xa6aabe38d013970f47a8751ba8b3a2d20b6cfb1be2f63d7c36067957eaca627750d9fc9b03ef2503fe73d8209099752070a15c40d481c71c014731f580fd905db763434f999ee24b0fd4b5f304948181555531e5c058a8574023602191f3679cf350ef9cacfd883b4ab466e2ea10e661f20e06347995b8a751aa9c17c0cc18d495d4140fcc9917cea0506352ed4bd505b626d6803c0769cf88eb7b3a15419e38b81a1ecb6e3695f8e1f3ef7a72afc40a26787f3feeedb1da6715771462e783c04b20804c4228e7bf2d647f2b745f64295006f2b8aec12dc96eaf720fc7d5b220c465664b95ebbb4efd67cb65b73d0556ee10a7d103d25c9da5fe2a757b193b53,0:#xa53fda84e114af74cff65ac6367f2d45a7a0bce93a0b837ffa48d1187fa7f48a87e543aee994bfd1837ce5c72dfa26ae45b1179e486d9f242fe0efd942b0e210edd0b34b870128165035931db003c5158e5104d7f220eb682a6a7878af64e88908a8969e65b827c1d212f911deedd62322df956766b42d284d7fe88f79821bf1c0f70b6fa657faf6eb8ead181539c80c1a13e9efa7890f4e63efcecfa32b4e1211bbdffcd6a945a04ac46f9888f7d7a6d182a0f1abe5aa2b1319d0cdf03074fe20b45a2f58daf4603b63ea35c2ec395c51e3b85b10f91cf85f1909788d6a5603ad7738eaec0a7d393e3b31477710adaf98662113fd349d34103aacb05f42849a
diff --git a/polly/lib/External/isl/imath/tests/emodv.tc b/polly/lib/External/isl/imath/tests/emodv.tc
new file mode 100644 (file)
index 0000000..4600a31
--- /dev/null
@@ -0,0 +1,305 @@
+# Modular exponentiation tests with small exponents
+
+emodev:19,2,84,0:25
+emodev:19,2,84,=1:25
+emodev:19,2,84,=3:25
+emodev:92,693930,16,0:0
+emodev:92,693930,16,=1:0
+emodev:92,693930,16,=3:0
+emodev:522181,0,166284,0:1
+emodev:522181,0,166284,=1:1
+emodev:522181,0,166284,=3:1
+emodev:437824,312,93008,0:26544
+emodev:437824,312,93008,=1:26544
+emodev:437824,312,93008,=3:26544
+emodev:5705223363,2,3286325576,0:818318913
+emodev:5705223363,2,3286325576,=1:818318913
+emodev:5705223363,2,3286325576,=3:818318913
+emodev:6399553325,6,4107014863,0:3307178134
+emodev:6399553325,6,4107014863,=1:3307178134
+emodev:6399553325,6,4107014863,=3:3307178134
+emodev:29074823374249,77004,71683909277697,0:8940258342532
+emodev:29074823374249,77004,71683909277697,=1:8940258342532
+emodev:29074823374249,77004,71683909277697,=3:8940258342532
+emodev:78759078367890,8335,72115845746903,0:20414099940189
+emodev:78759078367890,8335,72115845746903,=1:20414099940189
+emodev:78759078367890,8335,72115845746903,=3:20414099940189
+emodev:-702894953466773316,312561,665754485123402827,0:84548134549060215
+emodev:-702894953466773316,312561,665754485123402827,=1:84548134549060215
+emodev:-702894953466773316,312561,665754485123402827,=3:84548134549060215
+emodev:162476353576735207,8451,299565526093115255,0:235405725752406313
+emodev:162476353576735207,8451,299565526093115255,=1:235405725752406313
+emodev:162476353576735207,8451,299565526093115255,=3:235405725752406313
+emodev:5569622159977645154297,902159,339048673939289293353,0:314927034088061888405
+emodev:5569622159977645154297,902159,339048673939289293353,=1:314927034088061888405
+emodev:5569622159977645154297,902159,339048673939289293353,=3:314927034088061888405
+emodev:6991839486419148755508,2553,530292436823694624357,0:4272543854207020971
+emodev:6991839486419148755508,2553,530292436823694624357,=1:4272543854207020971
+emodev:6991839486419148755508,2553,530292436823694624357,=3:4272543854207020971
+emodev:84643040276670536818634785,63,64928874055124010543482048,0:22546118193382720472157537
+emodev:84643040276670536818634785,63,64928874055124010543482048,=1:22546118193382720472157537
+emodev:84643040276670536818634785,63,64928874055124010543482048,=3:22546118193382720472157537
+emodev:-99555590330388726236230755,0,62041543621233726359336122,0:1
+emodev:-99555590330388726236230755,0,62041543621233726359336122,=1:1
+emodev:-99555590330388726236230755,0,62041543621233726359336122,=3:1
+emodev:700943089540446737340421223177,8456,835694701023829355087294263155,0:258410405038140346743628562611
+emodev:700943089540446737340421223177,8456,835694701023829355087294263155,=1:258410405038140346743628562611
+emodev:700943089540446737340421223177,8456,835694701023829355087294263155,=3:258410405038140346743628562611
+emodev:5473388626149338730799075406,729,850132294968984927109971586336,0:685051590046393947084559076736
+emodev:5473388626149338730799075406,729,850132294968984927109971586336,=1:685051590046393947084559076736
+emodev:5473388626149338730799075406,729,850132294968984927109971586336,=3:685051590046393947084559076736
+emodev:7542606175762975785023215555039217,0,1451486096670046812323372237867852,0:1
+emodev:7542606175762975785023215555039217,0,1451486096670046812323372237867852,=1:1
+emodev:7542606175762975785023215555039217,0,1451486096670046812323372237867852,=3:1
+emodev:-3426829035080908738042076334435395,0,2616360606577002719669450329100985,0:1
+emodev:-3426829035080908738042076334435395,0,2616360606577002719669450329100985,=1:1
+emodev:-3426829035080908738042076334435395,0,2616360606577002719669450329100985,=3:1
+emodev:5871172260267735917150171255408367076,88202,31506806059671945544343675240909419388,0:9882411358511873694991988201288706348
+emodev:5871172260267735917150171255408367076,88202,31506806059671945544343675240909419388,=1:9882411358511873694991988201288706348
+emodev:5871172260267735917150171255408367076,88202,31506806059671945544343675240909419388,=3:9882411358511873694991988201288706348
+emodev:14045780235333982097410791452776449214,6,63567135751970741787875276189593310474,0:34130827114620482312672610863840969228
+emodev:14045780235333982097410791452776449214,6,63567135751970741787875276189593310474,=1:34130827114620482312672610863840969228
+emodev:14045780235333982097410791452776449214,6,63567135751970741787875276189593310474,=3:34130827114620482312672610863840969228
+emodev:719958253183871430502261490413450673851124,9,661851369887131891462493813741667459688172,0:326930997921634036854135001452458647807696
+emodev:719958253183871430502261490413450673851124,9,661851369887131891462493813741667459688172,=1:326930997921634036854135001452458647807696
+emodev:719958253183871430502261490413450673851124,9,661851369887131891462493813741667459688172,=3:326930997921634036854135001452458647807696
+emodev:443624238294320571664949666413150109110287,6385,784303120899228089361406308796439491202242,0:342407852738883656584329996186795949032601
+emodev:443624238294320571664949666413150109110287,6385,784303120899228089361406308796439491202242,=1:342407852738883656584329996186795949032601
+emodev:443624238294320571664949666413150109110287,6385,784303120899228089361406308796439491202242,=3:342407852738883656584329996186795949032601
+emodev:1136928015233318011144243860597237613050611024,0,2789921991289922378761307428111094457098264457,0:1
+emodev:1136928015233318011144243860597237613050611024,0,2789921991289922378761307428111094457098264457,=1:1
+emodev:1136928015233318011144243860597237613050611024,0,2789921991289922378761307428111094457098264457,=3:1
+emodev:1450999454447652679327105307881736952333784073,77034,7671829281860481025428743103260720025399298938,0:4381187915548158452304254783248892025314678287
+emodev:1450999454447652679327105307881736952333784073,77034,7671829281860481025428743103260720025399298938,=1:4381187915548158452304254783248892025314678287
+emodev:1450999454447652679327105307881736952333784073,77034,7671829281860481025428743103260720025399298938,=3:4381187915548158452304254783248892025314678287
+emodev:-28809270937368266475212144802642236424417695707616,6078,19637146108400624623087855337736820815095169248114,0:6346379403436405925654497852274419173995099516658
+emodev:-28809270937368266475212144802642236424417695707616,6078,19637146108400624623087855337736820815095169248114,=1:6346379403436405925654497852274419173995099516658
+emodev:-28809270937368266475212144802642236424417695707616,6078,19637146108400624623087855337736820815095169248114,=3:6346379403436405925654497852274419173995099516658
+emodev:54802263149810015499242805866671806182669824281823,700,42916710160715229320560332911086106093153060357460,0:13057328573793336952133919465279513927703000293901
+emodev:54802263149810015499242805866671806182669824281823,700,42916710160715229320560332911086106093153060357460,=1:13057328573793336952133919465279513927703000293901
+emodev:54802263149810015499242805866671806182669824281823,700,42916710160715229320560332911086106093153060357460,=3:13057328573793336952133919465279513927703000293901
+emodev:-87262479450738832647843497026325034137115145947284500,0,72160898603477481125780254532680608704164997261749601,0:1
+emodev:-87262479450738832647843497026325034137115145947284500,0,72160898603477481125780254532680608704164997261749601,=1:1
+emodev:-87262479450738832647843497026325034137115145947284500,0,72160898603477481125780254532680608704164997261749601,=3:1
+emodev:100642928524030186658056860132922920804055208139127600,5714,414432667835794981195051773905850760614924210968557995,0:389354308493629553310648689336990724529053681122415475
+emodev:100642928524030186658056860132922920804055208139127600,5714,414432667835794981195051773905850760614924210968557995,=1:389354308493629553310648689336990724529053681122415475
+emodev:100642928524030186658056860132922920804055208139127600,5714,414432667835794981195051773905850760614924210968557995,=3:389354308493629553310648689336990724529053681122415475
+emodev:-9286825595306463634635411645143516399569604439462159992606,8,7606404471200704416983974125320849350185211717364432008507,0:7552810691207713503035685321335559561108880936575121774165
+emodev:-9286825595306463634635411645143516399569604439462159992606,8,7606404471200704416983974125320849350185211717364432008507,=1:7552810691207713503035685321335559561108880936575121774165
+emodev:-9286825595306463634635411645143516399569604439462159992606,8,7606404471200704416983974125320849350185211717364432008507,=3:7552810691207713503035685321335559561108880936575121774165
+emodev:3436239558982298112600646182085281977389588789170709040954,0,522233930076758999159392228622915543027930093543196382148,0:1
+emodev:3436239558982298112600646182085281977389588789170709040954,0,522233930076758999159392228622915543027930093543196382148,=1:1
+emodev:3436239558982298112600646182085281977389588789170709040954,0,522233930076758999159392228622915543027930093543196382148,=3:1
+emodev:98605572113921015570731666917408019243503426904818325007415747,66771,63600959482143388817643210552729171226910500110519779197352540,0:20785847662807375106647030150336411392148138353164443936289703
+emodev:98605572113921015570731666917408019243503426904818325007415747,66771,63600959482143388817643210552729171226910500110519779197352540,=1:20785847662807375106647030150336411392148138353164443936289703
+emodev:98605572113921015570731666917408019243503426904818325007415747,66771,63600959482143388817643210552729171226910500110519779197352540,=3:20785847662807375106647030150336411392148138353164443936289703
+emodev:-4195218021563262220079054526213885813430895541193263119720318,78,94545015698506343903535130261953470290487760846622612793613368,0:90102715451299572179538269962926144393625103247204607297473248
+emodev:-4195218021563262220079054526213885813430895541193263119720318,78,94545015698506343903535130261953470290487760846622612793613368,=1:90102715451299572179538269962926144393625103247204607297473248
+emodev:-4195218021563262220079054526213885813430895541193263119720318,78,94545015698506343903535130261953470290487760846622612793613368,=3:90102715451299572179538269962926144393625103247204607297473248
+emodev:782779308925261277591849874263374019866668332441496166531362744507,86,593800017785952660786088689171372582380372342941537491408809547120,0:331857206426756526945777967606015729867677745543253114395853770569
+emodev:782779308925261277591849874263374019866668332441496166531362744507,86,593800017785952660786088689171372582380372342941537491408809547120,=1:331857206426756526945777967606015729867677745543253114395853770569
+emodev:782779308925261277591849874263374019866668332441496166531362744507,86,593800017785952660786088689171372582380372342941537491408809547120,=3:331857206426756526945777967606015729867677745543253114395853770569
+emodev:-368107346294563441372147845929799838078404634847778857716085123666,1256,205426227269567020839924454096197301901405255816878779124728620673,0:29070586076917968101851296107557342940225724785154296253334920994
+emodev:-368107346294563441372147845929799838078404634847778857716085123666,1256,205426227269567020839924454096197301901405255816878779124728620673,=1:29070586076917968101851296107557342940225724785154296253334920994
+emodev:-368107346294563441372147845929799838078404634847778857716085123666,1256,205426227269567020839924454096197301901405255816878779124728620673,=3:29070586076917968101851296107557342940225724785154296253334920994
+emodev:-3986212837117931767741913193889401048695278656631180727109492306933238,146,8147531447709512983938379187878961602041163459101435151106563853435249,0:458849149288958792038072118798350524070548896798699913432941879587784
+emodev:-3986212837117931767741913193889401048695278656631180727109492306933238,146,8147531447709512983938379187878961602041163459101435151106563853435249,=1:458849149288958792038072118798350524070548896798699913432941879587784
+emodev:-3986212837117931767741913193889401048695278656631180727109492306933238,146,8147531447709512983938379187878961602041163459101435151106563853435249,=3:458849149288958792038072118798350524070548896798699913432941879587784
+emodev:8100902940229903010080076033147913858702310386781454704764453620638192,21,4267370499730163508065790684197722845343178463626879556739974287797969,0:1559194008070478152155445790765388085122959413923185554185144471054870
+emodev:8100902940229903010080076033147913858702310386781454704764453620638192,21,4267370499730163508065790684197722845343178463626879556739974287797969,=1:1559194008070478152155445790765388085122959413923185554185144471054870
+emodev:8100902940229903010080076033147913858702310386781454704764453620638192,21,4267370499730163508065790684197722845343178463626879556739974287797969,=3:1559194008070478152155445790765388085122959413923185554185144471054870
+emodev:-67357123532607208820167588026304493165680097354954648204845001128495790423,7920,54180751808291492597692968145199206126879627571212323371773988020895279516,0:38482445641925799800186404699759520693970772165979000339200404095536700469
+emodev:-67357123532607208820167588026304493165680097354954648204845001128495790423,7920,54180751808291492597692968145199206126879627571212323371773988020895279516,=1:38482445641925799800186404699759520693970772165979000339200404095536700469
+emodev:-67357123532607208820167588026304493165680097354954648204845001128495790423,7920,54180751808291492597692968145199206126879627571212323371773988020895279516,=3:38482445641925799800186404699759520693970772165979000339200404095536700469
+emodev:21564774075573665981752322921017132462944466357361497012903828640226528286,0,15058866062409919400686067571225883598025018993264993072866008153094783713,0:1
+emodev:21564774075573665981752322921017132462944466357361497012903828640226528286,0,15058866062409919400686067571225883598025018993264993072866008153094783713,=1:1
+emodev:21564774075573665981752322921017132462944466357361497012903828640226528286,0,15058866062409919400686067571225883598025018993264993072866008153094783713,=3:1
+emodev:777842233320172590239777220834144770465433238279191907466130446509467300356226,143127,809101386778417902091877810352677182715503592735762990564598234327398914965176,0:717304943713249257110869278409054343635488519531912801196499856064635084080304
+emodev:777842233320172590239777220834144770465433238279191907466130446509467300356226,143127,809101386778417902091877810352677182715503592735762990564598234327398914965176,=1:717304943713249257110869278409054343635488519531912801196499856064635084080304
+emodev:777842233320172590239777220834144770465433238279191907466130446509467300356226,143127,809101386778417902091877810352677182715503592735762990564598234327398914965176,=3:717304943713249257110869278409054343635488519531912801196499856064635084080304
+emodev:599990501312957514402788959646093776861193105404525472532452638242572938597485,384,694164098523184164132157046027096354720108308754361750383079701345225130461743,0:552831886836151341677818629154179022877513599687843019762824346082731337442633
+emodev:599990501312957514402788959646093776861193105404525472532452638242572938597485,384,694164098523184164132157046027096354720108308754361750383079701345225130461743,=1:552831886836151341677818629154179022877513599687843019762824346082731337442633
+emodev:599990501312957514402788959646093776861193105404525472532452638242572938597485,384,694164098523184164132157046027096354720108308754361750383079701345225130461743,=3:552831886836151341677818629154179022877513599687843019762824346082731337442633
+emodev:-717387166950856039948493623727619953417006786660900853391606222188523146978954842,55,249851988347340743956951710723755778934782102893613303732727155104650554024190836,0:94917559281978557652285194564919194471255372629172461015483079456525825293407904
+emodev:-717387166950856039948493623727619953417006786660900853391606222188523146978954842,55,249851988347340743956951710723755778934782102893613303732727155104650554024190836,=1:94917559281978557652285194564919194471255372629172461015483079456525825293407904
+emodev:-717387166950856039948493623727619953417006786660900853391606222188523146978954842,55,249851988347340743956951710723755778934782102893613303732727155104650554024190836,=3:94917559281978557652285194564919194471255372629172461015483079456525825293407904
+emodev:1247108559833255131023421051224206889208437707543309847268354783435841902933995610,733,5945033847480079150451694696629025175030386955808324187702080655474460793682039951,0:552121131858054985509439507160337194912532999251631220245735338315863124161594561
+emodev:1247108559833255131023421051224206889208437707543309847268354783435841902933995610,733,5945033847480079150451694696629025175030386955808324187702080655474460793682039951,=1:552121131858054985509439507160337194912532999251631220245735338315863124161594561
+emodev:1247108559833255131023421051224206889208437707543309847268354783435841902933995610,733,5945033847480079150451694696629025175030386955808324187702080655474460793682039951,=3:552121131858054985509439507160337194912532999251631220245735338315863124161594561
+emodev:-32236099593112567386979137194422864421137881615337394730197261867346802441980921669823,5,91752956401660637629886605589653679145541869208926297196888853146097034559639778456127,0:60518806834095575644319015741820323735595936545413392902275336817607638484905412448628
+emodev:-32236099593112567386979137194422864421137881615337394730197261867346802441980921669823,5,91752956401660637629886605589653679145541869208926297196888853146097034559639778456127,=1:60518806834095575644319015741820323735595936545413392902275336817607638484905412448628
+emodev:-32236099593112567386979137194422864421137881615337394730197261867346802441980921669823,5,91752956401660637629886605589653679145541869208926297196888853146097034559639778456127,=3:60518806834095575644319015741820323735595936545413392902275336817607638484905412448628
+emodev:50271884481278417471936841270780965441117412446282412169100969024758168373693942106624,3929,81963066766847673205247669622355518222939970750639201358276824482440704767576564991009,0:62281703540827707015524754807406004815705275005421409683659540143504669055166031995074
+emodev:50271884481278417471936841270780965441117412446282412169100969024758168373693942106624,3929,81963066766847673205247669622355518222939970750639201358276824482440704767576564991009,=1:62281703540827707015524754807406004815705275005421409683659540143504669055166031995074
+emodev:50271884481278417471936841270780965441117412446282412169100969024758168373693942106624,3929,81963066766847673205247669622355518222939970750639201358276824482440704767576564991009,=3:62281703540827707015524754807406004815705275005421409683659540143504669055166031995074
+emodev:-579340159717388367484103071217417305401854676291827723561829153224200380081237995138900716,651,307750673565730651787738866338890216282311653914599395911124646576595981539992209095900511,0:151509745004628309027577206278564432986410874344501872366280516978352818925422691489195213
+emodev:-579340159717388367484103071217417305401854676291827723561829153224200380081237995138900716,651,307750673565730651787738866338890216282311653914599395911124646576595981539992209095900511,=1:151509745004628309027577206278564432986410874344501872366280516978352818925422691489195213
+emodev:-579340159717388367484103071217417305401854676291827723561829153224200380081237995138900716,651,307750673565730651787738866338890216282311653914599395911124646576595981539992209095900511,=3:151509745004628309027577206278564432986410874344501872366280516978352818925422691489195213
+emodev:-97916243956905636477652083813766624733750918729402656599354295427509394488660812811650986,0,504214226951518003387724255017508609607833311675048629650486096975331876439736067207074328,0:1
+emodev:-97916243956905636477652083813766624733750918729402656599354295427509394488660812811650986,0,504214226951518003387724255017508609607833311675048629650486096975331876439736067207074328,=1:1
+emodev:-97916243956905636477652083813766624733750918729402656599354295427509394488660812811650986,0,504214226951518003387724255017508609607833311675048629650486096975331876439736067207074328,=3:1
+emodev:3292590583724934273152632680100030114145522324231651230586226973102509131367913652288365962855,0,3489305948459500758622220373494821215068462533405866936756424017653969429333910353069394383604,0:1
+emodev:3292590583724934273152632680100030114145522324231651230586226973102509131367913652288365962855,0,3489305948459500758622220373494821215068462533405866936756424017653969429333910353069394383604,=1:1
+emodev:3292590583724934273152632680100030114145522324231651230586226973102509131367913652288365962855,0,3489305948459500758622220373494821215068462533405866936756424017653969429333910353069394383604,=3:1
+emodev:-7978102455985676350366679275953460048435607670228140092963222007703573212864449715877925597841,29856,6437496673370692769029520191499051311630305921790132367949451008467412252240244679740653218546,0:5317938765885037665302910560037583058809520625824168737742040261509540549928785850499941206729
+emodev:-7978102455985676350366679275953460048435607670228140092963222007703573212864449715877925597841,29856,6437496673370692769029520191499051311630305921790132367949451008467412252240244679740653218546,=1:5317938765885037665302910560037583058809520625824168737742040261509540549928785850499941206729
+emodev:-7978102455985676350366679275953460048435607670228140092963222007703573212864449715877925597841,29856,6437496673370692769029520191499051311630305921790132367949451008467412252240244679740653218546,=3:5317938765885037665302910560037583058809520625824168737742040261509540549928785850499941206729
+emodev:67756737479519149309169118189597305480464085950144437770651525337717619238974063965848555442893510,0,61721185386054729344028716311850202684952560017220443047936445752013986984883181511511066630902828,0:1
+emodev:67756737479519149309169118189597305480464085950144437770651525337717619238974063965848555442893510,0,61721185386054729344028716311850202684952560017220443047936445752013986984883181511511066630902828,=1:1
+emodev:67756737479519149309169118189597305480464085950144437770651525337717619238974063965848555442893510,0,61721185386054729344028716311850202684952560017220443047936445752013986984883181511511066630902828,=3:1
+emodev:13622579220271678876766048827129463577857747656710532915693612564806742487161109510958801491048115,28000,84682569215903086997370780472826384755153630829606521208326331712119423387083844442113181771232731,0:61921681237911684957734827136839012206257886339643336895704703733211281700691618371720081605408837
+emodev:13622579220271678876766048827129463577857747656710532915693612564806742487161109510958801491048115,28000,84682569215903086997370780472826384755153630829606521208326331712119423387083844442113181771232731,=1:61921681237911684957734827136839012206257886339643336895704703733211281700691618371720081605408837
+emodev:13622579220271678876766048827129463577857747656710532915693612564806742487161109510958801491048115,28000,84682569215903086997370780472826384755153630829606521208326331712119423387083844442113181771232731,=3:61921681237911684957734827136839012206257886339643336895704703733211281700691618371720081605408837
+
+# Modular exponentation with small bases
+
+emodbv:9,32,84,0:81
+emodbv:9,32,84,=2:81
+emodbv:9,32,84,=3:81
+emodbv:0,45,69,0:0
+emodbv:0,45,69,=2:0
+emodbv:0,45,69,=3:0
+emodbv:-93016,221819,301662,0:211706
+emodbv:-93016,221819,301662,=2:211706
+emodbv:-93016,221819,301662,=3:211706
+emodbv:44378,411312,93008,0:33472
+emodbv:44378,411312,93008,=2:33472
+emodbv:44378,411312,93008,=3:33472
+emodbv:70,2233634102,3286325576,0:2426711328
+emodbv:70,2233634102,3286325576,=2:2426711328
+emodbv:70,2233634102,3286325576,=3:2426711328
+emodbv:39,5533253464,1070148632,0:416533177
+emodbv:39,5533253464,1070148632,=2:416533177
+emodbv:39,5533253464,1070148632,=3:416533177
+emodbv:7482,37424954770047,16839092776977,0:7609954661820
+emodbv:7482,37424954770047,16839092776977,=2:7609954661820
+emodbv:7482,37424954770047,16839092776977,=3:7609954661820
+emodbv:75,7836789049833,57211584574690,0:32805712142475
+emodbv:75,7836789049833,57211584574690,=2:32805712142475
+emodbv:75,7836789049833,57211584574690,=3:32805712142475
+emodbv:702894,534667733161831256,166575448512340282,0:98236745124961586
+emodbv:702894,534667733161831256,166575448512340282,=2:98236745124961586
+emodbv:702894,534667733161831256,166575448512340282,=3:98236745124961586
+emodbv:16247,353576735207718451,299565526093115255,0:280933599223623558
+emodbv:16247,353576735207718451,299565526093115255,=2:280933599223623558
+emodbv:16247,353576735207718451,299565526093115255,=3:280933599223623558
+emodbv:56,6221599776451542974890,2159033904867393928929,0:837205353236184592624
+emodbv:56,6221599776451542974890,2159033904867393928929,=2:837205353236184592624
+emodbv:56,6221599776451542974890,2159033904867393928929,=3:837205353236184592624
+emodbv:35369,1839486419148755508782,5530530292436823694624,0:3355242496236254343057
+emodbv:35369,1839486419148755508782,5530530292436823694624,=2:3355242496236254343057
+emodbv:35369,1839486419148755508782,5530530292436823694624,=3:3355242496236254343057
+emodbv:-5784,43040276670536818634785876,36492887405512401054348204,0:19286493506125729203919284
+emodbv:-5784,43040276670536818634785876,36492887405512401054348204,=2:19286493506125729203919284
+emodbv:-5784,43040276670536818634785876,36492887405512401054348204,=3:19286493506125729203919284
+emodbv:0,95555903303887262362307550,46204154362123372635933612,0:0
+emodbv:0,95555903303887262362307550,46204154362123372635933612,=2:0
+emodbv:0,95555903303887262362307550,46204154362123372635933612,=3:0
+emodbv:70094,89540446737340421223177728456,835694701023829355087294263155,0:418424229988754966300052414286
+emodbv:70094,89540446737340421223177728456,835694701023829355087294263155,=2:418424229988754966300052414286
+emodbv:70094,89540446737340421223177728456,835694701023829355087294263155,=3:418424229988754966300052414286
+emodbv:-5473,886261493387307990754063500729,850132294968984927109971586336,0:19962186036319737098397980927
+emodbv:-5473,886261493387307990754063500729,850132294968984927109971586336,=2:19962186036319737098397980927
+emodbv:-5473,886261493387307990754063500729,850132294968984927109971586336,=3:19962186036319737098397980927
+emodbv:542606,7576297578502321555503921719145148,6096670046812323372237867852342682,0:6019928069694583180163173577702370
+emodbv:542606,7576297578502321555503921719145148,6096670046812323372237867852342682,=2:6019928069694583180163173577702370
+emodbv:542606,7576297578502321555503921719145148,6096670046812323372237867852342682,=3:6019928069694583180163173577702370
+emodbv:35080,873804207633443539517026163606065,7700271966945032910098505871172260,0:5423974510417358397307357591894900
+emodbv:35080,873804207633443539517026163606065,7700271966945032910098505871172260,=2:5423974510417358397307357591894900
+emodbv:35080,873804207633443539517026163606065,7700271966945032910098505871172260,=3:5423974510417358397307357591894900
+emodbv:6,73591715017125540836707619882023150680,60596719455443436752409094193881404578,0:19278231891294150546581628518996450870
+emodbv:6,73591715017125540836707619882023150680,60596719455443436752409094193881404578,=2:19278231891294150546581628518996450870
+emodbv:6,73591715017125540836707619882023150680,60596719455443436752409094193881404578,=3:19278231891294150546581628518996450870
+emodbv:235,33982097410791452776449214446635671357,51970741787875276189593310474719958253,0:12917271140684347997107415362626020816
+emodbv:235,33982097410791452776449214446635671357,51970741787875276189593310474719958253,=2:12917271140684347997107415362626020816
+emodbv:235,33982097410791452776449214446635671357,51970741787875276189593310474719958253,=3:12917271140684347997107415362626020816
+emodbv:83871,305022614904134506738511247696618513698871,318914624938137416674596881724436242382943,0:318195604484243187814770062976379619616506
+emodbv:83871,305022614904134506738511247696618513698871,318914624938137416674596881724436242382943,=2:318195604484243187814770062976379619616506
+emodbv:83871,305022614904134506738511247696618513698871,318914624938137416674596881724436242382943,=3:318195604484243187814770062976379619616506
+emodbv:0,571664949666413150109110287956385784303120,899228089361406308796439491202242113692801,0:0
+emodbv:0,571664949666413150109110287956385784303120,899228089361406308796439491202242113692801,=2:0
+emodbv:0,571664949666413150109110287956385784303120,899228089361406308796439491202242113692801,=3:0
+emodbv:23331,111442438605972376130506110244327899219912899,2237876130742811109445709826445714509994544476,0:1993464329197419695692136638851665690518853959
+emodbv:23331,111442438605972376130506110244327899219912899,2237876130742811109445709826445714509994544476,=2:1993464329197419695692136638851665690518853959
+emodbv:23331,111442438605972376130506110244327899219912899,2237876130742811109445709826445714509994544476,=3:1993464329197419695692136638851665690518853959
+emodbv:-2679,2710530788173695233378407323077034767182928186,481025428743103260720025399298938288092709373,0:154954456135957386487732495151651926343687936
+emodbv:-2679,2710530788173695233378407323077034767182928186,481025428743103260720025399298938288092709373,=2:154954456135957386487732495151651926343687936
+emodbv:-2679,2710530788173695233378407323077034767182928186,481025428743103260720025399298938288092709373,=3:154954456135957386487732495151651926343687936
+emodbv:8,66475212144802642236424417695707616156078196371461,8400624623087855337736820815095169248114548022631,0:5187964347290625676649944455881080044360235674382
+emodbv:8,66475212144802642236424417695707616156078196371461,8400624623087855337736820815095169248114548022631,=2:5187964347290625676649944455881080044360235674382
+emodbv:8,66475212144802642236424417695707616156078196371461,8400624623087855337736820815095169248114548022631,=3:5187964347290625676649944455881080044360235674382
+emodbv:9,10015499242805866671806182669824281823377004291671,1607152293205603329110861060931530603574600872624,0:322976644144573292044502952628119378896898007465
+emodbv:9,10015499242805866671806182669824281823377004291671,1607152293205603329110861060931530603574600872624,=2:322976644144573292044502952628119378896898007465
+emodbv:9,10015499242805866671806182669824281823377004291671,1607152293205603329110861060931530603574600872624,=3:322976644144573292044502952628119378896898007465
+emodbv:-94,73883264784349702632503413711514594728450092072160898,603477481125780254532680608704164997261749601100642928,0:385098763603163293508297247576178742276025427508920032
+emodbv:-94,73883264784349702632503413711514594728450092072160898,603477481125780254532680608704164997261749601100642928,=2:385098763603163293508297247576178742276025427508920032
+emodbv:-94,73883264784349702632503413711514594728450092072160898,603477481125780254532680608704164997261749601100642928,=3:385098763603163293508297247576178742276025427508920032
+emodbv:0,403018665805686013292292080405520813912760095571441443,266783579498119505177390585076061492421096855799592868,0:0
+emodbv:0,403018665805686013292292080405520813912760095571441443,266783579498119505177390585076061492421096855799592868,=2:0
+emodbv:0,403018665805686013292292080405520813912760095571441443,266783579498119505177390585076061492421096855799592868,=3:0
+emodbv:-559530,4636346354116451435163995696044394621599926066887606404471,2007044169839741253208493501852117173644320085073436239558,0:980083462330793649852651395567038357390956681750027115900
+emodbv:-559530,4636346354116451435163995696044394621599926066887606404471,2007044169839741253208493501852117173644320085073436239558,=2:980083462330793649852651395567038357390956681750027115900
+emodbv:-559530,4636346354116451435163995696044394621599926066887606404471,2007044169839741253208493501852117173644320085073436239558,=3:980083462330793649852651395567038357390956681750027115900
+emodbv:-82298,1260064618208528197738958878917070904095451052223393007675,8999159392228622915543027930093543196382148986055721139210,0:8315318460941735744654692360810076563134610768999859190038
+emodbv:-82298,1260064618208528197738958878917070904095451052223393007675,8999159392228622915543027930093543196382148986055721139210,=2:8315318460941735744654692360810076563134610768999859190038
+emodbv:-82298,1260064618208528197738958878917070904095451052223393007675,8999159392228622915543027930093543196382148986055721139210,=3:8315318460941735744654692360810076563134610768999859190038
+emodbv:-5570,31666917408019243503426904818325007415747650667716360095948214,33888176432105527291712269105001105197791973525400419521802156,0:19067105956731919771713581587977175395882533198855245354642060
+emodbv:-5570,31666917408019243503426904818325007415747650667716360095948214,33888176432105527291712269105001105197791973525400419521802156,=2:19067105956731919771713581587977175395882533198855245354642060
+emodbv:-5570,31666917408019243503426904818325007415747650667716360095948214,33888176432105527291712269105001105197791973525400419521802156,=3:19067105956731919771713581587977175395882533198855245354642060
+emodbv:-26,22007905452621388581343089554119326311972031808789454501569850,63439035351302619534702904877608466226127936133687827793089252,0:8473726082518788387163006019447427099005218230673702028073224
+emodbv:-26,22007905452621388581343089554119326311972031808789454501569850,63439035351302619534702904877608466226127936133687827793089252,=2:8473726082518788387163006019447427099005218230673702028073224
+emodbv:-26,22007905452621388581343089554119326311972031808789454501569850,63439035351302619534702904877608466226127936133687827793089252,=3:8473726082518788387163006019447427099005218230673702028073224
+emodbv:1,775918498742633740198666683324414961665313627445077186593800017785,952660786088689171372582380372342941537491408809547120368107346294,0:1
+emodbv:1,775918498742633740198666683324414961665313627445077186593800017785,952660786088689171372582380372342941537491408809547120368107346294,=2:1
+emodbv:1,775918498742633740198666683324414961665313627445077186593800017785,952660786088689171372582380372342941537491408809547120368107346294,=3:1
+emodbv:63441,721478459297998380784046348477788577160851236668812562054262272695,670208399244540961973019014052558168787791247286206733986212837117,0:211218046769494325969669872092652715825286994236558200831519171517
+emodbv:63441,721478459297998380784046348477788577160851236668812562054262272695,670208399244540961973019014052558168787791247286206733986212837117,=2:211218046769494325969669872092652715825286994236558200831519171517
+emodbv:63441,721478459297998380784046348477788577160851236668812562054262272695,670208399244540961973019014052558168787791247286206733986212837117,=3:211218046769494325969669872092652715825286994236558200831519171517
+emodbv:317,7741913193889401048695278656631180727109492306933238851468147531447709,5129839383791878789616020411634591014351511065638534352498100902940229,0:2840857949915095558231699206349834791724216125018136484978445417022859
+emodbv:317,7741913193889401048695278656631180727109492306933238851468147531447709,5129839383791878789616020411634591014351511065638534352498100902940229,=2:2840857949915095558231699206349834791724216125018136484978445417022859
+emodbv:317,7741913193889401048695278656631180727109492306933238851468147531447709,5129839383791878789616020411634591014351511065638534352498100902940229,=3:2840857949915095558231699206349834791724216125018136484978445417022859
+emodbv:0,100800760331479138587023103867814547047644536206381927221426737049973,163508065790684197722845343178463626879556739974287797969673571235326,0:0
+emodbv:0,100800760331479138587023103867814547047644536206381927221426737049973,163508065790684197722845343178463626879556739974287797969673571235326,=2:0
+emodbv:0,100800760331479138587023103867814547047644536206381927221426737049973,163508065790684197722845343178463626879556739974287797969673571235326,=3:0
+emodbv:720882,16758802630449316568009735495464820484500112849579042319792054180751808291,49259769296814519920612687962757121232337177398802089527951621564774075573,0:5513704439164313512320603722396796903350762139161644395131273954203378131
+emodbv:720882,16758802630449316568009735495464820484500112849579042319792054180751808291,49259769296814519920612687962757121232337177398802089527951621564774075573,=2:5513704439164313512320603722396796903350762139161644395131273954203378131
+emodbv:720882,16758802630449316568009735495464820484500112849579042319792054180751808291,49259769296814519920612687962757121232337177398802089527951621564774075573,=3:5513704439164313512320603722396796903350762139161644395131273954203378131
+emodbv:-65981,52322921017132462944466357361497012903828640226528286241505886606240991940,6860675712258835980250189932649930728660081530947837137778422333201725902,0:2906363080300504036446988558153247540678666818543108704882000018688053575
+emodbv:-65981,52322921017132462944466357361497012903828640226528286241505886606240991940,6860675712258835980250189932649930728660081530947837137778422333201725902,=2:2906363080300504036446988558153247540678666818543108704882000018688053575
+emodbv:-65981,52322921017132462944466357361497012903828640226528286241505886606240991940,6860675712258835980250189932649930728660081530947837137778422333201725902,=3:2906363080300504036446988558153247540678666818543108704882000018688053575
+emodbv:97,722083414477046543323827919190746613044650946730035622684143127809101386778417,902091877810352677182715503592735762990564598234327398914965176599990501312957,0:889212904562853779260747052184064517476716523608339827860458031582708193206654
+emodbv:97,722083414477046543323827919190746613044650946730035622684143127809101386778417,902091877810352677182715503592735762990564598234327398914965176599990501312957,=2:889212904562853779260747052184064517476716523608339827860458031582708193206654
+emodbv:97,722083414477046543323827919190746613044650946730035622684143127809101386778417,902091877810352677182715503592735762990564598234327398914965176599990501312957,=3:889212904562853779260747052184064517476716523608339827860458031582708193206654
+emodbv:14402,889596460937768611931054045254725324526382425729385974856938469416409852318416,413215704602709635472010830875436175038307970134522513046174307173871669508560,0:104803682559692025313965046839630608596949538962860573954122948467983495146496
+emodbv:14402,889596460937768611931054045254725324526382425729385974856938469416409852318416,413215704602709635472010830875436175038307970134522513046174307173871669508560,=2:104803682559692025313965046839630608596949538962860573954122948467983495146496
+emodbv:14402,889596460937768611931054045254725324526382425729385974856938469416409852318416,413215704602709635472010830875436175038307970134522513046174307173871669508560,=3:104803682559692025313965046839630608596949538962860573954122948467983495146496
+emodbv:99,8493623727619953417006786660900853391606222188523146978954842405502498519883473407,4395695171072375577893478210289361330373272715510465055402419083612471085598332551,0:424015515432121716805639629631123704621802071965154851362821400859180276022226483
+emodbv:99,8493623727619953417006786660900853391606222188523146978954842405502498519883473407,4395695171072375577893478210289361330373272715510465055402419083612471085598332551,=2:424015515432121716805639629631123704621802071965154851362821400859180276022226483
+emodbv:99,8493623727619953417006786660900853391606222188523146978954842405502498519883473407,4395695171072375577893478210289361330373272715510465055402419083612471085598332551,=3:424015515432121716805639629631123704621802071965154851362821400859180276022226483
+emodbv:10234,1051224206889208437707543309847268354783435841902933995610637335945033847480079150,4516946966290251750303869558083241877020806554744607936820399513223609959311256738,0:849166472390089324447217011402258926811127602345244477949055266800343927988355770
+emodbv:10234,1051224206889208437707543309847268354783435841902933995610637335945033847480079150,4516946966290251750303869558083241877020806554744607936820399513223609959311256738,=2:849166472390089324447217011402258926811127602345244477949055266800343927988355770
+emodbv:10234,1051224206889208437707543309847268354783435841902933995610637335945033847480079150,4516946966290251750303869558083241877020806554744607936820399513223609959311256738,=3:849166472390089324447217011402258926811127602345244477949055266800343927988355770
+emodbv:-97913,19442286442113788161533739473019726186734680244198092166982349591752956401660637629886,60558965367914554186920892629719688885314609703455963977845612750271884481278417471936,0:39492300709350508322185513215823770925957483374622610701455481874758748756164234825489
+emodbv:-97913,19442286442113788161533739473019726186734680244198092166982349591752956401660637629886,60558965367914554186920892629719688885314609703455963977845612750271884481278417471936,=2:39492300709350508322185513215823770925957483374622610701455481874758748756164234825489
+emodbv:-97913,19442286442113788161533739473019726186734680244198092166982349591752956401660637629886,60558965367914554186920892629719688885314609703455963977845612750271884481278417471936,=3:39492300709350508322185513215823770925957483374622610701455481874758748756164234825489
+emodbv:412707,9654411174124462824121691009690247581683736939421066245039298196306676684767320524766,96223555182229399707506392013582768244824407047675765649910095793401597173883674841030,0:45372936066320285565767345060984614982597172133924700246907679760042995966513245912459
+emodbv:412707,9654411174124462824121691009690247581683736939421066245039298196306676684767320524766,96223555182229399707506392013582768244824407047675765649910095793401597173883674841030,=2:45372936066320285565767345060984614982597172133924700246907679760042995966513245912459
+emodbv:412707,9654411174124462824121691009690247581683736939421066245039298196306676684767320524766,96223555182229399707506392013582768244824407047675765649910095793401597173883674841030,=3:45372936066320285565767345060984614982597172133924700246907679760042995966513245912459
+emodbv:12,741730540185467629182772356182915322420038008123799513890071646651307750673565730651787738,866338890216282311653914599395911124646576595981539992209095900511097916243956905636477652,0:597882447446136206020843479948282217243162285637054743586243300633734568794892620330552220
+emodbv:12,741730540185467629182772356182915322420038008123799513890071646651307750673565730651787738,866338890216282311653914599395911124646576595981539992209095900511097916243956905636477652,=2:597882447446136206020843479948282217243162285637054743586243300633734568794892620330552220
+emodbv:12,741730540185467629182772356182915322420038008123799513890071646651307750673565730651787738,866338890216282311653914599395911124646576595981539992209095900511097916243956905636477652,=3:597882447446136206020843479948282217243162285637054743586243300633734568794892620330552220
+emodbv:8,813766624733750918729402656599354295427509394488660812811650986545042142269515180033877242,550175086096078333116750486296504860969753318764397360672070743283292590583724934273152632,0:187419881697087928981580635353669700411908736518656599363509921235901203393697886905365360
+emodbv:8,813766624733750918729402656599354295427509394488660812811650986545042142269515180033877242,550175086096078333116750486296504860969753318764397360672070743283292590583724934273152632,=2:187419881697087928981580635353669700411908736518656599363509921235901203393697886905365360
+emodbv:8,813766624733750918729402656599354295427509394488660812811650986545042142269515180033877242,550175086096078333116750486296504860969753318764397360672070743283292590583724934273152632,=3:187419881697087928981580635353669700411908736518656599363509921235901203393697886905365360
+emodbv:801000,114145522324231651230586226973102509131367913652288365962855153489305948459500758622220373494,8212150684625334058669367564240176539694293339103530693943836047978102455985676350366679275953,0:7455082526360199945904164673384849878483828122749940095337812295059378328144102232203949899838
+emodbv:801000,114145522324231651230586226973102509131367913652288365962855153489305948459500758622220373494,8212150684625334058669367564240176539694293339103530693943836047978102455985676350366679275953,=2:7455082526360199945904164673384849878483828122749940095337812295059378328144102232203949899838
+emodbv:801000,114145522324231651230586226973102509131367913652288365962855153489305948459500758622220373494,8212150684625334058669367564240176539694293339103530693943836047978102455985676350366679275953,=3:7455082526360199945904164673384849878483828122749940095337812295059378328144102232203949899838
+emodbv:6004,4356076702281400929632220077035732128644497158779255978411329856643749667337069276902952019149,9051311630305921790132367949451008467412252240244679740653218546677567374795191493091691181895,0:2157703003465786984862106104496545852077633747681111082485733289488843538802921375640668056154
+emodbv:6004,4356076702281400929632220077035732128644497158779255978411329856643749667337069276902952019149,9051311630305921790132367949451008467412252240244679740653218546677567374795191493091691181895,=2:2157703003465786984862106104496545852077633747681111082485733289488843538802921375640668056154
+emodbv:6004,4356076702281400929632220077035732128644497158779255978411329856643749667337069276902952019149,9051311630305921790132367949451008467412252240244679740653218546677567374795191493091691181895,=3:2157703003465786984862106104496545852077633747681111082485733289488843538802921375640668056154
+emodbv:0,30548046408595014443777065152533771761923897406396584855544289351015617211853860547293440287163118,50202684952560017220443047936445752013986984883181511511066630902828136225792202716788767660488271,0:0
+emodbv:0,30548046408595014443777065152533771761923897406396584855544289351015617211853860547293440287163118,50202684952560017220443047936445752013986984883181511511066630902828136225792202716788767660488271,=2:0
+emodbv:0,30548046408595014443777065152533771761923897406396584855544289351015617211853860547293440287163118,50202684952560017220443047936445752013986984883181511511066630902828136225792202716788767660488271,=3:0
+emodbv:946,57785774765671053291569361256480674248716110951095880149104811531028000846825692159030869973707804,72826384755153630829606521208326331712119423387083844442113181771232731949302549335896184427699629,0:63291678821403600137229027314563244771616884878395099760855279589610716265728494065685311702593475
+emodbv:946,57785774765671053291569361256480674248716110951095880149104811531028000846825692159030869973707804,72826384755153630829606521208326331712119423387083844442113181771232731949302549335896184427699629,=2:63291678821403600137229027314563244771616884878395099760855279589610716265728494065685311702593475
+emodbv:946,57785774765671053291569361256480674248716110951095880149104811531028000846825692159030869973707804,72826384755153630829606521208326331712119423387083844442113181771232731949302549335896184427699629,=3:63291678821403600137229027314563244771616884878395099760855279589610716265728494065685311702593475
diff --git a/polly/lib/External/isl/imath/tests/expt.tc b/polly/lib/External/isl/imath/tests/expt.tc
new file mode 100644 (file)
index 0000000..c778929
--- /dev/null
@@ -0,0 +1,154 @@
+# Exponentiation tests
+
+exptv:25,37,0:5293955920339377119177015629247762262821197509765625
+exptv:0,5,0:0
+exptv:10,5,0:100000
+exptv:1,-1,0:$MP_RANGE
+
+expt:-1,0,0:1
+expt:-1,1,0:-1
+expt:1,1000,0:1
+expt:10,5,0:100000
+expt:10,5,=1:100000
+expt:16,2,0:256
+expt:16,-2,0:$MP_RANGE
+expt:9,114,0:6076396096647706909168138770838836135530328017648434830996201971201776350890241322455818405320466786549738961
+expt:-86,476,0:662617332696362860524067230796827820618815284881665908870595313490845384402730799402221740741547892729430741053639014274968962128613995528237195069353968871860065099842959580048834695510748974202424908905352730826874949676923389706328585129209694843598031316497606363273659659518137129001683914681077900538211178870670637655474948719356656149928857724507047191532188701873201466847680543186709462811132458087950485580962981785390351911145306017418845982546035812744084364382432586452339098567898296989357418159116783507112574874002896769395516552960579886303506398054290885811079444534809660731243125017742263312078176886504861185566719851630353701862941682854137129215263285153620969438652988427729550528379121310832057528645876351114476064584186293636620546183047738657594287749786268444920697293633564476272776432769083439149706832453778408583421346390651383448852253784001810843070684412323782386158601772005993742336
+expt:40,238,0:1951092843947495144613498268620728941092873839165606969286973099765857336762353512575191314414682481974891831950879139309654984799555178316431360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+expt:9,761,0:1508515174935868832740908844641413400230908698282014024654729092918735474326353646362638387096847659573480147230064829611049820323852929496264239478087068540642226919569780605621815548160687919464946810325130045648382743363240874672014902866728521582870078261816669666838432797381766007612134725161586319767428484319859256110793709691241551836459283171491322903212579581783263716842956174378353601721913353516686324030063352338083503343527729254306613462747468830270057853272630516028854927235895950242106874919224742672988595490274178820331573555174825456815488479104792855190670321093410569224479462267429452231735849215995686173314732407799996091669536594590589720060331368687564979078136565140955509332862196370159944529609
+expt:97,144,0:12448864341302864356285624793135454957839907062356377399873019819913674333304037397385881749787740378047787615516124593880867160513889753519548772992938610862712907794913424958325207507075928443769586211194132774382517001523776118917770065797726717096819996931978519564039067219497326081
+expt:25,122,0:353737464016668451855824972300304366432911374927310085530570894138105520257533012294512947342224925759920017160034290220932919252862236536572027034708298742771148681640625
+expt:60,794,0:71136550947732097223049080592911024204723415862845308040389197768507697553695725763485652390828706079386079253286683076446508807986344183438029484620306186446936364042768259107355223169364392353311443322952870623266797106042061359252992933819289381215897875409197357921675407844235432207568030978595888122411284106189806970016530299277993693667005155741905298746901362592844010565441606260646610040560804127639267467909340287601194961411351728753184912061106832973826776921930054951881992593414738674333726484856598478050587647451437933451435999205268943471465348558111458293504367268910731207434743916849298071460249600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+expt:77,531,0:532813311656570249504626338521175986931059533505926279525440059983661596994102351537446926949363360529365260710018282274969608991708422465645470353238950991164094603760337431471373797674342466447685331328334896929530869521639021347860305641901746618212067382436047417802334922329714967747069071224609067366771145964345230898570999327581370275837424654936614015736099665593408214589717971837806254491231718922616012680565189067437536528526576020597271981783296886490561985553063246822960810078500648480156559918530508398231087164252252053517193755387712164533565474034807917780960207694570186046344187446803758345139338159388892261095589551022214765624192005132067602116482379395414788544646979450596452460362555591887638135655580299669062424023518502777571809123694201495640270788238169354113138409879326088017367705387411669267281998186298445497315171994082486321864442017377055208040226703055135151101106282748423896319916554310684705542590586019379478759401961042716809342108506273015769966750567573
+expt:69,147,0:2045579385385676298810517927458702060863220937986515106749791476657551971253912701625142580828008387342063850849956585037595400455275752324351745210872040235629033488870814386789439565218837255775426196335872604764004481418507627655312643367630027383681234193549436923389
+expt:63,5,0:992436543
+expt:43,146,0:30647461956799913663494655425076773992386225973903296590660647835395776515882377986142610962128804096035118305690037018948311119864211319779734143116465886493057052663022568542180068531441910862918530533350093865623799781552091321941805049
+expt:98,726,0:426708164655477000890275450255347996233537359230825603678068055078572185768690530483979279727883872477967005148697167468182222427688835250730805216703200346494527373336005252179998129153425179169405541975856774474069498366622503869407903427510194050762239470842997997171904492470843168606219304544549428357468779947949943413206194819154200161585559598504692063910328095937302046813011102683058231640089632368478947866970023522346778845648102870898031392605132459073175114548205304577635185214718149330416992983890351407166804165953949747506605647268028309196988233767305361741291382876521135508192965016090404300931198517364604358975250384413502392769253607192796721507324069628343907393125548382919869819440252750811077561632309583741878536279703230000857054139878422446147127180603427708828429704600917447413869817618302245994562895269981736545881770397064210337561050137140587310204526285808818450640283721161279575346308077129128490827488909459752308152575975333376251163648250120013220501057296109952540925755870893739088626118741752210805146783700608707536622996922837160677398003341203351388553480766110431344123182677789104679858022371096216510424982048676315996005859351101823572640031789389690671319495099716878889860298319419347560159622529618640118175355266744662407331598655239886273495406443560838728384648401252398353045183922227138034113900212648350987135932227570141916304732230558988327877007227972193394243239402490072781553664
+expt:27,994,0:5964603431471868470779586030579897508944005422481111504996101053704042888070620658634603446892718184220478121160877417420632344218074218536055055853341137441998294000251200835878902350186488825026483460943513306200517889603246366106853840145090440733291280737628836962672475155047075274192277218811417069065936482209339531226972570820904792756362193437359255260272908936652780579152117702725740119749377918245976402017781340294169531390247883611378505356757467342298706583634922064709088257785640184257059718176205448907751675016209636121926542527171904829380257098579043693273941177601321704542520456253669795714215535002523967268853493688846286706973999035367452588515476784419866076998252005842676395279638218578241484332229406009518807659452519350666942646794806449473475747553767493845162021519112769640526941059309326051192732830213515976229333540580413722595827300619108280969740698513378110488385074544619780641948295405495780237236276684111403379203230366783709039063472719411695740144082704697603632985497552873504333474571968038639730745252032873211100978857900893481330626200727251839567315077961576806464237728134101031182507236896333266479325934856175889116335417594516961071359041380154522292684361535083826965209299951003822498563135386891475232447007531309326110170827274814394069801400172716308094800028763449103928013302738446528312264064411790429063607977721347425016445446736220565463902437544468120409
+expt:-34,885,0:-228476523750723373644687014002375633344738959573253313295673378381427602021772078020242635916606956729056926140060033073714690114938322706601446752472086204645016603045913330963730961808178207763215017501900858842569395980296056740108703232651676106742955978639790402346938757058023705396206982274162272726053788981662544438635344871901487308331092875364378228725341155111018434010367438360637105101040524061771063338296772106596332044158968115550006262659165852163296710243618168537491315057352543683129215465809356035846400682903175992116512861339446629911475952731908088842546841550719832093476305343487020461708563559436380209360381168143472508064742652734842472679645707885058211800145889276047957973692059807305288049119319173129319106681652756562743739107763982095644384826187365922752532925851190935179707337534386963062100373634441547376770817028643050332728353004280762321859734138238987031675696783935311587870039192834643563874032592612926869623391797208269743645539702607895028584122500698098111011232061951530722490246531280555160067707338914792416989446928511604549465504192826378832978906732786898284995067855250035120805001076275382922780012160428673191761070264969953411775690292328243025746069928396010308859738310517827535649006402912255952898688436528776249218886864180489977578374114695105630836780908831245277680459913198577305780224
+expt:68,110,0:3766867964664544159080663337184475494042561418541340945804586832720994284771961635397385875362345125057120310938269750846083952813873238584240580179827028286414766076572917365783013027168357407600410624
+expt:53,658,0:3745606907993421946887439162000086810348803803092371857142904229709206909828318821048723175183121197130197244352493778939138463422250852343527134762386848777080851567505679505075345465770806895721134211771274772293259989505354294489544040145546102855689216456038976289617392680444976953405298744483530421163275053596226349987392709474693470945596072586963883209895508334043197301264236788171635960039858646321742025220295519025375907766179640091678782720809671950054095805941850551155084902979965473850917202849828979441725255702684409539964150439149357477472547510742865588406211296859461563407639715931477329008440374383580709783691664845736383663038801784370088793404842551953417842873348778874221805705399715354432210347494670220197359227112393213208248173978860627750353040703341367562548515958900446957626661507861996868491462583136836486757565972785201597859791653509981302034055855843211266876872054969345931382022744508783063231741810980521737612696916450990320941990166412615155878082383699204415978877720954451681587069814429903479542778158301091332107305065103043241495237616334706497558758024048371354995778381078122856889
+expt:92,804,0:7680919010486502611899642593747149466649196229266501367711103750663463292831658713415279184569662244175409947032999989257086334914196151008717155913095724421214123565414211404671154819304177054262624540117568190722055697928671476680220542928701368559838336428067111425536616146489821648041701273110577053706361418086034761443472306518865080966679098105467798346917600554685542898553062250741733411314786612840508881986382144004386089851397484105951275595996231115064888236880983094071936561219536816852038032287045459246026554363716223803369919418940349582736218979681160219265039593199424543894793508283019529562836802500641291446928979006411204413367433175378170319515975143760263714327381242315380104084348844582613710587726111048178373881327576604839032050152609478011520362808140313650631437624206065559757026169586967629556330683105990075123728304036555187713491828534603673570621146978011206391066697511863181519910465645525817216154078233941728180083417123747740080789188156807592630560128265705528875621630095351201299879483799930273817796360416169388658060657506361895914025279478414056917576529844826749149254978523394656765480215719926358133890602585178838119464948003289948380599052143243657411917203711988600003537438673472852245599607482384889722702462622774797489957621592414208918554109594415643546111991744898184380453126034201383595790269274373055123173862494511611609472258838476906869425218506801608515950342031211116660445405063954103192171748610888916224658384554763772392708457944737818761788668778004849546835031715922094579082757147279920864952420663296
+expt:-93,17,0:-2912125755884410842622249251854493
+expt:83,344,0:1455002626766365151331492634356788248715003383435775455996374149087127274539469938480434554541764208550166395886013614290542493336553727055035200479566375122407588223498846894540017410056428775935861377005037728217969587830322338737768781971954310027112710091083345708154562101156949905590633490616529984721229205694585229393810736667126990248301840585766896715156041016184889232474489806021208434163212143568783993412750969879402550558174816868622343662524065027291485375058885945026037942093663550462847296831559200222610314374017319326883901944196944190346470731947264070070668533749087738060363624871768516622722491132752341069559484881101460722290741607521
+expt:37,509,0:1639372139330474505096339736526839874531950388106785764526499216811362225270703761672667866735996696543474964780972938761569608985235961843219297731833082892285640739207743839560976358344004254125552207884861967683494079795135492763316903001285669079285642352434013330494551450924529881670919372226435491663678910321572802241052671829048684593319302540499062531002552822413972447877352398056117420144161447269350831919710819792646829325266226815447766753199630288869617053962763718694151712581758666586038482541785095213523640877958314344476036711277346617174429612617143676944589174538616885971879400465341144053670575443367839317972672752212894927196448994763102499581012815364079440761668903982747115134081448923972310533501089520501466675410274312105259815806872362946932755486301682363073385077
+expt:34,19,0:125342809160496617801464152064
+expt:-76,29,0:-3496183156153757826996482351208459912924449087659442176
+expt:37,959,0:8043653985532953716889715133535087168670385482210859421739682450017285673683111089377825581114293665656145651712345850663980083336468179806875814073857765425892155354598266669506804046627707739916500884106198506997527648083295900530561613402364276614913200001026056509772329191449641564220726849838723452604518199139241770839665976645631344667870833619675231878104275459443798340311110952188496587631537611487174398583536053876742575306117395796907118640363142612543112228300527887243345970257920772909373983605623295787525934506659963651305156708304203030998266284694349384314377300558457176325498546062335314396443971466680283426513605059525173724321570541512640520991258079091372220776160186495883992700218975056631545666177364476484572440897669270951851900895176798423899545287983761049721641455850562227655219058197710285516766496107629355803471562655222885223162182968326669241365735898955624385521019652649599364538263697078170698660931177959033737136065046900419098588879986481831152277650601951389732469419718135458317284510180252252347215282909809244252103764833246379696609330932880474725472382498914394849425766909318546858182860618752740997875122661035517690985707005948901199463714885386589945448510035753998020104333298915321476036121567051616071951554677670098530225928071546828420949645455483886944027286648764164718652180618519663834711653112733332792953298854502679756506895010313106988391740237915628327936616978344717429852330779137901687317622168225757826112789753604087557655040173
+expt:53,855,0:18024719238727749739525445919483313820179132397627088793412502725451984940695378279438673546750025166612239273512610516827961724525198882762072448802914929186534874689268838685049338395668464648214285629458942854743809087942072596640624011936285554457003232121031929203367446328606007087882829501707445687372318602594007967315081778231244881573239906171935915143655956161425143440493226007667195047540127725460951375078510152848109086910835297918453026272054497519156136102101888168736867868647822194907272146486388416624265152334316284765111597489635974901154683366709520639989936829700879404498384693571443613183789387222654028458579806593806268491518181218800476712301946966270100813204092285152986557168694900881657470791233632087214162768980287038944834419004548322680351210051534951796722585140993240046500305409149666028347813321755225701104959869144974670164886058856826565923628643498059733335090448195444279918303399796642120257846094099858071377352515014517392246807264485477604806428498201472579832708245125875380579584993781814239835479412029038694921470435633141289405105409413524512605572562361133641297988371189750573248231052889827586537697292556993264681319509450424190822893352470802584486267244129501288234774550146263799764737409541494978039756256344516245332054030367728222980738023243510101784709043134443224472285495023599866477956084806532775907376656412097028192665531115092097120219791652662455717002643200873090340640713123160526016567186689389757
+expt:32,656,0:2389933285405466860396692079116393607592094511377675771193917107985577957215786660857642782380647855358562124487585166367387947413551391813528167636162447060549990168729176552922878656050672076285621550614985470720664776531442576135048333979096784310286244860102378967371399286213595759636919115966603400112237639950891727815590236647193809310063401704857160813929322419325892381145791656471799426867797910499315367811275543479800432663111156312795121794429616492767525864645383481760770859827287365500386734880646418760089786239708463669779102319740012320361344177543946675529942817886591133769700783852263121450795052384716461322528105766425932143907687036561966697338295352111191252732978138183228296826658380107463086196091321472046087589204515401546744232072241940768351560772822305604027448970361890755796703363650465900018004257276623522292065343862084678326596045941765842024484410215769394555885885158749838834979597158322722201614329459219680380702370857126529706245613395378176
+expt:44,825,0:705436783209414656391711687641131832457317079567241536806961190125032329799945689381531828701711922651328924171833912445806993257740496413957550233738157646707468341476136656655190568061765250287343123150183203457096310554778580693127605900054156781937329687900011079033154328368560570397733837126414151383627725550551123061599523989519231809246838020349444255196435779598286912941849683826803885007041497453499648698536652839190738405213015416967571009307605140974000980854307563054593796685305388455731431361267420888839574695702395994221207745406708122106371051596919061007969322392348313397932391816147444777599673900815310461704623664643196151052250877625946280731633882993330125061545681460076713485728798412351901806167839675417726868727194522011871552299094826966964668768915141255798918499796543486231511141788910147145213662462426979493734390203264331227425018827335966699727291310495771236126927600243376852048316429905244128279916690719962985233688697060839371456481476421673214751905689846742695604260150120965796700034367974580976289127610455139192549104607458487162099297483432995551188890538592998367871918611578833922235492029074979130410421219592032895629208451572864516745372515998761341772487485436904736855847415242732131193954436562666516079556232801577061434743967882168334814393918596862293538397642429151346165775119942485356314624
+expt:59,114,0:7535799365523929401466950149815776414046724006436301251256273386014282698913901410854119082161738764751825402834444249521979494417181418024031729730875375541703751272328798861158409927866104969176716761
+expt:33,638,0:648475603635833183196469398829966467819872179533313634773199294300845287950459501715005525988291242251589147926178661960824082441163194476232580397116885117509943674289579029366937003306245475847226805096473463034937358215125841547863811379526289909390311989707533329900551425869234787887523054960552278032611552781528108935648755207909825160440738427953647870234694868460377213725626413535570112216908805974133165357493773798997957325074032229891071788781461177535131032268348271529076288914099185644193139733366057736098900551638267073002144185264974730918597301702988431169584478969558388865801487275460346465072354829295831509446111012459075308582088675497358398567086973619837648636885329011064845212317340840818123718736632174769798597171923150676024529241760831961841633158660369965791581395332178142007133509696793640532076763117981014872625633261577688978190292542653541593712317454035995088612040333001542622676149361438454964780663603604979033175966419868609
+expt:69,872,0:29950710056653639866040347513592954608907832187759095021784612336213340883909743941015111690452867673342534673834960600259673961740938823369536279442812481113707789275256589878997231276618632636210489615929064857400027555434720369902556432133478971302553689173725290340815598949062749239632058821352962601488612707115779689919582783658366139458929359238601369623679788087432179938746909197524719589777317181141198765254386641701187353660512871784711559256412459533781485842843404652110331152933616653843115472865088192382607300085255939568539834001519100403938776165952337332146706473461537817329969120309309517770547565346056282486046731066492332789904059680738904349305243649494763250736765491708310216396673397796961838301667209428954933817477191941146364618594356436871426698169064040813675818513426197050972194802492745959927175153699196273914186935407179377493000883694252000018528388345695513167889176432751477073481242404466807236118127264128971920247017078705326478921858295937254808875182604664522156032745827731392987081529736044441817762936554493023891039839715605648021019219907116643520667553628457465780133403776577685023637262452859732368262675698820414066865949360110605575303893868842664652278685058236518116527393248213186175036314144344761002775344535262642684517202791126837476442938864508396830200526809879345482138492481769343790209140327431667550761817827241581355415614928705123841250085260545474358015032657030444618098608485724932887367556645547344897117535819883458173888231937264034262930323293309593162187140783379967834211500900425793093911669240962055595069032779064523361
+expt:-35,560,0:4765460083484463473472807029671198741039814209947733085375343877805519722128264213906493004712395811794836067456926301347831701213543102558807372013840371317686389493491044956157976970854534780866809198779109650495115701056756779233669845873333611352227016172179141127201204621485258250872410797565587431587955801098712622722961241140244408879022252575756465947941316439513115927707432620645580331357844859947529159485059102032289565818525572625258477572647406049297215450764812141735725360033399668564250475303073470958824427283582477027047896762000913374878650247253682919902323190143426951007619514663885034098702528525398380830769050070744862297092823136092265705202572748338959960458521661389246148014773201598614888333659845567286582320269709906762495527111679682357140289756441194587185256840255908734955659782455404151202404960940839373506605625152587890625
+expt:-83,209,0:-122270392573975557137544098494603104038431911133401401060669780228862020091902727664948350712829411551252088259762269665003646460255858818493536471916081519810436077327712541465284264947694222413222906768064481479603637285266239005383584918898692141414316852928726367305370720092433674542731019975979821342341530442634729485864001750080837642935553282153040722532849483710322964546566862518809499408403
+expt:-22,544,0:18964367700820944190420983771842117471035813402172302356001324232625456871631696158159426747244273988396896874782255417862295115980915085588836421854267161890941876064963407590082206716515749082957670650572915503706055302390446576711188138153431530926911613355471966093726010812009574536833618487020923293412479710272640024885745749390406182848296906282562712038022234856787439331540733410267670953621778020862196051822262364620284766229990123269618359711309083829625146905646383609813594662427186141810814135462546643373090731265237443450146344536874441550683786161973931814080708597655835455648574641882644636540462283387226460671638812957375987034299333511378035037854459892174703913394380151030879671916383365880966083883565056
+expt:55,53,0:173469266931818817701197572759460512158186359368276122994156906997886835597455501556396484375
+expt:56,7,0:1727094849536
+expt:69,511,0:4486269579432801228328894978520612039865782962773314299890064827550076871686539386493998487559513347930912978842976457609693197201213966463505628022312395013622414842679517721662844319556038654381323108565877674965192437982575193911756281655521858715295957459295213878788866632588753200138937292160832095681182024559479348223221677348390842846953123958441380139228198612700886931654375724810762399664286697632157511028362743434949776821972216621014709224808699213105247588616225388811148034573781049594047599184470666181439258133413347363982316136095491031694475463436444214376593921337732387516213520549630132463991049105936530704212604782416902497080757979392934118897752584527916561354795284032980721598161111294569421622420394749960961723356836189382523894823797755998521714994563261231632958790842100581461483738927484818446238271808447886746812572795337464271466846423907255769829987902959874517226021350215314613561013455027818736269
+expt:65,627,0:497364306835738758369203816929587563621484908670308464881508611000120397210171552818133505588600972283722504217038299267610870712281857521011539651202476710112665851438274405311118329759864306530206464076881590237702559066115100823897031634086082484171733231579340629242599537765843919362377197750957150409164905009889637997973633002262727089466214411540563439873655647562353181575977350122226034217971081813504998125791931120734615674206813835553948971108562651944903797187278504359842148559086576885512335220747304460608200450624832543393270309192761368009850923893828230888362356748911750574377927901251690822238297994571714786631993517145675163841742009468644933432283278288658898061814717433241276039971839163707090134740016885115455078319929919984436448696758395047545344494824758451226738937682595385197871210901912587652241955896134593132930558535330562369949669112499207879073779991774258219495999580367039563626586056205306276658856886524280676036800529831507826841752629258128889348309920708180393144270583624503924679141781718886992556665276474942605349507318130943424722182510632471387490571856915266835130751132965087890625
+expt:46,193,0:817074232257484121156770823318605146696751569369000241039998457282648867989095210690478016388511247325018574872571127938218392125122241277384005423186652367061816702091193768108652663491211481548491110769652180143820817287796926886145903321477727282551759124806922035803851540296187694499862514735119610739703337122267136
+expt:35,224,0:7434331703617558866735418205564382401519158226603733006962337038114968755942018524978551854012503800960010205708607955416310926336526408147412201804428417291385136369283229527393145734163012864208910675715691737778124973593953966099385511183284037573029373908498077607797410012638709522747893758502294434854784643817993128322996199131011962890625
+expt:48,871,0:2296771307785108997996275281694403742355413375274328510033245315525621390174696501258885481415349678804771928342175537874324074456135373852706084607201324469163233145482596686038350670427036741247616932972355015054433455747986815070761138607427191348086868570458350738831195704010357098624395027409387096510181101959230801667175083036850637754119339482591099632372672743060138882768223599588213396264220864703488219466055760560916641000944392297133620617588807928555012293449584277763904964488395570608415840137573373251523555726603443441113068235906294848808710212674698053441585803096252716528906610961258208381697805496015211611434136696039563551082904259850787494200559601774616526509976357060921883050658747159151714704641435607899726584101580154243983256304378508592421407973560468995638307786371450739384529436653347101351955239349662908173828605297840447911481941092339861863239287090444745959885402693797565521445366949111927811171516747397914656348938374407730394789915004848099910670723354943700564628811075303193718039885360453078287438644715151039299030827041903587917146772156422724773803085293734569147130667846393861058073699252566570823424630289221233864648893789083533315907406376875479011330114253420148543906354793351474113233267966052291368733321678620499879469220151506192717633536571962409876554555026897490062209992621985629094620892105629420732687045223957170224155835158216412193474005114831859911410553422254858147750406913717620915044352
+expt:-36,518,0:146115200201244140508535808225340127069092033074086594939641038813380464643092784368499957960397457415719662913975450241240449832879511228597374618467828990096974163693493678321796688824401816250266725231269351174696889365960762080267621636961848851793903147492257687807404324628050042266187673582798121678172191086987308854792095986157320245166750739737004704454814011348168427466038007182398317491734265151076778063010496132619211679988260689473089297585811096036931998406782027461402044049893679481715416361137493463388085294521529831982907701884889345802533151813498254699533482401990075682782757616061340632427940899702653394635849940302575034960855494543054252959646383879992036574182030574286127878688271055584323109202843000534198573252028967226364808637164514811988498672481692393863899485418029056
+expt:67,225,0:735920003111339161159356395080570801473725293860740494275221824045023812579963935301031775447575688346607267267532812956137018229766093126468162396242424350409934923304882749620115802577608721780903966951407943056069309235411902308234969497397301699503940488310770219419812977280307849553181552764429270926502167344901946040611637758836796263098836023546748650013560091709744036462304218800125741698559917914307
+expt:64,327,0:417687513717921146683814441049501323149276759827878850220310682498444752633939174795763205590085370174509431176916209651043434482148970466887815330179965962230671681555803952508317812856112304403464539027712767146228053984109968456131599036017965241520523692299911631594821772907828969071619810063458617810626197420731690747206373943510385502671614727661759398749224149762165354813028102550602008280537871902180618847076481978941607093146933705617051198474299205992992784680935699867987139285893610877812099445086372781691711812234396546078333906858033970549278924593901475494268981324283904
+expt:-25,467,0:-68862700495331938784380419966649877120052824256986622780279879321123463371356437053662605722822371713113741286131261775228105217869324551668789632411755509078456849695493437707718952335537901163716308200277822404533843040793058284766310091608343833157319217838813156052838258955825903648017660766106461430902101129851205246720686051369993734795826264711765354552138512394382816264477130422900505062094863105482712026465196187406241972801187592058303442054845271865009183194933559721460674706658198949275466978787964466683095692914947643154576581856285051087744587327756364233631868758575460879749512993364615070536471908013709253282286226749420166015625
+expt:39,139,0:143873356853696095816280231561762895966095121358512894018038780434656905244853021253466390417066964861759354168210279589225963338479315659197113508775296585740367513592599261280433915157811377734958643545758755017210195959
+expt:-95,925,0:-247933317851371692765238123220353261074803765143732218785336375547364098379952983086176914411708967965243034975624089734549054262155405601872988521853631418092306768960388547432760579266561975163002729996245381862957127425938796307154036020276283894081669921750185924525104091927547088831951444593347428073211061542081598903847868922087058124406471582647813289892107277092495163694211929855009513467354559044835615466736137087947544617589164470286717500588970895846757222008275492885619438633488692498481179512599142893182301567662753282826824205385088400850355763371781678525389031580015072637605912123616365008472820886799996936155624310901771575510951295719809269053623900174867256402312047226014214451002303098027112553312370656182542716538763092449820889312056658510682841044062831350452293919927832336800994362138064805630261807651118108456301725299789286301137388212766815512960048788081683942442538085959986120065061285006871234949930940185524537103913351720159010805686696397758933127125408357428549627886466305653330611608087733791050176139563443301008883800301224683395958487326723987984535755499835378139919056198037756593511533680696923763042182818051706007416822608172896694323975433662457082439992053758519686924061393975580909143061424199971052081917912118305230171515641167651175575831760969677740062001963108837109680812905974982663520916997121589375625626487587266051342244289361033565546995111061042957242305246986582855170773641851842228652472157775674690273006693174629830847980593151580935023679044298283432329850647778394157726704922914014083180482909180414233817825446242940819724654162541194190922934651789175392031213637280829578333494425326947316977013855379710169610940508930766848830071334425047278453644935556250177705704902919191612346964146136409193037371777312838361240210360847413539886474609375
+expt:10,790,0:10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+expt:38,727,0:318181364845266673293939034580700586615440320951037592693430676258808017944424452887520229213529156147652152548660229015222939861579338359559018300102639754560937092707601655387811647657615783015052071118531074778468055452194170663662420447464862055872460088793374322229582464089946075887299294193817540314008779527867126627186841075133467621258418817935949751545729428873936316847772054961100333271621441963886222050417381885840563709089357402135650374520106690685058742735682668165890186931960150146694452795036044289394868653254020018082650676484218338479013477191914691177584198123357631992799912818573072108670426678744162041820440354139322736565922639316890634686494961802003379496237970297257659344819835969921578132529764554764775387964765201989940411202080226725613765864563543622841931061034686660258178316702259830705725064960086720549582591661146532434470239211074978214823780252294240896745420707470768467541239033990368271634631401684194520335589793556924858688944215388612471082194103983918698849904549069496888168308090987990818992745725204687937832492824270761610420142018658784694019990897837283216723902382526473775384524270600192
+expt:34,140,0:25529857218193114702174428995046692565363901687129767356632099628880917562050351316339403612051006254976853376622453913126272976393819424111873308895894292132165245320628698829331239739743398255119320169479694974976
+expt:16,677,0:154606681340974124033724916902627302485363041461934511562903250082108656614988464109648607664350683544053521938530767427600678633466981349875552123311129851630541427823062009528531348391461351902236714300408426870798081310080290256564473876678342716043349504953916566734770683646870083782168391645037091096887725074202784437995895234871118748161377827084898726055250090503083390633622079852383302615813886977424887371916745952542456924382093237294285328320534432277883419048461987671479977721049775052451336009020607051890596444709721396693315217517965349881355454288834865724272352477664124571092063711425076519590380710563089443910597712561034332057450154631167542515719607903185440744035174760067913386635899419010434568177660006643202632247398908883971060098166563478386618325197936106985114484308324182451552256
+expt:6,706,0:2370187868170736180128996880721994304027981016428826558124299374475962263011616081209558299337721916323935274576896010123644085589608182399969109349184244152181717235854411892769936008301419019510706362282451476374286734568331276868548412899353395251910059734878220922682256862053827867397853562809960786231614060068494140882400067369125402792475819991480014501511652656632709028304308993356905586688240373617002392227009641266162761580915216325822191118000345304381153590367158129348967240326861414168892378280984649126875465847201669629322152902656
+expt:76,281,0:3225666254982005051650393297063271441718814825117776170427014225270006782094402082487845256842905212014111773807699305585198980793893448295836068068070917535721168698915088215578832824619604662314479653278742492907609252295864963415964828492105414048009356278895083198343094504871689181249621303435108028838697311751040340640118912946160635394223543123655902100316582935791118589542551193090214863975492460201159924354445816812213366018820916069793903958454530414527672845513966606441240056930757447014687133057326317955318808576
+expt:18,645,0:447471924335366323510556443313429700068812234629235460450763927673222040496888107200760252341703827945191621326306131795482065495578664462850472512309208303012474749490243865165651244373346115911654861626284849310331418035860337441989794201851669712221122090746182713388579296175033571904584078117965994933295275297103840168214754293386003180820988449264532865805743450873842642690490009197041409759427844949926369573051943199612022394939265067082007558614061463253995880975471188662315261624151062500359331883381108257415114898922045511558749525591359567772810243728526346583785738997208574199792837718461074881349077212584333624940968146337548498271397497840948183881043905337007166709139932188874261432029055567751709278200083034120925981318112036767874722249963589907141208823123050935466250723940859117568
+expt:38,388,0:9037233162685752053376455537502721342270736042628911593411187820255850239811996204786955561847703657226822474981226433833893660651795689900570630384290367549695011356487125952090574619505343150852674019087633094038448212974827153618462678721327783567647950749746305048046039645769130932898726170627803026748555303885698486663393441172336532741462629794066215797431699115607727238433090103791079601594737166721617874568124700807143370244859773481280231903946961271883712351477922567791456197385467880154554338880438639750996366163411447302912395804684732748389562157940271392193893922966877712008059498487345053696
+expt:-53,961,0:-10693273783600734316315714480041535221366626391070652169481102268537307894640601690397477696258749742562195832242552646613189180449413635841376794326217929699139495316029126112610199345461230984883346783455894745072918234142756324123553503913216798272404688802123185365091119718074925049882233927864436065352441795323304595442144701951516685757397182021033950771925191451161942776319733212924587917285871042600950991564279236504812265880751815730359811693631083452415593025707823313397391467358190650783232378570454741033068772420053491342610776102390217648020227762293217888965761840533847099886723514168515183975698570560700046391474030860444256074699445298615381649814262336045393110771426131519842556272342779016381298742869204722523464017593559562643622326956756787868098747774454389349057962560351445716834035262214568687712133450404931561726575840016754345335968416895437533133106784692856314926056588599354521991402833078563695458116405668054338438928149786528236240697114627604940900558577671850669754855161031297481210200709336712927075772035987106414260818355636404688451829315745413124591033509314578360848228738843568098733649384111596453174139763494748428119399833236094765497395040014927396796803419365269517770431524291886017302139482314655716680780294886334131069691255122316199720460643469796601064562003254702066340683252320430491769624200733429385588367602550126577348991899954540173131577135256775953664267528916851026738118382069532086600634832714152507186748303140799773366399952508384413524462895427617680029976682845372011808593897598687010617459593771185880907170544507963089979836763018697440064683745136860496786467398309247801653
+expt:24,659,0:3624167720890114802953487528882213552899975941370552554329513099376544209818189786714454437032689083823830559210703982255340689476005362403899468531020537380006871571749241446843383626812449117417305212547159344386130625689077819341774113065166198322275559097572679481175645104461252543777972030011842688825307404880548921803031127032140294965934932124130451113999567382233597289101129667669422461740167339579466317525327207235602937780467185586995750085737222095672175124755623264554299753026627050426905461119988938722765511047677254959618655219659560371687805940337041876822078905563120206071769003516902911102160952293062550519277843309757303919027154659813054662466523344826296354696819676501832559230684594091362492325587744451955871184496572010101281716464201362384124303957980156819470050845018195253142021574427135662512522551131249157276857182203346963051964089533177481641786738454705685271070900224
+expt:24,87,0:1197782680101993558280692226488373902822663746844330952273499589865047835820100735571943168026820232018026475094146023424
+expt:74,900,0:203492195695385637811035038604720591140552513788947796070956567581984736792471731249691172218148855021082026970704996363773142346074349135425135963357684169839046304274718335440539737845426708166907155882416103467979779965950248991451379072444893391480544023125591578249908365143894932986279251195201771680227260763948792352936603246330319755571622810515846412833416610215943371396912549385505415900612631771649294092252136231153758926269683448101315780244106657481380278801404098349704834462242414233848548074782034341541814977421309404166439064217724352480695426781157497383082801267848091972668055615592471820028314038214611664559270461638562962083716708158789715725864674555451425781736717842336751000970187435030966278734709392131234668572146766791316051896061637266899364682542146271901296285157019816702372549096549022107433241920866238031206698288958221202218632016024210082467069376475499042527317812114570642803224866302666554372000471823903015245471090472707641476693056302565407925873424770841334676265472397398045286273466791200069893478024154625862765074269711308789130828925453589264234500803624442724824603006351547935458354176575577193029177679995128433886548139638707554538291806471117578045308611020975110487218424109419478440720096710842152057246110025136351560085959690150206324456752232548848972311293881638155478974286423259965771742724362278920613669975929606425566174524456931028511307439225074591462541836290927880691511343917965103496059384368500739378244369199231681115377111475866919320958869237569684233879998976599199774623618592008415441793489599256106350578620210330523214745293501592975212532951752926208891738168918126903740755841015125828096229376
+expt:69,543,0:312648443078484768295888815598845711939768666257291433888513312757955049368020160698630214239551072326750999792081447984468792281784366584961486617285817648690364818430979007147880947832896589374742603762111790546410744285504068124412810547392012131346756698151463417807121112731347729403260984454420384883458358195998166979494748478670615869985947232052762056592943794463276191202025608190774698452993168999008156807611820727458156566335247124610066310858249753566038784341494062081025248869417660801751147084173434635188719725442490006572202113716375420781068822739057141812677299815087162596322545640703492929693633783845458495004922557983277693860984056624336776034398970301860440468265923692038302131802660874130160823777321529100807734183365271603815201483619478837176405601832237316540578306276376458696902711394652750821782153970726977230649237363702489026445302222042642632912600454038910186382368705894343877258931593200635310200405119407405120535210771274792854910251876704104130656951309
+expt:54,530,0:1474662736655096656312338279909177255103797074286295793375027509375168436887287143309336449315957822362332074972461382683286797326877474651509739917544753283401205851132747553963526978426226509486446008694568119578399112394135310582133814792181430889458385225614364665191714345684166126923640114344412210292872490366419258147481273591304234282967518734863233094427554073982927115901949385739053040841288630681194000841739865889168738376527086934295573433603264828521334566838823869117642465232442629165125207009991732054135918621566022150672289445131265256648929940581735965044254187533327954696081027388229809762269205140612326771928146305517366531304549928582772855377825128227036208742669924062385323267632632943920240050640881476505929970785291909572050487719596150442436573679196485824822432870194747280187996123290839971281376461049282852724465409463771310117744414420026630389950888196241467693900151918455422976
+expt:-84,689,0:-673640355906192963680854382395597279844991495307708500762664884953750280820203051032786298142078133894280971340126666823703549559943495473379620456496637792111780395798111098844210312668985085973564668031838744003567469055747069065192031462953751775303646522049111090958707099958568715666445558819096127800586726116121938372786122995565072105666246516054767846555535819145164971484723840655291769178603047752590255749910890559652661832177657587633043896917516743806552357328358607488168344891668330944104480564369749820890670196494165679972464070728580289276173364888339312490946125601330630747303595303211714451602985604824640650790788957226193419801364185053958966373216314087383429341884277698769522842899547363770116372724893917923171530322741674875748776826251410886127808937300207685295104886265377799994629948453289346468117865398420831689205702265516443957514776123773586799797709730156072453168535652382546461520516180270928971757408912398951511864855349540254511900269624608773339111608340753334445558782955747228498729808997160178550956563569619227991188807243565793371441378712685201693989991158958417406905444641725997669829449050156320054612300296488530139587379779862430775560465112395949278438701569138898951204188270163608488455419654051297485964746817157884159015683507047747566104920764542724284450774974464
+expt:75,389,0:2505136873002946052821571944823592082408787982442343539331511593683631375266061611945471197761357031711510886915023731134485877973866520759948988373363766768657863172035979520149693975667330757807327190596028499425293356360109900636077772084412582887566894237468021689121483843531949402500679864184300241610176967959666214567894484564567187709777650474627724716339736193918464027876178424957702442801379144695328707996397566477572403174056763614383402310541133628718945533392880172251145025200868578667966567102968410404698307362393252463909620132842830908725719886487634875664806284931154944418880613973079280757557147546572939584559289443428088245026515302516929139885052576138027479661467278315711837421986274421215057373046875
+expt:-90,493,0:-2764121656403808255688998318308448927779841418065114299643004937365951143205621653706679499387531179825563949289390297858821486365687544518614573344000251044963118567564039833580386521905044421727153991835591278223063849704280112286033144210330626593002183744292468432067084387118208158609151278745306808847873085867331739532972963860539108442723664744816240576949951467742831617638950862455974397049424866492109130205243025439534284350885748646940037382914614547509931290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+expt:-78,713,0:-115731536307359192637735081399829109511702293973922696694208047458262444229652160307279087329855878256079999392518677233048314972657057388874094275182501289421919041337127404591027574520060185351444059593154392195135354268588962536879418312873113711549229994647861923000955099677819115616815194464713534830563588649882898053840400195424586032548275013843268241516993330630236304363211493713517911756737817101493890807716278347242379720375897560983549657660651681988416735332099874519575576530792228244128002461198707035814595388684169319814963566786245098551322585402939881500335265639906067916278437416968431351004007211662828198106584287898060279705437441896284017744946256629249246220165360343009335114244569954394057846850014421787925696186369699659423147781488451057285691394827566399868414895988087540099866995327706689353227627368171888882696031349643682455531264058160696858927471245322701673243300242916477186602464825933213315337095950543131154067825494224012789649177821755061866161853106394589673669448275431723352429590524472448401745233005597262909298660312513585040969384431420061687766818410927875672704386212307596396632002473179981323601609734932089290982557135462892951962999979904301332318424478936510361126749344194878185769161091829612201395286090063520676684836034985334594621505414563276756705579096792040160061812562668290048
+expt:36,763,0:287612717441501252938235364995076989912258567835194305503864222905817654453491398558770456798842563403876433023498607174234086604662738885378449834211542708982978196216184813939600530734616215970579451031345428619291554254395119224829150049864061092082799955573360133603219521595326864695021799168684562013852249376992623873343118112855686115088808687279222093858336092955998950873167464052797680801992263797310300356797391216282203047175649924968146172953919714557432086976362430640363345164555500849478372610459794623063760436116166308460356269543727122939698305973093062079308977070843850732062284240023079465164860441817815804509328285118427837803457119764359138865084351583806289107350041743083265057334370946088906064154344591975302967899967697344349561592938790173718507304039781398805086538649982989194487018155662504702768958902129616878720294795677270817445558061795402174726521022090102401668102031654702766531351739548933899772524672856784086512436602122477055532078885288888908773574437636605795708667526674002708829716332805686493462673251888541522849276838867497234297868970484972490798084656418668432596022103085029156910177825279909646274306163059443534849729765631328256
+expt:47,567,0:1200840839795357756556171793866035488669397069402218058853429523017606108853866073051675237735344222717110142579489091060363324010183030955999583202587790744873920391925268687014453103791428866488369403851229457767518484585400595793732678736929295286963479405802380386638374173162627363885156520588965951827128250889143941188182953700926722256155063001822289750113998809814892368365148536721743814094413016337848688568918084494871619775117616358924448269763664022118923055017911137842861355188743612895261789827872451309409128169082116168520009588315723475618309774431818335253416491565575448829636518484518313005184981691618323760943375615590224232297887531959092930319995333870473790498756459817363196667267350757707139114347799391414825307971212091044223074718730556986735254848581373154216006935257074685468225843364862663458199989272421190309964881842705492582909183953774649449964290445535763582719721041629607601034000766219103889698770634063
+expt:93,245,0:189811445138907350552800803028132318270856486385053418037712749975151905680839772940450886299589953341083999271531699036629608182153885935579378849451189841246877163907007586748371382526385877632296297367806278260073619502837087612560855634258114918915142457424551221666268613973872509210548656938814203992202491112249204302074777529915290725274509877730873272245110513173712234923547513758360328049613739612358250332564697958770448525150872819149530642122991079434707200113667499693
+expt:-32,412,0:132370456868089885903728134916792123229979044535154622595605894871140987448802881098535736981597853547268988767936094287847913714280410812805481072174892167662104073696464879991808809985596015029436652086821140759661740927560170521238888834410398394247502421409940705455667510851752205552056534626811618859097761109564081530555125656725768476650930897040696615149886691980619883285333853446759459196371669470109465000830819767736722846319827541624437545423803544499106306804575519579034243488673510700931803310410369834741948404811173882422130791081531135326386594346734508460627224488365883999000804776390900106160766976
+expt:-73,370,0:268817937446766145442198106557555707299852322454026359428476916174845729180692785461163460485079723744959939462749245845895687904735816865076794263717604966012182689168095690958838217033687276040045060280067207626046312195168080651837761881395764886113963753760834412127698107460752445557996802419849779908408253837884316512634805178240609167419868913614668320759158141050801534936091723675844304423297869129029497377604564133226027972677630729381553858132072499006005550335236095584481554598465568525006973584347149020417329885051185116957434174133558557099710477806848859002101511273766789849989896446599654420469118962896980442098745167512954118478569833907613848252608011717544208148049
+expt:-65,904,0:7476088006612927635813859446573471148405722216005428337873036043231186079958168234655128261355783807158721704379260915957758217822077621867500440560206384169070769533159985551483020985475710683700979236907363112033644990047101957273046170714199216404483780160537007038623527166449258864160198748783512961234393617386826793415081976514354630915756963837537486398859606568067746395464131895813501401617041983662268869523438391204770495826612433408765458410620435663877807032464442529968477115921940103577390216858052825708753864587656082968468616911026081653819514030331916018123044661418565642911025530870993821616297682244798142168034872991984538769820084587324504721191662886576517902618307361704402178724708336420139149948284282543262975792304028749420427332919952946188081580583790225269482964488371646996041495410496609499748805494361565442458937572152995474884127357284721870748060112844298373068726360209939266659158366899951921314063488385052535648321076683428148126105842193642286024992930678285755041759862538217409572268726649499499606980773383704800598813078039204400082630771801675842668399057762298657807788837860460553823914353025003459058307226171183437694740812857306950156717503856430459650244670803765893833707297125156273455126961026717976027495374263765611273780285988547067568437963799276682277771865186868699849332832741068240987335316519864763484922262355869276408357104152723004824262877136699430206518871186162960291243767646620145129860636993132567141351134152092406933156142883106133693959341914156343195330930009161411582963602590356021133287170265873006021777183311414517741244623039165162481367588043212890625
+expt:-77,614,0:2019785527067220859016075096184821912149421106403027443543560963240192036701879476616954690218222713063782827876839369054281035769658427703648498436632136421739556912595801858063198011831673005695866824564211542399160220651543556138188133469744318628351948574415103501052771273393981204066697612765091526265490864745203168780093996025480290335505689022134191478915929217289966800333369370418943444639005411560553516922153999320601289370932595922673608497374963224036658222600028845023713848177941244589411074334426669985928674891448116003285619161392614412835348838786861689490408617856711975955518135283909499974832312293000442708315178452215588031532966458821114754177230599064225634988092966765366270357352136983827262519338412138264927508379009517645365508020391394723293691499336705517066728129446273985998316873616836259122863394701325807912500191267168031985999081769304410020219207253073778474082824985837553109700468359743907719360064109613799688571311209634969765328990761517943042264537196838333401400347380897531424713195839839974898196239469825106641941501788961002992626402375484540632168133513967413294827065585616353005356965040287767941447609
+expt:-51,351,0:-227578803811760559923803665892351520428370789673508990418850061972740388632750522239984381328651663024374140778482561178630115570070474657027787117315641203458108979183298782364210915367865734034950589483411688132192087107896659215307961790261180554632888410345697285434656919490027197985190413884000757019718417174783272092501346827675850086279238576158406359659768393692045443493046761068561458216727137559396464882832268384099230639577378336557744586454311460874543212467858982205362934063365853125812601286856625659044169653638370861329579070059094709483721882329882116015560878826102047594205051
+expt:50,702,0:47527289157378995587876810145877577731621780159337975811043651439146356231936805088930037426315546580065265737582454716869456561094715587588615614596313199454696177025793364822808942384619882008554402956376005194359554004974096403788137885595666449606725010563408965535017560520176300458833774557317910487124563377753556232426423122662213885097303501569798166547963265331566412324291699762962584993997746712370064075751466905079402279342701902764578049398469516972909332253038883209228515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+expt:99,984,0:50702746367732423332636756046707088578844764784173362783707521133315788404642161576107293454340562078957046303833670333713130937649400178138638781061468425602312597594693701873663307101648324074767020103581094560099128401539216160840172463185716103882966689828690031541684807314202742848158232180498584873013282070399063315854921210409313246152527668347143019550364225837781560926140640093081116049657971469048051468284711694257785789178809823941465962040360930016157617452358728751181336693124773903638007273836503394835409596627165112284850875254019710400215921524572141759487839278218635745589782578579334381032101526933997551326789078325869307607100354120311604173747476470292725643886125380388270758769897729363768023262199885056661555947313285025375746755494964841587184402442187978403892800295699470235365305791026570731207454053082865363542424265608839239142648022105330036603608639151764223209401458833898013848306012540918241308571343492002358749458954575469142998610765627649222413431262464681890620336354859534385697259957037363331495002282308313059575072371143057132684161422385180562511230179934391119387461580548233050228505428143177483520819923735804035411728110201914987438877780430590906308303881797836439366427239746559919144471214829376603306425594428226006996275012485608462520827573208905537492316802360406651053484551978898843772619804303428095512709190321751942504748924572861274319455120692685486947434437367729541467272766686966807916370179754298758691241170194777607607571459715789461966313236323523592837374223651504636299665197397806178032081657083412157743291936555271637270327920149177481942718892398679774780630393442679911779866113264527251757137767743475728830777662545861851530110286521972777533327238249737517010066472027602218338978796182855291347346819511885654909739106341730048204503382676292182395762019301010339302187086865618764387685077382309395957419707422191992883094903391508671890404797538764337688679015997252261601
+expt:52,827,0:1363845534203275602945715020440112734101654002035408092138994948157965218152597293322552516013541102339042395990176596143927924801584852182694494402174469146476365708253904854631754423456184213955558063795789571339488371939150388709770832326123293382199321743931181340567197060909930816221066728909932740981323058976498861029285889367417218324674394634948477294304297443288075797373908416729496901734018773669789061707665790116223052131538693972561939226658646132503581784089567145866185449011839827233650866407425601793037832263017989277208429957875080013654195540329347914131526642439138839114974367753637477200190329282310264113595396994805361388494628682431321748217640801660295524027806208203770728640462587823579475986549878451221998889514922178015943053639821129315654194174336476091685209054536280060360926059507789375655383925910919328884755937580198622348199281035939633612639571160057396942003035048191323428551521466383128724883857629281100336791723016090894181692768913507036769585784474370724499814943464300066137630528362913596888302207349032278219095928598441501164781762405564581223661028609149292490970074970826464288906555662494076317777084113019235504450774633168894206571329889041276981381226535278534026720907837639336650956477462141594816136215684669130211088491324847506030723793623545095412834551391863147335556256713198925300756827943629425257037444345305406856996887201268436359318843454128128
+expt:60,323,0:22021853740468578834412999517383915986003725826542069182383222392560149753844176723050212105982537239537599021478108969602682255828632115769764860327553473474873742876444567203370333512921531141121798618506475910567199986084415121901524096659710646681600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+expt:93,407,0:1487853124884939684161385095260700523967859232818286064937128697770803227477244897265636431308165638318966698855220495473642835305695739102629480041222137050463066756784476730673688602838369260908469031821258574541365094727586343393304192201159344658073883254741254481946525006070001016365758933994228518537153685742527173077615516552516989509505043555164058392121782339357054879545731381596514378851078834808332428961106140341211035824086439359162868820393089217972263771995780773037041591155928597930802603797367287480285258739006095757736651824883846891644962424204439039748118255361764570889647940764521065367186406409883179355871269579713473352431638000331921603972636225043550734332376892148456648021902107583989118652297791718607641268173465287735838369363888845836639239193661056146350176700757
+expt:40,532,0:1976584504954205257348587370301926826655826657852950374579114824486624409843704559491800622084346918898311307268718866322166100951033139422529427733796274510952318596450843372699872145918879065832419606235085401060175854330319264634942415582511323792390723208128503608909506002101860376290882104576621154915114333409116160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+expt:87,730,0:706406052439804276576366923069975401164592339719248046363175133041504186269361366113522873942837171766575825692907350413361305763457682609785452731784223726861092814681363318067351830762134706310235218630451383037256434744365437287493102400695653964561812007768770271884322063288345456326150855163077971604365104144672964323628928074590169741911380893259497388141831058301465764795085547886037717455631758754798786277409911481103533394944945594049303351200226257695107186231608269522603794233543597973234060805867176925733535004507818576356738265678541985876988343565444956563176444492195721906970792397883768414377487670435384357764529998377542821466271982699148147379912153120661855805478752385210208666518800046101644963551222667137255772127065300202085523460000468880606604031569380116746352741827362128287425183441335754455687265829010585467574413596756689179258204408286889278803328179345980814287315190200086811052836534046524248233679177100752570989171333960664035727831280319345425290977756020974412906899038592201787348761825228061083631544347976763613084792365803249527341553106644812202911851620419765048510696413924148728211652659875437527114828561845302300246793974650997138116778423178153360481516286629888500954470861598210243812921260066728648008448752894712658707214973199057680079905435919626256730123127286301269269533605024856318874090809110868170349185734499760880296308653980901200084758996049
+expt:93,605,0:855428814634958918544599433108540171368754753688076725315883503766618616635962892836439002252201637178631493204536270801813620260674345152674646475870593626683064317677060559261922597424647952067084352720270230897768699019551822862416702016439561791131256840774075776817158756158362876954703668271367349100772697424595673989246853166711784033450960087641035381498697333940896283341471626085405973825001412103159308752988378154950172135332537721061626398804507352072137874822359784882151232478545958168287870325307214815056872605634979408681579673200606265939799910966127483516061505432535339722111470845347125788524278717471958918210481766553564146010755715128950367184222764324448405602954498081027273677629683607327120669429941319549473748000856525799606103272316670237148246821455126298282076072799525481524482941289874128889144124068775066511048362399672727230153446359840323405054769633940438256055614689237151453949465506127337023888311827938050913222460384888518805017976698191594508859162464655030117614187828782625057625442536831551817101524758129922535918617854470433795037085700145033888156152683557013427888199380333661049871576750433106831383797201751809880804414028368093423693
+expt:19,963,0:27524390933462438193837863038173257600749953407807781713047411800439226575830665293723529758944853530204290511646210815182136606877662463470431698540803603366243306719651411385140530410420060215533879433895666800137273296375613114999995493626942192121350040312694984901577002074624731875041793317359566297539168950875820565444735886011981922691483574660663239016046035782355557105396128292283603712352714496861384151418904174890595393015389865531243654829040983885834314285234495791323218841795533872159352451945484907904644311539896414067347389400151749600657579278895960573693934814752676278273915895909394982922563318173736071016647179057619243763230042827139542125644226762956903187476598431665900029305113678469725913961143048032016348386870923089862955467576132232067430573022824628886621106941902269773912408414386384958744554226394315986912008000652067452553259073901900219599312892013220890882796369063146728028726932516237716682483149607295171755157994925014520354281344751176954994548850375523372990992872608235206800552848373884097904303114896951128191894747953292238976905990208894450092732832100441840572843532041330491790737292506221131878514424077507009732780885474368274416396249038243621795514514228806975329626059
+expt:56,854,0:89655113212012673099023948416704807879861978221153827237199661778584008468165651080543902613878620062782298351513276228294432072744284649261971266393894256607375431816304583821803793716587924442301007552505586044505538442132617485337199937369235592237428954101205944468928491652642992561924170992990684875183153689532992782682092920117235762980760669791412674782564117374541646440937370311927125956106266172810510670685525518812212950138056170979608664706763694733342515990968354863012666224960142013969526617072730522216789165659791684923653320596610175398020948129729808736281334106447129989405194534944350195768931899586302086738465979769199582498488866115372356961255007890457956873669299696404273010639537644911751286565659364626323246621985820562215324013173040199503927765343915648047310527662125096994825235508795834438673893661434170547036065620501605840890610501329654028608371726543612867845130909422255505338304701800505808679604352191497405251720910198472034708192083380402820761289291643085960629808979419703266679006005273854103326911946960981639672499634075872556388250454617093178267203875157005188789441834290824824375362710217394654516436622832004430364564578406063107709727937712128720552024767984099273684466490280196940322959059058007593299284990312017697525386129849377270562464418952129091640339393380715993311611910305891157877528570148396220151382371598274439328443130602108218216942517868406522662920683285329640812262460209537817661379779669996166934404739153002496
+expt:45,612,0:5835236069718882114506897382533566247377415373160348322335381401959804325982764654985369043691019754782274324932902412422919504450121982411071559141523227598048101908706172870018726600366871511993242258104983964714191482096777425460159405868198347157194247010711764769855120922789922675107180581288360243567263537448253664324716669975682189100014404252781455216273744498335122639653589122310702857513362909180771831512471469920303997788269181344157274446834696917540185278250066349263511743262735271477684129972106758329375646539895223543706592566504943908712300110805454844873245197309482926904374664094429569566237475738252689670337625545730148780598867696059299091915732424441403497739984466234589413447120981326541342694519489432552938181829843044368724644161584697373078490608422316687980922524068552209758486036117805534388377565978109780133632127524991766800756255658237049157308049222993126272044553147845347401604176748405215264533091894230978452810922757566292930209161937682438292540609836578369140625
+expt:54,451,0:20397910418377356550287300571804200557786099666116822595739338489264108594693629585863016865675849836447133820178583817056787257865484263341787975124682123033432566176550892031542044673807061607597691619952835660477594361209973279361945781375083740594965736649506183676117824430817491153516247325248281553959922896499435214529883689562648236636643053318925258184450463587681659723559391253678624035379856699358467799364301117153745186153084620238270375863919362076592257374084773424126742009360452069312697567282746968871243121905805216854913928572510658635514695126678391222696789673476384418005261871513244182859164066090813969042874136599996354815022967528679816614580768946293305191453668744093542408847163544646677483277319352956875504219155308754191860667890267580442087522304
+expt:56,73,0:41469229998734605907229666533990439080884762393847798172038084645287681671512979662987869210144861737361911662097025032274313216
+expt:22,325,0:19380780692127535243822988975518862106688283415440409657318777291773460112826177488864304471507503296260257393000381968404530628735640782306320769328605753305997492221828698343046454208648959261843736522465022722130523152030591371634509064404845763380835114201823755461164985487277973692677490997892134149211679493862203005748191879355934593251640178434694460018581599355100053236481539133268074642752831875821126444829199442221499154432
+expt:1,259,0:1
+expt:70,28,0:4599865365447399609768010000000000000000000000000000
+expt:2,431,0:5545339388241629719156828368286167406872874150751633150340959161229242615611251246079948812208279156194782421922807143657948315648
+expt:-79,826,0:27540854187929799985257468247523155680538433703286824739517469481759833990910653892340315597031695813840072524465738129420981768137177778398386187136483179521533720543407277753119393284152155957481914060287817028607256937594519868156459054669091954974712188347267089425432969106634444194388017265965949995692097701957114472823086198047050856806061672798574128287158999679211211045866881231653749742181206820843018712814234776885483960209113108635431190289016087501917845943054954808695879153901235902843669634627518243307894193841992956050535767242625612932115880911409609569876836530027970817956419533492446863797815044925775952042741550534011707510148845849950514957657983203500516405099685290711977967093948805920524360187028296830546987867500833588472504414005192236672391462985520150287811665577020744455460650359790618613062093825277825004505744707271241064882064070718065648023094280188167073044844547232500114457694590999166919669094693398432022411757793919755408026466841256100301169395413642500129881284167587546361348378140644375492018741141892055856217500455547981975199608522237536059854818106117812566998653773404384267708945402650064006573487698794343692465354553659902815430390133210939131290292916108564064726731071156431583014478295860724491974850345289250462234755107356158270289808695989364604670354446702945425544248554707467316099882094498480778646008506840517719579244276824018750506251514906770636895869751648864985470369467283659845225076014465077719158624528591794989379957868089133908677744283634297198521265648631548657239277970447594973921
+expt:66,694,0:580084506530496199901715842061550478736929285435953296906334763408916457294745083700943659750072194007911117976928910771034469652824787161140202192812060086123933696794422026495786736350391860998721709184616206282429321340426294474560554065373638494945279261660818135550623361880986266761169809383156965092394530526878349935560951819098684650456236731366518214247980897154666883115720824687584260186753579248039306484564334815454921665784875496640601208054064934367623514543431818401964065471753818112528393669877004534296514842252720036344695851083439754895878703603097422007514258951525128317284811160997854687940441212627578246621158606819889227734453833088076792053010410429208939580294030978672807007323066516188519488729062055117608304054056122408278794377322396923294276347941530691555115638860207628093697674034586478685823166311562429468232346680345400111368599877502918619287029806863424209567337550321781645413583273156313569257554412238414216208778666350590080290958187713067860125458768396034295744470317801851373266428602679222973688293459392062447571375823266655946023131694535754930689276382991650046678195497949989578167243234281923601875893680839438188017891503234218524380143598199558737455868031691457764742432465500138998414409914742091022336
+expt:61,929,0:372749204262219234661028605059600082005472058401807779391175774103147347020721809274006944812742694550566021615220848169519541529572954087195954262275827015340392843546317426147733284748546026914169745283094850736754214694252834868482075113112267516722630530017429413488354970058983032863915079743805868398514511489371415564743824566521175475718773953538278821907613967819226017166214104739437588073569813368813398149488565589556629477697737427900926249987010320503591278599110557450366143792209234346301744107084844660292442687200498652998894095601669905889013178322152368594429857818699973029703219264103421059688221938804094297461171047462303386552014767355489371231645242214605709573806038882091320000969833466616172674723281820861230659720784846394592186695882554183766611030058785231355760030032991550909225744604523622367813062613525325165760288801654110165225918836315855062845073372541514571337989620384391488490776891951817514249041749473163422333900356474699047977817400879900507930748372050203706672988848432054792535888114117248293709532406518972437029506673903536575555598954258917589173484915883729820461151786963746755203344621234694493460419788239808892616004989648342937608880857613762630401759659568336317724218590545423848713453198029293212741308983125342860690464093569963158486256404302217070545170719057156149028351035109222842931378174195730467004520244530634927115724793217592798273975809563142500814120034065476390178392762733701597980347726390211680084858484316148662425498700389466706121929317730214556147564067838219041971460802562516019394610534531801572433089111247198407104918760032599577878951582322678994706142652947962481341
+expt:-9,601,0:-3160444535448242529092641683723644059539145692308657340859411006936058865374641314408196086827043799075550619379423798587542309132164609200204439951579781831500807632453119338125875367204968679095724562036128784121814572255501838157522005562307704591221323902634201333248104060896549891818729439534161465226719835137730531986768862453929457126667118122860406909711654476082395260883189301675745656233295957116371351513365076222859294597957033255348289403621311527049289776180957730267554140209309181978595028474886982653235278904914878205932888067162450567679909275108376009
+expt:97,61,0:15598246895092955513443352386309396583401527586016822407020611754291026801166140429261857563228075418881342331811243126497
+expt:74,605,0:767698049587939197359683749977648383836859839557642912409031546875066993197361480792391911022007587571205286132111673072469130312439363390154975794877785145691154425588220181582417662944285388056619181981589072518943031753597130867006603410867195350232262952739727149609075085699454676389509914456400111058880374719374067186562888441743787354629796015365677880935538353010170412164805965916706642591317263073481887535024205339087233459024635435688359086659169461648708865487255695675398023180920346709788305388156864497546177737256623458491643341041204795577475348427124793503135829398978121525554056766257030843704524575334061514903999726663601269068024921811397693529872001218499944501992703297464998852615587466138862714871448007704439720092007333440282216859169819279737835066578327985762318343795059984146296977874262661155133530578457531318820157803398989111207312212355231067323772033741977708388313965862076950112842132301934452667454484343330105847945439333136829953705856876014817393705072041603637057816525800795342430049224928087060220666508991256383019365798391401213524865142728401193068597503580931118244325830426624
+expt:36,975,0:248278005620103284639045703633892910971579590446576896390366023318446808572139362706941322105353809474568993267209279242065096446488620910399483811208530728287594195549653360186846362277601130595472769480324082311203270696569975943570941969562919822812104500652408711500447873544596047411274288014555337548896670749271601634625491645631804888387660782682890889223510249234197182987228667338352972908620961079256927945363991111693736862822062801054752644720735597690210678508403694665212607341057194061256992464781310624503950172678945568406904426022068101752528300052652001276542298094132591990104962487076763890948081836407437498998808161080386782802526119075692789537066681886677023071338001090161651248031406605922396939134353858229048521453819325323124966146924584063700897925385709942659537790517149987487173581392712392934799338496185296838242169097046867947616557569663967960878013987948526741195844085783626887255741456401906399763700966299733165267865215995696668857089937482337710909782176011909086961041572658525585707034935545895295838426884822305638121505564930966674346565073344787297923158159728519118453365025481613806608095528043429679151758551183290377061790258979194328969739145711528285504071957396890777097691503292292512140424378576323419960320470786958549180355944550997252189926822915544222112451356508263343401791620402670748174883090503543874879537424232633444841283544725100377811657760945870884387665856213462789220780358446036998302940381411899721937124651210804520592109143837152301285376
+expt:-7,998,0:2557666612174935343076642515066804502377520561389767696864275525553001216974247274131608960292888178840788079990848858707874061009535980056363078332058256731224798188707371509890293039384338196239143157226455217716275665577013531086263168378395631166498491605806001681974869749146726373202776324945125013953453368299778708945971227290643969595629713562243419908025456961888745599561183240940509205834167387996660455423008573664383326301867960985504323358173474091543641085509125145760080557840801210219094336590559580686735948781675614855516621028604833789337737476275129016558156702593389621170307048966068339005329960325088885775363738622269191020959920658840427262709698255458449248536217491851761664583813025566114309314584253990687002952980625513485971873761776789106023932689391842584592322920065018940027985924506720083084514443495522449
+expt:98,601,0:533177103720501595374014423272499180364132378499160666153205148287497431057729394569971402806644432590292381465328310811262311129879335218558809778840423111439831395996547946125056037438926572002773115800873538665211948124422673756566945099641176492241232608229762984189514655606698161295525325616990201393228718812438865636613600881016384894116920222938495899464735527691752379448855611912417527389079639150256802359259202228730317836086556170590276966277499401959437472907925192927018522051374174184596825818778972688910983212905978633684186938477351015355179910878863238407299688657725777618404474888655212468833055969341513248604687220063488622962824592611061373538419157946717588609988450009564429746027878532253109391471912738954897803162861544906424860818226748531212662795741229276596890126256794061814383421311422736715585563600029962135442113826772475696417325421015883937926780471519318690864459664035455228247945210545963671338082833659176679989196527849975925731239343901932556903446683281672284250829662800543414520052002458669739331249230862598278859245402390741706350229540923193423152041354794777470610379380463931916503753572520250120327494841108274055472875847368852693579726848
+expt:71,113,0:155665870729530205341310326859872459537926086918288608509540470629351860391099882586273156224776434943964531186950530766165453973920218517388369336029496210775525110769905804823288221938617835119278838123463111
+expt:88,907,0:442367935572376572508225245682376008933489111316498137860990507028355805276660122793212942345797461553842453310264287269547264461627567883151291662994492100078344571908312323703967322111609104550792111450058081718989072815115851882388563478737616122984915164909745468851730941089128173523430879823706000843384957667316760881888264090864169349212921302774263449334569646606880597808832359653989122198423765672987068986676530059825422164710070729150784542517772146017930986715605834667445246856197609230392607836274592038028103289662613608042193082727017234381117193204646042933195569061774171215561867979977536504587733669688385439306083861005747682093252438793416405292269393894857797371282733609831597024792462532979252620533612898923536406352613040278291119133710169841942272610880326076250824796315291769779313197811055736478745579585246354714882550479199964522615379791935029462701848490881087210486616588742015690198161694007740631075914977342479383653037979280440452432330650580558326686619170505019301413395716564578646343919112222038215172712390311828679340129762907111087076354552831143978497060075661718540626266557415357423140554743330726141178661837462646531942496692764465824964428334360066828688839099062489813585188443877907045253387120110743470809899546315304940652259267302446808962933370950281961149706759813262075876658787778751634455269684666084979732880496655480607530401657107712607869822390372442674816531402008096066231847402127938718306972865332558595609085653122439480481119259426244455543280347111130355917037063730253045491171053471360412763262481476838567930318043324002372902635753161108413432524658790895161967566922959535333684336970564087502342071263031219942567744837673438233646370315543730522460987677141774838398907195160788992
+expt:54,693,0:3538959212637179650332389010097218547839980601093690465533384462821473107518120134643329245982087864317937908704373458854914106407415643779615995841169386600913075521454433838879465455760020550207139247760073103240863782684441878651997401564323185374793175538443983412787862620393247499479636694089753362683716397696397917283398425558068217711985447159317136026122405227956991309955957305130230342078570923159947618234652978345575496908772641954759715818896470873163820343504250486061693462131428151141184256959845856167488510754499527069147459850959898142673913068231658647704696101725713008481473114205759711924188717911743864320055181356930972595979239402793810079643314094026495828298793070503069066311897901487935228391178144871449270977053884209274680793281139427835365536821473478187015781075924946317138803162094976414459954194354095344108788615082753544608345483223312927636999008063997529650656957732197940704471295178444341702958910607189754168223147765846213872939337214235441488423377963042762703792152968410669091074122567701986969963794378828129171913930842249996279788381704931705888803023880349755565650291290845634952973640558107667121388591534953156403175205437026399021173691121664
+expt:38,856,0:197132715335944702010464928289068787258126989327281133977642459352310471635694659935863663034893224402661971507965073109281478523865599215163431556175379522026942698195490717331056237820749570952967717007649366271894056379198300178606041623775325949617283624435203477373703809019861048596220111560408850308709136073536236931756950635354870794668286264213752040997939539541387051080544346518658745783173789667395614130438466933466487546913034843807849350170476768221968845260192149232038583063007145032622472464523166365735920186939572956871374170348147525734840393491062416576459571924060826547986510253181877148984750114103946480014297867097001766341891006238734128868718256859876341374385005847514034681950344623145375661088734911525281809871480522601658340102129823934063220140098540350561496324424874246538855230619339148284533370024488661745011726445642690111494919560707585228174864187763259132194822208827893654702830695772629276887925981051128487055423282643887884462938381948997470435721291697587128910687319970929427859109724267542710439086909913634572523183081655946843912895400563035037344361397713522987937999965880651790361428060580389888264631102954948376159211750103503891634869806965067088907401334445114937251493551662240660610686055435327064505561719003363736562191988450674773018772056555774194438968053446880417310543649670866927616
+expt:-31,708,0:765736298588882623745464551248533589516728262330945024485987989003966799697519427922524828295538506333120906420497833190822172854823291505196845183135662558430608661582624850664725007618784585092336587620980112185589698249795027371672676312069829503342898152005067487306044707288099529713186820460094321862725166577558202701116811479992992160597205251212891371390724533853382322337514186669568739285186663884891566968084627353685451588298678227268272695471519080722554889447126207382826609688589782622034263523702002067627492259917412663020367888185843581319175113423749435759149520782360313210168155362235445104891714946334675780994250948917428592423464724255498014927635397210595806788729762917250871841151153544592712985783889618176401395175667540813239941136361290336680403138159551455700446304015319933056996010034922500542872536431111997459504310947292431025900542295004555040557979582695891302414344669597914053356301361988698100342875761385692372383787936620811489997313151757515795773510401149056466969197955066877735357001712514205212720669933441
+expt:83,555,0:1225578881193055029211627122654046612502838285027451787523333889078091117395677304740312290856548894569025972732093305262022262904766698517843710251028889032008071021523615947494541437140578410083242439006303675242241181694132064945370271165796403044400021233214176036607316649425463754916274528213700425307672925070793107159063558868221691827352040472536655806967633986881743762489226940035732391901428677713410085277373744973773271636779960125482940121021337248817093605269643954914154264236561300490516647836816796937996874660377751119032325126115584325317487570936637230731531209445181074951179372481656744462723784646444882817173348451279220016187868806676293898865251048319248697918535078227324297131747582957851638254483032160979834998953230605023477565269493853309225765083693484738566931845020418708591682116652295291303636819498565470825532192376545824497931844947390200802139827837145992356261755130151073475298317589343849166306928091630048941968076783492543886466245827183954554006162583165658402103419444975524038123795891288877937208254234082383456107
+expt:-14,196,0:437617814535571368432038511337652545614427696923129424177713451048312616488063444444116568548619798360728579274072579602558189605289698688298076102960815381950768025379270967729373733335391251544937988597855682119418496679936
+expt:-98,54,0:335898517749742807149149239304847110365424413007280865740297764742923286290279482895371271867934265713885184
+expt:36,114,0:2621109035105672045109358354048170185329363187071886946329003212335230440027818091139599929524823562064749950789402494298276879873503833622348138409040138018400021944463278473216
+expt:19,880,0:2009874029398980029295434722831970797532919043227819887587032786743144365367526664823247908827194455630622170606057232748931122179234484742203908570131852774251405487769265120505741541610105732725739348564765526542332365086458667418301828317751506967076229654788429336978672638225832010298145579102409262752736707461051491772477782570352887264641512286428683926389567737024065515860584891869348632484190723337772808946418211067908239231699266990927693314506689204660382252789414936010605752823023740942793443449899582312545405585967436891389485301908118540573354341705957891466220807814875490535322936464464190634279487514642962273091394501124072606449141530155166291432938436888069305529351823734620388268783707293175582244589408920429277320778044335476174137843245578718617250608413970893780067437205632161590787983801169075275248391505534693130703217363266217430925635281802546131654287314896587348755945486748557565093898213697334397719214794326654886046758572050840080888194502573280655340846994980936684326929231978782129907525294831982650961681342044316149573667246042886388298925914414391461565675869861333636998206401
+expt:22,721,0:77046492558224796788761802514088072131880275970877661304506183244811291459780757474421304659351160305442644292605839122224017614753423013459535933948248049249528771300446785986946709805896287030039183115458755228202024899421282006247675157856987007861882304710551488072995285854106976686201919909140206483194373001181110350256617582296405321373555584594309012456901291312584219573768786649572212517073683836945456976006726338250005200687545264869064958787610169087462340120923702046458000168595260841096750492141312671829384006125954306548840981666835043447963679445859020819819138834089832266078096711197961096290254275206028869494312694951676428802173538454063412657550689313921331316469141026674958943351278665317595537923216695203682252676572051050680540810268656944394976378717156317037697429183535766592224765986513447985454463834647332790672247864336230364221176419961961474234981387758066111628913552702951065406243272417272225028996432449465191839224742019072
+expt:17,917,0:2097301675874874262337384393256157290550457272641070742685181359655298484419530330975119591493945747194067982196745980906719459748758882521093062942106370414411307130989688371347312396400965251294933801479523245300205124498392914857119952454973605402952283548281059993829706858741240642855866024547671426840363544681591758614171705795900874121429015664043430807387470485214251545286572177964862773770430978379005467765291145746924901839002665096400397942453076588723612807208413217092949289492019664961222972978192822676475920744552252701836678236202368876327668639558452692524803118939191010230124869369557526977853787148876084719302299232475362067256488446210852407409309331633276993895009372306807316745243435453345840085033563601310824164178695180595270040323771052788593322649328459197776655430007609049049177562253219889705605903722950620003852016584473859694998609725264429690598113186546955167630012283368654064816468752154783362082778625443452372549847742049125737902403986921080094805248820329567053386368469178503759368276006576774606472539223477845778733320367553885443289921963031175184555111324035235498303342308177
+expt:90,974,0:27052299935047786065293705383293371594928459960636493591858679901229530489397827439967797113560000179030752129693483986009759069814344789464328028124389302229982080849292903566689398199538736384291803478523321463426163427287122485942132332484438824633259632500429907489423839508356778347605611863182944177635491198031896503926679224776089106017711039660784400591006292140993879293923209120615399556982103777565419076004780936708141570335102044570334141660285505239366482840745962298126113781491303989125579971415048181359429126117863548989486391973761921728851807165407598678812115381168882267007400683443822154895256736017606370596941988046175011944197627446203315020223655176866443121247527516304873917419276577740100216553128143639001206191984430353639022361358939550577829476281299576074140336299277402936582067383619719327798911232272710866516643940342077662311510080648261530453984792175767586937809041407061474275004126136100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+expt:88,533,0:25660449281262222538494450001863125622542059254495725488128163750941665069643744134848017926826911153501794213458141136118798686952318128330169211354566747333325537986995462503989216458427236156137402612135248417253059095443287160848570588029400648482452870347054911987033926310964969317423952372643231383031833176623179144615827641601677528585812306167020803446102194410693881507224213793037477717521197480665170498415644315118063624358208859552595534937279894843336541477825309304143549461073381212334783418760579349454160671722140424226639994874257433085267041153503087290920628156801330326875713842007053978145083999034880721014435679044734743002931660496447382048291494534747035171647495659446493320583080918221954598494959009870518773105244525770713362092498386891958081893316423699439660136195380395615149744310401608278793638807731614951269163459033645996046310958400025916261303110642807596573667882890880336479719496725477724544562900521034037056197498694805705196162644018155788990216861162622711326815130754780320976368304128
+expt:12,155,0:187539665641051633765939629010126862030861602821510134598513247329704373202067865855904581679588305105558426392209111518109357753525875656563557488739845521658156679168
+expt:84,732,0:37362626400287469786015728314475507196576346217451577972340560264817777335475340674816958024184760346347561438501466002380065324994816957074697212139052544975947819746208063697307962302948345421020870897563746896137814303577394468618413663330314199040777371901150981465952170446359267027980870158458849108279054769543589192992244998367449195186118755704549074553943383839728968976499539257576575130852721502719453361944489930498227884992093281287795552589618712166509707464487440188402096761270376491306019370966520073730856558528831146413882339665688468833965993044432654395376803788836651945621982999063779396803021750087040026958788856842217636023983209404960799438677955235981923691837336224814448363848125978496886798250942574484985336211014321720899330415880628445289132294841424914787671230730112190724165482715241239871542120185970126756942511944451784053266847219551455015565798473788074284186189118669182080184743138159319501208245476233431491562603292975987521331235533354675181947901194397959442206360514628651055734093466035888302489823943737682169815612826149059209986740615789135359084267106289623915297355833264060175823550703443673841878097340893266267479095018072578698649320448199760433477235766344924312161142440752268668342566161645418763284828712617629493206149751363684796869848593636426521501235005044720096689821574083797399723544574440327020813476324227172574108126760343901889888256
+expt:79,286,0:526439064947238802053645461445020487916872652166019614740851000911432565395604993916756724273343382808249492973087992062325249551325359686735575913143465467581047691930038117373467695602824586884710893085987595912587448288044732217351433963632626007275558435035805433116956578902569644720408764508101410145243233157169608100135310715793917742521403034578354501408583090243486810991762771487300120584737790555454222432759955623420408431532698387943150871884498498636773443364760233971133647087214954160646197476641876831719032258038195184329121
+expt:-48,298,0:1023030868022814299054713017964868399102957735431782102215916358604604051659703035572837203405877079107051634525945219766070256763817295621420805604993635631490817683951846687765019250182667988090399985362595946141453130325277952090882208566546530763707685586001179407168248639583706997713561296809021500677647862937784168307555475376888964203999111072179073538018050362405289547337600007038981171944778216894564706920577451010395411246759676715366409166040432558779691978486479294657424378342139756544
+expt:67,294,0:734500327961443669234315379892319347436893827696021491142391697563378578446291077887806124176875773502748252261770540334529098051241702520337994712391193396474812051324450141046760676076260316236367877489247807236984474045776385255239037010394553624592302745770678862650712113089224670041590960921068572134081690133046715543153096542269435280673848480153667033339024712187305544312593068136273774422287977966196973980766284625470220034542418965941570269327451886686200812785835233820579323336965260949631248809309330127020161010203411929
+expt:-18,16,0:121439531096594251776
+expt:23,783,0:17096043011003615277598794858486068754024940440179973307979725548138117553890262896641152305435426637168346356686100176044925372354921872747501460658856273444772550524367017737008810328712782564379920672077160208017588610872900933505244440864632694623791999654579846020232116933586706946483379032274515986264401321379356564215058936360373677277919864278279794625946762796494116433783821073561146442740575287992208852561076777520575751129272827760948307704793048037510164918774200200085555861489097574107784367443496372000977637695193822915836028040509766497522766784721558336792917997571201278516192223590838889688612546686389608843721034916667041733614883996563547634015007274594387270209090391868747626612843208187603964244920932750585408044205476476229852915573917584786214180312460069710688659542311237951704151388274748457930956937912692497993167574943229551708370492252437047946879513486746068495028744525641440991301695614236365008498571998939850585670845752278477745811135337129266946940607139194863121256913904896962276321551899101278415815402393374517929767
+expt:-66,815,0:-8478274364648612330188917253283022359058819830563672517212108821628253393962000107434004509667343937534845252876105916914550690362654306802088184928424521570461209219177571955862371964722226410637046742655117010513197262769697714640814368023744763233323396664955472317206306714935880218313050258650385673367221675620501577511198414613930001668113399143106311450680541330404416353053190642499775032620035730460907253528440201689228392425128611695226403417406791574278689202884590346418539029059209980814013704118450210566908353305850659319394569789593583277865075164609668529102638203772555818321297822419290710586417444995207152787848623117218947477799582750664329264358615866224038190922228629974680499679526981709174616924365577700177072886843030924028404354842213079523220238443352288912242203925033885655177475234008253977458800922719481452623217104266383098663601342961199447190374025272206739771683319522016840242048283276894211421554923410027867743938181352146258867339132020852657862198937040181786435550099700309055348307396827575249256603692440439981038825878568365720841374284500628316724088850430536784223423104076749618800240805402030937435626889672205773792103911906204527061949920720885833279883726692710574946314456869324980999570723090979946872598945360813531346459611164448392012613641192887272701599318084665769391014924333193179500033230229853166710458920123986965349475008600343653534535593116799600793757728203652141876940711203421375996087235090052747651710976
+expt:54,664,0:20391845050873191652345159631406874537839455686365280217235427133476142582092996043619608390016389292965226896811762634987782972686518739140212360064330493755768007040302669237780668310608681482526562495176314471562104423826827089408141436551453430030964346636473177072344012300123214143559305872414360567214132682148167038413419037687295369781258678081076745492992503736782832174090246186699082419488498244657442094259244802484573507417869446357085909447262706180711907718273125250308231346034020925518798041278971653974463785808172029353263314071093941305571685611808887063740166405396225068221678544525487393228625876836004989079566259935122474245224409591612160442040129636723080187009657142522509070943421819954801779957035427054617629433447229882724015810298068048100626156055542733454456801321357919554628269944544954700528568251750045531145328694687448392559273455873142746224088225238286750883430569184631252959597186815034796504990060130502168310308220045378042228226870235350079089558343443820937472250762918032769865387382756419568756482286011357857171768933280108973733824989544483820081477750150555112569963683757807113376801387242848256
+
+exptf:-1,0,0:1
+exptf:-1,1,0:-1
+exptf:1,1000,0:1
+exptf:10,5,0:100000
+exptf:10,5,=1:100000
+exptf:16,2,0:256
+exptf:16,-2,0:$MP_RANGE
+exptf:9,114,0:6076396096647706909168138770838836135530328017648434830996201971201776350890241322455818405320466786549738961
+exptf:-86,476,0:662617332696362860524067230796827820618815284881665908870595313490845384402730799402221740741547892729430741053639014274968962128613995528237195069353968871860065099842959580048834695510748974202424908905352730826874949676923389706328585129209694843598031316497606363273659659518137129001683914681077900538211178870670637655474948719356656149928857724507047191532188701873201466847680543186709462811132458087950485580962981785390351911145306017418845982546035812744084364382432586452339098567898296989357418159116783507112574874002896769395516552960579886303506398054290885811079444534809660731243125017742263312078176886504861185566719851630353701862941682854137129215263285153620969438652988427729550528379121310832057528645876351114476064584186293636620546183047738657594287749786268444920697293633564476272776432769083439149706832453778408583421346390651383448852253784001810843070684412323782386158601772005993742336
+exptf:40,238,0:1951092843947495144613498268620728941092873839165606969286973099765857336762353512575191314414682481974891831950879139309654984799555178316431360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+exptf:9,761,0:1508515174935868832740908844641413400230908698282014024654729092918735474326353646362638387096847659573480147230064829611049820323852929496264239478087068540642226919569780605621815548160687919464946810325130045648382743363240874672014902866728521582870078261816669666838432797381766007612134725161586319767428484319859256110793709691241551836459283171491322903212579581783263716842956174378353601721913353516686324030063352338083503343527729254306613462747468830270057853272630516028854927235895950242106874919224742672988595490274178820331573555174825456815488479104792855190670321093410569224479462267429452231735849215995686173314732407799996091669536594590589720060331368687564979078136565140955509332862196370159944529609
+exptf:97,144,0:12448864341302864356285624793135454957839907062356377399873019819913674333304037397385881749787740378047787615516124593880867160513889753519548772992938610862712907794913424958325207507075928443769586211194132774382517001523776118917770065797726717096819996931978519564039067219497326081
+exptf:25,122,0:353737464016668451855824972300304366432911374927310085530570894138105520257533012294512947342224925759920017160034290220932919252862236536572027034708298742771148681640625
+exptf:60,794,0:71136550947732097223049080592911024204723415862845308040389197768507697553695725763485652390828706079386079253286683076446508807986344183438029484620306186446936364042768259107355223169364392353311443322952870623266797106042061359252992933819289381215897875409197357921675407844235432207568030978595888122411284106189806970016530299277993693667005155741905298746901362592844010565441606260646610040560804127639267467909340287601194961411351728753184912061106832973826776921930054951881992593414738674333726484856598478050587647451437933451435999205268943471465348558111458293504367268910731207434743916849298071460249600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+exptf:77,531,0:532813311656570249504626338521175986931059533505926279525440059983661596994102351537446926949363360529365260710018282274969608991708422465645470353238950991164094603760337431471373797674342466447685331328334896929530869521639021347860305641901746618212067382436047417802334922329714967747069071224609067366771145964345230898570999327581370275837424654936614015736099665593408214589717971837806254491231718922616012680565189067437536528526576020597271981783296886490561985553063246822960810078500648480156559918530508398231087164252252053517193755387712164533565474034807917780960207694570186046344187446803758345139338159388892261095589551022214765624192005132067602116482379395414788544646979450596452460362555591887638135655580299669062424023518502777571809123694201495640270788238169354113138409879326088017367705387411669267281998186298445497315171994082486321864442017377055208040226703055135151101106282748423896319916554310684705542590586019379478759401961042716809342108506273015769966750567573
+exptf:-18,16,0:121439531096594251776
+exptf:23,783,0:17096043011003615277598794858486068754024940440179973307979725548138117553890262896641152305435426637168346356686100176044925372354921872747501460658856273444772550524367017737008810328712782564379920672077160208017588610872900933505244440864632694623791999654579846020232116933586706946483379032274515986264401321379356564215058936360373677277919864278279794625946762796494116433783821073561146442740575287992208852561076777520575751129272827760948307704793048037510164918774200200085555861489097574107784367443496372000977637695193822915836028040509766497522766784721558336792917997571201278516192223590838889688612546686389608843721034916667041733614883996563547634015007274594387270209090391868747626612843208187603964244920932750585408044205476476229852915573917584786214180312460069710688659542311237951704151388274748457930956937912692497993167574943229551708370492252437047946879513486746068495028744525641440991301695614236365008498571998939850585670845752278477745811135337129266946940607139194863121256913904896962276321551899101278415815402393374517929767
+exptf:-66,815,0:-8478274364648612330188917253283022359058819830563672517212108821628253393962000107434004509667343937534845252876105916914550690362654306802088184928424521570461209219177571955862371964722226410637046742655117010513197262769697714640814368023744763233323396664955472317206306714935880218313050258650385673367221675620501577511198414613930001668113399143106311450680541330404416353053190642499775032620035730460907253528440201689228392425128611695226403417406791574278689202884590346418539029059209980814013704118450210566908353305850659319394569789593583277865075164609668529102638203772555818321297822419290710586417444995207152787848623117218947477799582750664329264358615866224038190922228629974680499679526981709174616924365577700177072886843030924028404354842213079523220238443352288912242203925033885655177475234008253977458800922719481452623217104266383098663601342961199447190374025272206739771683319522016840242048283276894211421554923410027867743938181352146258867339132020852657862198937040181786435550099700309055348307396827575249256603692440439981038825878568365720841374284500628316724088850430536784223423104076749618800240805402030937435626889672205773792103911906204527061949920720885833279883726692710574946314456869324980999570723090979946872598945360813531346459611164448392012613641192887272701599318084665769391014924333193179500033230229853166710458920123986965349475008600343653534535593116799600793757728203652141876940711203421375996087235090052747651710976
+exptf:54,664,0:20391845050873191652345159631406874537839455686365280217235427133476142582092996043619608390016389292965226896811762634987782972686518739140212360064330493755768007040302669237780668310608681482526562495176314471562104423826827089408141436551453430030964346636473177072344012300123214143559305872414360567214132682148167038413419037687295369781258678081076745492992503736782832174090246186699082419488498244657442094259244802484573507417869446357085909447262706180711907718273125250308231346034020925518798041278971653974463785808172029353263314071093941305571685611808887063740166405396225068221678544525487393228625876836004989079566259935122474245224409591612160442040129636723080187009657142522509070943421819954801779957035427054617629433447229882724015810298068048100626156055542733454456801321357919554628269944544954700528568251750045531145328694687448392559273455873142746224088225238286750883430569184631252959597186815034796504990060130502168310308220045378042228226870235350079089558343443820937472250762918032769865387382756419568756482286011357857171768933280108973733824989544483820081477750150555112569963683757807113376801387242848256
diff --git a/polly/lib/External/isl/imath/tests/gcd.tc b/polly/lib/External/isl/imath/tests/gcd.tc
new file mode 100644 (file)
index 0000000..df7537e
--- /dev/null
@@ -0,0 +1,761 @@
+# Greatest common divisor tests
+
+gcd:0,0,0:$MP_UNDEF
+gcd:0,0,=1:$MP_UNDEF
+gcd:0,0,=2:$MP_UNDEF
+gcd:0,=1,0:$MP_UNDEF
+gcd:0,=1,99999:$MP_UNDEF
+gcd:-7,328492456,0:1
+gcd:16522181,930,0:1
+gcd:844378,24,0:2
+gcd:209,3,0:1
+gcd:70522336,34102,0:2
+gcd:32557663,995533,0:1
+gcd:641,701,0:1
+gcd:290748,-233,0:1
+gcd:-95,4770,0:5
+gcd:6839092,7,0:1
+gcd:787590783,-6789049,0:1
+gcd:721,15845,0:1
+gcd:-37028,-949534667,0:1
+gcd:618,-3,0:3
+gcd:16657,-544851,0:1
+gcd:28271,6,0:1
+gcd:-35357673,5207718,0:3
+gcd:99,-565,0:1
+gcd:9311525,-5,0:5
+gcd:6221599,7764515429,0:1
+gcd:21590339,486739392,0:1
+gcd:335,3699183948,0:1
+gcd:14,8755508782,0:2
+gcd:-5302,9,0:1
+gcd:8236,9462435,0:1
+gcd:43040,2766705,0:5
+gcd:863478587,63,0:1
+gcd:8874055124,10,0:2
+gcd:8204,-89955,0:1
+gcd:3303887262,3,0:3
+gcd:75504,-62,0:2
+gcd:436,2123372,0:4
+gcd:3361227,943089540,0:3
+gcd:37340421,223177728,0:3
+gcd:-35694701,238293550,0:1
+gcd:4263,15500547338,0:1
+gcd:1493,38730799,0:1
+gcd:-635007,298501,0:1
+gcd:4968,-98492710997,0:1
+gcd:3367542606,17576297,0:1
+gcd:232155550,3921719,0:1
+gcd:4860966,700,0:2
+gcd:2323372237,867,0:1
+gcd:4268,-29035,0:1
+gcd:8,-73804207633,0:1
+gcd:395170,26163606,0:2
+gcd:-70027196,6945032910,0:2
+gcd:5871172260,26773591,0:1
+gcd:17125540,836,0:4
+gcd:1988202315,-68060596,0:1
+gcd:554434367524,-909419,0:1
+gcd:-40457802353,3398,0:1
+gcd:410791452776,4492144466,0:2
+gcd:135751970,7417878752,0:2
+gcd:9593,31047471995,0:1
+gcd:-18387143,50226,0:1
+gcd:413450673851,-124,0:1
+gcd:-618513698871,-318914624,0:1
+gcd:37416674596,-8817,0:1
+gcd:6242382,-943205,0:1
+gcd:-4949666413,1501091102,0:1
+gcd:-6385784303120,899228089,0:1
+gcd:6308,-79643949,0:1
+gcd:2421,136928,0:1
+gcd:333180111,442438,0:1
+gcd:723761305,611024432789,0:1
+gcd:-91289,-9223787613074,0:1
+gcd:10944,57098,0:2
+gcd:57145099,-94544476,0:1
+gcd:9327105307,88173695233,0:13
+gcd:73230770347,67182928,0:1
+gcd:4810254287,-4310,0:1
+gcd:7200253992,9893,0:1
+gcd:-92709373682,-664752121448,0:2
+gcd:-2236424417,-69570761,0:1
+gcd:781963714,61084006246,0:2
+gcd:78553,-3773682081509,0:1
+gcd:24811454802,-26314981001549,0:1
+gcd:805866671,8061826,0:1
+gcd:4281823377004,2916710,0:2
+gcd:15229,320560332911,0:1
+gcd:6093153060,357460,0:20
+gcd:624794507388,3264784,0:4
+gcd:2632503413711,-514594728450,0:1
+gcd:7216089,86034,0:3
+gcd:112578025,4532680608704,0:1
+gcd:-972617496,-1100642928524,0:4
+gcd:86658,-56860,0:2
+gcd:2292080,40552081391276,0:28
+gcd:57144144326678,3579498119,0:1
+gcd:77390585076,614924,0:4
+gcd:685579,959286825595306,0:1
+gcd:346354116,451435163995,0:1
+gcd:443946215999,260668,0:1
+gcd:640447120070,-441698,0:2
+gcd:1253208493501,-8521171736,0:1
+gcd:8507343,62395589,0:1
+gcd:81126006,461820852819773,0:1
+gcd:87891707090,40954510522233,0:11
+gcd:-767589,-991593,0:3
+gcd:86229155,43027930,0:5
+gcd:-431963821,48986055721,0:1
+gcd:101557073166691,-74080192,0:1
+gcd:-34269048183,250074,0:3
+gcd:7650667716360,-959482143,0:3
+gcd:-176432105527291,712269105001105,0:1
+gcd:91973525400419,-52180215632622,0:1
+gcd:9054526,-21388581343089,0:19
+gcd:19326311972,3180878,0:2
+gcd:501569850634,39035351302,0:2
+gcd:-3470290487760846,622612793613,0:3
+gcd:827793089252612,77591849874263,0:1
+gcd:19866668332,4414961,0:1
+gcd:136274450771,8659380001,0:1
+gcd:952660786088689,171372582380,0:1
+gcd:429415374,9140880954,0:6
+gcd:-368107346,2945634,0:2
+gcd:2147845929,79983807840463,0:1
+gcd:77885771608,-51236668812562,0:2
+gcd:62272695670,208399244,0:2
+gcd:61973019,-1405255816878779,0:1
+gcd:286206733986,212837117931767,0:1
+gcd:-131938894,1048695278656631,0:1
+gcd:27109492,306933238851468,0:4
+gcd:-314477095129839,3837918787896,0:3
+gcd:4116345,9101435151,0:3
+gcd:63853435249810,902940229903,0:1
+gcd:80076033,14791385,0:1
+gcd:-31038678,1454704764,0:6
+gcd:20638192722,-14267370499730,0:2
+gcd:8065790684,-1977228453431,0:7
+gcd:362687955673,99742877979696,0:1
+gcd:1235326072088,201675880263044,0:4
+gcd:568009735,49546482048450,0:5
+gcd:849579042,-3197920541,0:1
+gcd:1808291492597692,96814519920612,0:4
+gcd:6275712123233717,739880208952795162,0:1
+gcd:774075573665981,7523229210171,0:1
+gcd:2944466357361,497012903828640,0:3
+gcd:282862415058866,-6240991940068,0:2
+gcd:571225883598025,189932649930728,0:1
+gcd:815309478,-371377784,0:2
+gcd:320172590239,777220834144,0:1
+gcd:654332382,7919190746613,0:9
+gcd:-5094673003562,268414312780910,0:2
+gcd:-77841790209187781,35267718271550,0:1
+gcd:735762990564598234,-32739891496,0:2
+gcd:-5999905013129575,144027889596460,0:5
+gcd:6861193105404525,-4725324526382425,0:25
+gcd:859748569384694164,98523184164,0:4
+gcd:570460270963,-54720108308,0:1
+gcd:61750383079701,3452251304617,0:1
+gcd:-1738716695,8560399484936237,0:1
+gcd:9953417006786660,90085339160,0:20
+gcd:188523146978,954842405502,0:2
+gcd:198834734074395695,171072375577893,0:1
+gcd:-102893613303732727,155104650554,0:7
+gcd:90836124710855,-98332551310,0:5
+gcd:10512242068892,84377075433,0:1
+gcd:-726835478343584190,29339956106373,0:3
+gcd:5033847480079150451,-69469662902517,0:1
+gcd:3869558083241,-8770208065,0:1
+gcd:46079368203995132,23609959311256,0:4
+gcd:979137194422864421,-1378816153373947,0:1
+gcd:-72618673468,-244198092166982349,0:11
+gcd:529564016606,376298866055896536,0:2
+gcd:554186920892,-629719688885314,0:2
+gcd:3455963977845612750,271884481278417471,0:3
+gcd:-41270780965441117,-4124462824121691009,0:1
+gcd:47581683736,9394210662450,0:2
+gcd:8196306676684,76732052476696223555,0:1
+gcd:2939970750639,-2013582768244,0:1
+gcd:70476757656499,-100957934015971,0:1
+gcd:3674841030712174173,540185467629182772,0:3
+gcd:82915322420038008,123799513890,0:6
+gcd:466513077506,73565730651787738,0:14
+gcd:-38890216282311653,91459939591112,0:1
+gcd:576595981539992,20909590051109791,0:1
+gcd:956905636477652,8381376662473,0:1
+gcd:9187294026565993,54295427509,0:1
+gcd:8866081281165098,6545042142269515,0:1
+gcd:338772425501,-750860960783,0:1
+gcd:6750486296504,8609697533187,0:1
+gcd:736067207074328,329259058372493427315,0:1
+gcd:680100030114145,52232423165123,0:1
+gcd:22697310250913136791,365228836596285515,0:1
+gcd:30594845950075862222,37349482121506846253,0:1
+gcd:866936756424,-1765396942933391,0:1
+gcd:6939438360479781,24559856763503,0:1
+gcd:927595346004843560,7670228140092963222,0:2
+gcd:-357321286444971587,7925597841132985664,0:1
+gcd:6673370692769029,520191499051311630305,0:1
+gcd:9013236794945,1008467412252240244,0:1
+gcd:406532185466775673747,9519149309169118189,0:1
+gcd:548046408595014443,777065152533771,0:1
+gcd:23897406396584,-8555442893510156172118,0:2
+gcd:54729344028716311850,2026849525600172204,0:2
+gcd:-7936445752013,-98698488318151151,0:1
+gcd:6309028281362257922,271678876766048827,0:1
+gcd:6357785774765671053291,56936125648067424,0:33
+gcd:11095109588014,9104811531028000846,0:2
+gcd:-921590308699737078,472826384755153630,0:2
+gcd:652120832633171211942,-3387083844442113181,0:1
+gcd:32731949302549,335896184427699,0:7
+gcd:3635516318567409721998,16713986701316425,0:1
+gcd:6746198240933100303896,2007405485449,0:1
+gcd:-19072614334803913032,-240759760944833349,0:3
+gcd:828472954262165857,127978158379025077,0:1
+gcd:8306750095431507743,6378030328941226919,0:1
+gcd:7938532173109072,7646615157112938170608,0:16
+gcd:25274397567311,3125247753747112,0:1
+gcd:0,-6378030328941226919,0:6378030328941226919
+gcd:-6378030328941226919,0,0:6378030328941226919
+gcd:-6378030328941226919,0,=1:6378030328941226919
+gcd:-6378030328941226919,0,=2:6378030328941226919
+gcd:400327281633151431,37147489147345586,0:1
+gcd:28164658061513141691,818613450005821036296,0:3
+gcd:476291935913056166817,170589720180888384,0:3
+gcd:84130837655605609,16051948347568699941145,0:1
+gcd:438146043336536562159,-2206822496905640873917,0:1
+gcd:8120293725815373571,24028314574527126,0:1
+gcd:-667658265953408,8440015504605457600699,0:1
+gcd:53314441150262832895,283247085055963859,0:1
+gcd:6658153298145442,2140281300389057549,0:1
+gcd:213046498706732967,784948480361985741,0:3
+gcd:-3857522843819,419578526133778265155,0:1
+gcd:-4948941087660882967,-779517282262677550602,0:1
+gcd:4277076043224464,448010594023993,0:1
+gcd:-644113523059324254840,-71225587742718143,0:1
+gcd:264902435468141506,-823887292259809475,0:1
+gcd:1538706915662950684,448326823774496344436,0:4
+gcd:2036808313025110180,30422160628736748027,0:1
+gcd:7385426850078311,9871854919284839,0:1
+gcd:804644713550364054117828,8379163811459445,0:3
+gcd:981008037679996757191201,-641409668917881464,0:1
+gcd:64201713053871850,879119102660231895102,0:2
+gcd:1033957429367195,1113485105415049436,0:1
+gcd:14455075580451942850,-1885962875546302716,0:2
+gcd:2615475057635555327591,71606675442458157933637,0:1
+gcd:596676024530775,2621192750454214313695,0:5
+gcd:71665682789483848832034,351563529541544408090967,0:3
+gcd:5092055214749737510271,-1833800774226189505,0:1
+gcd:600508413963341945,5057063373752305154,0:1
+gcd:-92318043858914149,958444935645415778103,0:1
+gcd:385447683586530283,1775981280157037775814,0:1
+gcd:80717517906672139,362327909576030289130356,0:1
+gcd:31249856290116188,7875872084416640,0:4
+gcd:5339381130045070,-287550419156538713298378,0:2
+gcd:-28993892995370333046,698005135756870427,0:1
+gcd:9179674525723481348,81469928617693608886,0:2
+gcd:7522547789649675160016,285918417200326088447794,0:2
+gcd:-901774653467788803,236000195734098992,0:1
+gcd:142671415131788790,-2583777714764598301032762,0:6
+gcd:951078283105727024828,1487627587101952300275691,0:1
+gcd:19185476025869672486,2445736876347152429980675,0:11
+gcd:6741226163186521681303,2568160083399218078514720,0:1
+gcd:3987919571578399660412212,9884144363611069680876,0:4
+gcd:99431631881940059268,-291965406586754754564989,0:1
+gcd:36727416735327035,-1612205593089728906670,0:5
+gcd:19590774006340220367562,984968880458891391,0:1
+gcd:70695613219926859099201753,62591913993270611799645,0:1
+gcd:77425442645246583405,-296832015660977965,0:35
+gcd:807971872592227526408,40230405885131399744453603,0:1
+gcd:965370212546292322,92058451234918953535616,0:2
+gcd:418561885926860582,239657399821326936,0:2
+gcd:4657697584188823828175,78713797195009784682708,0:1
+gcd:-38091455008728662,5763777114003492300442812,0:2
+gcd:54943065861736600767,6268390929335695219433,0:1
+gcd:-697639190379957186138,2936028900796584636,0:6
+gcd:96018089280939789090187,29566309848085271814423786,0:1
+gcd:-1112368751522257152114,1995174854903534746993983,0:9
+gcd:-84342841213955171500540,5699084396809137598518,0:2
+gcd:225675029492277024520800,92998377812004114915728728,0:8
+gcd:7655269162163547244,594548791001649285,0:1
+gcd:17608380663675562604,264448308193844308642824889,0:1
+gcd:223093179893694063251643,17908241494426478956477995,0:3
+gcd:-9501451313199296478183,164266650410143061944307590,0:1
+gcd:4558730178677382262,3122005086984557462,0:2
+gcd:54440882483631228680923933,4478571958703194374379,0:7
+gcd:36855929355558415329723,308635436762628905,0:1
+gcd:28683868680975381560,42902583850929860163229,0:1
+gcd:24731088466679335541839144,81462858536522998396,0:4
+gcd:-72335534127835253275,-227166439208550011362,0:1
+gcd:474777034176054735892,839001319154604024448982,0:2
+gcd:6299666296143449904,797331145004636509,0:1
+gcd:8540885149755672764459236,41765710483565552588310,0:2
+gcd:385990739803366398,2963466700114736836981086,0:6
+gcd:-37246197932269024,3005402223074948482,0:2
+gcd:-751622018429096822596,3003864133422104297,0:1
+gcd:-6108319432277782804,-82931541043539126216389,0:1
+gcd:30921518942393713547539642,721143788088068568685,0:1
+gcd:570903751254308471830202651,-564896588437884119958,0:1
+gcd:1054271475454361570597270062,16484741384321323400,0:2
+gcd:6529831639822170310307759,85346429845722052312845786,0:1
+gcd:-754058902141939454006,69516695016006129145191,0:1
+gcd:976193241125104191848393,33823563038032982713854,0:1
+gcd:2920092456500658009757,8895875497550350532901302605,0:1
+gcd:9994369499844252132394601638,93334243646132127297454621,0:1
+gcd:569015432462996733746,16322837154963292812416483,0:1
+gcd:192500272569416024937360278,-235265435750733300361,0:1
+gcd:5267095375035104443898399000,-764192677627393558125306,0:2
+gcd:51025753118541843018,-1664207936338749988204,0:2
+gcd:-62402848465899883613105,12900108782353988220438351,0:1
+gcd:-8212641700259728565,297115088713153106682478,0:1
+gcd:-5313586393962705049080,-76998532453336088964044527295,0:5
+gcd:463290189242313601142817059,969769350842083604500926,0:7
+gcd:1917277332460964412252,-708614825339303498360550,0:6
+gcd:99562752968815530108,23844471852654970991199350,0:2
+gcd:3003923448532254675001,7732856831499478812681071,0:1
+gcd:5794073936773633607324540860,-76553654622431077040278132,0:4
+gcd:-644932980169883872037968349,42642515095105038480,0:1
+gcd:41892582203464757978762451494,68041907390182959305068217308,0:2
+gcd:-5550794996398648089925,-61773015425098686639107,0:1
+gcd:26506218374693057900,-167675112099207386871,0:1
+gcd:145568384864275126584,40072954892382195328941863291,0:1
+gcd:3161170925861501561771687,413220145707787390821,0:1
+gcd:723440854928237000349411,-71208223609049472714282072,0:27
+gcd:94994080481292730137,4307839512004666207932600136,0:1
+gcd:7821178378958515500742,3087104738440174209004586,0:2
+gcd:869891649236864909625695,991848579874131467931448097,0:1
+gcd:17628160996789341122894,299337591195948255548811,0:1
+gcd:99527056994641754235498057471,655773087035017085668857,0:3
+gcd:596721281791001887739,-328175786669349585798669238390,0:1
+gcd:266802917073126657350936,148259550527207353925931727,0:1
+gcd:297095531532857951877,8071469565512676957784213778,0:1
+gcd:-64574484904487858142015156737,351049851111701482889769,0:1
+gcd:9213606993296693767546,-974475310790221342435,0:1
+gcd:-6506246525097752180174,-95653949321972166356216836249,0:7
+gcd:7211807452760603826715508,25981532388511222064867790,0:2
+gcd:244358078258267292267766114,6788410077941126965241803849,0:1
+gcd:-84498071017578145227329893,51359077717175899950414794158,0:1
+gcd:315675121566194900458712010,607326754590110945679173086,0:2
+gcd:3336777364604897112789890,24326442512123908471776,0:2
+gcd:-631164366791648249399815693437,224085205047080377284686,0:1
+gcd:-9374071452933990971885163627,-8124264246742383054580586,0:1
+gcd:-8986611810629266612086889,39090932189616079255587,0:1
+gcd:131042125952122412011234961669,-603299752062616670818260436,0:1
+gcd:-5931135084197112120929525527383,817854717051260202081870677650,0:1
+gcd:37076034350171687718404493,6575825691817817445639700141386,0:3
+gcd:6586877468189252639017707825771,813151310907233772623665199797,0:1
+gcd:2933337084774328653741904208050,516673656644156545121601676651,0:1
+gcd:-9902991686684787357658450,173313993122814232472956,0:2
+gcd:9274522469490915283112908394363,44864081129175577116760112,0:1
+gcd:9608655195311416270604257657,65867528105907714734959487,0:1
+gcd:853239911600142024011098491,17829323361272785163230303,0:1
+gcd:23972081642808055559504902,-4501717580058722285684735,0:1
+gcd:5314236376598680151908105,3994830160691915764873,0:1
+gcd:4935319583093232012062136782,881389216056886912824752493825,0:1
+gcd:580231659494763900889556,96767644291944525456085901,0:1
+gcd:303622305001319462939309066150,-27984889540977885375442171280684,0:2
+gcd:8908131273613694428163643,418798812110676949375564324,0:1
+gcd:604960317372762640669451812,820482420778387317631260055,0:1
+gcd:3125355862613621420823337,52123353846012574000878521623,0:1
+gcd:35876668588605457895900,-237986271303986771473105323,0:1
+gcd:-43001262189486935668928474222321,75601013836677651900921245468148,0:1
+gcd:50360054222226284955381499,-7538629547593198554710875138,0:1
+gcd:16303655607623383537122,23252538460647040924816117157,0:1
+gcd:29876051059586965106021953,26235768232838079362376,0:1
+gcd:29623076251397963944271763623335,47441755805615786352682527,0:11
+gcd:9892811422980328964557595259,603482574014084208448431822759,0:3
+gcd:-2549498483308845928405350,2555383871703609992631017913548,0:2
+gcd:-935906971037827073384146870,879641356065373793312781,0:1
+gcd:19597038710644290533555897021,2985160892106475439715913026,0:1
+gcd:-5608937456930306694772980,836399586633606428927522624674,0:26
+gcd:7718522069758342120350478031,7389561033066750535580836572,0:1
+gcd:718875898101761373218778459,686314096776480574628984874102515,0:1
+gcd:1300200863593962819188902,525922101427424561614551608409976,0:2
+gcd:539220635752920237029329058,29487916769600117002583914582181,0:1
+gcd:5654437789656914341120143121414,6765853316633901505298664574837,0:7
+gcd:103114174998937498500059583,920095995082794389728025430890882,0:1
+gcd:29882936700790118228421849,-1860889369990333700884198092,0:3
+gcd:8909623809613954310018698,-462806578041198407432067106139,0:1
+gcd:7230230288816368650543810,22162946284655819337870476,0:2
+gcd:734442358589456361847988629,1647427465162259118128391711,0:1
+gcd:47616626651192848094181030316,2182277257935167463613810412,0:4
+gcd:294703827229370598691617,63046555168872062038888853,0:1
+gcd:-533653415261740333749397,-51216937243134223196656339350075,0:1
+gcd:784368839220787531616946253680351,39613735771181195550018240677,0:1
+gcd:5770744507580580048400572,231937913382367374762373686161,0:1
+gcd:388816489715059942531589642,82051838197217717225950877,0:1
+gcd:60241729629297025142644618709,85181464884435369517497693388632,0:1
+gcd:1560786485638020475934392460005620,8850527081981124295638445,0:5
+gcd:8296622334734688413856037840,-83875508267086319614619277276,0:4
+gcd:-45794179084517723375284971259238,-49063790774577780701852303,0:1
+gcd:1752071933321291709931075226933,57773126045256149501100162,0:1
+gcd:730668796977177255106481634556,938608337106204028806933670639254,0:2
+gcd:921730456287198291208119641693911,5458708493078803375257300,0:1
+gcd:213400535376420556914942871216081,4183995847570912793889135547893162,0:1
+gcd:32806047880829491896013320805772,753489056993475245589087354,0:2
+gcd:15218771998961411533589410518,23457061020403160442042221,0:1
+gcd:9046617676720978441798060,7479379807328977629621989162,0:14
+gcd:2219170169044655639393672927,-5391273013704097527490654785062,0:1
+gcd:277590531551034474232270111103,579362077865358674190909581933,0:11
+gcd:51422590325724235826789079575,2121952875387495603452158,0:1
+gcd:511034032165016743768820348,458982236103828060996895790272,0:4
+gcd:4440454508740215531301617636697,3258309525326637800581711028116821,0:1
+gcd:6330009746329830092300048092,-6167250670699283492360751201828007,0:1
+gcd:-9374602262965156933926707655416,-30595740075402425097079774283,0:1
+gcd:83645893910576549628700447097824,49931389572768584324081547829643,0:1
+gcd:8030747712125824227213267818544,63329417394086865663449328880556,0:4
+gcd:378845361147099357535431194,38180105668041356349238612217040,0:2
+gcd:25958762365949818177158173188075174,40582859445868015162861781,0:1
+gcd:95871031013239291309686124,64936572493882710890460913285902999,0:1
+gcd:455128054133718561191432952712,39088645380524987234419335395029,0:1
+gcd:1307047523348091088814812136,44132853285705545682051355847561,0:1
+gcd:1418285824252402530993393665755,636810955908181043849421782278,0:1
+gcd:3071172872783184341780369192882346,-58125204065109316437571977973,0:1
+gcd:56958148205198214736866933854,4922289245511311172745764679844,0:2
+gcd:4836813580368584281452577588,-5400032605107989894617874622172581,0:1
+gcd:493001845960066187429806680791,4028800209124423703294502145421185,0:1
+gcd:71197215106470682909632132625,70077573297929109151274279,0:1
+gcd:486722080146274783096432055886,505595939085965376271620470551,0:1
+gcd:-194536785271632924316130857883181,8276525052027013498990299177664024,0:1
+gcd:241211965193448971857220311,2710726738427327769580581757190,0:1
+gcd:667013805494915469984846976421,118549400818390788595763048,0:1
+gcd:507926799850267721181735296662204,67253859677995358015731931706714,0:2
+gcd:448088677681619431331494894631309,779948091351174817338856782981850,0:1
+gcd:187408370748924381155985806145,495794563709904959946586644094587256,0:1
+gcd:868633158815673181555237006,836615025635832190680248872,0:2
+gcd:945386362083356835627622353491,8230893874122803805176630038821,0:1
+gcd:5596932048341890824814087121,-2850793263280920843358756089,0:1
+gcd:92079468846004092188293849,65000203344267255501708018874742834,0:1
+gcd:284485059147524530505559245415623974,-52174853366891975161102679787418,0:2
+gcd:225019940499042054289943285,88057001889802818516938839002453179,0:1
+gcd:267625311635136684363577960127905,2364801628264216400078340665206601706,0:1
+gcd:-43414374537943144129863577734786164,-7033210862612719519352562332,0:4
+gcd:32883132771659855270849300682688,359989040176539024964573548207106,0:2
+gcd:8225754994306229461538669946760,79816684330375527507314556065816,0:8
+gcd:7425838080456254658426507595,-1772612320788255147892065709861,0:1
+gcd:1660461221569443640519526747903779,1120888096894032723781619067526671,0:1
+gcd:-11718764104457037189982579964973,581785925357694644406822708535571,0:7
+gcd:6811677000322905212875962023,8457366124986245338105030092893823455,0:1
+gcd:234277964462994083732538315234,60350281492645017737168270090,0:2
+gcd:4183588612759663468880479337,-629574038019737820951243554610835051,0:1
+gcd:2509727174403533842481294816277585179,366325095871570289922697736369296,0:1
+gcd:9652053493694317708921453500950,-91539642994112368354952933916454,0:2
+gcd:35148593969489612322148628595,-82585065708416968121031576511657,0:1
+gcd:2800741702103544119527140802733199,46761480207188283686223358035,0:3
+gcd:441336276433669766301405280032,2656936104993980830437872804,0:4
+gcd:19746122571650880858695931178058857,104545112367422664420669962306,0:1
+gcd:74432478600289091913597803372,1021411507303737809729230605483660893,0:1
+gcd:37218119790882940825047165121,-9786692593914842780007874460688,0:1
+gcd:68400175404962139133336849460667620753,8111497426974768586772111911266,0:13
+gcd:-36411507888779255237781266679960702586,288273015425729999064058691683,0:1
+gcd:-93804297004149089553676142929158,72597578405766612297542242292431,0:1
+gcd:-82026709713179475197473688526642531,5827788603588390535677091203646382966,0:1
+gcd:545760067487517393173385480028,42151112506666653978439280505,0:1
+gcd:-697412421088675986809554647004214,6926944054264140642234974161460,0:2
+gcd:57812799959867792819685059219,779735108345604313576941265627654,0:1
+gcd:1472311567166258003445083977221663144,83378953824849274359711951741465,0:9
+gcd:570337459673916278308389115966167469,6333660822968779197930730584647562275,0:47
+gcd:-388785693105293562593219349398,820248784628021659491960244881371621,0:1
+gcd:11679788667362042415563834445557578,-5819547639993570526822921884507,0:1
+gcd:-3982959591737356792197606403519482273,-333248358612381656382679653253,0:1
+gcd:17221610285774362123428353448280602,11458184790118982447972303969280231679,0:7
+gcd:772738633297996807166456840381926971,785759122171938805714543081571173360415,0:1
+gcd:125784145401376536208808801528812039333,452055550313139515567680226389953055,0:1
+gcd:32903571905950760393177782893378791,6631740924411766007832465757451477,0:1
+gcd:8742677352155721160009371273251,25083360125803108633092433384973055,0:1
+gcd:36273669132247708836176424212020,533102320793846929600697481505030771,0:1
+gcd:11965144674509690079804137520044857,9349045655011350274674885782216185552,0:1
+gcd:3321305668226664033356712162893,-403949753985171409898849824686029161,0:1
+gcd:7395363159337411027760652209127419265,44729331460301249556947662501414682,0:1
+gcd:871058047335719958990871843414,28094200616974302760918376942978068402,0:2
+gcd:7704699734056436938779166257084,546898541513497897846722209401,0:1
+gcd:950290435067652970604023856243611,4001208123591666075058892234775,0:1
+gcd:3119293215232541154035748455321571,808684220462127868482572087900610,0:3
+gcd:432360858532087298548744564083197299,240846574096518547683557847064319535,0:1
+gcd:-310788798729818682147559678302,-2172955391250831365155305151397888,0:2
+gcd:649283478652713472152371045373000641269,9179675498867400603641823155076,0:1
+gcd:79980532708199255123596245351024866045,35273005660545430889304120342364,0:1
+gcd:-83351007958684418946822288153831314277,-51634644710916030743119182132599855,0:43
+gcd:4992915740405389949821656927954249501,4523923119542484578579105473053048,0:21
+gcd:-801991401381703662108108758716412,1462655905419442096496214673085035312112,0:4
+gcd:679369055865583831572651301119431385801,6364653911974833953564963906049365,0:1
+gcd:32178714589413433072024739357148883,2182815001928827996341206621079833349525,0:19
+gcd:604754886257955637472038235002006997,75686581968330008368600832791867,0:11
+gcd:287068066584060661996114628597630371136,52011890293701406927883275870768865,0:1
+gcd:3979837024286745384581666788748758,7350136706945206821986896298939283,0:1
+gcd:7385865195603313817759905903511277,1520983986703891701713359953638,0:1
+gcd:764457193068206149728854992613,27858021258550102776458498820919,0:1
+gcd:-4155789385717252736363125208379519,513716864065732253356348104577569642,0:3
+gcd:97365354260983249124725672833811771,5020029690975786355406829440294084209626,0:1
+gcd:83139160308299020652846789174256754,3913486804605023733190361150860684,0:2
+gcd:-17691166446369130975076403772363811082668,94600134419678935394632555907142,0:2
+gcd:634823647473707443708903538054380,3956996255499668253479385484122050809317,0:1
+gcd:-3637804742599340390876015169076139565692,783241759542604459838225899706055858717,0:1
+gcd:585812248650822285457691267576462,21534520461947113931625020852108318,0:2
+gcd:11281432653044672416448534028211038025,711109480140515578563170257201359462,0:1
+gcd:676293649029453415159585825583394,97280549393475973449516311017466882903,0:1
+gcd:-60552656313655809329731693060696763524,493007935144068742422888317617165,0:1
+gcd:499127054152037037035927375386500,1203956412395744650060889503126393,0:1
+gcd:50094686288665713475507184834256049095574,-832478827433992238527275985275884802100,0:2
+gcd:3587136855297236649460183411772356035310,-712398604370738955166219235841134498742,0:2
+gcd:-8101551106022390770336067301182994,9185799272249263720169676176910186035467,0:1
+gcd:68680574795029722620883183609775450677,-84158462638889794851250260034014551972363,0:1
+gcd:155258118178686765062886673806448566,-6850017870177195667059084688029341396610,0:6
+gcd:285166743996114296479394289968524943,559627723033455856754700399288311,0:1
+gcd:97635198013817214038209538637709608537616,-43337611052093405089732573050042882425535,0:1
+gcd:2025635628106428290541842218677337,8363403252785996217814021695187802,0:1
+gcd:39403341320445818916772945982544618,-3081545887974055895915003777735743,0:1
+gcd:66538675039876745133366881210395320367369,385523580015310377616062750074359,0:1
+gcd:568797587304724025372575349953868,-809993079501337508688725757864677957,0:1
+gcd:87438670031005707662235517162074411507878,762858503307630620547057859718065131261504,0:2
+gcd:-135539991676075663249711183869449098,3187117064807540583340853903135708355720,0:2
+gcd:3623316226168035106420698863103708,281527696822113339094642926844583498510,0:2
+gcd:462743256592937700094228107961335,-6269566498572477078237555404177435,0:5
+gcd:-685484600842741055621576203380446857767,871551172534175305655069705808532,0:1
+gcd:220964518681325411201409247135357488007,-5641829172229111635876189209726787450,0:1
+gcd:302531333113895329527974519952510,186535245939488501803212618851457571589,0:1
+gcd:817537141270922830542026664184986,7821981713799768623509532856543951,0:3
+gcd:8468979244486855292413811013010058,-209488808243349961649691393540068,0:2
+gcd:879852422051274089521663230058530,49497155404087571445757965616479604,0:2
+gcd:21764922287301916637920770938954126,164044760066720848860497915166650797335,0:1
+gcd:59469732179854673335933541543666124,33859516881008254191737434099260638598,0:42
+gcd:5622782096444522942366700649751601671560,1818924766888381565955786591467033096941030,0:10
+gcd:-83658234598433632746857009684831849359505,-29016349811234824466750396183186748,0:1
+gcd:7054089120269602821498711515003074,4095832337673576318592596805192095781914,0:2
+gcd:990394898068553803695514279851854605418847,-7739084020331097221051527297005947155388,0:1
+gcd:54075935489906064661012070011939942732,7918292813066039667153314788962651008581,0:1
+gcd:8772115771437424285869834799732506658796,-932849018789404004804426567212331569,0:1
+gcd:-474373401937043543973615567508636867124,-23736477393422078122335330115520892673,0:1
+gcd:8436352086792195283692976718955932574,-24226347745891111460405966918193715809620,0:2
+gcd:814519302031186083731939523439915121,55324835095437197264275880684820442585,0:13
+gcd:-237764758709584162016066869681905512952347,27730963225107998869867496093972168,0:1
+gcd:7518474854158787395750001309747813,8381114315785290417935232114225100106214,0:1
+gcd:57926271609377407522025180011097851547,-460438760475654775684236043340437433561,0:1
+gcd:6638349918167655693810387712273716693403,55308325418124425819340246954531134649556,0:1
+gcd:-792096039638367514268257857215475476214,17985352918594429617981644232595132,0:2
+gcd:17523605051927467343416676052611136060682,32818776862511079287568864844380549,0:1
+gcd:435598204136143930685119666237820390,902306362378699323196514142749053448065695,0:5
+gcd:7246625600474134146152993995542881524104,84045078681310625106949990828070364497,0:1
+gcd:-787638361574460696958641849383712843152717,-98972482600264920015196417920239935812005,0:1
+gcd:82374608290966933640517911377351376793038534,3375365592517566879211534105358267232412929,0:1
+gcd:-65869507968457359071511077346860349916,233541308077986424091233056554170108328607,0:1
+gcd:434965647854018848199731601803786298508849,6881642201690537465635377223216241,0:1
+gcd:719612999193225374224745692059996056358,-315519530953816852193901984099603790510,0:2
+gcd:3371856558784507755414140667220962994794,-46940188151078159734582108552804551252391781,0:1
+gcd:4803433840417804894873156694592939602852,-72456645795090954873268375616538340122311,0:1
+gcd:48568835567133010333265540506612310476167,-10706367926604784868082114989212135746648832,0:1
+gcd:-640514959144433868933444881224466486263623,495227035072426375802319189512972514543836,0:1
+gcd:-6488859550432975345382980598094012298,1739553070312394609661279054142037504040,0:2
+gcd:62439762329215278757554454849955204768025718,79602289985731119990152260854511851,0:1
+gcd:6054057220822234921996955072468282902047103,-41461621564455176604944655360416823,0:1
+gcd:41593335543156355768394832800525873230,751910447000975730197547607815241920,0:110
+gcd:994454253731718339598418586069934146007,674502407982587721309172287657440910774,0:1
+gcd:467599304203676521904495847137440151064429,1065364075426775111107441639016359411726,0:1
+gcd:-50006834540638623993722097585899096403763,-5313099491095445109561808031972399857647,0:1
+gcd:80633786527554906657368596063180401716797,60423064130048311342811193512905633441,0:1
+gcd:7515721962363288712694440724080300383839,847957688242291310060264069657345589412622,0:1
+gcd:27726212382161724111674518621229053817654,844465139764626291093420179330707907,0:1
+gcd:-9817131728229141224738800156068771165515,5514447437310670168515402768125807553,0:7
+gcd:1101490427405231724327190816394483390794764,-1715150116840413365727028822839059671039358,0:2
+gcd:8714614705512806124985108394035361802445153,2277516152797095323407597912040972562623326,0:1
+gcd:-40241069975197162607015133362864260639182295,92350494843755720369837991386076354459722485,0:5
+gcd:94926798565178929705057494111757110129555,654944641739167114202854904453615515658738188,0:1
+gcd:265280847975099333384365084677641815670787,79159871617113409657206914064640126799879245,0:1
+gcd:116347226264838928071222153238640922289035,68573180747149861177662470447052670907671443,0:3
+gcd:1040609825768545533315151293676302487896884,-81323728160947963681253577857302080515,0:1
+gcd:995902591817252306534602024050315471330353754,5332558356879676808399004303967153306,0:2
+gcd:2001969035383918099033090062929650143669765948,4190101466247488888803682714062857957220,0:4
+gcd:520711239532941932960582838954921846930386522,-3853096594619017503346777573808512971,0:1
+gcd:60199373689261241651972446393273631317362,4966864098864732001544113870901038040,0:2
+gcd:945149245494027792287917914515672725163081263,8902933189066222709145663761457459365794,0:1
+gcd:42113632082774519107063284261972952560637120,550965713086089226514793739995356299364345,0:5
+gcd:699130208513509445029837360613055447835,1388996167624703080432361535173321299212301763,0:1
+gcd:2708864861499120155181972404884433662661130826,-9669434874243213781569557549324652869447,0:1
+gcd:-2663320619224926510783240759799877830,-9288856838720796348912703146202293649985994,0:2
+gcd:129339208558322679510730678747389994722,12274162664070343010820636150243461714,0:2
+gcd:7927826382521640149002540477963715500150746,169024688202278131082480706237325364215068990,0:6
+gcd:136906526225769628858637915191370345692692,539213183682016621647404279498623014328141,0:1
+gcd:30681142365936990868501835461428152495,-5027491490146180677917496407674117704,0:1
+gcd:-971981137022757867271162004648718096950546,4334305792750860480761829171455584581712,0:2
+gcd:578802014801938809246604894083179003839,4755521418153118560811649969223227339815203,0:1
+gcd:-85637729865865539531457719920611651870241486,974400175977421869121902925057819107693817,0:1
+gcd:-168964790731095355351979412256338118430524648,170138331609580398941494555432555720911428772,0:4
+gcd:790938498909251314495722876378080005340582079,5214770204816378474402582970231763702140978,0:3
+gcd:3097935765451813281781983641770574025792276,42609404056306319259222360596281494320705429231,0:1
+gcd:-98485087154927525975034391790808080098982,19775664577849930783360381707025488283978,0:2
+gcd:25900464334299058097279910365875929228,58255952834922520501042331752256379575,0:1
+gcd:79400185595521899110261406600117591081721314118,201740226840130845073877991057259510967,0:1
+gcd:981167299738316185980724229187020822277,8133607419206585086507618470282084549435045911,0:1
+gcd:81466412463591236560961446462245299836549126707,866192944729287017177690246604876328497,0:3
+gcd:6534998388738554052417315288897046254899165842,46609611771478693989087838979597248775,0:1
+gcd:948084924179221265735435784532032916982,31095014697784883179376411641933005719333,0:1
+gcd:2750322192684776089555518232723747026,16282797711115835147148988819960931175880625768,0:2
+gcd:-916832268194684002726682872945582785046,80175456371164380904577325966825746198033406059,0:1
+gcd:282231592138255672195189656428026230056,96673996679717919403145753072968455552546,0:2
+gcd:550580097204590201609373226827993784219420731,60517713169991893657707958780297059239491,0:1
+gcd:31526794192792048622410273704705620482050682,70537996848502378104686898733501905256490,0:2
+gcd:-923613180033278870451470473112995033306843225,62635452857298067541908563173475507759656054707,0:1
+gcd:469196843768624413897755875308788890398465291232,-15296277161521766221056511754171865009042943213,0:1
+gcd:2628065716223500508449356215564412668664236,713708318009199991674271791693482010536664884,0:4
+gcd:604553604369312265623368647573085123221252020,990982890678004704551740474471789043760433700479,0:1
+gcd:97586462652371414650265963064033775148721243,969409880443270812997088798402379069080662,0:1
+gcd:-765406874969209688613302257358735487317,687488505077706911028822098735771705823765697808,0:1
+gcd:85075624707999635862443444914978287825359,778046486301986342411165862027907781749497,0:1
+gcd:8227248806783006644129224253415431417213104067,-96883503079217553138854609209329008354340832050,0:1
+gcd:5027554007771258456873599804445876368468,9124875242153734630106913217321584664013715,0:1
+gcd:39245745484403729199058188063461104557810253,220067769421357576954105356315871937975114,0:1
+gcd:12265626358518464602956912462337886264411404165,-62808539324142868756473505816723401975937,0:1
+gcd:-12272356051659726939876917766506363796290,17656166644036956054896242696928896080969790493,0:1
+gcd:637223594292638303876168193085997138882431056,94504571343119776477559774058446419793557358444,0:4
+gcd:5571012420064356266635359647247635200655740,-21295217227115690481188602248443089551209070396,0:4
+gcd:5263843748978600609740419748581371970418448276216,5384845751134428162699702180820131424931650492254,0:2
+gcd:886573921242233631853410597832339291851986573,91564665302299543163193474542608720062467,0:1
+gcd:26539751625701457124278640373644598585396,2325338527842485879693477585982320189921160388553,0:1
+gcd:353508003643539157483752498296868928280378,10742495675871104458509832622060247315860,0:2
+gcd:-4734613561112436559828705330418786656799216681,5767402184612349878575526105980302509419976764,0:1
+gcd:82083010698635736174070971617820650592649198695,632174562080517027772509374721051956918078145045,0:15
+gcd:6173991144338684494350090118957116722781373,-738485502817232028305101940854863776286515,0:1
+gcd:-493513047233893983448577482415236886372545860,510358065314512191744416886029069217313650,0:90
+gcd:326654054139623246358073868314669601484091,-749350879522921841553744544029160051092161118734,0:1
+gcd:1402621524995633967650615579165227953957890517212,-4307813373241246419295301377872133252586,0:2
+gcd:429404746005804957738561594094664667352987,378882853314853204091011966904771925997210303,0:1
+gcd:332341701384724523211310134953299492552149033413,851224516641538736779656410258860743437969813415,0:1
+gcd:8093542646198882950722808884458624246299608906958,-36537804019444103265563497755234936603188804846,0:2
+gcd:22659814113479956892126670971189905912120035824,-7769923990496178313173088170032841760727,0:1
+gcd:-66431972193306385702365512934093484764859082,36581996652652744665199423002405565247156,0:14
+gcd:-888473800362239868616054745127669042022317,142999759078860850560633007783677610020527766,0:3
+gcd:5971942663513046812876552589351160577576206860,5155119487765712370432570496238254289228130147,0:1
+gcd:36328343589972083920724771391132711614346,626466814451530915421088090957480792070888316,0:22
+gcd:5293116409600323220539205506696278195160522774280,-89478075685508708042860880549625934136374,0:2
+gcd:79576614103508536656978289576589750212587261,852468870734033057111244131505440601392558836846,0:1
+gcd:8225066772418695359596812838151452668642167,32895491347247919323385073727832554930053,0:1
+gcd:6163942593967174125699747500635651388266851958125,35785148285967657728202559017385960485415693874,0:1
+gcd:2768453763718344802615194690925869147682838954,295289393573622382700104229276698254424111309,0:1
+gcd:543530772918490900335995207569824317804903920459,3816523263571207729432080444412751436592123632,0:1
+gcd:1092477340633785505464776554395206472561372312061,-80145274095041381989361699268630409045305877,0:1
+gcd:5221300639042222043517187865188827094681806,28716457589092549537459686031371792838180039728,0:6
+gcd:-468871256127286679587501070578429844680401783,7709908112767006788780052051800778651016113933,0:1
+gcd:60187668034435065431875732180204005950423,6575730301760601160210842777500398231559661,0:1
+gcd:85750547893356514086330287277441673045104762,79743140579005364490235586620393656130064,0:2
+gcd:4548581293372942515724176487253593549214930,4238661184062900689214356649238748109095650,0:10
+gcd:870890539340345883811990618518239041519315472381,-326492148393756245001717974027772662339968,0:1
+gcd:66987553698256227716875714961629477167428173612,90975165679807773385648454136069587671757554212,0:4
+gcd:55214217278725852504312036656428464058159216571,-38639629611220548541845337991516346077285504,0:1
+gcd:891217139364757949280558543150622433360536923866,30525879876993440244467275213072433106397646327,0:1
+gcd:-27569366446500582408824975793718887457276922405388,634666021153562229559368735956062829411322343,0:7
+gcd:502864235446447920785714797929749621810588808385,-661761137717295415776353819805381820532626437501375,0:5
+gcd:846540274257645306570757431119674434472851673,8616613565185012233547219046445322085886975,0:1
+gcd:-3309007371119113533010968742743901666008447,-54456422219293958622124113256532150483182055,0:1
+gcd:3808438337556464123872249539607274641406985997532,8958313515020597801994910602927304472155060964765,0:1
+gcd:3966980856734279836284487724100931405197679196,7991199588345191911654938564028578389298180118364,0:4
+gcd:65639444382189527381103754239686068124303248439,57344187472963481946737524023690750337279473205806,0:1
+gcd:415167227201847402226579925485934896345892,586575228633844519664975226407615633553394085108,0:4
+gcd:61619333876398280418219395631027787927517659829394,919912829682211281138193507951318719985265,0:1
+gcd:-868753784405826481862596863379498777711457154096,545880080147628730834302628389405153791727839,0:1
+gcd:9429941770445780812848883836626433106364646270218,13789105660912116612159357433833332620650429,0:1
+gcd:43608475425036256086742701999180132009804867174088,26543470249142438881834938827109299420258184885237,0:1
+gcd:57684506610503798187871631196324475714333617510881,471695506003883133237678946411955700467360,0:1
+gcd:45545031179301366913301053296868047362176530184,-91968879037454375774626628433933013352182139387,0:1
+gcd:-390021533721654785753654976920878586915091,77031076759836910371783959035306703983828680,0:3
+gcd:423541795082126371645621560317104281087986536944,8300998559716429411460238557591751288655280830676799,0:3
+gcd:-22004254439719621882091733525180851819037175217519,99335356922776842325949741933027888097618837,0:1
+gcd:-568617824838411255064542027229734991599889058339286,663945656360600870466864889023341282183894393751666,0:18
+gcd:79416546968775553905606945911160893343240489,57823044209535496953371020115352329847370545,0:9
+gcd:944931014689390846530685010237152128723129879051,9132010491010578008428313272813386452749469110941235,0:1
+gcd:10724730362623743957337791385603755532922863,72480373654893123070601266938859686093303005387292,0:1
+gcd:7713352208339235603081099644445084271357860,603624463205826416829628929324533190899935786563381,0:3
+gcd:-374652992235609318781751374140306949494493761487551,-8211631925711097443824357620157273567158306960781,0:1
+gcd:148033237001979427358794216800322662159772216729882,-2761071692676096788505988250569937615812882,0:2
+gcd:8799836897423935827052239970797993642793054321869,7294647877437509677171255169879966954414823484,0:1
+gcd:638050122120135743843926357476168630346968836720976,-521011870575614667006902791543319211035082259559038,0:2
+gcd:-17589569754541719055752617853886490778777621596833622,-757763302557856615098419826290170728613135917189,0:1
+gcd:-9391500830250456597029446286855934735787373415653,28432489383197015180933073382445953529667174,0:1
+gcd:597671128380217947385553643776956963479914986403,71727950226724858021016384499343090206442916,0:1
+gcd:220524861586728547654066186650842017022514113,99830670175055229565653522851124444573641171168883370,0:1
+gcd:-19711747183549435340491469077888147043386014913558,-1141914280129478236596364286858351511269528735,0:1
+gcd:-8382072953685010521572064715326232892979307367,8986558828596332338706049003428573784660004270,0:1
+gcd:8502152308582607794375019565844324676023491104593,10470050208175536662422671560468368371690332,0:1
+gcd:594601725521916181847167140525593251441576703983,963458725567603941710493681498226412426881800,0:1
+gcd:7141961266638507042734562322157608790427840009,-4549724799885066646710284284349071123364728193387,0:1
+gcd:-556279059738139499395948604306347001411150129841210,96265906951839620646630096006130967227739083772932,0:2
+gcd:9097507009232650355633416767082868346314279788737,-12952310876092402836370081770801404571317963729609,0:1
+gcd:4268792759888467657870170840963084681877952381149,45230992824683770972952637110379461673717665076497477,0:1
+gcd:-14981624589272129153412283534256311120144659052,-3422881033749335138988900898217088225431538419464,0:4
+gcd:1220927142068793741881867214403185329458765760024,30622524744504892825380221509502752145574896,0:8
+gcd:37912807996403481194979034824173466165481184382714959,-90878397829297201187948170371749592240094934625,0:1
+gcd:11421510093950565340830017403217629128966938056,2237414009357389011349863244579333296452235392013656,0:8
+gcd:192657988036570687555057992620686662908295387946910176,931495134488306662235768448970442482109561110,0:2
+gcd:3406199971289940059753501832956133340637816361746774,21717729758322757474808809344766892648120530501033,0:1
+gcd:6909979467876024377878180024452018966109074368033,842722308262405734840545048662350517397572773044955,0:1
+gcd:373077837411940479742523640303846004174658252010,174968689985940718533112057941120724001834591,0:1
+gcd:69447921082122879577796325457481062492384026062297,4859735149388070292660864796695584862286590039960,0:1
+gcd:97668956744134573191931364533568770116368809990432277,32650097939706033583832290610502297382443475332059,0:67
+gcd:-1130623853521736649164698623052358825973875071086,97117938880122601762963490311393663414262844,0:6
+gcd:5196766948376722446473792182397797566282488000645,612809465745222737408369151997835003504928829,0:1
+gcd:-260800009832764286426719551521843883719112476,-4764630548313512861236355180550436291099515479440,0:4
+gcd:446884272848375074930942162217302913946161786743256,21042882325490620038960351129083746002919260315816,0:8
+gcd:951599922613172445123982155673072679115439437787116,170174123089259663169419228763721448308107859122519941,0:1
+gcd:21383950451514823653827321489681070470148156716394,474049024111864801681311013604155672359293053819708610,0:2
+gcd:-470414357544256461922663993336752968654129573423633,9062081906619161788388889503790336651084511675587,0:1
+gcd:780091812513073375693179028189802313142318232500,3497278556984926411479728842600230671778387696053,0:1
+gcd:-1625948018138433921639232759767284243608022009577,842118879046315463699452834842435152085239651627,0:1
+gcd:25026283351500865895404594716390919370787136725638,193605742569640932386538365909397399503766353419,0:1
+gcd:4935030558829975380051283297334807636335988292915939464,826975811338155401386754284486847375740824437795565,0:1
+gcd:692976306506130156561485116659173381923120836885557,770158528298664593632506223863839610768381103479684,0:7
+gcd:79877139216893064041018839082816187503862428735,7269106113282857654532427145534479409503583394410641,0:1
+gcd:2539745404867281753796678186777103230989134057269,1232562503892732555700624680547460824244298064,0:1
+gcd:-12342369542383197426854745694214905543911988477283,900468407001638487525579769577535461149066925224901,0:1
+gcd:25508383419230789798346692675791795579961116333703,-3196912743165527117167038251788165837584914845275,0:1
+gcd:-1299528036083269250543034346520127753461072609198859,600594652353551219594047525595273354045086799190,0:3
+gcd:2299157394917175882710807816574923359426328448491205413,-72838172890838078649390158065336999589794176457016,0:1
+gcd:-7349901043851956691882158234459042155688766310737050452,38963935506607940884321914070762438994955796523516,0:4
+gcd:958387014018743982544025716556283287504010616036,1443504353635051762579994152447131178181054158,0:2
+gcd:246125390054194220242986809766512103907648232140291,244701030143825150512131468437935457382757506654,0:1
+gcd:-704660850546084071765145007935951186831012905395382833,5588984198927622386999113229239134076765551765835797488,0:1
+gcd:50682657377075501007405908966255159073041913889268,-221227972486061875975200412557047324616212536548,0:4
+gcd:-65153936048938235385603864221810574284616709045012408,2620409042204728497893539911547700871421142555353,0:1
+gcd:2124140486540339235997181873057458560557130144031198,6337118390151757487365380009696068490770095523526655,0:1
+gcd:70505951289040282645383932312380844925860919298,7547000534925894125969206219651626162975048702546706065,0:1
+gcd:-41539404414450841529694974131865311088044938789,-87120273993379326877611820290578462959192080166852098,0:3
+gcd:8365100924146743906263010309561180555381451232169,64464903694507870558459227754837948332608708108908133757,0:3
+gcd:-607028381550248615720149092346152462853976790359415563,-638047705393414341349283089715056902457142563666819,0:1
+gcd:9617834842433276206013447576300042077483363020815285,528061422615472570377974310003284316297281680382590494,0:11
+gcd:86576571095874523146332767288469633576872568596,28806568894922815646464384363885717260300665904363145435,0:1
+gcd:307009198563449723583109556832166934014223122475324,138726608616028283757694379054230076836833023549,0:1
+gcd:950446831200123302940271854492691726825599408858,-72101792770002156123347099210449392040964040896942,0:2
+gcd:981208671446974342191660850214776536471793694644642,42331603864003005956059961823201488180622810810249336717,0:1
+gcd:436034751789860072246023599184144455891992330310990,72833959249163120346712529298424162613591559886645,0:5
+gcd:90712859511805773491925085535825623597765615019643547,-747515802065477997196092836504038150570958532540685162,0:1
+gcd:397399782669545823592934194763075791833495372998,-59196779886291303828419299835113054892183602687860135035,0:1
+gcd:32400956990211215478801690694170683149459902468,-4583955972534683626923454093368608704790928252299,0:1
+gcd:987205647053507741802554416690401353287928887038,99876648283232575129630115679242229378848334523759990898,0:14
+gcd:613843278686603793281546390730144010908586402122774247,-5096436233192165525303465082471737429087562092805456864,0:1
+gcd:-976952961430926103170472845979881570029763109667,935178486322270132160329332160301439376977149568344208099,0:1
+gcd:-14766907052440196735362466027665124699631240785562617,56185497908476101017098165076418921931361374576783903,0:1
+gcd:8086945629611784458016532027184114429962417844094,915144274243273504802165174453120299631299876477769004475,0:1
+gcd:78088762763327100616786616097147636046671948600444,567540241084477255158834032762283528860020033647985833,0:3
+gcd:719986964333569855824423695658491299542433105292,-615276910378191482694097418592439439457014608822814,0:2
+gcd:45518095176552517046254533808850801860612235127698055,35562211507032265793347677842985571735031362689772443740,0:5
+gcd:9347651927739244225461883666785850681796998039204,-49878021756813856103391637115956958358002286487531,0:13
+gcd:-918018144578664428004161449615771398954961013294489,-670699097650597095681408528960639081653596263477957,0:1
+gcd:27390700201762535100035783959539579449610388231,-1589447744597072139866306928627083981945967837919031841,0:1
+gcd:2277199840598187516900058221233481999025368188568,9608219845154413235861538421470991851896216584568613,0:3
+gcd:-384224188940171310851587214747099156035618205974037811,-365155157346205326208918238248019306559191342503,0:1
+gcd:286446854858822908871115682474835177238732522628,-57158496101544373650727927690968913495792599007869,0:1
+gcd:-381089856197823678538852020226946248080829424869589,-3010621081997078653311455126099557341287585438919,0:1
+gcd:116824003493453841699155925492342665434851317689062,-23510392931055495213857939210838689217666922526899551035,0:1
+gcd:580076669302513896163920831671903321718154827187111,57642903862300589084685292813271561699366462736142,0:1
+gcd:5760449410973032312996903274730533429280588604119,54924391723347076414566698417788233810196808558058264,0:9
+gcd:5657781195595763129830083459999757852112323789572340704,692061618840647789470644193517118113508111433346167161307,0:1
+gcd:-411686824144764716061907353842274549877341843077020461,64596348790121485579427789661619008385819947602752810318,0:1
+gcd:632256394728894097701649213009572878755743290206395156077,831219707790000649838963373434914934485492976701321111,0:1
+gcd:1670481530219772906326138470230000469885289884882422,468290338328174403769157221534943442214405575737600,0:2
+gcd:-5940255960924729598832299636442321100271324046668226,57672031765846684220194592702663453624777841860734299817,0:1
+gcd:1070320750308710183653165839089007570013512879851785,1457798154372592051774290334996812066679847800239,0:1
+gcd:4878833860261622243309660185570248437064542060170266009303,2713399212910344466363698742990679778889654409261764714,0:1
+gcd:-153727669883775746511963322850970227020812560900211022,967696702028565741720227898697068313091723784217356354,0:14
+gcd:-540592613733911579302709730020084890208422708295834255759,1487237786400760689794761062671094249214728767786149324317,0:1
+gcd:6147134348286513705872901614503400707429078163757093529,477008107151085089956583728568535862114663515203848020888,0:13
+gcd:7614680849639684551334463800131196276563566036683927,25187069984138015151555984154271413618496480687947851,0:1
+gcd:34751974072174908316243318351151710272413759348773,8306602488518142539700335965542308143538343391985,0:1
diff --git a/polly/lib/External/isl/imath/tests/gmp-compat-test/.gitignore b/polly/lib/External/isl/imath/tests/gmp-compat-test/.gitignore
new file mode 100644 (file)
index 0000000..64a46a9
--- /dev/null
@@ -0,0 +1,10 @@
+*.o
+*.so
+*.pyc
+#for now...
+test.list
+gmp_test.c
+imath_test.c
+wrappers.py
+*.tests
+_T*
diff --git a/polly/lib/External/isl/imath/tests/gmp-compat-test/Makefile b/polly/lib/External/isl/imath/tests/gmp-compat-test/Makefile
new file mode 100644 (file)
index 0000000..8d44210
--- /dev/null
@@ -0,0 +1,27 @@
+CFLAGS+=-fPIC -I$(IMATH_DIR)
+IMATH_DIR=../..
+
+runtest: imath_test.so gmp_test.so wrappers.py random.tests
+       ./runtest $(TESTS)
+
+gmp_test.c: gmp_custom_test.c genctest.py gmpapi.py
+       ./genctest.py gmp > $@
+
+imath_test.c: imath_custom_test.c genctest.py gmpapi.py
+       ./genctest.py imath > $@
+
+gmp_test.so: gmp_test.o
+       $(CC) $(CFLAGS) -shared -o $@ $^ -lgmp
+
+imath_test.so: imath_test.o
+       $(CC) $(CFLAGS) -shared -L$(IMATH_DIR) -o $@ $^ -limath
+
+wrappers.py: genpytest.py gmpapi.py
+       ./genpytest.py > $@
+
+random.tests: gendata.py
+       ./gendata.py > $@
+
+clean:
+       rm -f a.out *.so *.o gmp_test.c imath_test.c wrappers.py *.pyc
+       rm -rf __pycache__
diff --git a/polly/lib/External/isl/imath/tests/gmp-compat-test/README b/polly/lib/External/isl/imath/tests/gmp-compat-test/README
new file mode 100644 (file)
index 0000000..b032825
--- /dev/null
@@ -0,0 +1,106 @@
+Overview
+==================================================
+This directory contains a random test generator for the gmp
+compatibility layer of imath. The tests cases are randomly generated
+and run with both gmp and imath. The results are compared and any
+mismatching results are flagged as failures.
+
+You should not see any failures when running these tests.
+
+Requirements
+==================================================
+These tests use the python ffi to run the imath and gmp functions. To
+run these tests you will need the following items
+
+  * libimath.so
+  * python 3
+  * gmp library and header files
+
+
+Running
+==================================================
+All the tests cases will be generated and run automatically by the
+makefile. First, make sure you have built libimath.so in the top level
+imath directory.
+
+Use the following command to generate and run the tests
+
+    $ make TESTS=random.tests
+
+This should generate all the needed wrapper files along with the
+randomized unit tests. By default the unit tests are output to the
+random.tests file. The tests can be run by hand using the following
+command line
+
+    $ ./runtest random.tests
+
+You can also write your own unit tests and run them by passing the
+file name to the runtest script.
+
+
+Testing Methodology
+==================================================
+The goal of our testing is to ensure that we are compatible with the
+gmp api. To test our compatibility layer we generate inputs for each
+gmp api that we wrap and then call the gmp version of the api and
+compare the results to the imath version. The results should be
+identical. Any output mismatch is considered an error.
+
+
+Testcase Generation
+--------------------
+The test data generation is inspired by the QuickCheck testing
+methodolgy. We want to test both random data and important values such
+as 0,1,-1, etc. We generate input data based on the type of the input
+parameter. Most apis take either an mpz_t or a signed/unsigned long.
+
+For each parameter of the given type we generate the following values:
+
+  mpz_t:  0,1,-1, all min/max values, all min/max values +/- 1
+          small  numbers: 1-4    digits
+          medium numbers: 5-20   digits
+          large  numbers: 20-100 digits
+  long :  0,1,-1 short,int,long min/max values
+          random long values
+  unsigned long: 0,1,-1, unsigned short, unsigned int, unsigned long min/max values
+                 random unsigned long values
+
+The generated data for each paramater is combined to produce a series
+of inputs to the function. The input data format looks like:
+
+mpz_add|0,1,2
+
+Which represents the call mpz_add(0, 1, 2). Additional test cases can be written by hand.
+
+Test Structure
+--------------------
+The tests are run using the python ffi (the ctypes module). We have a
+single description of each api that is used to generate the following:
+
+  * intput data
+  * c function wrapper to call the libgmp or libimath function
+  * python wrapper to call both libgmp and libimath wrappers and compare results
+
+The test_gmp.so and test_imath.so libraries are loaded at runtime by
+the python runner scrip and used to run each test input and compare
+the results.
+
+The code generation pattern looks something like this:
+
+genctest.py  ~~generates~~> gmp_test.c   <--includes--  gmp_custom_test.c
+gmp_test.c   ~~generates~~> gmp_tests.so <--links--     libgmp.so
+genpytest.py ~~generates~~> wrappers.py  <--calls--     gmp_test.so
+gmp_test.so      --loads--> runtest.py   <--includes--  wrappers.py
+                               ^
+                               |
+                             reads
+                               |
+gendata.py  ~~generates~~> random.tests
+
+Adding tests for new APIs
+==================================================
+New apis can be tested by modifying the gmpapy.py file. This file
+contains a list of all apis that will be tested. Adding an api to the
+apis list will cause code and input data to be generated for that api.
+Rerunning make will generate the test data and code to run the test.
+
diff --git a/polly/lib/External/isl/imath/tests/gmp-compat-test/genctest.py b/polly/lib/External/isl/imath/tests/gmp-compat-test/genctest.py
new file mode 100644 (file)
index 0000000..d2771a4
--- /dev/null
@@ -0,0 +1,287 @@
+#!/usr/bin/env python
+import sys
+import gmpapi
+from gmpapi import void
+from gmpapi import ilong
+from gmpapi import iint
+from gmpapi import ulong
+from gmpapi import mpz_t
+from gmpapi import size_t
+from gmpapi import charp
+from gmpapi import mpq_t
+
+
+class APITest(object):
+    def __init__(self, gmpapi):
+        self.api = gmpapi
+
+    def test_prefix(self):
+        return "test"
+
+    def test_param_name(self, ty, i):
+        if ty == mpz_t:
+            pname = "p_zs"
+        elif ty == ilong:
+            pname = "p_si"
+        elif ty == ulong:
+            pname = "p_ui"
+        elif ty == iint:
+            pname = "p_i"
+        elif ty == charp:
+            pname = "p_cs"
+        elif ty == mpq_t:
+            pname = "p_qs"
+        else:
+            raise RuntimeError("Unknown param type: " + str(ty))
+        return pname + str(i)
+
+    def test_param_type(self, ty):
+        if ty == mpz_t or ty == mpq_t:
+            pty_name = "char *"
+        else:
+            pty_name = str(ty)
+        return pty_name
+
+    def test_var_name(self, ty, i):
+        if ty == mpz_t:
+            vname = "v_z"
+        elif ty == ilong:
+            vname = "v_si"
+        elif ty == ulong:
+            vname = "v_ui"
+        elif ty == iint:
+            vname = "v_i"
+        elif ty == size_t:
+            vname = "v_st"
+        elif ty == charp:
+            vname = "v_cs"
+        elif ty == mpq_t:
+            vname = "v_q"
+        else:
+            raise RuntimeError("Unknown param type: " + str(ty))
+        return vname + str(i)
+
+    def test_var_type(self, ty):
+        if ty == mpz_t:
+            return self.mpz_type()
+        elif ty == mpq_t:
+            return self.mpq_type()
+        else:
+            return str(ty)
+
+    def init_var_from_param(self, ty, var, param):
+        code = "\t"
+        if ty == mpz_t or ty == mpq_t:
+            code += self.api_call_prefix(ty) + "init(" + var + ");\n\t"
+            code += self.api_call_prefix(ty) + "set_str(" + ",".join(
+                [var, param, "10"]) + ")"
+            if ty == mpq_t:
+                code += ";\n\t"
+                code += self.api_call_prefix(ty) + "canonicalize(" + var + ")"
+        else:
+            code += var + "=" + param
+        return code
+
+    def init_vars_from_params(self):
+        code = ""
+        for (i, p) in enumerate(self.api.params):
+            param = self.test_param_name(p, i)
+            code += "\t"
+            code += self.test_var_type(p) + " "
+            var = self.test_var_name(p, i)
+            code += var + ";\n"
+            code += self.init_var_from_param(p, var, param) + ";\n\n"
+        return code
+
+    def make_api_call(self):
+        bare_name = self.api.name.replace("mpz_", "", 1).replace("mpq_", "", 1)
+        call_params = [
+            self.test_var_name(p, i) for (i, p) in enumerate(self.api.params)
+        ]
+        ret = "\t"
+        ret_ty = self.api.ret_ty
+        if ret_ty != void:
+            ret += self.test_var_type(ret_ty) + " " + self.test_var_name(
+                ret_ty, "_ret") + " = "
+        # call mpq or mpz function
+        if self.api.name.startswith("mpz_"):
+            prefix = self.api_call_prefix(mpz_t)
+        else:
+            prefix = self.api_call_prefix(mpq_t)
+        return ret + prefix + bare_name + "(" + ",".join(call_params) + ");\n"
+
+    def normalize_cmp(self, ty):
+        cmpval = self.test_var_name(ty, "_ret")
+        code = ""
+        code += """
+       if ({var} > 0)
+         {var} = 1;
+       else if ({var} < 0)
+         {var} = -1;\n\t
+""".format(var=cmpval)
+        return code
+
+    def extract_result(self, ty, pos):
+        code = ""
+        if ty == mpz_t or ty == mpq_t:
+            var = self.test_var_name(ty, pos)
+            code += self.api_call_prefix(
+                ty) + "get_str(out+offset, 10," + var + ");\n"
+            code += "\toffset = offset + strlen(out); "
+            code += "out[offset] = ' '; out[offset+1] = 0; offset += 1;"
+        else:
+            assert pos == -1, "expected a return value, not a param value"
+            if ty == ilong:
+                var = self.test_var_name(ty, "_ret")
+                code += 'offset = sprintf(out+offset, " %ld ", ' + var + ');'
+            elif ty == ulong:
+                var = self.test_var_name(ty, "_ret")
+                code += 'offset = sprintf(out+offset, " %lu ", ' + var + ');'
+            elif ty == iint:
+                var = self.test_var_name(ty, "_ret")
+                code += 'offset = sprintf(out+offset, " %d ", ' + var + ');'
+            elif ty == size_t:
+                var = self.test_var_name(ty, "_ret")
+                code += 'offset = sprintf(out+offset, " %zu ", ' + var + ');'
+            elif ty == charp:
+                var = self.test_var_name(ty, "_ret")
+                code += 'offset = sprintf(out+offset, " %s ", ' + var + ');'
+            else:
+                raise RuntimeError("Unknown param type: " + str(ty))
+        return code
+
+    def extract_results(self):
+        ret_ty = self.api.ret_ty
+        code = "\tint offset = 0;\n\t"
+
+        # normalize cmp return values
+        if ret_ty == iint and "cmp" in self.api.name:
+            code += self.normalize_cmp(ret_ty)
+
+        # call canonicalize for mpq_set_ui
+        if self.api.name == "mpq_set_ui":
+            code += self.api_call_prefix(
+                mpq_t) + "canonicalize(" + self.test_var_name(mpq_t,
+                                                              0) + ");\n\t"
+
+        # get return value
+        if ret_ty != void:
+            code += self.extract_result(ret_ty, -1) + "\n"
+
+        # get out param values
+        for pos in self.api.out_params:
+            code += "\t"
+            code += self.extract_result(self.api.params[pos], pos) + "\n"
+
+        return code + "\n"
+
+    def clear_local_vars(self):
+        code = ""
+        for (i, p) in enumerate(self.api.params):
+            if p == mpz_t or p == mpq_t:
+                var = self.test_var_name(p, i)
+                code += "\t" + self.api_call_prefix(
+                    p) + "clear(" + var + ");\n"
+        return code
+
+    def print_test_code(self, outf):
+        api = self.api
+        params = [
+            self.test_param_type(p) + " " + self.test_param_name(p, i)
+            for (i, p) in enumerate(api.params)
+        ]
+        code = "void {}_{}(char *out, {})".format(self.test_prefix(), api.name,
+                                                  ", ".join(params))
+        code += "{\n"
+        code += self.init_vars_from_params()
+        code += self.make_api_call()
+        code += self.extract_results()
+        code += self.clear_local_vars()
+        code += "}\n"
+        outf.write(code)
+        outf.write("\n")
+
+
+class GMPTest(APITest):
+    def __init__(self, gmpapi):
+        super(GMPTest, self).__init__(gmpapi)
+
+    def api_call_prefix(self, kind):
+        if kind == mpz_t:
+            return "mpz_"
+        elif kind == mpq_t:
+            return "mpq_"
+        else:
+            raise RuntimeError("Unknown call kind: " + str(kind))
+
+    def mpz_type(self):
+        return "mpz_t"
+
+    def mpq_type(self):
+        return "mpq_t"
+
+
+class ImathTest(APITest):
+    def __init__(self, gmpapi):
+        super(ImathTest, self).__init__(gmpapi)
+
+    def api_call_prefix(self, kind):
+        if kind == mpz_t:
+            return "impz_"
+        elif kind == mpq_t:
+            return "impq_"
+        else:
+            raise RuntimeError("Unknown call kind: " + str(kind))
+
+    def mpz_type(self):
+        return "impz_t"
+
+    def mpq_type(self):
+        return "impq_t"
+
+
+def print_gmp_header(outf):
+    code = ""
+    code += "#include <gmp.h>\n"
+    code += "#include <stdio.h>\n"
+    code += "#include <string.h>\n"
+    code += '#include "gmp_custom_test.c"\n'
+    outf.write(code)
+
+
+def print_imath_header(outf):
+    code = ""
+    code += "#include <gmp_compat.h>\n"
+    code += "#include <stdio.h>\n"
+    code += "#include <string.h>\n"
+    code += "typedef mpz_t impz_t[1];\n"
+    code += "typedef mpq_t impq_t[1];\n"
+    code += '#include "imath_custom_test.c"\n'
+    outf.write(code)
+
+
+def print_gmp_tests(outf):
+    print_gmp_header(outf)
+    for api in gmpapi.apis:
+        if not api.custom_test:
+            GMPTest(api).print_test_code(outf)
+
+
+def print_imath_tests(outf):
+    print_imath_header(outf)
+    for api in gmpapi.apis:
+        if not api.custom_test:
+            ImathTest(api).print_test_code(outf)
+
+
+def main():
+    test = sys.argv[1]
+
+    if test == "gmp":
+        print_gmp_tests(sys.stdout)
+    elif test == "imath":
+        print_imath_tests(sys.stdout)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/polly/lib/External/isl/imath/tests/gmp-compat-test/gendata.py b/polly/lib/External/isl/imath/tests/gmp-compat-test/gendata.py
new file mode 100644 (file)
index 0000000..c1422dd
--- /dev/null
@@ -0,0 +1,392 @@
+#!/usr/bin/env python
+import random
+import gmpapi
+
+MAX_SLONG = "9223372036854775807"
+MIN_SLONG = "-9223372036854775808"
+MAX_ULONG = "18446744073709551615"
+MAX_SINT = "2147483647"
+MIN_SINT = "-2147483648"
+MAX_UINT = "4294967295"
+MAX_SSHORT = "32767"
+MIN_SSHORT = "-32768"
+MAX_USHORT = "65535"
+
+
+def plus1(x):
+    return str(int(x) + 1)
+
+
+def minus1(x):
+    return str(int(x) - 1)
+
+
+def apply(fun, lst):
+    return list(map(str, map(fun, lst)))
+
+
+mzero_one = ["-0", "-1"]
+zero_one = ["0", "1"]
+mm_slong = [MAX_SLONG, MIN_SLONG]
+mm_slong1 = [minus1(MAX_SLONG), plus1(MIN_SLONG)]
+mm_ulong = [MAX_ULONG]
+mm_ulong1 = [minus1(MAX_ULONG)]
+mm_sint = [MAX_SINT, MIN_SINT]
+mm_sint1 = [minus1(MAX_SINT), plus1(MIN_SINT)]
+mm_uint = [MAX_UINT]
+mm_uint1 = [minus1(MAX_UINT)]
+mm_sshort = [MAX_SSHORT, MIN_SSHORT]
+mm_sshort1 = [minus1(MAX_SSHORT), plus1(MIN_SSHORT)]
+mm_ushort = [MAX_USHORT]
+mm_ushort1 = [minus1(MAX_USHORT)]
+mm_all = mm_slong + mm_ulong + mm_sint + mm_uint + mm_sshort + mm_ushort
+zero_one_all = mzero_one + zero_one
+
+mpz_std_list = zero_one_all + mm_all + apply(plus1, mm_all) + apply(
+    minus1, mm_all)
+si_std_list = zero_one + mm_slong + mm_sint + mm_sshort + mm_slong1 + mm_sint1 + mm_sshort1
+ui_std_list = zero_one + mm_ulong + mm_uint + mm_ushort + mm_ulong1 + mm_uint1 + mm_ushort1
+
+
+def gen_random_mpz(mindigits=1, maxdigits=100, allowneg=True):
+    sign = random.choice(["", "-"])
+    if not allowneg:
+        sign = ""
+    return sign + gen_digits(random.randint(mindigits, maxdigits))
+
+
+def gen_random_si():
+    si = gen_random_mpz(mindigits=1, maxdigits=19)
+    while int(si) > int(MAX_SLONG) or int(si) < int(MIN_SLONG):
+        si = gen_random_mpz(mindigits=1, maxdigits=19)
+    return si
+
+
+def gen_random_ui():
+    ui = gen_random_mpz(mindigits=1, maxdigits=20, allowneg=False)
+    while int(ui) > int(MAX_ULONG):
+        ui = gen_random_mpz(mindigits=1, maxdigits=20, allowneg=False)
+    return ui
+
+
+def gen_digits(length):
+    if length == 1:
+        i = random.randint(1, 9)
+    else:
+        digits = [random.randint(1, 9)
+                  ] + [random.randint(0, 9) for x in range(length - 1)]
+        digits = map(str, digits)
+        i = "".join(digits)
+    return str(i)
+
+
+def gen_mpzs(mindigits=1, maxdigits=100, count=10):
+    return [
+        gen_random_mpz(mindigits=mindigits, maxdigits=maxdigits)
+        for x in range(count)
+    ]
+
+
+default_count = 10
+
+
+def gen_sis(count=default_count):
+    return [gen_random_si() for x in range(count)]
+
+
+def gen_uis(count=default_count):
+    return [gen_random_ui() for x in range(count)]
+
+
+def gen_small_mpzs(count=default_count):
+    return gen_mpzs(mindigits=1, maxdigits=4, count=count)
+
+
+def is_small_mpz(s):
+    return len(s) >= 1 and len(s) <= 4
+
+
+def gen_medium_mpzs(count=default_count):
+    return gen_mpzs(mindigits=5, maxdigits=20, count=count)
+
+
+def is_medium_mpz(s):
+    return len(s) >= 5 and len(s) <= 20
+
+
+def gen_large_mpzs(count=default_count):
+    return gen_mpzs(mindigits=21, maxdigits=100, count=count)
+
+
+def is_large_mpz(s):
+    return len(s) >= 21
+
+
+def gen_mpz_spread(count=default_count):
+    return gen_small_mpzs(count) + gen_medium_mpzs(count) + gen_large_mpzs(
+        count)
+
+
+def gen_mpz_args(count=default_count):
+    return mpz_std_list + gen_mpz_spread(count)
+
+
+def gen_mpq_args(count=4):
+    nums = zero_one + gen_mpz_spread(count)
+    dens = ["1"] + gen_mpz_spread(count)
+    return [n + "/" + d for n in nums for d in dens if int(d) != 0]
+
+
+def gen_si_args():
+    return si_std_list + gen_sis()
+
+
+def gen_ui_args():
+    return ui_std_list + gen_uis()
+
+
+def gen_list_for_type(t, is_write_only):
+    if (t == gmpapi.mpz_t or t == gmpapi.mpq_t) and is_write_only:
+        return ["0"]
+    elif t == gmpapi.mpz_t:
+        return gen_mpz_args()
+    elif t == gmpapi.ilong:
+        return gen_si_args()
+    elif t == gmpapi.ulong:
+        return gen_ui_args()
+    elif t == gmpapi.mpq_t:
+        return gen_mpq_args()
+    else:
+        raise RuntimeError("Unknown type: {}".format(t))
+
+
+def gen_args(api):
+    if api.custom_test or api.name in custom:
+        return custom[api.name](api)
+    types = api.params
+    if len(types) == 1:
+        return [[a] for a in gen_list_for_type(types[0], api.is_write_only(0))]
+    elif len(types) == 2:
+        t1 = gen_list_for_type(types[0], api.is_write_only(0))
+        t2 = gen_list_for_type(types[1], api.is_write_only(1))
+        return [(a, b) for a in t1 for b in t2]
+    elif len(types) == 3:
+        t1 = gen_list_for_type(types[0], api.is_write_only(0))
+        t2 = gen_list_for_type(types[1], api.is_write_only(1))
+        t3 = gen_list_for_type(types[2], api.is_write_only(2))
+        return [(a, b, c) for a in t1 for b in t2 for c in t3]
+    elif len(types) == 4:
+        t1 = gen_list_for_type(types[0], api.is_write_only(0))
+        t2 = gen_list_for_type(types[1], api.is_write_only(1))
+        t3 = gen_list_for_type(types[2], api.is_write_only(2))
+        t4 = gen_list_for_type(types[3], api.is_write_only(3))
+        return [(a, b, c, d) for a in t1 for b in t2 for c in t3 for d in t4]
+    else:
+        raise RuntimeError("Too many args: {}".format(len(types)))
+
+
+###################################################################
+#
+# Fixup and massage random data for better test coverage
+#
+###################################################################
+def mul_mpzs(a, b):
+    return str(int(a) * int(b))
+
+
+def mpz_divexact_data(args):
+    # set n = n * d
+    divisible = mul_mpzs(args[1], (args[2]))
+    return [(args[0], divisible, args[2])]
+
+
+def mpz_divisible_p_data(args):
+    (n, d) = get_div_data(args[0], args[1], rate=1.0)
+    return [(n, d), (args[0], args[1])]
+
+
+def mpz_div3_data(args):
+    q = args[0]
+    (n, d) = get_div_data(args[1], args[2], rate=1.0)
+    return [(q, n, d), (q, args[1], args[2])]
+
+
+def mpz_pow_data(args, alwaysallowbase1=True):
+    base = int(args[1])
+    exp = int(args[2])
+    # allow special numbers
+    if base == 0 or exp == 0 or exp == 1:
+        return [args]
+    if base == 1 and alwaysallowbase1:
+        return [args]
+
+    # disallow too big numbers
+    if base > 1000 or base < -1000:
+        base = gen_random_mpz(maxdigits=3)
+    if exp > 1000:
+        exp = gen_random_mpz(maxdigits=3, allowneg=False)
+
+    return [(args[0], str(base), str(exp))]
+
+
+def mpz_mul_2exp_data(args):
+    return mpz_pow_data(args, alwaysallowbase1=False)
+
+
+def mpz_gcd_data(args):
+    r = args[0]
+    a = args[1]
+    b = args[2]
+    s_ = gen_small_mpzs(1)[0]
+    m_ = gen_medium_mpzs(1)[0]
+    l_ = gen_large_mpzs(1)[0]
+
+    return [
+        (r, a, b),
+        (r, mul_mpzs(a, b), b),
+        (r, mul_mpzs(a, s_), mul_mpzs(b, s_)),
+        (r, mul_mpzs(a, m_), mul_mpzs(b, m_)),
+        (r, mul_mpzs(a, l_), mul_mpzs(b, l_)),
+    ]
+
+
+def mpz_export_data(api):
+    rop = ["0"]
+    countp = ["0"]
+    order = ["-1", "1"]
+    size = ["1", "2", "4", "8"]
+    endian = ["0"]
+    nails = ["0"]
+    ops = gen_mpz_args(1000) + gen_mpzs(
+        count=100, mindigits=100, maxdigits=1000)
+
+    args = []
+    for r in rop:
+        for c in countp:
+            for o in order:
+                for s in size:
+                    for e in endian:
+                        for n in nails:
+                            for op in ops:
+                                args.append((r, c, o, s, e, n, op))
+    return args
+
+
+def mpz_sizeinbase_data(api):
+    bases = list(map(str, range(2, 37)))
+    ops = gen_mpz_args(1000) + gen_mpzs(
+        count=1000, mindigits=100, maxdigits=2000)
+    return [(op, b) for op in ops for b in bases]
+
+
+def get_str_data(ty):
+    bases = list(range(2, 37)) + list(range(-2, -37, -1))
+    bases = list(map(str, bases))
+    if ty == gmpapi.mpz_t:
+        ops = gen_mpz_args(1000)
+    elif ty == gmpapi.mpq_t:
+        ops = gen_mpq_args(20)
+    else:
+        raise RuntimeError("Unsupported get_str type: " + str(ty))
+    return [("NULL", b, op) for b in bases for op in ops]
+
+
+def mpz_get_str_data(api):
+    return get_str_data(gmpapi.mpz_t)
+
+
+def mpq_get_str_data(api):
+    return get_str_data(gmpapi.mpq_t)
+
+
+def mpq_set_str_data(api):
+    args = gen_mpq_args(20) + gen_mpz_args()
+    # zero does not match results exactly because the
+    # results are not canonicalized first. We choose to
+    # exclude zero from test results. The other option is
+    # to canonicalize the results after parsing the strings.
+    # Instead we exclude zero so that we can independently
+    # test correctness of set_str and canonicalization
+    nonzero = []
+    for arg in args:
+        if "/" in arg:
+            pos = arg.find("/")
+            if int(arg[:pos]) != 0:
+                nonzero.append(arg)
+        elif int(arg) != 0:
+            nonzero.append(arg)
+
+    return [("0", q, "10") for q in nonzero]
+
+
+def get_div_data(n, d, rate=0.2):
+    """Generate some inputs that are perfectly divisible"""
+    if random.random() < rate:
+        n = mul_mpzs(n, d)
+    return (n, d)
+
+
+def allow(name, args):
+    if name not in blacklists:
+        return True
+    filters = blacklists[name]
+    for (pos, disallow) in filters:
+        if args[pos] in disallow:
+            return False
+    return True
+
+
+def fixup_args(name, args):
+    if name not in fixups:
+        return [args]
+    return fixups[name](args)
+
+
+# list of values to be excluded for various api calls
+# list format is (pos, [list of values to exclude])
+blacklists = {
+    "mpz_cdiv_q": [(2, ["0", "-0"])],
+    "mpz_fdiv_q": [(2, ["0", "-0"])],
+    "mpz_fdiv_r": [(2, ["0", "-0"])],
+    "mpz_tdiv_q": [(2, ["0", "-0"])],
+    "mpz_fdiv_q_ui": [(2, ["0", "-0"])],
+    "mpz_divexact": [(2, ["0", "-0"])],
+    "mpz_divisible_p": [(1, ["0", "-0"])],
+    "mpz_divexact_ui": [(2, ["0", "-0"])],
+    "mpq_set_ui": [(2, ["0", "-0"])],
+}
+
+fixups = {
+    "mpz_divexact": mpz_divexact_data,
+    "mpz_divisible_p": mpz_divisible_p_data,
+    "mpz_cdiv_q": mpz_div3_data,
+    "mpz_fdiv_q": mpz_div3_data,
+    "mpz_fdiv_r": mpz_div3_data,
+    "mpz_tdiv_q": mpz_div3_data,
+    "mpz_fdiv_q_ui": mpz_div3_data,
+    "mpz_divexact_ui": mpz_divexact_data,
+    "mpz_pow_ui": mpz_pow_data,
+    "mpz_gcd": mpz_gcd_data,
+    "mpz_lcm": mpz_gcd_data,
+    "mpz_mul_2exp": mpz_mul_2exp_data,
+}
+
+custom = {
+    "mpz_export": mpz_export_data,
+    "mpz_import": mpz_export_data,
+    "mpz_sizeinbase": mpz_sizeinbase_data,
+    "mpz_get_str": mpz_get_str_data,
+    "mpq_set_str": mpq_set_str_data,
+    "mpq_get_str": mpq_get_str_data,
+}
+
+if __name__ == "__main__":
+    #apis = [gmpapi.get_api("mpq_set_str"),]
+    apis = gmpapi.apis
+    for api in apis:
+        tests = gen_args(api)
+        for args in tests:
+            expanded_args = fixup_args(api.name, args)
+            for args in expanded_args:
+                if allow(api.name, args):
+                    print("{}|{}".format(api.name, ",".join(args)))
diff --git a/polly/lib/External/isl/imath/tests/gmp-compat-test/genpytest.py b/polly/lib/External/isl/imath/tests/gmp-compat-test/genpytest.py
new file mode 100644 (file)
index 0000000..1f3d787
--- /dev/null
@@ -0,0 +1,137 @@
+#!/usr/bin/env python
+
+import gmpapi
+import sys
+
+
+def print_header(outf):
+    outf.write("""
+#AUTOGENERATED FILE
+import ctypes
+import os
+import sys
+import binascii
+
+verbose = False
+fork    = False
+  """)
+
+
+def print_cmp(outf):
+    outf.write("""
+def passt(line, name, a_s, b_s):
+    if verbose:
+      print("PASS: {}@{} {} == {}".format(line, name, a_s, b_s))
+    return True
+
+def fail(line, name, a_s, b_s):
+    print("FAIL: {}@{} {} != {}".format(line, name, a_s,b_s))
+    return False
+
+def cstr_eq(line, name, a, b):
+  a_s = a.value.decode("utf-8")
+  b_s = b.value.decode("utf-8")
+
+  if a_s == b_s:
+    return passt(line, name, a_s, b_s)
+  else:
+    return fail(line, name, a_s, b_s)
+
+def bytes_eq(line, name, a, b):
+  if a == b:
+    return passt(line, name, a, b)
+  else:
+    return fail(line, name, a, b)
+
+def run_test(test, line, name, gmp_test_so, imath_test_so, *args):
+  if fork:
+    childpid = os.fork()
+  else:
+    childpid = 0
+  if childpid == 0:
+    eq = test(line, name, gmp_test_so, imath_test_so, *args)
+    if fork:
+      sys.exit(eq != True)
+    else:
+      return eq
+  else:
+    (pid, status) = os.waitpid(childpid, 0)
+    return status == 0
+
+# custom tests
+def test_mpz_export(line, name, gmp_test_so, imath_test_so, *args):
+  # do not use first two args from the test. need to create our own pointers
+  used_args = args[2:]
+  gbuf  = ctypes.create_string_buffer(b'0xdeadbeef'*1024);
+  gsize = ctypes.c_size_t()
+  gout  = ctypes.c_void_p()
+  ibuf  = ctypes.create_string_buffer(b'0xdeadbeef'*1024);
+  isize = ctypes.c_size_t()
+  iout  = ctypes.c_void_p()
+  word_size = args[3].value
+
+  #Test with a NULL pointer
+  gmp_test_so.test_mpz_export(ctypes.byref(gout), None, ctypes.byref(gsize), *used_args)
+  imath_test_so.test_mpz_export(ctypes.byref(iout), None, ctypes.byref(isize), *used_args)
+  gb = ctypes.string_at(gout.value, gsize.value * word_size)
+  ib = ctypes.string_at(iout.value, isize.value * word_size)
+  if not bytes_eq(line, name, gb, ib):
+    return False
+
+  #Test with a provided buffer
+  gmp_test_so.test_mpz_export(ctypes.byref(gout), gbuf, ctypes.byref(gsize), *used_args)
+  imath_test_so.test_mpz_export(ctypes.byref(iout), ibuf, ctypes.byref(isize), *used_args)
+  #print("G:gbuf", gbuf.raw[:gsize.value * word_size])
+  #print("I:ibuf", ibuf.raw[:isize.value * word_size])
+  gb = ctypes.string_at(gout.value, gsize.value * word_size)
+  ib = ctypes.string_at(iout.value, isize.value * word_size)
+  if not bytes_eq(line, name, gb, ib):
+    return False
+
+  return True
+
+def test_mpz_import(line, name, gmp_test_so, imath_test_so, *args):
+  # do not use first two args from the test. need to create our own pointers
+  gout  = ctypes.create_string_buffer(b'0xdeadbeef'*1024);
+  iout  = ctypes.create_string_buffer(b'0xdeadbeef'*1024);
+
+  gmp_test_so.test_mpz_import(gout, *args)
+  imath_test_so.test_mpz_import(iout, *args)
+  #print(gout.raw[:70])
+  #print(iout.raw[:70])
+  return cstr_eq(line, name, gout, iout)
+
+""")
+
+
+def print_api(name, outf):
+    outf.write("""
+def test_{0}(line, name, gmp_test_so, imath_test_so, *args):
+  gout = ctypes.create_string_buffer(1024*4);
+  iout = ctypes.create_string_buffer(1024*4);
+  gmp_test_so.test_{0}(gout, *args)
+  imath_test_so.test_{0}(iout, *args)
+  eq = cstr_eq(line, name, gout, iout)
+  return eq
+""".format(name))
+
+
+def print_api_map(outf):
+    outf.write("""
+def get_wrapper(name):
+  test_wrappers = {
+""")
+    for api in gmpapi.apis:
+        outf.write('    "{}" : {},\n'.format(api.name, "test_" + api.name))
+    outf.write("  }\n")
+    outf.write("  return test_wrappers[name]\n")
+
+
+if __name__ == "__main__":
+    outf = sys.stdout
+    print_header(outf)
+    print_cmp(outf)
+    for api in gmpapi.apis:
+        if not api.custom_test:
+            print_api(api.name, outf)
+    print_api_map(outf)
diff --git a/polly/lib/External/isl/imath/tests/gmp-compat-test/gmp_custom_test.c b/polly/lib/External/isl/imath/tests/gmp-compat-test/gmp_custom_test.c
new file mode 100644 (file)
index 0000000..006a9f1
--- /dev/null
@@ -0,0 +1,28 @@
+
+void test_mpz_export(char **out, char *rop, size_t *countp, int order,
+                     size_t size, int endian, size_t nails, char *mpzstr) {
+  mpz_t op;
+  mpz_init(op);
+  mpz_set_str(op, mpzstr, 10);
+  // printf("%p,%p,%d,%zi,%d,%zi,%s\n", rop, countp, order, size, endian, nails,
+  // mpzstr);
+  *out = mpz_export(rop, countp, order, size, endian, nails, op);
+}
+
+void test_mpz_import(char *out, void *unused, size_t count, int order,
+                     size_t size, int endian, size_t nails, char *mpzstr) {
+  mpz_t op;
+  mpz_t rop;
+  mpz_init(op);
+  mpz_init(rop);
+  mpz_set_str(op, mpzstr, 10);
+  char *data;
+
+  // printf("%p,%p,%d,%zi,%d,%zi,%s\n", rop, countp, order, size, endian, nails,
+  // mpzstr);
+  data = mpz_export(NULL, &count, order, size, endian, nails, op);
+  mpz_import(rop, count, order, size, endian, nails, data);
+  int eq = mpz_cmpabs(op, rop);
+  sprintf(out, "%2d:", eq);
+  mpz_get_str(out + 3, 10, rop);
+}
diff --git a/polly/lib/External/isl/imath/tests/gmp-compat-test/gmpapi.py b/polly/lib/External/isl/imath/tests/gmp-compat-test/gmpapi.py
new file mode 100644 (file)
index 0000000..53b54d3
--- /dev/null
@@ -0,0 +1,131 @@
+#!/usr/bin/env python
+
+import sys
+
+
+class CType:
+    def __init__(self, name):
+        self.name = name
+
+    def __str__(self):
+        return self.name
+
+
+class GMPAPI:
+    def __init__(self, ret_ty, name, *params, **kw):
+        out = kw.get('out', [0])
+        inout = kw.get('inout', [])
+        mixed = kw.get('mixed', False)
+        custom = kw.get('custom', False)
+        self.name = name
+        self.ret_ty = ret_ty
+        self.params = params
+        self.inout_params = inout
+        self.custom_test = custom
+        # most functions with return results dont need extra out params
+        # set mixed to true to check both the return value and an out param
+        if self.ret_ty != void and not mixed:
+            self.out_params = []
+        else:
+            self.out_params = out  #param location of the output result
+
+    def is_write_only(self, pos):
+        if pos in self.out_params and pos not in self.inout_params:
+            return True
+        return False
+
+    def __str__(self):
+        return ("{} {}({})".format(self.ret_ty, self.name, ",".join(
+            map(str, self.params))))
+
+    def __repr__(self):
+        return str(self)
+
+
+void = CType("void")
+voidp = CType("void *")
+charp = CType("char *")
+iint = CType("int")
+size_t = CType("size_t")
+size_tp = CType("size_t*")
+ilong = CType("long")
+ulong = CType("unsigned long")
+mpz_t = CType("mpz_t")
+mpq_t = CType("mpq_t")
+
+apis = [
+    GMPAPI(void, "mpz_abs", mpz_t, mpz_t),
+    GMPAPI(void, "mpz_add", mpz_t, mpz_t, mpz_t),
+    GMPAPI(iint, "mpz_cmp_si", mpz_t, ilong),
+    GMPAPI(iint, "mpz_cmpabs", mpz_t, mpz_t),
+    GMPAPI(iint, "mpz_cmp", mpz_t, mpz_t),
+    GMPAPI(void, "mpz_mul", mpz_t, mpz_t, mpz_t),
+    GMPAPI(void, "mpz_neg", mpz_t, mpz_t),
+    GMPAPI(void, "mpz_set_si", mpz_t, ilong),
+    GMPAPI(void, "mpz_set", mpz_t, mpz_t),
+    GMPAPI(void, "mpz_sub", mpz_t, mpz_t, mpz_t),
+    GMPAPI(void, "mpz_swap", mpz_t, mpz_t, out=[0, 1], inout=[0, 1]),
+    GMPAPI(iint, "mpz_sgn", mpz_t),
+    GMPAPI(void, "mpz_addmul", mpz_t, mpz_t, mpz_t, inout=[0]),
+    GMPAPI(void, "mpz_divexact", mpz_t, mpz_t, mpz_t),
+    GMPAPI(iint, "mpz_divisible_p", mpz_t, mpz_t),
+    GMPAPI(void, "mpz_submul", mpz_t, mpz_t, mpz_t, inout=[0]),
+    GMPAPI(void, "mpz_set_ui", mpz_t, ulong),
+    GMPAPI(void, "mpz_add_ui", mpz_t, mpz_t, ulong),
+    GMPAPI(void, "mpz_divexact_ui", mpz_t, mpz_t, ulong),
+    GMPAPI(void, "mpz_mul_ui", mpz_t, mpz_t, ulong),
+    GMPAPI(void, "mpz_pow_ui", mpz_t, mpz_t, ulong),
+    GMPAPI(void, "mpz_sub_ui", mpz_t, mpz_t, ulong),
+    GMPAPI(void, "mpz_cdiv_q", mpz_t, mpz_t, mpz_t),
+    GMPAPI(void, "mpz_fdiv_q", mpz_t, mpz_t, mpz_t),
+    GMPAPI(void, "mpz_fdiv_r", mpz_t, mpz_t, mpz_t),
+    GMPAPI(void, "mpz_tdiv_q", mpz_t, mpz_t, mpz_t),
+    GMPAPI(ulong, "mpz_fdiv_q_ui", mpz_t, mpz_t, ulong, out=[0], mixed=True),
+    GMPAPI(ilong, "mpz_get_si", mpz_t),
+    GMPAPI(ulong, "mpz_get_ui", mpz_t),
+    GMPAPI(void, "mpz_gcd", mpz_t, mpz_t, mpz_t),
+    GMPAPI(void, "mpz_lcm", mpz_t, mpz_t, mpz_t),
+    GMPAPI(void, "mpz_mul_2exp", mpz_t, mpz_t, ulong),
+    GMPAPI(
+        void,
+        "mpz_export",
+        voidp,
+        size_tp,
+        iint,
+        size_t,
+        iint,
+        size_t,
+        mpz_t,
+        custom=True),
+    # The mpz_import signature is a bit of a lie, but it is ok because it is custom
+    GMPAPI(
+        void,
+        "mpz_import",
+        voidp,
+        size_t,
+        iint,
+        size_t,
+        iint,
+        size_t,
+        mpz_t,
+        custom=True),
+    GMPAPI(size_t, "mpz_sizeinbase", mpz_t, iint),
+    GMPAPI(charp, "mpz_get_str", charp, iint, mpz_t),
+
+    # mpq functions
+    GMPAPI(iint, "mpq_set_str", mpq_t, charp, iint, out=[0], mixed=True),
+    GMPAPI(void, "mpq_canonicalize", mpq_t, inout=[0]),
+    GMPAPI(iint, "mpq_cmp", mpq_t, mpq_t),
+    GMPAPI(void, "mpq_mul", mpq_t, mpq_t, mpq_t),
+    GMPAPI(void, "mpq_set", mpq_t, mpq_t),
+    GMPAPI(void, "mpq_set_ui", mpq_t, ulong, ulong),
+    GMPAPI(iint, "mpq_sgn", mpq_t),
+    GMPAPI(charp, "mpq_get_str", charp, iint, mpq_t),
+]
+
+
+def get_api(name):
+    for a in apis:
+        if a.name == name:
+            return a
+    raise RuntimeError("Unknown api: {}".format(name))
diff --git a/polly/lib/External/isl/imath/tests/gmp-compat-test/imath_custom_test.c b/polly/lib/External/isl/imath/tests/gmp-compat-test/imath_custom_test.c
new file mode 100644 (file)
index 0000000..9bf6f91
--- /dev/null
@@ -0,0 +1,28 @@
+
+void test_mpz_export(char **out, char *rop, size_t *countp, int order,
+                     size_t size, int endian, size_t nails, char *mpzstr) {
+  impz_t op;
+  impz_init(op);
+  impz_set_str(op, mpzstr, 10);
+  // printf("%p,%p,%d,%zi,%d,%zi,%s\n", rop, countp, order, size, endian, nails,
+  // mpzstr);
+  *out = impz_export(rop, countp, order, size, endian, nails, op);
+}
+
+void test_mpz_import(char *out, void *unused, size_t count, int order,
+                     size_t size, int endian, size_t nails, char *mpzstr) {
+  impz_t op;
+  impz_t rop;
+  impz_init(op);
+  impz_init(rop);
+  impz_set_str(op, mpzstr, 10);
+  char *data;
+
+  // printf("%p,%p,%d,%zi,%d,%zi,%s\n", rop, countp, order, size, endian, nails,
+  // mpzstr);
+  data = impz_export(NULL, &count, order, size, endian, nails, op);
+  impz_import(rop, count, order, size, endian, nails, data);
+  int eq = impz_cmpabs(op, rop);
+  sprintf(out, "%2d:", eq);
+  impz_get_str(out + 3, 10, rop);
+}
diff --git a/polly/lib/External/isl/imath/tests/gmp-compat-test/runtest b/polly/lib/External/isl/imath/tests/gmp-compat-test/runtest
new file mode 100644 (file)
index 0000000..e71bc06
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+if [ "$(uname)" = "Darwin" ] ; then
+    export DYLD_LIBRARY_PATH=.:../..  # for macOS
+else
+    export LD_LIBRARY_PATH=.:../..    # for everyone else
+fi
+python runtest.py $@
diff --git a/polly/lib/External/isl/imath/tests/gmp-compat-test/runtest.py b/polly/lib/External/isl/imath/tests/gmp-compat-test/runtest.py
new file mode 100644 (file)
index 0000000..35ac598
--- /dev/null
@@ -0,0 +1,144 @@
+#!/usr/bin/env python
+
+from __future__ import print_function
+
+import ctypes
+import random
+import gmpapi
+import wrappers
+import glob
+import sys
+import os
+from optparse import OptionParser
+from gmpapi import void
+from gmpapi import ilong
+from gmpapi import ulong
+from gmpapi import mpz_t
+from gmpapi import voidp
+from gmpapi import size_t
+from gmpapi import size_tp
+from gmpapi import iint
+from gmpapi import charp
+from gmpapi import mpq_t
+
+
+def print_failure(line, test):
+    print("FAIL: {}@{}".format(line, test))
+
+
+def run_tests(test_file, options):
+    passes = 0
+    failures = 0
+    fail_lines = []
+    for (line, test) in enumerate(open(test_file), start=1):
+        if test.startswith("#"):
+            continue
+        if options.skip > 0 and line < options.skip:
+            continue
+        name, args = test.split("|")
+        if options.verbose or (options.progress > 0
+                               and line % options.progress == 0):
+            print("TEST: {}@{}".format(line, test), end="")
+        api = gmpapi.get_api(name)
+        wrapper = wrappers.get_wrapper(name)
+        input_args = args.split(",")
+        if len(api.params) != len(input_args):
+            raise RuntimeError("Mismatch in args length: {} != {}".format(
+                len(api.params), len(input_args)))
+
+        call_args = []
+        for i in range(len(api.params)):
+            param = api.params[i]
+            if param == mpz_t:
+                call_args.append(bytes(input_args[i]).encode("utf-8"))
+            elif param == mpq_t:
+                call_args.append(bytes(input_args[i]).encode("utf-8"))
+            elif param == ulong:
+                call_args.append(ctypes.c_ulong(int(input_args[i])))
+            elif param == ilong:
+                call_args.append(ctypes.c_long(int(input_args[i])))
+            elif param == voidp or param == size_tp:
+                call_args.append(ctypes.c_void_p(None))
+            elif param == size_t:
+                call_args.append(ctypes.c_size_t(int(input_args[i])))
+            elif param == iint:
+                call_args.append(ctypes.c_int(int(input_args[i])))
+            # pass null for charp
+            elif param == charp:
+                if input_args[i] == "NULL":
+                    call_args.append(ctypes.c_void_p(None))
+                else:
+                    call_args.append(bytes(input_args[i]).encode("utf-8"))
+            else:
+                raise RuntimeError("Unknown param type: {}".format(param))
+
+        res = wrappers.run_test(wrapper, line, name, gmp_test_so,
+                                imath_test_so, *call_args)
+        if not res:
+            failures += 1
+            print_failure(line, test)
+            fail_lines.append((line, test))
+        else:
+            passes += 1
+    return (passes, failures, fail_lines)
+
+
+def parse_args():
+    parser = OptionParser()
+    parser.add_option(
+        "-f",
+        "--fork",
+        help="fork() before each operation",
+        action="store_true",
+        default=False)
+    parser.add_option(
+        "-v",
+        "--verbose",
+        help="print PASS and FAIL tests",
+        action="store_true",
+        default=False)
+    parser.add_option(
+        "-p",
+        "--progress",
+        help="print progress every N tests ",
+        metavar="N",
+        type="int",
+        default=0)
+    parser.add_option(
+        "-s",
+        "--skip",
+        help="skip to test N",
+        metavar="N",
+        type="int",
+        default=0)
+    return parser.parse_args()
+
+
+if __name__ == "__main__":
+    (options, tests) = parse_args()
+    gmp_test_so = ctypes.cdll.LoadLibrary("gmp_test.so")
+    imath_test_so = ctypes.cdll.LoadLibrary("imath_test.so")
+
+    wrappers.verbose = options.verbose
+    wrappers.fork = options.fork
+
+    total_pass = 0
+    total_fail = 0
+    all_fail_lines = []
+    for test_file in tests:
+        print("Running tests in {}".format(test_file))
+        (passes, failures, fail_lines) = run_tests(test_file, options)
+        print("  Tests: {}. Passes: {}. Failures: {}.".format(
+            passes + failures, passes, failures))
+        total_pass += passes
+        total_fail += failures
+        all_fail_lines += fail_lines
+
+    print("=" * 70)
+    print("Total")
+    print("  Tests: {}. Passes: {}. Failures: {}.".format(
+        total_pass + total_fail, total_pass, total_fail))
+    if len(all_fail_lines) > 0:
+        print("Failing Tests:")
+        for (line, test) in all_fail_lines:
+            print(test.rstrip())
diff --git a/polly/lib/External/isl/imath/tests/imath-test.scm b/polly/lib/External/isl/imath/tests/imath-test.scm
new file mode 100644 (file)
index 0000000..52a34be
--- /dev/null
@@ -0,0 +1,172 @@
+;;;
+;;; Name:     imath-test.scm
+;;; Purpose:  Code to generate random rational number test cases.
+;;; Notes:    Written for DrRacket (nee PLT Scheme)
+;;;
+(require (lib "27.ss" "srfi"))
+
+;; Generate a random natural number with the specified number of digits.
+(define (random-big-natural digits)
+  (let loop ((d "") (digits digits))
+    (if (zero? digits)
+        (string->number d 10)
+        (let ((rnd (random 10)))
+          (loop (string-append d (list->string
+                                  (list
+                                   (integer->char
+                                    (+ rnd
+                                       (char->integer #\0))))))
+                (- digits 1))))))
+
+;; Generate a random integer with the specified number of digits and
+;; probability (0..1) of being negative.
+(define (random-big-integer digits pneg)
+  (let ((base (random-big-natural digits)))
+    (if (< (random-real) pneg)
+        (* base -1)
+        base)))
+
+;; Generate a random rational number with the specified number of numerator and
+;; denominator digits, and probability pneg (0..1) of being negative.
+(define (random-big-rational n-digits d-digits pneg)
+  (let ((num (random-big-natural n-digits))
+        (den (random-big-natural d-digits)))
+    (if (zero? den)
+        (random-big-rational n-digits d-digits pneg)
+        (if (< (random-real) pneg)
+            (- (/ num den))
+            (/  num den)))))
+
+;; Create a rational generator with a fixed negative probability.
+;; Always generates rationals.
+(define (make-rat-generator prob-neg)
+  (lambda (n-digits d-digits num)
+    (random-big-rational n-digits d-digits prob-neg)))
+
+;; Create a rational generator with a fixed negative probability.  With
+;; probability prob-backref, generates a back-reference to an earlier input
+;; value, rather than a new value.  This is used to make sure argument
+;; overlapping works the way it should.
+(define (make-backref-generator prob-neg prob-backref)
+  (lambda (n-digits d-digits num)
+    (if (and (> num 1)
+             (< (random-real) prob-backref))
+        (let ((ref (+ (random (- num 1)) 1)))
+          (string-append "=" (number->string ref)))
+        (random-big-rational n-digits d-digits prob-neg))))
+
+;; Just like make-backref-generator, except the second argument is always an
+;; integer, and the backreference can only be to the first argument.
+(define (make-backref-generator-2 prob-neg prob-backref)
+  (lambda (n-digits d-digits num)
+    (case num
+      ((1) (random-big-rational n-digits d-digits prob-neg))
+      ((2) (random-big-integer n-digits prob-neg))
+      (else
+       (if (< (random-real) prob-backref)
+           "=1"
+           (random-big-rational n-digits d-digits prob-neg))))))
+
+(define (make-output-test-generator prob-neg max-dig)
+  (lambda (n-digits d-digits num)
+    (cond ((= num 1)
+           (random-big-rational n-digits d-digits prob-neg))
+          ((= num 2)
+           (let loop ((radishes '(10 16 8 4 2)))
+             (cond ((null? radishes)
+                    (+ (random 34) 2))
+                   ((< (random-real) 0.3)
+                    (car radishes))
+                   (else
+                    (loop (cdr radishes))))))
+          (else
+           (random max-dig))
+          )))
+
+;; Given a test name, an argument generator, and an operation to compute the
+;; desired solution, return a function that generates a random test case for a
+;; given number of digits of precision in the numerator and denominator.
+(define (make-test-case-generator name arg-gen op)
+  (lambda (n-digits d-digits)
+    (let ((args (list (arg-gen n-digits d-digits 1)
+                      (arg-gen n-digits d-digits 2)
+                      (arg-gen n-digits d-digits 3))))
+      (let* ((arg1 (car args))
+             (arg2 (if (equal? (cadr args) "=1")
+                       arg1 (cadr args)))
+             (soln (if (and (eq? op /)
+                            (zero? arg2))
+                       "$MP_UNDEF"
+                       (op arg1 arg2))))
+        (list
+         name
+         args
+         (list soln))))))
+
+;; Glue strings together with the specified joiner.
+(define (join-strings joiner lst)
+  (cond ((null? lst) "")
+        ((null? (cdr lst)) (car lst))
+        (else
+         (string-append (car lst) joiner
+                        (join-strings joiner (cdr lst))))))
+
+;; Convert a test case generated by a test case generator function into a
+;; writable string, in the format used by imtest.c
+(define (test-case->string tcase)
+  (let ((s (open-output-string))
+        (stringify (lambda (v)
+                     (let ((s (open-output-string)))
+                       (display v s)
+                       (get-output-string s)))))
+    (display (car tcase) s)
+    (display ":" s)
+    (display (join-strings "," (map stringify (cadr tcase)))
+             s)
+    (display ":" s)
+    (display (join-strings "," (map stringify (caddr tcase)))
+             s)
+    (get-output-string s)))
+
+(define qadd (make-test-case-generator
+              'qadd (make-backref-generator 0.3 0.2) +))
+(define qsub (make-test-case-generator
+              'qsub (make-backref-generator 0.3 0.2) -))
+(define qmul (make-test-case-generator
+              'qmul (make-backref-generator 0.3 0.2) *))
+(define qdiv (make-test-case-generator
+              'qdiv (make-backref-generator 0.3 0.2) /))
+(define qtodec (make-test-case-generator
+                'qtodec (make-output-test-generator 0.3 25)
+                (lambda (a b) '?)))
+(define qaddz (make-test-case-generator
+               'qaddz (make-backref-generator-2 0.3 0.2) +))
+(define qsubz (make-test-case-generator
+               'qsubz (make-backref-generator-2 0.3 0.2) -))
+(define qmulz (make-test-case-generator
+               'qmulz (make-backref-generator-2 0.3 0.2) *))
+(define qdivz (make-test-case-generator
+               'qdivz (make-backref-generator-2 0.3 0.2) /))
+
+(define (write-test-cases test-fn lo-size hi-size num-each fname)
+  (let ((out (open-output-file fname)))
+    (do ((num lo-size (+ num 1)))
+       ((> num hi-size) (void))
+      (do ((den hi-size (- den 1)))
+         ((< den lo-size) (void))
+       (do ((ctr 1 (+ ctr 1)))
+           ((> ctr num-each) (void))
+         (display (test-case->string (test-fn num den)) out)
+         (newline out))))
+    (close-output-port out)))
+
+(define (write-lots-of-tests)
+  (write-test-cases qadd   1 20 2 "qadd.tc")
+  (write-test-cases qsub   1 20 2 "qsub.tc")
+  (write-test-cases qmul   1 20 2 "qmul.tc")
+  (write-test-cases qdiv   1 20 2 "qdiv.tc")
+  (write-test-cases qtodec 1 20 2 "qtodec.tc")
+  (write-test-cases qaddz  1 20 2 "qaddz.tc")
+  (write-test-cases qsubz  1 20 2 "qsubz.tc")
+  (write-test-cases qmulz  1 20 2 "qmulz.tc")
+  (write-test-cases qdivz  1 20 2 "qdivz.tc"))
diff --git a/polly/lib/External/isl/imath/tests/init.tc b/polly/lib/External/isl/imath/tests/init.tc
new file mode 100644 (file)
index 0000000..074f5d6
--- /dev/null
@@ -0,0 +1,12 @@
+#Unsigned integer initialization. Assumes sizeof(long) == 8.
+initu:0,0:0
+initu:0,18446744073709551615:18446744073709551615
+initu:0,567:567
+
+#Signed integer initialization Assumes sizeof(long) == 8.
+initv:0,0:0
+initv:0,-1:-1
+initv:0,9223372036854775807:9223372036854775807
+initv:0,-9223372036854775808:-9223372036854775808
+initv:0,4324:4324
+
diff --git a/polly/lib/External/isl/imath/tests/invmod.tc b/polly/lib/External/isl/imath/tests/invmod.tc
new file mode 100644 (file)
index 0000000..f969b03
--- /dev/null
@@ -0,0 +1,452 @@
+# Modular inverse tests (no undefined cases)
+
+invmod:-25,37,=1:34
+invmod:-25,37,=2:34
+invmod:-5,11,0:2
+invmod:22153,514,0:383
+invmod:6521,442674856,0:28104185
+invmod:83,8990271,0:2924546
+invmod:643111,73,0:23
+invmod:6756751,5,0:1
+invmod:4310757,655173482,0:578093623
+invmod:67658,37989,0:29720
+invmod:140,456739,0:394753
+invmod:8363,2152,0:1827
+invmod:6067,5554,0:1061
+invmod:134706247,840181,0:713245
+invmod:581,8525,0:3096
+invmod:991357,2885,0:2243
+invmod:9820551,53210,0:5931
+invmod:366,3905684875,0:1846129736
+invmod:4582993,6971170,0:6590887
+invmod:4261,5,0:1
+invmod:2089582769,72370,0:34059
+invmod:1385486874,274843,0:100773
+invmod:2496082853,33877892272,0:25370727693
+invmod:29,77842490059,0:18789566566
+invmod:160735723,837433,0:536522
+invmod:33,92874448,0:39401281
+invmod:17,801910,0:518883
+invmod:1243,47177637,0:28769629
+invmod:5553626,17225545633,0:4551550593
+invmod:493375452,7744903,=1:5021402
+invmod:505,75126821802,0:15917960263
+invmod:8082104357,6160949,0:64657
+invmod:4793,63911,0:44243
+invmod:846,4453189,0:689560
+invmod:5475,596527544653,0:311392826049
+invmod:239,28531,0:9192
+invmod:71044,91829,0:4016
+invmod:2923052473,673,0:362
+invmod:40113371,396,0:23
+invmod:799762079,671587,0:280457
+invmod:6137106,72083,0:61684
+invmod:2663959394312,7297021,0:6396652
+invmod:16314,437519,0:121837
+invmod:5409920801970,224827,0:146917
+invmod:1701531745,565383113204,0:392963934477
+invmod:6702285244447,4818940,0:3886523
+invmod:3853762105973,7986397045899,0:4649165556065
+invmod:83203877,17340640,=2:1474413
+invmod:349,3756,0:1765
+invmod:513237329,6426867498383,0:5161899757325
+invmod:218717486055,4764721,0:3629102
+invmod:5697807566182,23837,0:17052
+invmod:640499,3706953268445,0:862821487954
+invmod:74365895080186,37008968409199,0:35062440514236
+invmod:5447180,17521,0:6484
+invmod:87747,309211711,0:64843296
+invmod:65052052,72604563,0:26029330
+invmod:1200121,9944190318201,=2:5066700447199
+invmod:487321393172,41829673981,=1:18173847806
+invmod:3762709971997,877939264220,=1:575680399733
+invmod:78323027,3830390625030,0:1772587463183
+invmod:1324701179,57116535299,0:4144192403
+invmod:663267333048769,9458708,0:1445501
+invmod:925655,3262585612,0:2494330419
+invmod:809760047,253746243247,0:109619303279
+invmod:6962181619,44237293531835,0:34688460868884
+invmod:32137986591347,450053710,0:207388563
+invmod:171464220392,1821508963,0:85136287
+invmod:4866698,1559814931871,0:875727775988
+invmod:83084876,852948279591,=2:67614759050
+invmod:3087717,3533808897939368,0:3296313572604861
+invmod:685072,47729803,0:7913327
+invmod:3403087579775453,307599045,0:85279967
+invmod:618837304,2026545,0:580654
+invmod:1617142737,5396772102241213,0:309489822606449
+invmod:398279389,695426305815576,0:548019512309869
+invmod:807807859,101277481,0:1799573
+invmod:4399921090,93999639721573,0:23138878622757
+invmod:6198378859,5720311022,0:2650981593
+invmod:86572714,9776668159093959,0:99027417792355
+invmod:1106685402600,781883021,0:593993010
+invmod:788429239716,54846845,0:23729486
+invmod:26682164884969,84892199507532,0:38639429314105
+invmod:490223409,87336215488172224,0:60928799099783953
+invmod:11687153,155174158,0:112979329
+invmod:81995673521,1680666567,0:4778198
+invmod:36278417230108,2563749243683,0:97972077091
+invmod:81100161947491318,626490251,0:10036586
+invmod:84353708437,789691774074278,0:384046667492909
+invmod:4784222527,220196213,0:137693182
+invmod:656338347,17114903662,0:2025727201
+invmod:205944554689,55544669634,0:45790392391
+invmod:58311406949710,684448841,0:398362627
+invmod:2984553893,39836508385650164,0:23063415225053961
+invmod:1226833387651,868339671575144482,0:861301708657625181
+invmod:7850491405,3995878481964,0:222583321669
+invmod:60187945992,93467753554255,0:39782639687763
+invmod:26790048589,54188485741,0:37088225013
+invmod:2047388699,2277281699,0:1326800159
+invmod:437698007378203709,87810457123843238,0:45519261037663357
+invmod:10176318725,798739962893,0:680424092570
+invmod:784178983329613758,151005933385,0:62880260387
+invmod:774192548697746,10018080225753177,0:9683250774295598
+invmod:726085395694283800,277010088622579,0:180332658128036
+invmod:734218324557247853,1620310233702,0:916743102467
+invmod:707389886770553113,418168493503742,0:189385161021501
+invmod:171716270659493,2040489403879802122,0:1953367125622896751
+invmod:78774439204,843419490844271841,0:461564113792074643
+invmod:9092444912687,92042830376149639,0:47447717686388633
+invmod:61162406254,726431645806031683,0:276675014746837850
+invmod:6502138975909229,1737018911640,0:657596399549
+invmod:87574684954665,78519506900538949759,0:47230364038284735522
+invmod:1306210408858148,134301015531,0:130837017359
+invmod:44107140793537552339,77941696100292187182,0:44195935179151712467
+invmod:67019007414976,320349107407,0:230029544613
+invmod:251668932025135,35962140459304117641,0:27454542509813399095
+invmod:1960384563191744911,414832971260173594,0:324345091445220853
+invmod:9693842669955456325,3433846821305106979,0:3209295184025178668
+invmod:95824904457431,207730473678560854,0:115346241869098615
+invmod:8243018284897799671,54774169173707248,0:44653415179102455
+invmod:311780668918,56602194650033,0:19477344474056
+invmod:5901525417230160,6175539028945276481,0:2734302477909765310
+invmod:15817645817088013342,83873087573263156355,0:40986420565770894283
+invmod:2776285597517168189,3599586054083,0:1736805497387
+invmod:5082710450857887,9056726269284017335,0:4011503044106438893
+invmod:8584682476237466436,7357902067222453540607,0:5765479814487665631684
+invmod:2319480092078509424,6781626293282491,0:6716281365540188
+invmod:1240939184380232105,937916010642767528344,0:266041850377015782033
+invmod:658085025934773092927,87790861684417147140,0:36756492918534162863
+invmod:2569452374055474,1282307723894094781,0:817830828946766758
+invmod:888631770342009119641,963322788372149745005,0:58576054803607756901
+invmod:89415261698482,94033558717297,0:55696542331400
+invmod:56380027660316644352588,35652220511128407,0:2604464463341384
+invmod:996226476453670075,45399567279611724302531,0:4432450575006272604766
+invmod:34615237368338359171,8816907924734450,0:7867417936877631
+invmod:57100661310425224095499,80123941311371854,0:35581152205723201
+invmod:4003341194576048121,875086915466219,0:805682679112747
+invmod:6669592405841477476717,4551036259229300,0:1731901161660553
+invmod:4899954396030393,8249234915987429715052,0:8042076059164143158753
+invmod:457015587799729799209,94904436585339172647,0:67495506193470607315
+invmod:2416330080921791,12841205070842866551072,0:9627123487316001173279
+invmod:315334615429521629,57080600687534315852534,0:35876106943989391629797
+invmod:245635836236733543965,350204895578119,0:266548953036562
+invmod:534172301537220853627465,54572957533260480823618,0:28391508956926418431025
+invmod:64835058866700508778320,82305874730776723,0:57154164927574349
+invmod:2935419197344029519,38389371660425629010,0:28166170186967145769
+invmod:3817779121449271,177996364073619,0:33676152326515
+invmod:738146746050725,4141892900866715689963,0:1939330976850898748447
+invmod:92817796396830036287569,23833760274805751,0:18027905863154323
+invmod:324768538678274222,672713761279277469419167,0:179185315765267484078532
+invmod:145806963849046841647,254534976684286765771,0:200530074654889210574
+invmod:5843892547087945,8037935722129342683168,0:4622521916530352817625
+invmod:635350174582720198578,895650784125257583255317,0:608770468357452782491563
+invmod:64902256585483042893,64861417659113483501885,0:48500544464636732858792
+invmod:1348003478873768067340578,79797413707905564041741,0:40891858728897888244861
+invmod:6267734989419158151778,3802309231789144649797859,0:283176065685623872919005
+invmod:3615002399473406,3318504485101385132081323,0:2767667426638532783172948
+invmod:899009032038735494294979,792084588352351084,0:424508678737216543
+invmod:81206746001376489750557,7237607374878187597720,0:1600326671975281670573
+invmod:3627972699304722008437199,5520898889538066465900,0:2272155478759642709699
+invmod:34685989123390710817647,6655359456977349621184,0:2132453240661862741327
+invmod:7144620105437275474852,753995169282415124087,0:275860832898605149106
+invmod:3535338302168469766025701,5721768567217856428,0:1398947754214548293
+invmod:966210500401822916283782,66395891256125996529,0:10363406607924246032
+invmod:5107776515340409,616676046831960893161433,0:328705736461746618977486
+invmod:205573655301723270437,35922475780693975,0:13536061393525448
+invmod:6678162870767249806,72542902715331741208361,0:27163420735919994491369
+invmod:4198363950348197654359,656021938174219663877448,0:30249336864266481152527
+invmod:6624293151166291066603,935090767412780504,0:703056406859110987
+invmod:1425474699733426865447,74057791800633068553,0:32399215003249997555
+invmod:535428418244353401,5758069448318181075415,0:651913765960044782491
+invmod:511900281901325868358066640,7525380451505858160279157,0:4065406882222502194971660
+invmod:212919955640465965,878153960566548562,0:662636940932888511
+invmod:889569596018809758462291211,81473326768558522502336,0:56487291469860004699555
+invmod:443144861277824063183398,3761174124237053075,0:3604887025386113137
+invmod:33394484114211334386,72967632167182065995369,0:31523450321558696309323
+invmod:4146649809313089447250,2358753923413902348191,0:2114494919004119612967
+invmod:9887121613180137575733557,461028287216014552,0:243298503783102749
+invmod:97465366227467312864072367,488220214874854052,0:130500775756515095
+invmod:19292649676011135522471,7877659035660734746,0:283664033368712393
+invmod:88902959369842150471660679,458945796034863505452,0:116241488588017347323
+invmod:1839945988509816044751,9750948399412779544,0:6294451275142512167
+invmod:9857520075588286024975851,1918199730912356922553,0:1407196181358170021243
+invmod:98092461637270194063,69938396621942574346694,0:39897238269802969068339
+invmod:219033411512598606789840689,795134880363756976388,0:639110818118499283141
+invmod:88186459451009468808509156,931160442943017676802173071,0:629562198515766072504373649
+invmod:9710794978083575389221590569,4251433051225510685,0:1014964735988867489
+invmod:8101415155618280845453190902,1531876453912452699591,0:368176555527134025784
+invmod:29409670089331883811,535811823788496989270023400,0:370280198672135017584348691
+invmod:8305842606005328583,9579564753339003236281695,0:5722440512759901640334872
+invmod:39386484402035672640779147,405797130275770630884183427,0:110208599835163794381201071
+invmod:832687365793006297742,184982557537022296058374571,0:83904068232925523197663651
+invmod:6553207532807060406664,502238468947067021963,0:454270228642816251641
+invmod:37454379370943067757286870211,36494426305368965154254726536,0:33638650562651500684923138787
+invmod:38605483438466601679,682239274139689477361679,0:13199577887729473047769
+invmod:7965022961827711681795,2285716672004926097772197,0:2122955484406134178638446
+invmod:300057798344833538558206311,8931778125815914295,0:6565813118197443911
+invmod:324842828083012251597681011,187662727615575337969,0:123961367799983618478
+invmod:59548842983097072068081,529556931168692661765381,0:204382555679859518219042
+invmod:876100791904547219529602,984558128732533432702173965429,0:90974750030008269191789684241
+invmod:412262036467011789370687,7642721479883866583632505,0:2279185286560398311684903
+invmod:35558590466031758855977117,887974042467941992656,0:704625358717245867829
+invmod:626663442467211390440132060640,1374148771090265524803717173,0:590755849649898431023419435
+invmod:85901909124840045452734003634,27175621479815508400005,0:6884774470049680531679
+invmod:4803896245161574921869066442,515522173785247100331641258677,0:82575699585005426552163954975
+invmod:30894573328276878531856,4087591712675305723294627,0:3493627083082495776432430
+invmod:9141841986580679278669126,505635384209785163519211124141,0:336188649744514864135515371530
+invmod:188695176591763873562433787,661611817437909433157465,0:375067540836983193116438
+invmod:241487793644307094737649980023,4603295709537644102260078209,0:1875185676154036094527511246
+invmod:5293130391697702045129223682241,4410288170386013446930,0:3281121803360293450491
+invmod:6033846664871710576440686677569,96946807752243502281276550,0:45266733495357578832984479
+invmod:89038378306924494551626,95628444614978025043615,0:23786747307100516932196
+invmod:12710922165960068258466731689,4790016424576553135438840,0:1207752742860172910912249
+invmod:2735034594918378899070448537355,1893682211859850854604,0:435685035552133636619
+invmod:68329358155371632083140828250982,6288770840498808006152991055,0:5931193047490714028593816373
+invmod:83897752529920362009921,66649056389057335553727631393,0:43268302813732520149524641842
+invmod:9689473529426673026778331,88076063449762644474294178,0:68554034321312192241642365
+invmod:73977485020743016621210217010220,53253046617921140492481,0:34299048109456536013621
+invmod:9682622686213510676332035159913,126726573785394345551110507947,0:87562143297844604196976477132
+invmod:5131707842034728461484683196411,9833933722624780748771816760,0:7636914556132154008767009131
+invmod:622466933719692949758353,8720875070568727490840986966,0:2243063168207109573811220613
+invmod:371914469040335929323957821,29979763825336998478908474,0:19112551112998202208882569
+invmod:460040264854684284500867207882,176619007178719669689957899985,0:84600278607589920579666033533
+invmod:7814781702042412652917732124,44974092645758858215810834392705,0:22525065545650129764783444827969
+invmod:689879593008118336507276219555,7029140833503782253304852,0:1657942681146249790361611
+invmod:588753311584356398728925335104347,655245595214265213328588954,0:5370808165845253986418065
+invmod:215270851453007875328537243236,930847670919175461277424586154331,0:854093280868657781869727944640825
+invmod:554018901896459973640131751591,9763486748180940629420083557,0:4943017226299795649673145282
+invmod:13807862007846696356170492992,218480252372917913755483,0:162381198060244352285330
+invmod:3647663862216963935039311,3498263635673871413147938009,0:815287510808909642460179901
+invmod:1394556521513041955902249647007,8314730285674311054788894925503,0:4701759015019363383377776837184
+invmod:765922458203903632153317653598,772684127072442440623494065,0:681475643232329050740648777
+invmod:1636182686335177476661316231316713,898482806249393672761387906057,0:629953274075151653191843542345
+invmod:584489430664515187742143663,3226379401343487951747550753985,0:2300722785510258273879270270657
+invmod:70597555974027836626331232,9067577360780247310463700060912415,0:1343885645550828326227031879126813
+invmod:83016782422655848478468587,3574392772750510684744014,0:2160375438947262160886701
+invmod:9509632620059688913461744335927,2001546646968510097453590971258811,0:1579171227651658107693890864008934
+invmod:5305698102006965934646514142,1880423512328598313144733245,0:1158802006274691372231434298
+invmod:25818273392182891028387183709,372712587491320607948739787619341,0:83620423512820588265929334666867
+invmod:2062301690726594241599730508623,1295011898282606475280524130169,0:1126618128280194264421190196682
+invmod:15525882195404306532803603053735006,524851347004182298259949574931,0:117558057158627958293103758908
+invmod:98049989631901137366836343057866,2132117143964644775000173275,0:1776678869002856275917157286
+invmod:68035486069315280099382173380,136804376642014663925354513,0:116540031317166597205778667
+invmod:930885787290248986653715917201,839163742792309140697583306,0:467450716792956567729742385
+invmod:618219232165541881120714807027054,551811312165885959528421318411,0:241084816664595048546274133494
+invmod:607491972766521656095997601,4258761064370347279045518650,0:4106442789435765086100078351
+invmod:1794059822501926214368058365897,641293693468680328700219247,0:412236704145068075117115904
+invmod:66038046351270827218975238,828243810057190999751749430463827,0:201240403207654658512757471515946
+invmod:22489979027542119833361766314814004,4267735327278945325377118240414149,0:831989298493288398125903826182123
+invmod:96656949043354906812270332568634084,17593722554451983298697234832943,0:10389378262088955098639501532940
+invmod:1475127063531246543305342130787,5712802933759973674949655288556,0:911126023377734859289288839875
+invmod:94805314820797148511000189717800001,64899576259694613046461539176,0:48109809959614533507389959049
+invmod:5787223135405198552481837574149,5421074820227552626308319526063,0:1887880601492799950765024255248
+invmod:28973562312482088535256834009,12322004931428309561996283040268471,0:6951695655429544292118574942872356
+invmod:3696872012110541582072428310551341,1523878544437625304694982047192609153,0:120514356890624212938061146933103186
+invmod:7388600304197232842534029909,773289223233970187052705366304,0:734898540650399983999883872093
+invmod:7331236475650961531766667058913110203,693192479825024022606662504949920,0:571670151801413885792817856265587
+invmod:5235989645992380877547648143027,9843490764540995482808427936563,0:7792497103048946162851333200848
+invmod:7889040487772265051508734223198,970333028842680057477545240961989231,0:820851624929176605383247534276742509
+invmod:636939509978082435344561123977,8632390068721323171174332473333535190,0:993190319417433889538526784654541983
+invmod:91838639727927578174237486907982,9330677294050455577402341248771486991,0:3372468877355534050061501496367400668
+invmod:10921336389827150720097811900009211076,7589092431150460928351199116667067691,0:866721211802572827148277173383125007
+invmod:658155257851240068821873115015976,558927662049398106193187373360428065,0:209745203635098313869122201832200296
+invmod:5585592751467684477444331029739,27200783107220910874350734817147653,0:1132197483918030242577531292806291
+invmod:7637148852097915353546826493,42198395510943407752409176135,0:38579422829892871530093056797
+invmod:228011811609919943842937730868521189,269359008901950141311260148678129,0:204220292063517008126064637465387
+invmod:85379073141618507288535187863547,3311778009260578617664169854013,0:1251094538034868342736717399878
+invmod:178538609345684608529279115948180,3209187922934820372906185622931,0:625228980755918910363724543435
+invmod:514451212940578583651534706134690,261960849561824473447008674451593,0:131626741363323972030200440147547
+invmod:9634204149807611579602377719343249239,91352833806659059550235201423093,0:43744490808833751862541187085697
+invmod:180205999846263895162745909652272689,61037131972980180275583850831,0:22758511829661545789258800814
+invmod:21945771136787811201569306864610194,240543080450829974515246807891357405,0:181461539213602660625514174427621814
+invmod:35517481628882114783536774508289,73933641713139782399722231157687221982,0:55192567983407494884175622090344427645
+invmod:61133421177402004520562281574369023,490575463215034765455424331786,0:428078344043933589235114932577
+invmod:61997134551496924667492900578768215075,53694317203253417994456413131837794901,0:5127049382196704081839504435078188237
+invmod:149407595591992713390607359968523153,9733723254627254068241609649090688,0:7103143213776435125430106007909873
+invmod:724677347918056918707332818251,4206398531197287079326882898987,0:3352013813776874655296817354068
+invmod:904144691211996824768615430166153,57579709060839020187927414941125095,0:54557924391254568447415464374061082
+invmod:464828030341876048255162748051,16315883710383791874911854058033061,0:1898204461581732360730698325426064
+invmod:19170845621606248311569905259730887097,911211106537315652144761781751982143011,0:11609063390937807744161998275631424941
+invmod:857469002074663726099005122270054136,767466745792444095098639793741965637031,0:72659426270163915638661477107149562702
+invmod:130093804885990385658501097171753042,91493100398010395343582415770659586075,0:71562287103402903271519248491284598728
+invmod:3558394519963770405007494484958693,5649100976897692393477567234571091,0:1778327570753831461149235315785758
+invmod:827172132916351233103886705694689183,7406200609002751101596817359849513044605,0:182683152383530805186420471977735101947
+invmod:44588398105132907935221361042363023,849039192087829478839986564159076706,0:756327512592089069079417038566139671
+invmod:87482753881086943893477139352309,15136288595019926379451404752790558,0:7380826408731655136881662259683287
+invmod:2816393010081341842764909636597751163357,666424385901140622144416941996627540,0:37970402623680773312812150346972833
+invmod:44160925420830144883476086426186778817,3964315773874336539018935736605912590999,0:3339494318496833279004795765823107883695
+invmod:7784294051005222901032501449689049491,82221954950326057541175302867376355231,0:35060237646445852249886804139112143661
+invmod:8782186458787754387943640751003,287196330910083697223737780139934653,0:151169934658998501405294488263167850
+invmod:52961061996773303218378119209138937,4138078150303278572595508400662,0:2334686283357105837861457163873
+invmod:120067972673320339436684163684521541899,5003127736361658398228918751147,0:2804153651535384761721045391262
+invmod:21160862616768687388014009097902145,984271481536213754460622644543049509,0:110991439312803462463226099820276772
+invmod:94870103291793687661854548564670156557,4654396151789059038730576061157487355,0:4545904732262329435720397277692160608
+invmod:126765551422438407604981735815319,4526482948583699374467868274935682,0:1340347586087681863052878791652111
+invmod:561052644739230772711625537622190085922,182709904797036712378783653059935117,0:81730760740395808028866350847708745
+invmod:8440958912355253192980982965295847,99976107874430648288932536807344574289,0:44322197083360812344238924546434599316
+invmod:622818497925638835644269035686568759453,5506232467142585446362605183461,0:5370963830087767870403236824410
+invmod:57453345384809312296011379661001742955,386140250699346346360045382167776159,0:63476384227956307102053350966611778
+invmod:83416537340827284838496955161681676081,12832473375703257825108506495959421,0:499463210654774129441986832321381
+invmod:6764203692091211849546587544996797291,56141668772394375440300081823159,0:33236198277199128613406762379601
+invmod:40370041535056934456885738109160412,509721817241840184167083180099626991,0:11491022410510426082577074611522170
+invmod:878180470796147113848439165151873,17763546710042203623413235393081,0:14204683605998536689672179103545
+invmod:55590867394053732499429322189218399778872,43372981951757571058338676426693,0:33510348378637076952275179882521
+invmod:7546327535456972783460913206047380047,86726167905648033666208453441434584,0:5322052162117479044160819033125903
+invmod:329955968415706177763208593030907,50516382401253954262072882036248004026668,0:34401169217941393127943862147280363000747
+invmod:87048112982262598454925291684403335,805959667741585911092793285492264429037,0:379430630180430216461244147576608482936
+invmod:71555142355447318269121083903394685,87398662401733013244354964840378552,0:67043514123128780636096809791233709
+invmod:1711583735940653927946109180989149,26241424080043582566688947607871596,0:23154984666365483606784578156029249
+invmod:542489709314546955942774519697358722621,143873444084042887511916303711981530841,0:121457408531791726256743734440607914263
+invmod:3781041336068211601179549569884186970409919,327900172706652019993358885788160915208,0:285215395500809506516326193309579388695
+invmod:6149927428146656336227133345815170519,7588487705630577686965956743882876270164,0:4653797610323419583601822953872210529815
+invmod:559049983877521594210938163489019460719,951902276119605669127355840612003004,0:683326157826438593722386803692042151
+invmod:9570949170433291990391807356653340234145159,8534474723057896563545270622977282626469,0:7559467634929916340724978098594978746637
+invmod:987849800664220039883494398655886160465,6831497903141449539539967513122604383199548,0:246607561273243347599128464506339845374005
+invmod:916515834175745144405438914198070103556585,4056859814803168890581397499472591207566757,0:1770209812768098816334392652319997964773464
+invmod:1228631771902154967504229180729583591093,695152447128287511961827228275915906161196,0:68820532783317596490391949047646875295925
+invmod:85204895476713840095779420329627903803,797154697565857850707103989977884356052456,0:189834737137977542797303467784002206530403
+invmod:459421385046429900048441785147457350775932,7698087947447355511478579587800901996173,0:1050954140018038340522121385945573583123
+invmod:8211730416251817740382555577378910158254614,52604175850251752026919899874340035,0:40445721575495397750278068202293844
+invmod:13222111757762648331396301846656536813259327,266888325807002880450404100257370089541565,0:109298344157958287037388161546711172781058
+invmod:563240385133071678994472898571956920719,3993868915925455184846327870408751385272,0:2785525939806848082603069961895833469023
+invmod:521639521589957338674682854605577427535430,91720686816082732671407774270039351,0:17647263388578210512345389034742837
+invmod:5156816003277235939668801939908183725744,5153042308730983383934473837808025008231,0:1734593135670097399582886018375080924055
+invmod:9790574355124996717257076778746595337,7094481197220145398883635593951185851053,0:4633443452058944189941546476417089729612
+invmod:3738689158705918826996178299424238668515201,6395182435555998218010243005378643333837,0:4032119940417970860053188513124120286092
+invmod:13614043167840054636971961619348110233,9922954903164743574284496007816459280672855,0:6390894157193464477433210223562314675849502
+invmod:7722989551905267507172665225415434299,285028691296471922732299049703480528,0:80127272552190846362411085374898803
+invmod:34955948774875418184052263202780817611505383,25511643971935598979339727281441119179,0:24793574418979515087827479198686647984
+invmod:9752514502992806699558935311322486653812,3763087306264536914043797765340033186467793,0:1025569723180811973169033467813546203362574
+invmod:27465132713599700004772511614559440798,13274810225615043094606232580958497359,0:10132125917976802477194900566349825181
+invmod:875919373810765425715940434040195178,5349809266782277700868243297033816292139395,0:2651731185643620478354040628390151701549142
+invmod:6881906840916466478584802007995526309234459,756717805668582535693388931894211346359,0:145296958725486236992417439558326443417
+invmod:334311791774893954611025022303233183505395489,584529866497361400618684187440397242,0:292400244436936079523712480681940227
+invmod:65712090641887119990742721342873930,4336182528635667934371588198046750892623,0:558253505423903869478690367363302598682
+invmod:4492701702646633574790657588147591497,887008290240310205861702963649926144764,0:434334236746323412542488940776733666249
+invmod:411586476025579573736047981166427386223,60898553483467476285120690698220614489936966,0:19455038575262424591552585688228685688467833
+invmod:6367597108696643245107048337012153376861093,65889932274525424609098394737176730568661,0:65870071424966086215554796795651660966036
+invmod:1049560658786859350707338961047775237,5274992996959254283334337773536473890159,0:624593399529926255525711013688044195635
+invmod:107527378432083555117117943876656903468876,716429394528758636372948757175038602405647,0:444454875067125022527116753199711164880725
+invmod:555145963886409519368431903982210135919242,8268229830304970030006026946953367235680701,0:6387083941953876784249641453937804161251014
+invmod:77948002708019596204938559286354567269,455121612933774657179682813659815211,0:364811843921650022521340876006123246
+invmod:498360659435361921366498611099013149316057,5728485554979561072455795106370849106458,0:3102501845651843687065534092900673818593
+invmod:726843237990292819218621975265928124471239641,2887158075124871990135103381732069919679,0:1068470994113776781214157184472987715710
+invmod:14490257580500837566390302262779531170047157,32393480535449409499704778950027988096,0:30287826764106717477700071788946051485
+invmod:6270142013450141253944931199020500202121765035,3763601356640037994669890437848434673885751057,0:3156243150557294814061853765553333562512998545
+invmod:809245912199158373741272239723610868982823,8030588855423774308237502000480454393456840856,0:904571791041508997839920338301126020187933047
+invmod:19533970453895817522762076874428022848,66299209695045887406306821511839592998483515,0:13599402726209549954335916901935358290831417
+invmod:23199633133008878062415683980086247896344005,61479113901097914563017676528126502674819176957,0:50989713359156907028812686282866020892767441337
+invmod:2862728440518115487475964440740584330473078140,51210656799701051518059629917289349291243014631,0:17918271858261676405666583245056315801120815006
+invmod:14971096876073425168884018562366418693791183,9559636375986473567719335761058531628207,0:5109731903973538125843601711325876342232
+invmod:532670798205641227016874816346924933526518,8612651409966775146216925722782469875353075,0:3211535369857991680135616378366713231520582
+invmod:5277579668620044053588021313993390529699415,7623352070936849233565453286144593741688259,0:2195179503632503483804554417001536677298355
+invmod:1703242284411257170432455927132332917751,91946197833078813303494400074098343464254335961,0:78127206681265732452981591549234092643891370502
+invmod:661687018626315126767845163322826263674289,28536010760826245705236059697847500278395679313,0:9982270980885276298051810649502841807467187592
+invmod:71856999282924192732858943855372784788,27823718424741468425870327772094802246951559365,0:18935276857302206232390405420351565823103424567
+invmod:4662964353558658735645456824027896151772,33878933564208336888348089073090367622314169867,0:10548442440909583945565305765948929087304389925
+invmod:62009389758664279395604249729164619334196,538359108562320297007051503463417099077320173,0:398148791843022164991556905409865960939044422
+invmod:6183332385813041506672156000574955880665,871559003971682075020587679481749233390914546267,0:361446020046797748452828311000569764812530143855
+invmod:9155753362316784223456266001165269228274821262,564516474013187481573175782767769679250281341653,0:119205620905238875198589061317020547195431291469
+invmod:2381725363012237979273240212723131218823907332557,627105554257965120883096528911164566660356,0:171572488325502115512339758443240079349533
+invmod:98450611484841078779323233743949010093062874462,498474891646461337593869229973450784375275,0:479013309851681824382144106029434631482323
+invmod:302941267046246453138910366044154426837953622,83818905504557213907433754163930101975463487685,0:77920560252131060387953578558356224479003138993
+invmod:3017383944801662240691138696888601411338516995657,61737866641820357298733518758961763874892655287,0:57869330891359519120660303033767633391977224135
+invmod:374917274538161669733321516492506551738043651,77803838634333688188670502424982439317036,0:68639725794250011077961000847054314676555
+invmod:5358355766108806240333647212584488077935,587627440281100756115550692187455782420924,0:314618325830273870368608880986071270807683
+invmod:86122802573518542982029793217367784359435,4444541935970557301558909662301636875859,0:1955320382109976216143063234526457146856
+invmod:623824975419641052226172487141306430801018589,20768350634786110695583221446196247762848997250,0:12103767314840562576462750961286924811261413809
+invmod:7590027145148728758973273983569196467947062255394,90068309971049962266103924501064672741412670385,0:6331972725698812300523110784176833763986644684
+invmod:686524668697820444915978210393072714624818,186650354938328642532017629073639972204995691795,0:65611028587457585490550162776486984373381347012
+invmod:8533533853350881783993052422423559214064752671,63016121594055151516162786594467518419073,0:131371511974154164830815450922802421883
+invmod:5344740912348618433699936772348773718405033080,754609660139342129058931248435676900268044223,0:601779294202074328690589293303990212685307436
+invmod:2630687964404181803667484048857594086603863164778,42030243673690269464501320091336384623277873,0:36838170059220383772604498138745951997014365
+invmod:5306175182479523993478999645749970458659031750359,758113498568456349896540610013930582835369681777,0:501795105681317857414510503515044239126764236204
+invmod:806866598044057476584935940512202394402119521,947641922298177262021501581582394143250064926,0:76703572909587691543666595336149993104408285
+invmod:3752967247553075344733410201251369307099526185073,4402571726399572455553419679967331632378787202832,0:2918979067711444062792869424130652843352323160497
+invmod:40984400287710529101974761448375262101587597378,7767837478658170863917839375734721468526147967,0:2136424825671493001327961172463161875887529706
+invmod:401457319584326150334816297804779451405784588169,540188815699793070242075787313955763858504,0:67372106144949744344758423425304866564305
+invmod:7328132145926961595815732345858284613765167,9787719863595769932092399021858175294652078,0:2230156054528184544247089349526629112621319
+invmod:77171202039883192025885180439962488662357894253,12064457568855376162922164978659009383963542,0:352639382534756831500079601223680437740983
+invmod:1689300510107332942753596615492360305248158883808,5021685778114233976935875054258022503184892416233,0:1762404213252802117851393076433629721481995643743
+invmod:413626471608667549603757397530674300567855542919,759613621964327430276342657441698817566357,0:642374968767231560916741285504168484044924
+invmod:815487836506353402229957209437685304756474,231515992882606539156732730332354159627815,0:55964822173154353392771255475917621969154
+invmod:296426386298708272323405866802864845229206612199046,342337072550591175877277735718537487310584965,0:76144006758731629943626088879647674452875321
+invmod:1368837997243033258097250654549080178537403,72416746615410564704099840606609957868938364467,0:42273580850321891614742957751910595825483883404
+invmod:9641372200812485192345151698897221555588679358147,287806137472581046723231335880874585176303828,0:255252466811823779617792436926094192052670967
+invmod:46719509859424879114122464677053888891786863,210544160158454559735214754459187198735974410,0:140373812459197552193672103292254446400518517
+invmod:69471867059868794437449477784309966908311269,475692585941773291840125734394747164491541976266150,0:329429867057697325602436904654233483107661273264729
+invmod:7405667221685129649068997020918698026393175001749,796216300173551602800332455600650397180944683116991,0:130410302259950789489978656088071644453583901435057
+invmod:9875331536196145287163751005066164594069492626,2201640116844513333140292091820792899163450729637,0:2047598928737481788502134745016206195377427587363
+invmod:62945526176222857740120186454769067947012290363570,44934526527044082707728840604580666450874671024251,0:43861879034315837687481092531336507739461347512032
+invmod:5812420662398017239905743494134134746465045897292,52956025052699844938819589327012098626977604723,0:13815068782356510869666523823706600133524973512
+invmod:62988324661142084736397879043193595721220178,7404210351476786487650626340728674929309799,0:5036483589239858803333996442909574578899948
+invmod:286333666557475431954356887797614991091286553885,730177931071629647633748484619415338517839601274,0:363260706789674293461306138407487067104937300831
+invmod:49616721004820516975071365326319319198923021689,132795538845737308034029046093145336156955241,0:56876640900410852290230149182444669136767187
+invmod:5446872665716082344009604433844511709028377538969,2280298209842444269643398464555071512122870262,0:375611662251833543184276080958156903157176019
+invmod:48133060961114172650826182330907073912078935,8721390832897265296674009086319009860242439839,0:7702992209702028145739081817455455176622350078
+invmod:40807573183755241530172346993573440974806877031,21200726747362217929091368487884445712920776,0:11454862264524468743635374252060129893516039
+invmod:4876011850332170585030918362754881792191414391238,883237429556989698304596380266521788568157904911,0:527685501843148925165860150493838048613672434138
+invmod:9004216524525198565187718452531030887145904294,8878366789568435967650795187708828058761785,0:4981848279005575310485064446844029075803929
+invmod:6993868737949430623485012912067313181948980567149,72587842808105829695332807775836181652781451620987015,0:29356657469761942723664151650917553481140935005518584
+invmod:75838243096115096340554120168203104139210864575119,6451996398231430323660940321776782700563518057974,0:1345394845933169255579194602505266246529197837419
+invmod:485790318680850515659798197857065903571954663516221,67351781195434836704429039169834802850340728665,0:34078566883503330914204885404291533157887033436
+invmod:371333400895514427330799618912986292421266652,74735768661976283216974595800490448686381913090033,0:775734485942448008241221468847983305862557765286
+invmod:6097834709804461306077622570209088350134909102,13260744904604742982854800098901232265425978195193,0:7180051176576380055634721013915424214485695619650
+invmod:600881693193364832300600937554551319012583954782229196,796027198454713309819370879215945879338962169620342457,0:305489886166685871022060158652320831304722506678707663
+invmod:5662964710494261101411655474670941615613599315,444220509796947509810830805138094482931853315876829854,0:83502974856377599186566250358062403371236716847533769
+invmod:6270395747183927103046939721473439728631174048403114,8803495340207614105802361410280441129955119276551,0:7638483007340998905004349443806488928949129256475
+invmod:5312750065420550632940178685674720232414077135667861,57930039498945162545687903211875639956633916330,0:20906112474411708869764963749645301466537400461
+invmod:8502626964451493813784509478933179204113913861,151683587165616476059679476891877738245602771985126484,0:17577340844446441446896817780642040689999518731337537
+invmod:4941004253366524324322788098717712122185453894,507952581732578381349957316858286666961520136240812511,0:312115745275256030023730055964263277096930720173778858
+invmod:423987861634880847990099692392247549547399923116457,6773005116228586899620384151284037878817381874,0:2411264735887581238523319245355992628456396037
+invmod:526342378928843427610581233811595257981048046869299,7096065565042815656938985029340106874450131548364,0:2266210293557852404933929618783723210631424222303
+invmod:78446630124873873738016711675224033887037462247129,7662020477272785489947682873719507826211767799272559,0:6618353901163261801200450611723749392144591388751943
+invmod:146724084718984069653032415105637599783153962,30298034422463313667029878130649415526567724423891,0:15840758667632633447433042854062793488919393155550
+invmod:532466063698619582407914116981870172085275218057609611,503389009870258977998715866699908326167138509155621,0:429130769700630834787501129352450771879630731320433
+invmod:664376039724377171384810644630468503764696090762,224298076389079709612544590641569981088172697659695,0:191050396356473488451331811254972158658440851245723
+invmod:835483973043657359948123633363211141824404441813878015,69643224478201509070483710852895974722854115357803189,0:53721439884173124810110466416454653383681843157933247
+invmod:813970262809468815021442298539024428784964079319,429074523317944731991730858790207763790104061278625586,0:158332012181946654631830290462479503904893230674781917
+invmod:3905569509910236582271054510190653771408672274545828967,21054133848316667891192282660059320939317809341779587,0:17094616510862655692939144695877501853951076117185513
+invmod:4691307104554605783547935208868795800777868512,942772133788456146227915931545461264049922041187188131,0:469683594104330994724852019245006601277880263578881551
+invmod:6344527026541951916306965449095645749422549760,76368107869275310020917570118694704915444730867,0:41500809372700676201512721693097909656425890041
+invmod:1532687328617246474516893240843261381746745335187504567,32537955155074651543885535513776259898758463526907,0:31592260213499097541600572787744360343931765806593
+invmod:7018504221615574834208014706510055329334098873351018,101610242334178923059833344503899037186775079202559303,0:10649252292552342413027086385381658365781051021861494
+invmod:614235942250741815189766632484724986765317349320542,9362550248383847419253207491333265608402756140737,0:8160460781303503000366571190909239384952542647609
+invmod:7775933593191150830308054268586415011508980457,368533946098442033007225558534059472616584669800220,0:253801676862101461324685686415984317623566854941793
+invmod:114994724586756601240947074309582797715956747530865,3876970882437444481290779177938795657877704941299426992,0:511133484674702237970986949221474571854159368113080049
+invmod:967002084921847074704293339527143050334641639867373423,67184311934061779941934593909885344171962367245011554,0:54742265392939905619225231956123009510166549574440811
+invmod:6280498620763463276942694339653106561075254543429361993,12246227880575723984287633819537276950692995636118272,0:6888911322746399525364250058022364228815026516488953
+invmod:44275278051846293224710462815690831294050926191,3528785552950193331450403045205521284400464217,0:120514793436107018084728538690789624267772938
+invmod:77233427780696709885390992536748673614121634321979788104,491164926805617690128308614539794239093995145700823999,0:199381937154931303182568760928699286043016185484364692
+invmod:2935661752367750120971963892075802637450138243541560,9020651236069334749255637029615697294334736998960171627,0:3125819936094028800430390470247841155021420396038210016
+invmod:302473523210899830602993285719361792150121191223306880,65877646712326499599771065429073023167212168003911407,0:52297679713827579628631563559676964578000626147057904
+invmod:267895147221485475464503294804253313969059499267,749147805746876465294375899176118315575206244421458271,0:129024846433542980463213625490720174159069030878062276
+invmod:3781978240476513092005529074451902150648006057998586,27364485741607024708356504480914129745315051983385,0:25329045084429371227591358650591561585384348697251
+invmod:948013514376879058094102833630021404464006764852569,8353743535195396401876310124547966294825033103946,0:7927522032829817758549574325420299949503254620703
+invmod:6773542220739678376382399310753118322321830877020076563,23546371430476080325875311266723651505011788851,0:23034799134897779290547258699648209277778406267
+invmod:56696856401426408452242119629657459089185724508184784934,7221005627051658808617341708011763226860565840269,0:2227292432795108865092977039762847004980273813910
+invmod:92662353717508325061448569170875221120898258909234857491,562238642230582644285673923363000274985338785203064143,0:82872573566192386039048139131290614037215257242199497
+invmod:89468591435176366016645724528914029419829867195549,705411786218184999265977265146374736801000908422516,0:485602435630685604293519285770866831844583644332693
+invmod:2277395840205666058520703175677485655050927000860231,792131783062753783192832245011815485211186317516729,0:36274050046894199444508304306949846655815849306835
+invmod:612911230333178233436163590340359496090089351991282071005,572255259654004408298629798022675847670239895312539448,0:403266920799126234196133278222931567019309289982594389
+invmod:213241578824971760442836297601417939805892681628568881016,3475071686128494213859357380055444712046960621996643,0:314926700961595267117992983958097210528266000605468
+invmod:89881958503908564448695138563460417549093214244379,33280210266097827064329998950581767848637995197241605416,0:12771855655553092160496981250440547140648269015354531011
+invmod:73159396554894592455810450837975467585529573360122965037,161924163103234420910961871269258741990082667722423375,0:55900291355504579400968626517795006263004157119627223
+invmod:869777439024092504944123032140706083242764771562615,3691156600535012715499994551919740723415019969643,0:181436500307965243185392814904512789376492449509
+invmod:9146539798430854552628645300653561881701305853292111330247,6627303121361849299873564751355803129746293824560475542,0:2409578230798119285960935905755578839375100707728705163
+invmod:24992448558250395162546529057033728367963608818369,97104418275857998682685499767517746419160351530467647181,=1:62070924902659777799435874506647028956762328885724256288
+invmod:11569840794297110873922272445085763696814732411121,3856710587570728871230191743757018008573821992755,0:80733435598402588027986814199605794544352758136
+invmod:649787313291617912250345498890431010716418004127770,550784775616289426175030973861257697988532404146125403,0:190014706473838692857161698137541544033343388692933291
diff --git a/polly/lib/External/isl/imath/tests/isprime.tc b/polly/lib/External/isl/imath/tests/isprime.tc
new file mode 100644 (file)
index 0000000..5b4fa53
--- /dev/null
@@ -0,0 +1,33 @@
+# Primality check tests
+
+# Values < 2 are definitionally nonprime.
+isprime:-39849281983491823000:$MP_FALSE
+isprime:-1:$MP_FALSE
+isprime:0:$MP_FALSE
+isprime:1:$MP_FALSE
+
+# Various small primes.
+isprime:2:$MP_TRUE
+isprime:3:$MP_TRUE
+isprime:5:$MP_TRUE
+isprime:7:$MP_TRUE
+isprime:23:$MP_TRUE
+isprime:37:$MP_TRUE
+isprime:997:$MP_TRUE
+
+# Mersenne primes.
+isprime:162259276829213363391578010288127:$MP_TRUE
+isprime:170141183460469231731687303715884105727:$MP_TRUE
+isprime:6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151:$MP_TRUE
+
+# M11 * 829
+isprime:134512940491417878251618170528857283:$MP_FALSE
+# M12 * 1013
+isprime:172353018845455331744199238664190599101451:$MP_FALSE
+# M13 * 65537
+isprime:449898244251979768890768832669397267280186981265491806615484951724642943610332184687956191170029747169547068359663480993178863727537429685544664092114807500505087:$MP_FALSE
+
+# NIST CAVP test vectors (RSA key factors).
+# http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-2rsatestvectors.zip
+isprime:#xe55a8129ca50f0243e06db83063bcf28cd006dc7c8ca269b96c642576a6c27606b57d8395b5c06852f9f1c6bc4be816610335871411733986a64094c115f35e7:$MP_TRUE
+isprime:#xed47455771df4e093355ffff707d2bd626ee5afcd7b6b609894d285311c8bebc914f50cf40d33532b5e44a1cab04444b474e9f843e018efe425ee8e3e8521101:$MP_TRUE
diff --git a/polly/lib/External/isl/imath/tests/lcm.tc b/polly/lib/External/isl/imath/tests/lcm.tc
new file mode 100644 (file)
index 0000000..14eb20b
--- /dev/null
@@ -0,0 +1,780 @@
+# Least common multiple tests
+
+# Basic tests contributed by Hal Finkel 
+lcm:2,3,0:6
+lcm:2,3,=1:6
+lcm:2,=1,0:2
+lcm:123456,34,0:2098752
+lcm:123456,34,=1:2098752
+lcm:123456,34,=2:2098752
+lcm:-568,34,0:-9656
+lcm:25,=1,=1:25
+
+# More involved tests extracted from gcd.t
+lcm:0,0,0:$MP_UNDEF
+lcm:0,0,=1:$MP_UNDEF
+lcm:0,0,=2:$MP_UNDEF
+lcm:0,=1,0:$MP_UNDEF
+lcm:0,=1,99999:$MP_UNDEF
+
+lcm:-7,328492456,0:-2299447192
+lcm:16522181,930,0:15365628330
+lcm:844378,24,0:10132536
+lcm:209,3,0:627
+lcm:70522336,34102,0:1202476351136
+lcm:32557663,995533,0:32412227919379
+lcm:641,701,0:449341
+lcm:290748,-233,0:-67744284
+lcm:290748,-233,=1:-67744284
+lcm:290748,-233,=2:-67744284
+lcm:-95,4770,0:-90630
+lcm:6839092,7,0:47873644
+lcm:787590783,-6789049,0:-5346992417735367
+lcm:721,15845,0:11424245
+lcm:-37028,-949534667,0:35159369649676
+lcm:618,-3,0:-618
+lcm:16657,-544851,0:-9075583107
+lcm:28271,6,0:169626
+lcm:-35357673,5207718,0:-61377596706738
+lcm:99,-565,0:-55935
+lcm:9311525,-5,0:-9311525
+lcm:6221599,7764515429,0:48307701428550971
+lcm:21590339,486739392,0:10508868477933888
+lcm:335,3699183948,0:1239226622580
+lcm:14,8755508782,0:61288561474
+lcm:-5302,9,0:-47718
+lcm:8236,9462435,0:77932614660
+lcm:43040,2766705,0:23815796640
+lcm:863478587,63,0:54399150981
+lcm:8874055124,10,0:44370275620
+lcm:8204,-89955,0:-737990820
+lcm:3303887262,3,0:3303887262
+lcm:75504,-62,0:-2340624
+lcm:436,2123372,0:231447548
+lcm:3361227,943089540,0:1056646008421860
+lcm:37340421,223177728,0:2777850107114496
+lcm:-35694701,238293550,0:-8505817017478550
+lcm:4263,15500547338,0:66078833301894
+lcm:1493,38730799,0:57825082907
+lcm:-635007,298501,0:-189550224507
+lcm:4968,-98492710997,0:-489311788233096
+lcm:3367542606,17576297,0:59188929003209982
+lcm:232155550,3921719,0:910448831390450
+lcm:4860966,700,0:1701338100
+lcm:2323372237,867,0:2014363729479
+lcm:4268,-29035,0:-123921380
+lcm:8,-73804207633,0:-590433661064
+lcm:395170,26163606,0:5169536091510
+lcm:-70027196,6945032910,0:-243170590407510180
+lcm:5871172260,26773591,0:157192364779785660
+lcm:17125540,836,0:3579237860
+lcm:1988202315,-68060596,0:-135318234527479740
+lcm:554434367524,-909419,0:-504213148079308556
+lcm:-40457802353,3398,0:-137475612395494
+lcm:410791452776,4492144466,0:922667275633904368808
+lcm:135751970,7417878752,0:503495826902570720
+lcm:9593,31047471995,0:297838398848035
+lcm:-18387143,50226,0:-923512644318
+lcm:413450673851,-124,0:-51267883557524
+lcm:-618513698871,-318914624,0:197253063714294189504
+lcm:37416674596,-8817,0:-329902819912932
+lcm:6242382,-943205,0:-5887845914310
+lcm:-4949666413,1501091102,0:-7429900210422557126
+lcm:-6385784303120,899228089,0:-5742276615660794337680
+lcm:6308,-79643949,0:-502394030292
+lcm:2421,136928,0:331502688
+lcm:333180111,442438,0:147411541950618
+lcm:723761305,611024432789,0:442235840862251429645
+lcm:-91289,-9223787613074,0:842030347409912386
+lcm:10944,57098,0:312440256
+lcm:57145099,-94544476,0:-5402753440923124
+lcm:9327105307,88173695233,0:63261949288116530887
+lcm:73230770347,67182928,0:4919857571607036016
+lcm:4810254287,-4310,0:-20732195976970
+lcm:7200253992,9893,0:71232112742856
+lcm:-92709373682,-664752121448,0:30814376416612439465768
+lcm:-2236424417,-69570761,0:155589748609671337
+lcm:781963714,61084006246,0:23882738195060678822
+lcm:781963714,61084006246,=1:23882738195060678822
+lcm:781963714,61084006246,=2:23882738195060678822
+lcm:78553,-3773682081509,0:-296434048548776477
+lcm:24811454802,-26314981001549,0:-652912961735421705488298
+lcm:805866671,8061826,0:6496756880801246
+lcm:4281823377004,2916710,0:6244418530970668420
+lcm:15229,320560332911,0:4881813309901619
+lcm:6093153060,357460,0:108902924641380
+lcm:624794507388,3264784,0:509954777752056048
+lcm:2632503413711,-514594728450,0:-1354672379322310051777950
+lcm:7216089,86034,0:206943000342
+lcm:112578025,4532680608704,0:510280230883694129600
+lcm:-972617496,-1100642928524,0:267626142282779963976
+lcm:-972617496,-1100642928524,=1:267626142282779963976
+lcm:-972617496,-1100642928524,=2:267626142282779963976
+lcm:86658,-56860,0:-2463686940
+lcm:2292080,40552081391276,0:3319593382689853360
+lcm:57144144326678,3579498119,0:204547357129208422518682
+lcm:77390585076,614924,0:11897332034318556
+lcm:685579,959286825595306,0:657666902604804292174
+lcm:346354116,451435163995,0:156356427156803253420
+lcm:443946215999,260668,0:115722572232027332
+lcm:640447120070,-441698,0:-141442106020339430
+lcm:1253208493501,-8521171736,0:-10678804794135860887736
+lcm:8507343,62395589,0:530820677310027
+lcm:81126006,461820852819773,0:37465681276782021316638
+lcm:87891707090,40954510522233,0:327232894803129615339270
+lcm:-767589,-991593,0:253711959759
+lcm:86229155,43027930,0:742052409059830
+lcm:-431963821,48986055721,0:-21160203804962069941
+lcm:101557073166691,-74080192,0:-7523367479146517284672
+lcm:-34269048183,250074,0:-2856599318438514
+lcm:7650667716360,-959482143,0:-2446893018624669653160
+lcm:-176432105527291,712269105001105,0:-125667137897384071121162656555
+lcm:91973525400419,-52180215632622,0:-4799198387886300095948868618
+lcm:9054526,-21388581343089,0:-10192813993374435306
+lcm:19326311972,3180878,0:30737320286435708
+lcm:501569850634,39035351302,0:9789477660994928712734
+lcm:-3470290487760846,622612793613,0:-720215751744466904366758866
+lcm:827793089252612,77591849874263,0:64229997108241062748844324956
+lcm:19866668332,4414961,0:87710565885715052
+lcm:136274450771,8659380001,0:1180052253653656430771
+lcm:952660786088689,171372582380,0:163259939044179413638699820
+lcm:429415374,9140880954,0:654205802258564466
+lcm:-368107346,2945634,0:-542154757013682
+lcm:2147845929,79983807840463,0:171792896056056736025127
+lcm:77885771608,-51236668812562,0:-1995303742544970246669848
+lcm:62272695670,208399244,0:6488791349735036740
+lcm:61973019,-1405255816878779,0:-87087945439289091663801
+lcm:286206733986,212837117931767,0:60915416394244148267933262
+lcm:-131938894,1048695278656631,0:-138363695208977699906114
+lcm:27109492,306933238851468,0:2080201045794490233564
+lcm:-314477095129839,3837918787896,0:-402312517253922259873876248
+lcm:4116345,9101435151,0:12488215692214365
+lcm:63853435249810,902940229903,0:57655835504559765637068430
+lcm:80076033,14791385,0:1184435433375705
+lcm:-31038678,1454704764,0:-7525352125810332
+lcm:-31038678,1454704764,=1:-7525352125810332
+lcm:-31038678,1454704764,=2:-7525352125810332
+lcm:20638192722,-14267370499730,0:-147226371004802594482530
+lcm:8065790684,-1977228453431,0:-2278272977117641090972
+lcm:362687955673,99742877979696,0:36175540507397430642015408
+lcm:1235326072088,201675880263044,0:62283868250058987186578968
+lcm:568009735,49546482048450,0:5628576827704468332150
+lcm:849579042,-3197920541,0:-2716886269614901722
+lcm:1808291492597692,96814519920612,0:43767218183093114768373606876
+lcm:6275712123233717,739880208952795162,0:4643275197065752315694969352877154
+lcm:774075573665981,7523229210171,0:5823547966683781965601892751
+lcm:2944466357361,497012903828640,0:487812591499242877115539680
+lcm:282862415058866,-6240991940068,0:-882671026265275987882021444
+lcm:571225883598025,189932649930728,0:108494445780794463607647612200
+lcm:815309478,-371377784,0:-151393913606918376
+lcm:320172590239,777220834144,0:248844807655600692320416
+lcm:654332382,7919190746613,0:575753660527071413574
+lcm:-5094673003562,268414312780910,0:-683741576547274437277800710
+lcm:-77841790209187781,35267718271550,0:-2745302326850733800658699930550
+lcm:735762990564598234,-32739891496,0:-12044400238928708979996609032
+lcm:-5999905013129575,144027889596460,0:-172830731364054662969688260900
+lcm:6861193105404525,-4725324526382425,0:-1296854562448559876288579018925
+lcm:859748569384694164,98523184164,0:21176291659055938820647004724
+lcm:570460270963,-54720108308,0:-31215647812506387460604
+lcm:61750383079701,3452251304617,0:213177840547497299540279517
+lcm:-1738716695,8560399484936237,0:-14884109500328036282376715
+lcm:9953417006786660,90085339160,0:44832847342864414393180280
+lcm:188523146978,954842405502,0:90004947576640310936478
+lcm:198834734074395695,171072375577893,0:34015130305505499211880376370635
+lcm:-102893613303732727,155104650554,0:-2279896847959124297878354394
+lcm:90836124710855,-98332551310,0:-1786429578786341640294010
+lcm:10512242068892,84377075433,0:886992242016856266730236
+lcm:-726835478343584190,29339956106373,0:-7108440343718461118245907014290
+lcm:5033847480079150451,-69469662902517,0:-349699687543783241256712189585167
+lcm:3869558083241,-8770208065,0:-33936829509626159538665
+lcm:46079368203995132,23609959311256,0:271983002096177133105574201448
+lcm:979137194422864421,-1378816153373947,0:-1350050180039492392646639294639687
+lcm:-72618673468,-244198092166982349,0:1612121956052969066631874212
+lcm:529564016606,376298866055896536,0:99637169476421881457260938408
+lcm:554186920892,-629719688885314,0:-174491207704210180689290044
+lcm:3455963977845612750,271884481278417471,0:313207657811150223746536093433451750
+lcm:-41270780965441117,-4124462824121691009,0:170219801814430998805436931657817053
+lcm:47581683736,9394210662450,0:223496180345027475456600
+lcm:8196306676684,76732052476696223555,0:628919434030412315441895170091620
+lcm:2939970750639,-2013582768244,0:-5919874442628068251907916
+lcm:70476757656499,-100957934015971,0:-7115187849144405009597945529
+lcm:3674841030712174173,540185467629182772,0:661698573546054604863388890438315852
+lcm:82915322420038008,123799513890,0:1710812768272220630953988520
+lcm:466513077506,73565730651787738,0:2451383957524498065361030102
+lcm:-38890216282311653,91459939591112,0:-3556896831865504089438972828136
+lcm:-38890216282311653,91459939591112,39285:-3556896831865504089438972828136
+lcm:576595981539992,20909590051109791,0:12056385599118501431228849261672
+lcm:956905636477652,8381376662473,0:8020186569762664723411553396
+lcm:9187294026565993,54295427509,0:498828056823282593136101437
+lcm:8866081281165098,6545042142269515,0:58028875622012459166053127387470
+lcm:338772425501,-750860960783,0:-254370988898468150127283
+lcm:6750486296504,8609697533187,0:58119645214823136262078248
+lcm:736067207074328,329259058372493427315,0:242356795500164369960320250670469320
+lcm:680100030114145,52232423165123,0:35523272567534917195872964835
+lcm:22697310250913136791,365228836596285515,0:8289712216805950219366224267686882365
+lcm:30594845950075862222,37349482121506846253,0:1142701651822614557685156508694964954166
+lcm:866936756424,-1765396942933391,0:-1530487499507519421423353784
+lcm:6939438360479781,24559856763503,0:170431612152541518812930232843
+lcm:927595346004843560,7670228140092963222,0:3557433962772809951143296742471775160
+lcm:-357321286444971587,7925597841132985664,0:-2831984816439127983772762412958328768
+lcm:6673370692769029,520191499051311630305,0:3471430704396611186160057152801823845
+lcm:9013236794945,1008467412252240244,0:9089555586614859880726704766580
+lcm:406532185466775673747,9519149309169118189,0:3869840572441069484183117712436347484183
+lcm:548046408595014443,777065152533771,0:425867766090470284154159790254553
+lcm:23897406396584,-8555442893510156172118,0:-102226447864489365824170750635622456
+lcm:54729344028716311850,2026849525600172204,0:55464072490506137031056639711882908700
+lcm:-7936445752013,-98698488318151151,0:783315198342695407195996516963
+lcm:6309028281362257922,271678876766048827,0:1714029716965733695518439315219557494
+lcm:6357785774765671053291,56936125648067424,0:10969323930774361884705778197353487648
+lcm:11095109588014,9104811531028000846,0:50509440857484599522180551729922
+lcm:-921590308699737078,472826384755153630,0:-217876106943941345664446493248646570
+lcm:652120832633171211942,-3387083844442113181,0:-2208787936835953406166467995677302807502
+lcm:32731949302549,335896184427699,0:1570648125658156079680986393
+lcm:3635516318567409721998,16713986701316425,0:60763971400954533716595371769881217150
+lcm:6746198240933100303896,2007405485449,0:13542355354775500078274959306009304
+lcm:-19072614334803913032,-240759760944833349,0:1530639355946797274927793576109768056
+lcm:828472954262165857,127978158379025077,0:106026442953302260750986298136195989
+lcm:8306750095431507743,6378030328941226919,0:52980704043597587430846783712468533817
+lcm:7938532173109072,7646615157112938170608,0:3793931277507783816896749585208034736
+lcm:25274397567311,3125247753747112,0:78988754224550174717491855832
+lcm:0,-6378030328941226919,0:0
+lcm:-6378030328941226919,0,0:0
+lcm:400327281633151431,37147489147345586,0:14871153349853852722430493627433566
+lcm:28164658061513141691,818613450005821036296,0:7685322634656510878949613649488100605512
+lcm:476291935913056166817,170589720180888384,0:27083502690607291480376538585587184576
+lcm:84130837655605609,16051948347568699941145,0:1350463860485469013094700782617631882305
+lcm:438146043336536562159,-2206822496905640873917,0:-966910545365262749689560255553699552306803
+lcm:8120293725815373571,24028314574527126,0:195116972081450718759827878362986946
+lcm:-667658265953408,8440015504605457600699,0:-5635046116424757633428637247402232192
+lcm:53314441150262832895,283247085055963859,0:15101160047199676268547968068076341805
+lcm:6658153298145442,2140281300389057549,0:14250320999144418995877331910041658
+lcm:213046498706732967,784948480361985741,0:55743508468763934304784144916207849
+lcm:-3857522843819,419578526133778265155,0:-1618533749336956944635887834826945
+lcm:-4948941087660882967,-779517282262677550602,0:3857785106731510951136294197380142396134
+lcm:4277076043224464,448010594023993,0:1916175378810781677476700564752
+lcm:-644113523059324254840,-71225587742718143,0:45877364252933205602125580469623562120
+lcm:264902435468141506,-823887292259809475,0:-218249750270876020336340975899569350
+lcm:1538706915662950684,448326823774496344436,0:172460896054755625075686197059836448556
+lcm:2036808313025110180,30422160628736748027,0:61964109668796220999356441366572614860
+lcm:7385426850078311,9871854919284839,0:72907862380963907579111265026929
+lcm:804644713550364054117828,8379163811459445,0:2247416621621120599518832306788891161820
+lcm:981008037679996757191201,-641409668917881464,0:-629228040654107304092567432937180101798264
+lcm:64201713053871850,879119102660231895102,0:28220476184584758536715661672075339350
+lcm:1033957429367195,1113485105415049436,0:1151296197233604656037339121652020
+lcm:14455075580451942850,-1885962875546302716,0:-13630867953974143493153933318215890300
+lcm:2615475057635555327591,71606675442458157933637,0:187285473579953754910128144228132079173078467
+lcm:596676024530775,2621192750454214313695,0:312800573973981674572351390206292725
+lcm:71665682789483848832034,351563529541544408090967,0:8398346796158551916852810998534107080858545626
+lcm:5092055214749737510271,-1833800774226189505,0:-9337814795210574311088704576082129905855
+lcm:600508413963341945,5057063373752305154,0:3036809105884103889579068197287884530
+lcm:-92318043858914149,958444935645415778103,0:-88481761605267642819033271229511079347
+lcm:385447683586530283,1775981280157037775814,0:684547870529570889684189390051875975362
+lcm:80717517906672139,362327909576030289130356,0:29246209529290308450092391020660324351484
+lcm:31249856290116188,7875872084416640,0:61529967699339457577602450142080
+lcm:5339381130045070,-287550419156538713298378,0:-767670640990486609645612376307748948230
+lcm:-28993892995370333046,698005135756870427,0:-20237886216353643864566444205658230642
+lcm:9179674525723481348,81469928617693608886,0:373933714172176229761960288978914029164
+lcm:7522547789649675160016,285918417200326088447794,0:1075417478665223340089057247433582968006102352
+lcm:-901774653467788803,236000195734098992,0:-212818994726447447848669649751186576
+lcm:142671415131788790,-2583777714764598301032762,0:-61438537158574095028788610137898909056330
+lcm:951078283105727024828,1487627587101952300275691,0:1414850291441640178530450466337072693601856148
+lcm:19185476025869672486,2445736876347152429980675,0:4265693291522152053797221279874464505382550
+lcm:6741226163186521681303,2568160083399218078514720,0:17312547945462088421236893499979478635434280160
+lcm:3987919571578399660412212,9884144363611069680876,0:9854293188987727688997011704065958289363314428
+lcm:99431631881940059268,-291965406586754754564989,0:-29030596829995156232729757591886192217768052
+lcm:36727416735327035,-1612205593089728906670,0:-11842429336086311491916222123088564690
+lcm:19590774006340220367562,984968880458891391,0:19296302740348077288926838014277057458742
+lcm:70695613219926859099201753,62591913993270611799645,0:4424973742363186825608316839246937058962268777685
+lcm:77425442645246583405,-296832015660977965,0:-656638577252342429795743277063990595
+lcm:807971872592227526408,40230405885131399744453603,0:32505036378154987781247713889763216622213248024
+lcm:965370212546292322,92058451234918953535616,0:44435243317668098531171705039686887170176
+lcm:418561885926860582,239657399821326936,0:50155726622771131306218069956618376
+lcm:4657697584188823828175,78713797195009784682708,0:366625063037526091489561582727843402285697900
+lcm:-38091455008728662,5763777114003492300442812,0:-109775328309201979538317902240813878138772
+lcm:54943065861736600767,6268390929335695219433,0:344404615677603400985934681975925581105111
+lcm:-697639190379957186138,2936028900796584636,0:-341381470880647489965333380835887162628
+lcm:96018089280939789090187,29566309848085271814423786,0:2838900578701380961562729671686086004548591987982
+lcm:-1112368751522257152114,1995174854903534746993983,0:-246596684713071723298909011042483787097081118
+lcm:-84342841213955171500540,5699084396809137598518,0:-240338485172501289667138051435146885070099860
+lcm:225675029492277024520800,92998377812004114915728728,0:2623426456932243737035123197311725507407124192800
+lcm:7655269162163547244,594548791001649285,0:4551431025156545678791700910016320540
+lcm:17608380663675562604,264448308193844308642824889,0:4656506476542203967645749547080047894928850956
+lcm:223093179893694063251643,17908241494426478956477995,0:1331735513765267693007651331958962321896225698595
+lcm:-9501451313199296478183,164266650410143061944307590,0:-1560771581254303549338241248628058185171476308970
+lcm:4558730178677382262,3122005086984557462,0:7116189404010403994895797264339269522
+lcm:54440882483631228680923933,4478571958703194374379,0:34831058528320962440312711060757171496803301801
+lcm:36855929355558415329723,308635436762628905,0:11375045853945367585945011810669865443315
+lcm:28683868680975381560,42902583850929860163229,0:1230612081254607193977374775224312156657240
+lcm:24731088466679335541839144,81462858536522998396,0:503666290303833545129681622218515211800503256
+lcm:-72335534127835253275,-227166439208550011362,0:16432205716068881729381218555965397710550
+lcm:474777034176054735892,839001319154604024448982,0:199169278989010220914577285259796918419130972
+lcm:6299666296143449904,797331145004636509,0:5022920141051174455685525850770945136
+lcm:8540885149755672764459236,41765710483565552588310,0:178358068219039923285097732763708140948642565580
+lcm:385990739803366398,2963466700114736836981086,0:190645117326654704160162372267660375658038
+lcm:-37246197932269024,3005402223074948482,0:-55969903033365437079467727082210784
+lcm:-751622018429096822596,3003864133422104297,0:-2257770423049491832679123307914818295012
+lcm:-6108319432277782804,-82931541043539126216389,0:506572343704992558730984950135146447174756
+lcm:30921518942393713547539642,721143788088068568685,0:22298861303554770289882384831917605974237310770
+lcm:570903751254308471830202651,-564896588437884119958,0:-322501581409949262735089396741686909437933608658
+lcm:1054271475454361570597270062,16484741384321323400,0:8689696310866008240570033696584650327520025400
+lcm:6529831639822170310307759,85346429845722052312845786,0:557297817952459046702350223377401463955562766253574
+lcm:-754058902141939454006,69516695016006129145191,0:-52419682724305615903366455441899934040585146
+lcm:976193241125104191848393,33823563038032982713854,0:33018333628496693179640404511073605465668736622
+lcm:2920092456500658009757,8895875497550350532901302605,0:25976778934365816392930294156133718389132099516985
+lcm:9994369499844252132394601638,93334243646132127297454621,0:932816917987935116609350111907831170748502078677269198
+lcm:569015432462996733746,16322837154963292812416483,0:9287946242754509292015515862839485902412735318
+lcm:192500272569416024937360278,-235265435750733300361,0:-45288660508178593749288683427056889794244460358
+lcm:5267095375035104443898399000,-764192677627393558125306,0:-2012537858983468571142965526423649868280387392547000
+lcm:51025753118541843018,-1664207936338749988204,0:-42458731648769528582814028192013959879836
+lcm:-62402848465899883613105,12900108782353988220438351,0:-805003533538860189408921682314395887504788189855
+lcm:-8212641700259728565,297115088713153106682478,0:-2440099767342009818056382435156531921584070
+lcm:-5313586393962705049080,-76998532453336088964044527295,0:81827670879828485147952271763338965987967674927720
+lcm:463290189242313601142817059,969769350842083604500926,0:64183518010432075137644646337185534388781059156662
+lcm:1917277332460964412252,-708614825339303498360550,0:-226435190344805337091761225274903062722243100
+lcm:99562752968815530108,23844471852654970991199350,0:1187010630368881028219592827335680236477514900
+lcm:3003923448532254675001,7732856831499478812681071,0:23228909960284118604870886637597256802569606071
+lcm:5794073936773633607324540860,-76553654622431077040278132,0:-110889383753149576103727978239709891143940060899618380
+lcm:-644932980169883872037968349,42642515095105038480,0:-27501564342225351457715028479060110852667069520
+lcm:41892582203464757978762451494,68041907390182959305068217308,0:1425225599311887918623588695629495898803810573641200629076
+lcm:-5550794996398648089925,-61773015425098686639107,0:342889344934094297210650346841878123357696975
+lcm:26506218374693057900,-167675112099207386871,0:-4444433137302729109790367830963302830900
+lcm:145568384864275126584,40072954892382195328941863291,0:5833355320423028246614959434448834158605847827944
+lcm:3161170925861501561771687,413220145707787390821,0:1306259510591710846827739981054213899841485027
+lcm:723440854928237000349411,-71208223609049472714282072,0:-1907960672801919279694226377330300776949407891096
+lcm:94994080481292730137,4307839512004666207932600136,0:409219253303864061854413637026462925940577498632
+lcm:7821178378958515500742,3087104738440174209004586,0:12072398416934336857114452721997626257582201406
+lcm:869891649236864909625695,991848579874131467931448097,0:862800796939950559315938082847205513561495590052415
+lcm:17628160996789341122894,299337591195948255548811,0:5276771249993287502058785568793774940966579034
+lcm:99527056994641754235498057471,655773087035017085668857,0:21755721802962104371752823247713242761829805420293549
+lcm:596721281791001887739,-328175786669349585798669238390,0:-195829476074104675040288189805440291150559409100210
+lcm:266802917073126657350936,148259550527207353925931727,0:39556080564609535241696861668682911763097415546472
+lcm:297095531532857951877,8071469565512676957784213778,0:2397997540817274789320989692996853463867804361306
+lcm:-64574484904487858142015156737,351049851111701482889769,0:-22668863311335277552737854676715612712147868228723753
+lcm:9213606993296693767546,-974475310790221342435,0:-8978432538291752468015873684497297955614510
+lcm:-6506246525097752180174,-95653949321972166356216836249,0:88906882198279699370047684476316613423860643189618
+lcm:7211807452760603826715508,25981532388511222064867790,0:93686904456803121715837451769742014367676981343660
+lcm:244358078258267292267766114,6788410077941126965241803849,0:1658802841074748272013529977344553715539817794996972786
+lcm:-84498071017578145227329893,51359077717175899950414794158,0:-4339742996343244440353286358071234877760977371555165094
+lcm:315675121566194900458712010,607326754590110945679173086,0:95858973542817944770878937652762380762977850708481430
+lcm:3336777364604897112789890,24326442512123908471776,0:40585961367908674095931490287547594986841572320
+lcm:-631164366791648249399815693437,224085205047080377284686,0:-141434596550917146771849565583627819691166316250805782
+lcm:-9374071452933990971885163627,-8124264246742383054580586,0:76157433551480046450059234199385450235104896467545422
+lcm:-8986611810629266612086889,39090932189616079255587,0:-351295032903711635666432166463380265071682698843
+lcm:131042125952122412011234961669,-603299752062616670818260436,0:-79057682096673636704088945577099341952975178863719227684
+lcm:-5931135084197112120929525527383,817854717051260202081870677650,0:-4850806806078831488870903900854502497422338114185819841089950
+lcm:37076034350171687718404493,6575825691817817445639700141386,0:81268513076859634022073542658756708736205992975479215766
+lcm:6586877468189252639017707825771,813151310907233772623665199797,0:5356128048043411806613358165516537614499231407192441180568487
+lcm:2933337084774328653741904208050,516673656644156545121601676651,0:1515577997760262602679690085554979355436376363966312331240550
+lcm:-9902991686684787357658450,173313993122814232472956,0:-858163516540686876248980610636336072294554939100
+lcm:9274522469490915283112908394363,44864081129175577116760112,0:416092928505602244504563614588785724831758965222564048656
+lcm:9608655195311416270604257657,65867528105907714734959487,0:632898366137150893335309426569727530606624485604541959
+lcm:853239911600142024011098491,17829323361272785163230303,0:15212690288662738268179355293062413175232317048772773
+lcm:23972081642808055559504902,-4501717580058722285684735,0:-107915541362031999704526719592126415237678659070970
+lcm:5314236376598680151908105,3994830160691915764873,0:21229471758282529614266075257916580301482995665
+lcm:4935319583093232012062136782,881389216056886912824752493825,0:4349937458332745712903267792817007035077166975812760371150
+lcm:580231659494763900889556,96767644291944525456085901,0:56147650832913989511127904567807102400387849749956
+lcm:303622305001319462939309066150,-27984889540977885375442171280684,0:-4248418333819511268163760331043084702315340960497818786623300
+lcm:8908131273613694428163643,418798812110676949375564324,0:3730714795515386967446577233797553865021052144672332
+lcm:604960317372762640669451812,820482420778387317631260055,0:496359305672865772215202726749222319854411791662969660
+lcm:3125355862613621420823337,52123353846012574000878521623,0:162904029521719649924422263486125418351967284017515951
+lcm:35876668588605457895900,-237986271303986771473105323,0:-8538154584211078670353490608427234416302669875700
+lcm:-43001262189486935668928474222321,75601013836677651900921245468148,0:-3250939017782005364312622194873995196088464819832369459876131508
+lcm:50360054222226284955381499,-7538629547593198554710875138,0:-379645792778070687264466482409787805710036592944271862
+lcm:16303655607623383537122,23252538460647040924816117157,0:379101379065406527294500251303186510479764610602154
+lcm:29876051059586965106021953,26235768232838079362376,0:783821151311760139992194729309972935608098240328
+lcm:29623076251397963944271763623335,47441755805615786352682527,0:127760977248178043763492761350640873496807885066769451595
+lcm:9892811422980328964557595259,603482574014084208448431822759,0:1990046433925368031040084916604965307795191807343715566527
+lcm:-2549498483308845928405350,2555383871703609992631017913548,0:-3257473652590120103062390285427854673645669471900340900
+lcm:-935906971037827073384146870,879641356065373793312781,0:-823262477154750723009760282203349336801144752145470
+lcm:19597038710644290533555897021,2985160892106475439715913026,0:58500313560112043537702497574448903543850923995448495546
+lcm:-5608937456930306694772980,836399586633606428927522624674,0:-180435114247317699327868488365007039436425700237558020
+lcm:7718522069758342120350478031,7389561033066750535580836572,0:57036489919551968141273365317951375124662579683087349732
+lcm:718875898101761373218778459,686314096776480574628984874102515,0:493374662700091643313347796063672168629137876643552239724385
+lcm:1300200863593962819188902,525922101427424561614551608409976,0:341902185229544560458110713971475236149786740307102643176
+lcm:539220635752920237029329058,29487916769600117002583914582181,0:15900493227532973069876042371837383552914044277544832315498
+lcm:5654437789656914341120143121414,6765853316633901505298664574837,0:5465299524692900146239549597899398996727386837109100340037074
+lcm:103114174998937498500059583,920095995082794389728025430890882,0:94874939452788796816569177101730218978113456477925771422206
+lcm:29882936700790118228421849,-1860889369990333700884198092,0:-18536279750198114735901679591403044437012106352304036
+lcm:8909623809613954310018698,-462806578041198407432067106139,0:-4123432506961820007043026316146032423296431299840587022
+lcm:7230230288816368650543810,22162946284655819337870476,0:80121602758364354591303319881368491740552371776780
+lcm:734442358589456361847988629,1647427465162259118128391711,0:1209940513118819039348215846845414818873067603985854219
+lcm:47616626651192848094181030316,2182277257935167463613810412,0:25978170360121936072057209849558211193870620332212112548
+lcm:294703827229370598691617,63046555168872062038888853,0:18580061101894254060770213008323255399294285845301
+lcm:-533653415261740333749397,-51216937243134223196656339350075,0:27332093479044801759907744737948616465079304814903154775
+lcm:784368839220787531616946253680351,39613735771181195550018240677,0:31071779944040382951244796866071327091341523727977793343837627
+lcm:5770744507580580048400572,231937913382367374762373686161,0:1338454439750996843543440906327507234975603867940884092
+lcm:388816489715059942531589642,82051838197217717225950877,0:31903107702510265086302832415272579698669593814016034
+lcm:60241729629297025142644618709,85181464884435369517497693388632,0:5131478776995614297555781224894400552133266197008401795116088
+lcm:1560786485638020475934392460005620,8850527081981124295638445,0:2762756612065888665370691207806362094705896562533237612180
+lcm:8296622334734688413856037840,-83875508267086319614619277276,0:-173970853806483090137656801493133601685389930382427030960
+lcm:-45794179084517723375284971259238,-49063790774577780701852303,0:2246836021296323435311993617164824492625064891225000325114
+lcm:1752071933321291709931075226933,57773126045256149501100162,0:101222672644126613791673432521136796654007466067313063146
+lcm:730668796977177255106481634556,938608337106204028806933670639254,0:342905912253069470166105593930151155858159563381855355668230612
+lcm:921730456287198291208119641693911,5458708493078803375257300,0:5031457870064330030425732359718797657583243087557468300300
+lcm:213400535376420556914942871216081,4183995847570912793889135547893162,0:892866953884353287726737673843872033409506009951957939872404338122
+lcm:32806047880829491896013320805772,753489056993475245589087354,0:12359499040704505410450582731649402374098432708182687703644
+lcm:15218771998961411533589410518,23457061020403160442042221,0:356987663435240813815179640133949762707316007457480478
+lcm:9046617676720978441798060,7479379807328977629621989162,0:4833077826849448212160770633271094897459555793758980
+lcm:2219170169044655639393672927,-5391273013704097527490654785062,0:-11964152245187612169646728984856115656974060298999913416474
+lcm:277590531551034474232270111103,579362077865358674190909581933,0:14620493377741521712796730933686046346752536860927744682009
+lcm:51422590325724235826789079575,2121952875387495603452158,0:109116313401543756339172704192689685091698905367472850
+lcm:511034032165016743768820348,458982236103828060996895790272,0:58638885702063744673892798532850716778223793123163513664
+lcm:4440454508740215531301617636697,3258309525326637800581711028116821,0:14468375222607860310511042523813260258037478238688128668452580237
+lcm:6330009746329830092300048092,-6167250670699283492360751201828007,0:-39038756853585645999814749830700965509494204090781844412512644
+lcm:-9374602262965156933926707655416,-30595740075402425097079774283,0:286822894147961315557763521486314502763707907853113422466728
+lcm:83645893910576549628700447097824,49931389572768584324081547829643,0:4176555715011469153471691311085610269167538819874387285307996832
+lcm:8030747712125824227213267818544,63329417394086865663449328880556,0:127145643461956118439868630218929081813205737418762248914457616
+lcm:378845361147099357535431194,38180105668041356349238612217040,0:7232177960221771411730351326884973759795619786776357172880
+lcm:25958762365949818177158173188075174,40582859445868015162861781,0:1053480804486029724349686454924029433193919106275980799524894
+lcm:95871031013239291309686124,64936572493882710890460913285902999,0:6225536155454490886042480192744349881519233810545112600285876
+lcm:455128054133718561191432952712,39088645380524987234419335395029,0:17790339110761304357582067458548970370146644724724054396868648
+lcm:1307047523348091088814812136,44132853285705545682051355847561,0:57683736585366097743814172916945483114493512756215268800296
+lcm:1418285824252402530993393665755,636810955908181043849421782278,0:903179951493194917152704617449910466299855863874287914489890
+lcm:3071172872783184341780369192882346,-58125204065109316437571977973,0:-178512549949750604044117019967590439630943828607057692292564658
+lcm:56958148205198214736866933854,4922289245511311172745764679844,0:140182240177343281524353792167921226808367574258629117519388
+lcm:4836813580368584281452577588,-5400032605107989894617874622172581,0:-26118951038819470026364723997465834517846139303988539028714628
+lcm:493001845960066187429806680791,4028800209124423703294502145421185,0:1986205940102641576976415454897329744147895770653902923543957335
+lcm:71197215106470682909632132625,70077573297929109151274279,0:4989328060232124924682056253101608707528304143079252375
+lcm:486722080146274783096432055886,505595939085965376271620470551,0:246084707185430303071142220010478564391091338964955649213186
+lcm:-194536785271632924316130857883181,8276525052027013498990299177664024,0:-1610088576841469642302988316918048088947156051499250583217058380344
+lcm:241211965193448971857220311,2710726738427327769580581757190,0:653859723678484041534242084550730982398579984949338286090
+lcm:667013805494915469984846976421,118549400818390788595763048,0:79074086979016886300666397440542951393124558234159091208
+lcm:507926799850267721181735296662204,67253859677995358015731931706714,0:17080018861911569471437509381376023258751803251807601040628418828
+lcm:448088677681619431331494894631309,779948091351174817338856782981850,0:349485908913850840791957607115202038571061594442475706481388741650
+lcm:187408370748924381155985806145,495794563709904959946586644094587256,0:92916051411047078205447640432962006059741039970472932758203488120
+lcm:868633158815673181555237006,836615025635832190680248872,0:363355776215354156722969079237153819583812159512078616
+lcm:945386362083356835627622353491,8230893874122803805176630038821,0:7781374816351144698349349350957993282560652485452042714874111
+lcm:5596932048341890824814087121,-2850793263280920843358756089,0:-15955696178454147555303366966824500182482049050635229769
+lcm:92079468846004092188293849,65000203344267255501708018874742834,0:5985184198822387758738668838849529371861013959766705099028066
+lcm:284485059147524530505559245415623974,-52174853366891975161102679787418,0:-7421483123046841473739983029315899581631043634755295287353072179566
+lcm:225019940499042054289943285,88057001889802818516938839002453179,0:19814581325767463952213083138864703402608880611447063777953015
+lcm:267625311635136684363577960127905,2364801628264216400078340665206601706,0:632880772719489569595591177205490383145217286350462293583250151205930
+lcm:-43414374537943144129863577734786164,-7033210862612719519352562332,0:76335612648449696783117174288123936538806867445493650875293612
+lcm:32883132771659855270849300682688,359989040176539024964573548207106,0:5918783702233763351390712750327251738350635067527850802106390464
+lcm:8225754994306229461538669946760,79816684330375527507314556065816,0:82069061219943782694121246737779709549970645203965267471994520
+lcm:7425838080456254658426507595,-1772612320788255147892065709861,0:-13163132073595363322916797538873046375619972048032782894295
+lcm:1660461221569443640519526747903779,1120888096894032723781619067526671,0:1861191218611314482654724970474950053651690424934372619599424189709
+lcm:-11718764104457037189982579964973,581785925357694644406822708535571,0:-973973145508581880509230586205500094467304746237860191614936369
+lcm:6811677000322905212875962023,8457366124986245338105030092893823455,0:57608846316878860294885890656152159404437095902874498977846649465
+lcm:234277964462994083732538315234,60350281492645017737168270090,0:7069370551432789506447807101173043521312584531845436775530
+lcm:4183588612759663468880479337,-629574038019737820951243554610835051,0:-2633878776348494576596482359410905898287329191507888206720841187
+lcm:2509727174403533842481294816277585179,366325095871570289922697736369296,0:919376047774859744204436335735246570640422606903982773682501840263984
+lcm:9652053493694317708921453500950,-91539642994112368354952933916454,0:-441772765486426429307043005631104317228468588998611266554815650
+lcm:35148593969489612322148628595,-82585065708416968121031576511657,0:-2902748942528768024032450841226352229253814757005116581031915
+lcm:2800741702103544119527140802733199,46761480207188283686223358035,0:43655609222787234193883724749974391389581728627052774652634655
+lcm:441336276433669766301405280032,2656936104993980830437872804,0:293150571825055340462835975394089506580252706417004262432
+lcm:19746122571650880858695931178058857,104545112367422664420669962306,0:2064360603074142331524120459909153582079341868724637548439444242
+lcm:74432478600289091913597803372,1021411507303737809729230605483660893,0:76026190159474490029899083115858462446496838080724392481739931196
+lcm:37218119790882940825047165121,-9786692593914842780007874460688,0:-364242297316869514078703840625474873421751340567491159263248
+lcm:68400175404962139133336849460667620753,8111497426974768586772111911266,0:42679065138613326270921172084657529459737080671434543323843052007946
+lcm:-36411507888779255237781266679960702586,288273015425729999064058691683,0:-10496455175296151796260705657513107808386313037221881095512634792238
+lcm:-93804297004149089553676142929158,72597578405766612297542242292431,0:-6809964806556531666828055851398144826196098989021186645152603098
+lcm:-82026709713179475197473688526642531,5827788603588390535677091203646382966,0:-478034324056320484117325267961249121989480834362662252362566162209526946
+lcm:545760067487517393173385480028,42151112506666653978439280505,0:23004394006312331510547051427125022225825594077610367254140
+lcm:-697412421088675986809554647004214,6926944054264140642234974161460,0:-2415468411815081649186019052688434218369772793280624742868196220
+lcm:57812799959867792819685059219,779735108345604313576941265627654,0:45078669840470262146069880262711457187904686148856378194042226
+lcm:1472311567166258003445083977221663144,83378953824849274359711951741465,0:13639977574949655229291079317010538142583886970067850684854934118440
+lcm:570337459673916278308389115966167469,6333660822968779197930730584647562275,0:76857957961877010509843395509780188770354864577206186663499194154396425
+lcm:-388785693105293562593219349398,820248784628021659491960244881371621,0:-318900992250380064850834487637248605290643186101012034699480634158
+lcm:11679788667362042415563834445557578,-5819547639993570526822921884507,0:-67971086574770424077123666817486620774164160205639229582134644046
+lcm:-3982959591737356792197606403519482273,-333248358612381656382679653253,0:1327314746365915910353403610458733118195746910957791963061720284069
+lcm:17221610285774362123428353448280602,11458184790118982447972303969280231679,0:28189770433973774114920757867056877758202824175213356039046635823084394
+lcm:772738633297996807166456840381926971,785759122171938805714543081571173360415,0:607186430168577693296664258953260658244617930008242877365346151059192252965
+lcm:125784145401376536208808801528812039333,452055550313139515567680226389953055,0:56861421070087227190049678638474498681709153815504817562127254516683512315
+lcm:32903571905950760393177782893378791,6631740924411766007832465757451477,0:218207964368018909275497254276866261100277667630506488424913763424307
+lcm:8742677352155721160009371273251,25083360125803108633092433384973055,0:219295724487824718593455764107115931859507036987734897375677251805
+lcm:36273669132247708836176424212020,533102320793846929600697481505030771,0:19337577198109381261236591896304826004083902938845516133439528067420
+lcm:11965144674509690079804137520044857,9349045655011350274674885782216185552,0:111862683830807014974569906953845003630437520055543213513177982475306064
+lcm:3321305668226664033356712162893,-403949753985171409898849824686029161,0:-1341640607589716272160331793818630136041627867704613639659980122773
+lcm:7395363159337411027760652209127419265,44729331460301249556947662501414682,0:330789650023303701714182934884591650253917627482713804287730858240648730
+lcm:871058047335719958990871843414,28094200616974302760918376942978068402,0:12235839765439807545562104355459585845290919144959079858231362602214
+lcm:7704699734056436938779166257084,546898541513497897846722209401,0:4213689047354900490455012376163453543698919981174872047646684
+lcm:950290435067652970604023856243611,4001208123591666075058892234775,0:3802309808564151732408385790073534886035212910698424588605772525
+lcm:3119293215232541154035748455321571,808684220462127868482572087900610,0:840841067384377328832287433031234586779556451356106729978612352770
+lcm:432360858532087298548744564083197299,240846574096518547683557847064319535,0:104132631550882737065113576806715978014672912813529852776264204584935965
+lcm:-310788798729818682147559678302,-2172955391250831365155305151397888,0:337665097870164518242716524072816191896004699076265879441113088
+lcm:649283478652713472152371045373000641269,9179675498867400603641823155076,0:5960211640807708792849652271953975864417053692073644908051640832431444
+lcm:79980532708199255123596245351024866045,35273005660545430889304120342364,0:2821153782949751307464444766122322349363016295719088889624882638630380
+lcm:-83351007958684418946822288153831314277,-51634644710916030743119182132599855,0:100088364703334986444002041507106189114327438112522438638963055385805345
+lcm:4992915740405389949821656927954249501,4523923119542484578579105473053048,0:1075598426283215515120154478613079151358480623324833686397654095263288
+lcm:-801991401381703662108108758716412,1462655905419442096496214673085035312112,0:-293259364831640743777507251364478142142085309047027174124191748729195536
+lcm:679369055865583831572651301119431385801,6364653911974833953564963906049365,0:4323948919089537646576384302944771028193868888345656961053886629066066365
+lcm:32178714589413433072024739357148883,2182815001928827996341206621079833349525,0:3696851628871457289339239307548138692732309404324005056784243872842227925
+lcm:604754886257955637472038235002006997,75686581968330008368600832791867,0:4161075479046440938277498574104870338592618123335252527305070790309
+lcm:287068066584060661996114628597630371136,52011890293701406927883275870768865,0:14930952785995133944874986127466642449246463907028312778992290363623480640
+lcm:3979837024286745384581666788748758,7350136706945206821986896298939283,0:29252346199869589826241656345690372038181000414430037048634183660514
+lcm:7385865195603313817759905903511277,1520983986703891701713359953638,0:11233782690466247146504034010039435409908987896556224062130175726
+lcm:764457193068206149728854992613,27858021258550102776458498820919,0:21296264735745627187463264202183322605488975579352986954871347
+lcm:-4155789385717252736363125208379519,513716864065732253356348104577569642,0:-711633030316107622405824053747853916334740454203908038895636729654066
+lcm:97365354260983249124725672833811771,5020029690975786355406829440294084209626,0:488776969262511703376009046688465573304498084561257966650740834323390307646
+lcm:83139160308299020652846789174256754,3913486804605023733190361150860684,0:162682003406234977077539172530366012958142362329068266990181550029868
+lcm:-17691166446369130975076403772363811082668,94600134419678935394632555907142,0:-836793361933716751903610096654309723151466648559815713270120684946807428
+lcm:634823647473707443708903538054380,3956996255499668253479385484122050809317,0:2511994795956101788922355113644864677876582447280810271598141786556658460
+lcm:-3637804742599340390876015169076139565692,783241759542604459838225899706055858717,0:-2849280587465938677344529171806295752584262014073034029610817921718004492337164
+lcm:585812248650822285457691267576462,21534520461947113931625020852108318,0:6307592927715191546338604981717905869057205471110964228553485605458
+lcm:11281432653044672416448534028211038025,711109480140515578563170257201359462,0:8022333709146834455095073412796362253303159149746025747385289864175542550
+lcm:676293649029453415159585825583394,97280549393475973449516311017466882903,0:65790217728903847286239146189723168106268785797184624412977724659312782
+lcm:-60552656313655809329731693060696763524,493007935144068742422888317617165,0:-29852940056683907903878516926766558721475796609356660329816267168289460
+lcm:499127054152037037035927375386500,1203956412395744650060889503126393,0:600927217446543074982206780295985557213897685478460386666725894500
+lcm:50094686288665713475507184834256049095574,-832478827433992238527275985275884802100,0:-20851382851131060794973993277969178760786122158514529534407995697925158487952700
+lcm:3587136855297236649460183411772356035310,-712398604370738955166219235841134498742,0:-1277735644700296381952103446442115125860633433942353227167692631711417651290010
+lcm:-8101551106022390770336067301182994,9185799272249263720169676176910186035467,0:-74419222253790694721684461955969753328255728462706287902254787547941248198
+lcm:68680574795029722620883183609775450677,-84158462638889794851250260034014551972363,0:-5780051587904985041122626676950144438458787116758152359160332249952887573639751
+lcm:155258118178686765062886673806448566,-6850017870177195667059084688029341396610,0:-177253480669014543271712665559172404205382093546240559566299352291761960210
+lcm:285166743996114296479394289968524943,559627723033455856754700399288311,0:159587215627409862324848662934458300983070878875254327058667651841273
+lcm:97635198013817214038209538637709608537616,-43337611052093405089732573050042882425535,0:-4231276236516932968241697386864918819022381398914657632453889680479868318366424560
+lcm:2025635628106428290541842218677337,8363403252785996217814021695187802,0:16941207601064506909583426911328603088283663942724754575178256243274
+lcm:39403341320445818916772945982544618,-3081545887974055895915003777735743,0:-121423204418458019221260007112987567988534380636151689137057510881174
+lcm:66538675039876745133366881210395320367369,385523580015310377616062750074359,0:25652228210848657783496179630561675959121693223651695460689142031947191471
+lcm:568797587304724025372575349953868,-809993079501337508688725757864677957,0:-460722109353884289924314758764698126555664169725436270804746626487676
+lcm:87438670031005707662235517162074411507878,762858503307630620547057859718065131261504,0:33351666475531395026558166505559631395861641079699397271443823762152715254487064256
+lcm:-135539991676075663249711183869449098,3187117064807540583340853903135708355720,0:-215990910217346375421192415314259011732701914127161619020473509115908570280
+lcm:3623316226168035106420698863103708,281527696822113339094642926844583498510,0:510031936005639216824268963288080554001943557921657188124458629796737540
+lcm:462743256592937700094228107961335,-6269566498572477078237555404177435,0:-580239923795081947084080072036122971178457338970051983328091895145
+lcm:-685484600842741055621576203380446857767,871551172534175305655069705808532,0:-597434907618612100896516584776549623778036010575252420692205107539068044
+lcm:220964518681325411201409247135357488007,-5641829172229111635876189209726787450,0:-1246644067523866218886679493927269969586873926750864717926006590010013112150
+lcm:302531333113895329527974519952510,186535245939488501803212618851457571589,0:56432756626801787093558631197271214562205468328076903171812192205238390
+lcm:817537141270922830542026664184986,7821981713799768623509532856543951,0:2131586856457765504425364967419253491712890096440257591636701106562
+lcm:8468979244486855292413811013010058,-209488808243349961649691393540068,0:-887078184482608830617084669743435658018755140226162895602555001972
+lcm:879852422051274089521663230058530,49497155404087571445757965616479604,0:21775096033467380006952525371180650761765159390311330589646735611060
+lcm:21764922287301916637920770938954126,164044760066720848860497915166650797335,0:3570421454491268052799273529790558940088345201564664677181891708888054210
+lcm:59469732179854673335933541543666124,33859516881008254191737434099260638598,0:47943247634591169393256397833360901700530080487187711490425670722367956
+lcm:5622782096444522942366700649751601671560,1818924766888381565955786591467033096941030,0:1022741761403951928879352842728218349531334767337439634606427252402319167074810680
+lcm:-83658234598433632746857009684831849359505,-29016349811234824466750396183186748,0:2427456599698498400779164525993522755993904434491695109250156524973603839740
+lcm:7054089120269602821498711515003074,4095832337673576318592596805192095781914,0:14446183165815794387548075169511726311756130919745539387698300521071801818
+lcm:990394898068553803695514279851854605418847,-7739084020331097221051527297005947155388,0:-7664749329459790605184280312841813382942964148487855083039273635724968309932797636
+lcm:54075935489906064661012070011939942732,7918292813066039667153314788962651008581,0:428189091349545982631162674290883455991732907828213951097897291399359180583292
+lcm:8772115771437424285869834799732506658796,-932849018789404004804426567212331569,0:-8183059590092457014103801212671744691867340048481623621821910552497102330924
+lcm:-474373401937043543973615567508636867124,-23736477393422078122335330115520892673,0:11259953531119359125561737495585820068714950649943932579707916447562566182452
+lcm:8436352086792195283692976718955932574,-24226347745891111460405966918193715809620,0:-102190999680700937261627650760472234672389538208298360366751473305837270280940
+lcm:814519302031186083731939523439915121,55324835095437197264275880684820442585,0:3466395851301998018482796204627115585152729004909209666935241139850294445
+lcm:-237764758709584162016066869681905512952347,27730963225107998869867496093972168,0:-6593445780002155177144945210712636481509108047897422208741783636396128278296
+lcm:7518474854158787395750001309747813,8381114315785290417935232114225100106214,0:63013197233061936586019793610222181046567760778431006705881553819854209982
+lcm:57926271609377407522025180011097851547,-460438760475654775684236043340437433561,0:-26671500698797845620038488129522785806400814035581845817517898599701653568867
+lcm:6638349918167655693810387712273716693403,55308325418124425819340246954531134649556,0:367156017513396353523080763860964198057435071526450849007117311720362229502079068
+lcm:-792096039638367514268257857215475476214,17985352918594429617981644232595132,0:-7123063409158501091874013108015475150372207113988264273740643324379095124
+lcm:17523605051927467343416676052611136060682,32818776862511079287568864844380549,0:575103284025979425337961066906823946761256491065774387656701755680364474418
+lcm:435598204136143930685119666237820390,902306362378699323196514142749053448065695,0:78608606206555625579369041525511439839013315758266695141072573521539666104210
+lcm:7246625600474134146152993995542881524104,84045078681310625106949990828070364497,0:609043218765848459070950953243439359310276390319003636791153856018486171335688
+lcm:-787638361574460696958641849383712843152717,-98972482600264920015196417920239935812005,0:77954524036229481100840641198098180090516196148063542559493953965332234357616967585
+lcm:82374608290966933640517911377351376793038534,3375365592517566879211534105358267232412929,0:278044418522442081159379773928407521481969102832422171826378968402371349113290496806086
+lcm:-65869507968457359071511077346860349916,233541308077986424091233056554170108328607,0:-15383251053406881762895333316227673851604711244588922960984017463587249932847012
+lcm:434965647854018848199731601803786298508849,6881642201690537465635377223216241,0:2993277958557881269328249998872265799210459572563672559065439071522179016609
+lcm:719612999193225374224745692059996056358,-315519530953816852193901984099603790510,0:-113525977986857927473880514812648272923195988059593175472980415910454192781290
+lcm:3371856558784507755414140667220962994794,-46940188151078159734582108552804551252391781,0:-158275581287791729316741990876515371668219778704190560942981767461139678285151388114
+lcm:4803433840417804894873156694592939602852,-72456645795090954873268375616538340122311,0:-348040704375306339795449754303228838077133852627838127804760032434988381444430972
+lcm:48568835567133010333265540506612310476167,-10706367926604784868082114989212135746648832,0:-519995823348494578419271225922535589824979430677892239954987805560794580396454386944
+lcm:-640514959144433868933444881224466486263623,495227035072426375802319189512972514543836,0:-317200324136634298803490410310491121240672331811889843420769547754733113081885677828
+lcm:-6488859550432975345382980598094012298,1739553070312394609661279054142037504040,0:-5643857776890793418849823122431638031104808487025959819767412990038492341960
+lcm:62439762329215278757554454849955204768025718,79602289985731119990152260854511851,0:4970348067570324615570705607275557501940237030878572771873031709232361903784018
+lcm:6054057220822234921996955072468282902047103,-41461621564455176604944655360416823,0:-251011029419288750464457350960394818104993744337372045669164809905502059613769
+lcm:41593335543156355768394832800525873230,751910447000975730197547607815241920,0:284313304731966064820099773565043464563065151891136193714105004651834560
+lcm:994454253731718339598418586069934146007,674502407982587721309172287657440910774,0:670761788770571291425639315014529979293655007270270606543282922218043975379418
+lcm:467599304203676521904495847137440151064429,1065364075426775111107441639016359411726,0:498163500393153194363286906417357715847233221784448787935167388300077631164094454
+lcm:-50006834540638623993722097585899096403763,-5313099491095445109561808031972399857647,0:265691287149161199757555723574229252417144350517780818574650795718178070835125661
+lcm:80633786527554906657368596063180401716797,60423064130048311342811193512905633441,0:4872140454403075663557443919045087358815687394738194780627830508431609174608477
+lcm:7515721962363288712694440724080300383839,847957688242291310060264069657345589412622,0:6373014220677391433202574116816230429840218559515683152967957040454035241151415858
+lcm:27726212382161724111674518621229053817654,844465139764626291093420179330707907,0:23413819814445912412285655292812080594927908481755534067419056195692713990178
+lcm:-9817131728229141224738800156068771165515,5514447437310670168515402768125807553,0:-7733722414353494049116967432808422342245494692973084146482292477938628590685
+lcm:1101490427405231724327190816394483390794764,-1715150116840413365727028822839059671039358,0:-944610717631340024199197825772309008665579808517055858746594565467440593828772160756
+lcm:8714614705512806124985108394035361802445153,2277516152797095323407597912040972562623326,0:19847675757208518019561453963926275072330819370134031638574421823784137713762913438878
+lcm:-40241069975197162607015133362864260639182295,92350494843755720369837991386076354459722485,0:-743256545050331739906343199965798133902862257044301031935484830446583922737000605080615
+lcm:94926798565178929705057494111757110129555,654944641739167114202854904453615515658738188,0:62171798077717196972382133382107571708777354355494810646721424261049356268684505946340
+lcm:265280847975099333384365084677641815670787,79159871617113409657206914064640126799879245,0:20999597868187843053561037716605216806384147652131248848290439305459650098340274115815
+lcm:116347226264838928071222153238640922289035,68573180747149861177662470447052670907671443,0:2659433125362780479271819825899011059848120776197137181515334033569979255463087175835
+lcm:1040609825768545533315151293676302487896884,-81323728160947963681253577857302080515,0:-84626270592412620351087782103887368619510384932135633101731317980537259985615260
+lcm:995902591817252306534602024050315471330353754,5332558356879676808399004303967153306,0:2655354344316609212808731137647072862609841217315610320176187816399151656665305362
+lcm:2001969035383918099033090062929650143669765948,4190101466247488888803682714062857957220,0:2097113347636056547892257576607870417625666910651072024691458074358445968441699186140
+lcm:520711239532941932960582838954921846930386522,-3853096594619017503346777573808512971,0:-2006350703824226084150485654917370322708059670415383459171549901585565143080576862
+lcm:60199373689261241651972446393273631317362,4966864098864732001544113870901038040,0:149501053975666897103050547412658552280636970592772990519302688978409237225240
+lcm:945149245494027792287917914515672725163081263,8902933189066222709145663761457459365794,0:8414600586329679076832097202813182563472890369046719691038445973643576962794864517822
+lcm:42113632082774519107063284261972952560637120,550965713086089226514793739995356299364345,0:4640633466226213589957981239329763407434377391979443407814888806055710449184842297280
+lcm:699130208513509445029837360613055447835,1388996167624703080432361535173321299212301763,0:971089180295924181746449876683106046223557368848629195863225292564207370057125033105
+lcm:2708864861499120155181972404884433662661130826,-9669434874243213781569557549324652869447,0:-26193192361391605615558952560977409140576479476697591006776382263831361618654765273222
+lcm:-2663320619224926510783240759799877830,-9288856838720796348912703146202293649985994,0:12369601973796782329028816697760192304592616771255092738637656832851511205556510
+lcm:129339208558322679510730678747389994722,12274162664070343010820636150243461714,0:793765242343485804331099446227740401740373258846764856738702670720734536754
+lcm:7927826382521640149002540477963715500150746,169024688202278131082480706237325364215068990,0:223333063737919130606048178474544752216924447740470128636366880733694566431051631661090
+lcm:136906526225769628858637915191370345692692,539213183682016621647404279498623014328141,0:73821803873042744699575963663268898393281778327505656899589792517391459419633645572
+lcm:30681142365936990868501835461428152495,-5027491490146180677917496407674117704,0:-154249182152711677657936575800296045756593757870287279358854312185891271480
+lcm:-971981137022757867271162004648718096950546,4334305792750860480761829171455584581712,0:-2106431736321153641881651019375387709927826224608513058301342860436792581080007376
+lcm:578802014801938809246604894083179003839,4755521418153118560811649969223227339815203,0:2752505378260798366799002210776469662264057939931455802132200174149940527887564317
+lcm:-85637729865865539531457719920611651870241486,974400175977421869121902925057819107693817,0:-83445419051606298238772725013236132640041467317129471694684769066837807060528339092062
+lcm:-168964790731095355351979412256338118430524648,170138331609580398941494555432555720911428772,0:-7186846898937614525591235743048196241372711495546492763752347187132124897827551810593064
+lcm:790938498909251314495722876378080005340582079,5214770204816378474402582970231763702140978,0:1374854172651385139955310854649879453753928013886594694727948344749512222152267012777754
+lcm:3097935765451813281781983641770574025792276,42609404056306319259222360596281494320705429231,0:132001196770618914910107580782114196079241607233335405092295156225025350707315539424419756
+lcm:-98485087154927525975034391790808080098982,19775664577849930783360381707025488283978,0:-973804024748081746850819013189941767013339940621603669747325245218966911782355198
+lcm:25900464334299058097279910365875929228,58255952834922520501042331752256379575,0:1508856228661518846300670852569471328709790883165326524402490612694204718100
+lcm:79400185595521899110261406600117591081721314118,201740226840130845073877991057259510967,0:16018211453189077537841902603464990449906833086676810898799136608951219916977272932106
+lcm:981167299738316185980724229187020822277,8133607419206585086507618470282084549435045911,0:7980429628634459820355488852068596406179426323528568158104015662222056961076466559347
+lcm:81466412463591236560961446462245299836549126707,866192944729287017177690246604876328497,0:23521877236122927651693163907061883464266675326601201698284201208926249964967269289793
+lcm:6534998388738554052417315288897046254899165842,46609611771478693989087838979597248775,0:304593737826342807250457708401174251945994165789414852595908172190369819865656343550
+lcm:948084924179221265735435784532032916982,31095014697784883179376411641933005719333,0:29480714652101151829666949589520351343767111464822561182540749953951625181413006
+lcm:2750322192684776089555518232723747026,16282797711115835147148988819960931175880625768,0:22391469951939378515729446954104603778487035357551482666768260498213644003304482984
+lcm:-916832268194684002726682872945582785046,80175456371164380904577325966825746198033406059,0:-73507445518318567912336331397416597212835389484585058461161628079009895397414630993714
+lcm:282231592138255672195189656428026230056,96673996679717919403145753072968455552546,0:13642228000642615449413724806392411795013641635130782296987254387670532396261288
+lcm:550580097204590201609373226827993784219420731,60517713169991893657707958780297059239491,0:33319848399733645437661395589377990023027893949147177182635468091834964459423419287921
+lcm:31526794192792048622410273704705620482050682,70537996848502378104686898733501905256490,0:1111918454707274300580233711800474352600757530537587705043968883837787075495194713090
+lcm:-923613180033278870451470473112995033306843225,62635452857298067541908563173475507759656054707,0:-57850929796353591491544159777994055136678493390586182701070726329142717640752659048072310075
+lcm:469196843768624413897755875308788890398465291232,-15296277161521766221056511754171865009042943213,0:-7176964965596105854796051880140430745806790021143791822882675477990460153884190250962482808416
+lcm:2628065716223500508449356215564412668664236,713708318009199991674271791693482010536664884,0:468918090485879510666557537656446407094985302907396727300429235150492228937795661972156
+lcm:604553604369312265623368647573085123221252020,990982890678004704551740474471789043760433700479,0:599102278427707884215998875763263404402845043498163599628915781601939770631217226224053717580
+lcm:97586462652371414650265963064033775148721243,969409880443270812997088798402379069080662,0:94601281092717085428971288705993159426354381047162321909314102361504796669908919902866
+lcm:-765406874969209688613302257358735487317,687488505077706911028822098735771705823765697808,0:-526208428248781293790355829561494931467780389995278558390525263117575307179181438701136
+lcm:85075624707999635862443444914978287825359,778046486301986342411165862027907781749497,0:66192790874005569505967522431892177262190586520494284537342391004284567008622094423
+lcm:8227248806783006644129224253415431417213104067,-96883503079217553138854609209329008354340832050,0:-797084685105450364093424636607878440722968607757607323583949926033112024630877523264018947350
+lcm:5027554007771258456873599804445876368468,9124875242153734630106913217321584664013715,0:45875803094102741048036279096734905134493820588179489085096405521013297169145538620
+lcm:39245745484403729199058188063461104557810253,220067769421357576954105356315871937975114,0:8636723668031045203182769468262937482316831571209371261835666035163932603354648043842
+lcm:12265626358518464602956912462337886264411404165,-62808539324142868756473505816723401975937,0:-770386075474250281180131471535743658895165686987724121596740049447065305055237711577605
+lcm:-12272356051659726939876917766506363796290,17656166644036956054896242696928896080969790493,0:-216682763563059549497954402078347159387989008283715984882662478463368364976841430670970
+lcm:637223594292638303876168193085997138882431056,94504571343119776477559774058446419793557358444,0:15055135657086962151475550300387890956134219709831955986646383218960383823718063770077359216
+lcm:5571012420064356266635359647247635200655740,-21295217227115690481188602248443089551209070396,0:-29658979915057488281375910245844852139690143598685009046127888233506587535909343755368260
+lcm:5263843748978600609740419748581371970418448276216,5384845751134428162699702180820131424931650492254,0:14172493323161468463600107052030558175510328324645921496255479072988481662969199337241737080215432
+lcm:886573921242233631853410597832339291851986573,91564665302299543163193474542608720062467,0:81178844364292397724319168352869382688643286956887488649289119221530204376834605255591
+lcm:26539751625701457124278640373644598585396,2325338527842485879693477585982320189921160388553,0:61713906974613847646349243530903967347131153357438117664659209426320342893497093511371988
+lcm:353508003643539157483752498296868928280378,10742495675871104458509832622060247315860,0:1898779100263273019527576105561544611151524288153407344701797320631121810003097540
+lcm:-4734613561112436559828705330418786656799216681,5767402184612349878575526105980302509419976764,0:-27306420595655124123966761566392172844463942752586247604702902500841784311547866248421200284
+lcm:82083010698635736174070971617820650592649198695,632174562080517027772509374721051956918078145045,0:3459386089510696037697607329475150733631394015157940860209532577771197095497123578020748981085
+lcm:6173991144338684494350090118957116722781373,-738485502817232028305101940854863776286515,0:-4559402954616091182455382994371638790076884277447195239272169152306248043072153085095
+lcm:-493513047233893983448577482415236886372545860,510358065314512191744416886029069217313650,0:-2798537377708440066088399588452377494483186344049452196318380194547765420639340322100
+lcm:326654054139623246358073868314669601484091,-749350879522921841553744544029160051092161118734,0:-244778502769254807928944561265310682694306143662100245399456722534220714864996773263060794
+lcm:1402621524995633967650615579165227953957890517212,-4307813373241246419295301377872133252586,0:-3021115881486111596495041468952452755324614644604079117686302481886685354889693688255116
+lcm:429404746005804957738561594094664667352987,378882853314853204091011966904771925997210303,0:162694095393619197081345508962117529189396776805991399292350948184192266104441374225061
+lcm:332341701384724523211310134953299492552149033413,851224516641538736779656410258860743437969813415,0:282897404121038737349436193561640178534459124296792792204901752510516940857699900180164210635395
+lcm:8093542646198882950722808884458624246299608906958,-36537804019444103265563497755234936603188804846,0:-147860137514913904634692391142170680202258776956700982397999849944457772330156859656606216759234
+lcm:22659814113479956892126670971189905912120035824,-7769923990496178313173088170032841760727,0:-176065033300511807783943084226119789640585676482818345603663798333554090985834476284048
+lcm:-66431972193306385702365512934093484764859082,36581996652652744665199423002405565247156,0:-173586727457475315287286644140245293266784314041722406717122380794776682723917233628
+lcm:-888473800362239868616054745127669042022317,142999759078860850560633007783677610020527766,0:-42350513133226737836563925020363583106497633262140965689620958730476127814149430051274
+lcm:5971942663513046812876552589351160577576206860,5155119487765712370432570496238254289228130147,0:30786078004495581876769132581215368897074670048309664867385023649025961965929287514674208420
+lcm:36328343589972083920724771391132711614346,626466814451530915421088090957480792070888316,0:1034477349232295636348590401427803652375984824843092173570332762552453722767574062788
+lcm:5293116409600323220539205506696278195160522774280,-89478075685508708042860880549625934136374,0:-236808935355212916308616284114978382722590502180363697942174473357408509364368655169830360
+lcm:79576614103508536656978289576589750212587261,852468870734033057111244131505440601392558836846,0:67836586361655850604287977041894979998590061103440929502231721634765812139562797406437018806
+lcm:8225066772418695359596812838151452668642167,32895491347247919323385073727832554930053,0:270567612842635564451661105276011053846580530826552326236219991362408128533171344851
+lcm:6163942593967174125699747500635651388266851958125,35785148285967657728202559017385960485415693874,0:220577599751307459197829958073417379960145796516327396960366172323789774042408250526882467026250
+lcm:2768453763718344802615194690925869147682838954,295289393573622382700104229276698254424111309,0:817495033025002504068133964169976601685138884223266625508984010676066936521469461617130786
+lcm:543530772918490900335995207569824317804903920459,3816523263571207729432080444412751436592123632,0:2074397839310259902661375133149465196577634869313509399704184579022798133468044005917222187088
+lcm:1092477340633785505464776554395206472561372312061,-80145274095041381989361699268630409045305877,0:-87556895907716629238600642139851536991533588781637223712321645442750907264691471870441282497
+lcm:5221300639042222043517187865188827094681806,28716457589092549537459686031371792838180039728,0:24989543060159632642010593077696572867622550344397734652621919451008087743078495099798128
+lcm:-468871256127286679587501070578429844680401783,7709908112767006788780052051800778651016113933,0:-3614954301459024712014678778499413536274302047069226791616378154943247688691115133744342539
+lcm:60187668034435065431875732180204005950423,6575730301760601160210842777500398231559661,0:395777872486342581314679269175741080629857948827943943881264571589081297075932686603
+lcm:85750547893356514086330287277441673045104762,79743140579005364490235586620393656130064,0:3419008997693330405464249977225918848757344180361491250868746891061450981564188882384
+lcm:4548581293372942515724176487253593549214930,4238661184062900689214356649238748109095650,0:1927989497077451677556406438992119682437686855444693788604757451990503919504977805450
+lcm:870890539340345883811990618518239041519315472381,-326492148393756245001717974027772662339968,0:-284338923205026619246910784734503794029639825911870769385331694156076881647046490736423808
+lcm:66987553698256227716875714961629477167428173612,90975165679807773385648454136069587671757554212,0:1523550949045970063245867032701707546441284497509992114155614817828087572926246444944809463436
+lcm:55214217278725852504312036656428464058159216571,-38639629611220548541845337991516346077285504,0:-2133456904923420705886788529419803172916228952081562524788395230166386012381289930934886784
+lcm:891217139364757949280558543150622433360536923866,30525879876993440244467275213072433106397646327,0:27205187340566323080358381531226152260280933712987740283334272666071747659070919682319193540182
+lcm:-27569366446500582408824975793718887457276922405388,634666021153562229559368735956062829411322343,0:-2499620015475006770093631859600965442502552615908591007003664916282081612538456035180769712012
+lcm:502864235446447920785714797929749621810588808385,-661761137717295415776353819805381820532626437501375,0:-66555201713275857902811739936791100923712566713387105483008138592982591252568436643492447609805875
+lcm:846540274257645306570757431119674434472851673,8616613565185012233547219046445322085886975,0:7294310410643867160484254450457795378883045914986526511813394090546583372432655817659175
+lcm:-3309007371119113533010968742743901666008447,-54456422219293958622124113256532150483182055,0:180196702528418384342054817105817441009885252753576126005393548812004572770935068818585
+lcm:3808438337556464123872249539607274641406985997532,8958313515020597801994910602927304472155060964765,0:34117184630454650095284221741033298990688190756311433174116017572873358206925691228892157828959980
+lcm:3966980856734279836284487724100931405197679196,7991199588345191911654938564028578389298180118364,0:7925233947327058439656989443340159765395723535993677440234885472317622785961246017870345088836
+lcm:65639444382189527381103754239686068124303248439,57344187472963481946737524023690750337279473205806,0:3764040604273435895633212274119116479837782295002539485107922790189834206416168312084346995236834
+lcm:415167227201847402226579925485934896345892,586575228633844519664975226407615633553394085108,0:60881702804300728422164607733352957690389009263077497409872743056634977203755428913544084
+lcm:61619333876398280418219395631027787927517659829394,919912829682211281138193507951318719985265,0:56684415789370483176959265833922690931907142380410669255035534110985337015940545738093879410
+lcm:-868753784405826481862596863379498777711457154096,545880080147628730834302628389405153791727839,0:-474235385460008330984602458660116725933386690418517481411723635621365531412330794841516078544
+lcm:9429941770445780812848883836626433106364646270218,13789105660912116612159357433833332620650429,0:130030463448925543470092963482754387029792169816829218586198208779745648441067644420051623522
+lcm:43608475425036256086742701999180132009804867174088,26543470249142438881834938827109299420258184885237,0:1157520270054909035662868646857940204973664076401942399990577391349752558661122837219065938780138856
+lcm:57684506610503798187871631196324475714333617510881,471695506003883133237678946411955700467360,0:27209522534225930626068350341042360052253774045631066166444663548471852016504199451585344160
+lcm:45545031179301366913301053296868047362176530184,-91968879037454375774626628433933013352182139387,0:-4188725463286255430640627639956152535588659815635253627540812068959602079281136816961500757208
+lcm:-390021533721654785753654976920878586915091,77031076759836910371783959035306703983828680,0:-10014592900700703269560078738266286134110215752142363776248874904012749586637416869960
+lcm:423541795082126371645621560317104281087986536944,8300998559716429411460238557591751288655280830676799,0:1171939943652147365555234596255224305456012312168414340835337509553512002426738855055186061245720752
+lcm:-22004254439719621882091733525180851819037175217519,99335356922776842325949741933027888097618837,0:-2185800468589145609464205476226975010639204222945574205629223171319215468510436674371426805403
+lcm:-568617824838411255064542027229734991599889058339286,663945656360600870466864889023341282183894393751666,0:-20973963051704229852295393571808922528386258405366303052934095222591753315525189202845488663836430582
+lcm:79416546968775553905606945911160893343240489,57823044209535496953371020115352329847370545,0:510234056260462346114599875341456302082293607904671871750490172957566065355271803332945
+lcm:944931014689390846530685010237152128723129879051,9132010491010578008428313272813386452749469110941235,0:8629119939424787805155145456276331139041940822281098763310858175298740567987777487797475766318567985
+lcm:10724730362623743957337791385603755532922863,72480373654893123070601266938859686093303005387292,0:777332464030946381953104911976964384403745616151494866542937429270491850221347238960076456996
+lcm:7713352208339235603081099644445084271357860,603624463205826416829628929324533190899935786563381,0:1551989362092082286509226742932313310071126914988546921498365356500657461247063016086607508220
+lcm:-374652992235609318781751374140306949494493761487551,-8211631925711097443824357620157273567158306960781,0:3076512472105121389035620380499987642797429799314779956051883946663228512561940943539675904376737331
+lcm:148033237001979427358794216800322662159772216729882,-2761071692676096788505988250569937615812882,0:-204365190130688570487960579178439169815175152384146484286930819001830464147276002695624969962
+lcm:8799836897423935827052239970797993642793054321869,7294647877437509677171255169879966954414823484,0:64191711545589794049942507329622817162690486075145161653225201426081306037945865801824955971596
+lcm:638050122120135743843926357476168630346968836720976,-521011870575614667006902791543319211035082259559038,0:-166215843823405648565930328412825365823057474431930443033112986539191112250557243418309377653802490544
+lcm:-17589569754541719055752617853886490778777621596833622,-757763302557856615098419826290170728613135917189,0:13328730467773320372749612468589169429951770262414798041479922130537436948993914504659373603202928558
+lcm:-9391500830250456597029446286855934735787373415653,28432489383197015180933073382445953529667174,0:-267023747648382060661246943486871855039477521250741910116209365765385119618211444260651874622
+lcm:597671128380217947385553643776956963479914986403,71727950226724858021016384499343090206442916,0:42869724948406755644439192851387407923848606069058040508413206852418378147081162495135671148
+lcm:220524861586728547654066186650842017022514113,99830670175055229565653522851124444573641171168883370,0:22015144722464404290431089740908195479979690191563438782672166808199720494718314317705872276000810
+lcm:-19711747183549435340491469077888147043386014913558,-1141914280129478236596364286858351511269528735,0:22509125595197123566803201916751380078133670163026469768611121772532745591006866402480422089130
+lcm:-8382072953685010521572064715326232892979307367,8986558828596332338706049003428573784660004270,0:-75325991703876567601582024901200837475422482663143278160590315962341962045355062611862457090
+lcm:8502152308582607794375019565844324676023491104593,10470050208175536662422671560468368371690332,0:89017961548415452362336397742460566038542969501801207576446421265423116103719862689218894876
+lcm:594601725521916181847167140525593251441576703983,963458725567603941710493681498226412426881800,0:572874220691643607273440473752072791294210386705034629979437739545297813514469057230330209400
+lcm:7141961266638507042734562322157608790427840009,-4549724799885066646710284284349071123364728193387,0:-32493958294643778569864068941415075147150500523994618476463881411873140452414616492271247820483
+lcm:-556279059738139499395948604306347001411150129841210,96265906951839620646630096006130967227739083772932,0:-26775354102004285429276113769844676372118786237607285907901215316500732869575305395080596584428063860
+lcm:9097507009232650355633416767082868346314279788737,-12952310876092402836370081770801404571317963729609,0:-117833738981010925067125768441840140051091195908538031159411055746004033932320364747308545111613833
+lcm:4268792759888467657870170840963084681877952381149,45230992824683770972952637110379461673717665076497477,0:193081734692577312252243894972856695658000409843190512520961090560296517492619302198905276169040861073
+lcm:-14981624589272129153412283534256311120144659052,-3422881033749335138988900898217088225431538419464,0:12820079665343060974655754692608143432268798103331572831567462724320648718570784069585310147032
+lcm:1220927142068793741881867214403185329458765760024,30622524744504892825380221509502752145574896,0:4673483952404909633169042534451903822067192939697796248187569718957914620535643481481844688
+lcm:37912807996403481194979034824173466165481184382714959,-90878397829297201187948170371749592240094934625,0:-3445455247922915696812807051659782073986976942393793434021443082292576682286942256582247061114555375
+lcm:11421510093950565340830017403217629128966938056,2237414009357389011349863244579333296452235392013656,0:3194330836527727905955302104398524198341681114056770994737458183451820031389704288272506307261592
+lcm:192657988036570687555057992620686662908295387946910176,931495134488306662235768448970442482109561110,0:89729989238185994297883659301090589093198151954531577310187242340555592504853957169920465976427680
+lcm:3406199971289940059753501832956133340637816361746774,21717729758322757474808809344766892648120530501033,0:73974930479281653383172304844520436444384314366038505444774962096871058594711397484185935845291417542
+lcm:6909979467876024377878180024452018966109074368033,842722308262405734840545048662350517397572773044955,0:5823193847214313361590850639006414894786757219881236880655209757454129105445924052644535803723923515
+lcm:373077837411940479742523640303846004174658252010,174968689985940718533112057941120724001834591,0:65276940474755009773288570940982140032743912931132908824689438802225554298870445697213277910
+lcm:69447921082122879577796325457481062492384026062297,4859735149388070292660864796695584862286590039960,0:337498503134721348480339150893268639814027256856202938192556796481021571996594857372873378679388120
+lcm:97668956744134573191931364533568770116368809990432277,32650097939706033583832290610502297382443475332059,0:47595537363655312568235002972649323651425354794543144885024534520500637904064737938316663353067559229
+lcm:-1130623853521736649164698623052358825973875071086,97117938880122601762963490311393663414262844,0:-18300643050455451520453923979067578852655453746004433917321519890785213164382247444464754764
+lcm:5196766948376722446473792182397797566282488000645,612809465745222737408369151997835003504928829,0:3184627977237170791819733844305891092484494030274488141848280463948439552688134126307231094705
+lcm:-260800009832764286426719551521843883719112476,-4764630548313512861236355180550436291099515479440,0:310653923462413311921327308749420033511079033275390302805253842034181828205601401085106373360
+lcm:446884272848375074930942162217302913946161786743256,21042882325490620038960351129083746002919260315816,0:1175466645832599956073813923052542976086932578597582904412735700346940000639354255670643544083517112
+lcm:951599922613172445123982155673072679115439437787116,170174123089259663169419228763721448308107859122519941,0:161937682362503977661236466402707947708915167258582987092600978773889146161299886218655580651394622880156
+lcm:21383950451514823653827321489681070470148156716394,474049024111864801681311013604155672359293053819708610,0:5068520421598536425525321235142815292646675811310319106405942660104400045766803347060423723469744976170
+lcm:-470414357544256461922663993336752968654129573423633,9062081906619161788388889503790336651084511675587,0:-4262933438115683672713863671510520101815219800470041585560023172590216986734948687990123769014947571
+lcm:780091812513073375693179028189802313142318232500,3497278556984926411479728842600230671778387696053,0:2728198368381477015989505443597065418103138169441425077910216137727395317905388139191010186322500
+lcm:-1625948018138433921639232759767284243608022009577,842118879046315463699452834842435152085239651627,0:-1369241522422316177317692449844295269090380811960323302423745772493265931792379448342891937631779
+lcm:25026283351500865895404594716390919370787136725638,193605742569640932386538365909397399503766353419,0:4845232172025567337840956469216133356563858466840983726314706900481952782728859639508827146256322
+lcm:4935030558829975380051283297334807636335988292915939464,826975811338155401386754284486847375740824437795565,0:4081150900367009340504991854566589470179310873827349635534175745385923686159595506846989467997551147677160
+lcm:692976306506130156561485116659173381923120836885557,770158528298664593632506223863839610768381103479684,0:76243087480657930190487337287128939416904506467283930926671128904847462858452992556512523992854646284
+lcm:79877139216893064041018839082816187503862428735,7269106113282857654532427145534479409503583394410641,0:580635400993063264937521052415287406491591842310757481379039941960972027583729569639227998188169135
+lcm:2539745404867281753796678186777103230989134057269,1232562503892732555700624680547460824244298064,0:3130394955473278587381949607908298163614591827039064669019870794477245183817740184883281827216
+lcm:-12342369542383197426854745694214905543911988477283,900468407001638487525579769577535461149066925224901,0:-11113913840455339589057682433788692760910363591045622111658103604207392316252364497138359285304423983
+lcm:25508383419230789798346692675791795579961116333703,-3196912743165527117167038251788165837584914845275,0:-81548076010491152335265692912387445585857263580983374333387917442921969005827781555255165512803325
+lcm:-1299528036083269250543034346520127753461072609198859,600594652353551219594047525595273354045086799190,0:-260163196351708086868697255894653649721720334580389492055788614848359699200918752705348100836708070
+lcm:2299157394917175882710807816574923359426328448491205413,-72838172890838078649390158065336999589794176457016,0:-167466423834226138899695762647031472841630725693307898812516233189758231307075087592787449022731421027608
+lcm:-7349901043851956691882158234459042155688766310737050452,38963935506607940884321914070762438994955796523516,0:-71595267563149505923669861270167245818680944504703982056789830331584906867289180261861884773409374107308
+lcm:958387014018743982544025716556283287504010616036,1443504353635051762579994152447131178181054158,0:691717913601677162440619033523279055938959283051812778789604206481811449086596467058729638844
+lcm:246125390054194220242986809766512103907648232140291,244701030143825150512131468437935457382757506654,0:60227136490812102782907271910174306533407908424359655603867506529129414912591634812915769093996314
+lcm:-704660850546084071765145007935951186831012905395382833,5588984198927622386999113229239134076765551765835797488,0:-3938338359304962728083277304047487715370320826599483665593576088149516002866532798742909925478892863619723504
+lcm:50682657377075501007405908966255159073041913889268,-221227972486061875975200412557047324616212536548,0:-2803105382934039975715503660314214227088117486692399200394931533988665689815391470714606568741716
+lcm:-65153936048938235385603864221810574284616709045012408,2620409042204728497893539911547700871421142555353,0:-170729963157866373963111608067452447067616052160696883002411341925443387533862472832785201804711820024
+lcm:2124140486540339235997181873057458560557130144031198,6337118390151757487365380009696068490770095523526655,0:13460929740520685472324728914077419222468164771987370279610883339996690538208206652608006128131304582690
+lcm:70505951289040282645383932312380844925860919298,7547000534925894125969206219651626162975048702546706065,0:532108452093846047616616850898050963751081524640768880912328456268423081073299532380834291122692142370
+lcm:-41539404414450841529694974131865311088044938789,-87120273993379326877611820290578462959192080166852098,0:1206308098036249351756945897983313304106264694400442480326890301234582878846035432318850625075409774
+lcm:8365100924146743906263010309561180555381451232169,64464903694507870558459227754837948332608708108908133757,0:179751808489986211172946844019445427528755317573706157771373596620024395670275172869683254867277971076311
+lcm:-607028381550248615720149092346152462853976790359415563,-638047705393414341349283089715056902457142563666819,0:387313065956814142347580416821601619522788233833564805598190281345003710840619549824608697022583095304097
+lcm:9617834842433276206013447576300042077483363020815285,528061422615472570377974310003284316297281680382590494,0:461709777215997755037224920599333096287843157872778309854711289206537291450554735917549911763077470081890
+lcm:86576571095874523146332767288469633576872568596,28806568894922815646464384363885717260300665904363145435,0:2493973959959492744618741686252959362351894366493500719340778231935540767761675386859282345646361759260
+lcm:307009198563449723583109556832166934014223122475324,138726608616028283757694379054230076836833023549,0:42590344930632202620089538756907194977499968842538325319841912047531571749213635995957120063404876
+lcm:950446831200123302940271854492691726825599408858,-72101792770002156123347099210449392040964040896942,0:-34264460231048255033825169994117823623249265283681750151900757832396404944731172193421125649956118
+lcm:981208671446974342191660850214776536471793694644642,42331603864003005956059961823201488180622810810249336717,0:41536136787617995005181391797616187316701801094427498210675495592371812354190764162938589949104015517920314
+lcm:436034751789860072246023599184144455891992330310990,72833959249163120346712529298424162613591559886645,0:6351627468616324890653950471065605238944270582911744198034275769361278389558892161259769728399545710
+lcm:90712859511805773491925085535825623597765615019643547,-747515802065477997196092836504038150570958532540685162,0:-67809295935620517600810302668580552577312402195771262364310764109361834590609187219719805153318608391949614
+lcm:397399782669545823592934194763075791833495372998,-59196779886291303828419299835113054892183602687860135035,0:-23524787461549105672926147613053790427130112546635830152219683595731769479837306026216856302451972784930
+lcm:32400956990211215478801690694170683149459902468,-4583955972534683626923454093368608704790928252299,0:-148524560311118107934748825020984325384128831537817042673475700215519245003301091136794236773932
+lcm:987205647053507741802554416690401353287928887038,99876648283232575129630115679242229378848334523759990898,0:7042770799570301963626168264039468160084000109548666284236360269531859091326565782062357924306725012866
+lcm:613843278686603793281546390730144010908586402122774247,-5096436233192165525303465082471737429087562092805456864,0:-3128413126999883739898127525581773020068974144641842702264583891275711281299548031054626111037897411968581408
+lcm:-976952961430926103170472845979881570029763109667,935178486322270132160329332160301439376977149568344208099,0:-913625391679032626735612276016819847879751832378461622543415386714525380228017439645010525807254806593033
+lcm:-14766907052440196735362466027665124699631240785562617,56185497908476101017098165076418921931361374576783903,0:-829686025309539659436877109175759992995713482163632861241130851163598589293178881677705053185350284154151
+lcm:8086945629611784458016532027184114429962417844094,915144274243273504802165174453120299631299876477769004475,0:7400721989055888996136233798580013159529233408791044035035967083245349723159601722480356017380766138320650
+lcm:78088762763327100616786616097147636046671948600444,567540241084477255158834032762283528860020033647985833,0:14772838414895737660959188658560357264170049117788265097974792165237624507227111109881234062081296503284
+lcm:719986964333569855824423695658491299542433105292,-615276910378191482694097418592439439457014608822814,0:-221495677463866003861265966742219836258928444486382973104855851549896711750780958155476829316865844
+lcm:45518095176552517046254533808850801860612235127698055,35562211507032265793347677842985571735031362689772443740,0:323744825613157159148934641716894736150323375120651628592606014999068335232090157998718113595333671638985140
+lcm:9347651927739244225461883666785850681796998039204,-49878021756813856103391637115956958358002286487531,0:-35864798940530846688181260694471898202801103161830397888280327472734771199678233550132451645781948
+lcm:-918018144578664428004161449615771398954961013294489,-670699097650597095681408528960639081653596263477957,0:615713941195785615974127065795375976710193022314921690147944271007135254397488569454896629925801078973
+lcm:27390700201762535100035783959539579449610388231,-1589447744597072139866306928627083981945967837919031841,0:-43536086658626030220375532900736667658969827278059194645833847995230392704902546272550528175660663271
+lcm:2277199840598187516900058221233481999025368188568,9608219845154413235861538421470991851896216584568613,0:7293278899939323922333519302858351340649305819231682068123769660826907879720133355526830831172738728
+lcm:-384224188940171310851587214747099156035618205974037811,-365155157346205326208918238248019306559191342503,0:140301444168666379290296176915045491501178018946537404762619540722359114634558549786149744296773380933
+lcm:286446854858822908871115682474835177238732522628,-57158496101544373650727927690968913495792599007869,0:-16372871436747676262278174307506297592132492975051635951931260785772478739228382233254016392559732
+lcm:-381089856197823678538852020226946248080829424869589,-3010621081997078653311455126099557341287585438919,0:1147317155204403033538417293781061706820038418656862236980125391331092308923135144143540086900134291
+lcm:116824003493453841699155925492342665434851317689062,-23510392931055495213857939210838689217666922526899551035,0:-2746578225910099677716238357776888697288117665636655886289546239917490129557481316738650939508921530279170
+lcm:580076669302513896163920831671903321718154827187111,57642903862300589084685292813271561699366462736142,0:33437303681368339826568875036607309078951222489453540109258834689115591802250959764588162866456265762
+lcm:5760449410973032312996903274730533429280588604119,54924391723347076414566698417788233810196808558058264,0:35154353327867417497336892157787775216597147261438145141426040243888036287697412053742388607203598824
+lcm:5657781195595763129830083459999757852112323789572340704,692061618840647789470644193517118113508111433346167161307,0:3915533213270179560961108305159334536041508008965034741386030883311266330352593550098270684221170821027129940128
+lcm:-411686824144764716061907353842274549877341843077020461,64596348790121485579427789661619008385819947602752810318,0:-26593465684752629063594295950004957994828988051383949912582218957039523707407380651277297287183402393737916598
+lcm:632256394728894097701649213009572878755743290206395156077,831219707790000649838963373434914934485492976701321111,0:525543975674910659026260706288720204381515414601996591588570479429744161463440855422928774392151685316940041547
+lcm:1670481530219772906326138470230000469885289884882422,468290338328174403769157221534943442214405575737600,0:391135180478791974386986543598623230679031886475719459105679828323568651046861349186906657695962233600
+lcm:-5940255960924729598832299636442321100271324046668226,57672031765846684220194592702663453624777841860734299817,0:-342586630475711125183923927161946766514304847978409032225317328682383801381008087781458635612556537811514642
+lcm:1070320750308710183653165839089007570013512879851785,1457798154372592051774290334996812066679847800239,0:1560311614386725640264706359282306460222595994684719021358994107802507336028163090509939936607576615
+lcm:4878833860261622243309660185570248437064542060170266009303,2713399212910344466363698742990679778889654409261764714,0:13238223956354223315835115083131058404743853065832322244195207641759173433600815039556809272534689440156121134342
+lcm:-153727669883775746511963322850970227020812560900211022,967696702028565741720227898697068313091723784217356354,0:-10625839939790418437169093271198280114670637344943720676814969693439380312693668799845699120787148112323842
+lcm:-540592613733911579302709730020084890208422708295834255759,1487237786400760689794761062671094249214728767786149324317,0:-803989762194224119099880670025468825040986939150865705871247661626924722104597624198557832395582009863760415991603
+lcm:6147134348286513705872901614503400707429078163757093529,477008107151085089956583728568535862114663515203848020888,0:225556378452274534034927784413743699904109572650798922040352209009358253405098100518908280809464240096750894904
+lcm:7614680849639684551334463800131196276563566036683927,25187069984138015151555984154271413618496480687947851,0:191791499466750257309658251576197471575523021858632537910036998866329759048429339136517641910254745890877
+lcm:34751974072174908316243318351151710272413759348773,8306602488518142539700335965542308143538343391985,0:288670834308846061096235572592461254734354939539314534410107250770305649520412166539742961467784405
diff --git a/polly/lib/External/isl/imath/tests/linux/Dockerfile b/polly/lib/External/isl/imath/tests/linux/Dockerfile
new file mode 100644 (file)
index 0000000..50e1a91
--- /dev/null
@@ -0,0 +1,14 @@
+# Build IMath and run tests with GCC on Linux.
+#
+# Usage (from the imath root):
+#
+#   docker run --rm -it "$(docker build -f tests/linux/Dockerfile -q .)"
+#
+FROM alpine:latest AS base
+
+RUN apk add --no-cache bash build-base gcc gmp-dev make python2
+
+FROM base AS test
+COPY . /imath
+WORKDIR /imath
+CMD make distclean examples check
diff --git a/polly/lib/External/isl/imath/tests/mod.tc b/polly/lib/External/isl/imath/tests/mod.tc
new file mode 100644 (file)
index 0000000..7ca2635
--- /dev/null
@@ -0,0 +1,754 @@
+# Modulo (remainder) tests
+
+mod:-52,67,0:15
+mod:-54090198,1,=1:0
+mod:-76,427,0:351
+mod:-84,576007732,=2:576007648
+mod:0,9268611,=2:0
+mod:0,807,0:0
+mod:8268,487413,0:8268
+mod:1146574,836443419,=1:1146574
+mod:68387,38,0:25
+mod:822,3971,0:822
+mod:6236,52183125,0:6236
+mod:3339,8463,0:3339
+mod:-6911,492807317,0:492800406
+mod:38291,7924,0:6595
+mod:768,7974,0:768
+mod:-753573,5272420932,0:5271667359
+mod:422,509441099,0:422
+mod:930,3648323446,0:930
+mod:2427,67,0:15
+mod:88,9301062895,0:88
+mod:7238405237,35596,0:29829
+mod:791480,518904571,0:791480
+mod:451304532,47,0:4
+mod:92202398,405459259,0:92202398
+mod:349,6205,0:349
+mod:-4,9246262,0:9246258
+mod:-5200,499,0:289
+mod:605,411571,0:605
+mod:343980431,136,=2:119
+mod:-5765,7596,0:1831
+mod:43599271968,8373850989,0:1730017023
+mod:41585052,17623,0:12395
+mod:-2409446,38,0:20
+mod:181096791,3565,0:1921
+mod:424266851,9078599,0:6651297
+mod:8187966,773,0:350
+mod:2,628566175,0:2
+mod:5095350857,5051807279,0:43543578
+mod:-93,65,0:37
+mod:2833717,10804793,=1:2833717
+mod:3929,893,=1:357
+mod:-8433693,960816587,0:952382894
+mod:79150,8266,0:4756
+mod:8999807,39604219825,0:8999807
+mod:71019,11742958502,0:71019
+mod:62049796028,8668788,0:7280312
+mod:663,501536125446,0:663
+mod:9405339512,4946,0:1182
+mod:8398326144,695282,=1:14866
+mod:2040205440,4831,0:1675
+mod:80471943965,888059767,=1:546564935
+mod:69485028101,554070,0:217541
+mod:673,944658680,0:673
+mod:670561,90183207,0:670561
+mod:87072012,7500022,0:4571770
+mod:910888567055,779049027843,=2:131839539212
+mod:963684578354,34003127,0:1956047
+mod:909044,302,0:24
+mod:5117486344,275346901,0:161242126
+mod:946663509903,66919981611,0:9783767349
+mod:80280109,35551,0:5951
+mod:92755422,4885132452638,0:92755422
+mod:404434561,300368787584,0:404434561
+mod:7641992913,2639,=2:464
+mod:4268,10435873,0:4268
+mod:-16867245244,3938443,0:1106125
+mod:7471011989,656899,0:99662
+mod:10540460484,86682087637,=2:10540460484
+mod:284094,8671306,0:284094
+mod:9452633,5574,0:4703
+mod:87858,294942647,0:87858
+mod:-6925741,254505734568,0:254498808827
+mod:5567849,8785,0:6944
+mod:5715920872437,47382,0:30681
+mod:-7228582013,17846758280596,0:17839529698583
+mod:-4825967237258,629489737727,0:209950664558
+mod:-97364920350289,7307271,0:982130
+mod:-5267574,1302960,0:1247226
+mod:36680428,6651498734,0:36680428
+mod:80778366511135,18049323,0:11222506
+mod:5246691699374,70706752,0:38580718
+mod:-76528261247430,881359,0:586489
+mod:2510155,9882180356,0:2510155
+mod:205710633,89629157572,0:205710633
+mod:38304,635189,0:38304
+mod:61339988670,8789855847549,0:61339988670
+mod:-95895,39680647996348,0:39680647900453
+mod:3783159,35551417,0:3783159
+mod:434657,27849425,0:434657
+mod:-922645,2692809,0:1770164
+mod:9973857,61929174655,0:9973857
+mod:491931072,76925934085,0:491931072
+mod:36870777851,79112622642,0:36870777851
+mod:38419240,600490113,0:38419240
+mod:4286489,4746879,0:4286489
+mod:-5967532,617005,0:202518
+mod:-50370862538738,6877482182,0:6694444412
+mod:948978223,306059033,0:30801124
+mod:1939139989,7192751179579,0:1939139989
+mod:871928,56723606527336,0:871928
+mod:5777442393,771454160,0:377263273
+mod:-2052133016,7833337,0:201278
+mod:200227,787554274823,0:200227
+mod:3616468166,851332729232285,0:3616468166
+mod:-48554766181,2252075,0:2222894
+mod:2085689725679,557651117,0:74548099
+mod:2079714930,6441707850091,0:2079714930
+mod:-464256354428,40650020675934,0:40185764321506
+mod:-209095689322770,332963733020,0:5535013790
+mod:92840725060170,4953669615741,0:3674671976832
+mod:6233198674119,5752924138093,0:480274536026
+mod:-94439733,73783193078726,0:73783098638993
+mod:524856,25938632,0:524856
+mod:-3642534,51609507988,0:51605865454
+mod:556443616571,195489997,0:79085109
+mod:747271697917685,801669727071100,0:747271697917685
+mod:4017563378374,1995926813097,0:25709752180
+mod:-13638096565,3048867,0:2534393
+mod:304947884525,888510602,0:188748039
+mod:5378877455085643,43074731164862996,0:5378877455085643
+mod:89177886913,4817647675701342,0:89177886913
+mod:-865014493293680,219168754644,0:44581286188
+mod:6321573844,258781732494,0:6321573844
+mod:1400577334033142,14009914614715892,0:1400577334033142
+mod:-337804687,158388274759,0:158050470072
+mod:-3733377356597,469670806,0:35880297
+mod:51974564129148100,903237315049451,0:490037171329393
+mod:56996153270005410,2396515,0:7985
+mod:-67091637443329,19220071611,0:5632550672
+mod:9064750093935233,171857609,0:35046324
+mod:-71156951211655456,39266481994,0:466181614
+mod:4362072502442,7301990213272,0:4362072502442
+mod:-86003145010044,116261682333982,0:30258537323938
+mod:56216118551114756,455637223,0:305042665
+mod:262802582,8458718157713811,0:262802582
+mod:364016243349347,542092606375782,0:364016243349347
+mod:519321257779118,727275719430783,0:519321257779118
+mod:350650081861106,54037636428,0:53896716242
+mod:-342917424075566,19042847036414481,0:18699929612338915
+mod:3486471961809,6003086967,0:4681520949
+mod:693821889,68575560399616,0:693821889
+mod:3401139672999,693846027567975612,0:3401139672999
+mod:676404815653530286,614916221034390945,0:61488594619139341
+mod:4874055499517062,6434678789,0:5095928388
+mod:-9967718379562,6518969637,0:6305165048
+mod:10248458540,38512788750888978,0:10248458540
+mod:934811913,2221199202368,0:934811913
+mod:-6684245035389913,2828258378747,0:1757771967995
+mod:970708744192,5063581816300,0:970708744192
+mod:8778023537730,865180741691,0:126216120820
+mod:651572737854772745,819932061443536802,0:651572737854772745
+mod:31675213895884,13227242908836,0:5220728078212
+mod:-977172760207173,171558790519620575,0:170581617759413402
+mod:-45853408229656454,238503345091356,0:177737372975254
+mod:24097409593,335638746639,0:24097409593
+mod:13695822253044092,1732994051411821,0:1564863893161345
+mod:33933477593,3772615655961401,0:33933477593
+mod:1359484164716016,16485762808614,0:7651614409668
+mod:6194976547,9790288403118,0:6194976547
+mod:35165676304962247,326491511837,0:255039534488
+mod:50698603380253,837874905080656658,0:50698603380253
+mod:-6677472401203205,206803331886510165,0:200125859485306960
+mod:-2753237124185,71096000432140,0:68342763307955
+mod:1652954342334,4660678399996257311,0:1652954342334
+mod:762003770264,58114453785466092291,0:762003770264
+mod:83319117929825,29022700876993701,0:83319117929825
+mod:-437222911638931,2017017077397633602,0:2016579854485994671
+mod:50533577363426220,29452376981671,0:22750839860455
+mod:9775773078526862,883620114446,0:283752410764
+mod:86103820030464773010,9526822249,0:7814958303
+mod:472571956027154222,812207565469535,0:679360489354387
+mod:383374451459403337,4477129646684214,0:2818431491245147
+mod:7081720213022716854,503311092329338,0:133143948931194
+mod:4630128377779,800171178832441,0:4630128377779
+mod:54693593051710401,980996545405933,0:738783054384086
+mod:150482763687955095,749819481017,0:742223172348
+mod:593450696047000,13586015736,0:13528698520
+mod:-730500097181725110,728537309580,0:620447592990
+mod:-767181280549335,8336534436990434,0:7569353156441099
+mod:42981969692069,6887667892543850584,0:42981969692069
+mod:-28591748475152,101365562837426064,0:101336971088950912
+mod:-7968036669154,98303283928623932,0:98295315891954778
+mod:494411386598,8574532520081676103,0:494411386598
+mod:68913463428,37113484763365761,0:68913463428
+mod:79048317647131571,4246788999212,0:2834004798615
+mod:-7998703715314196040,603932675107699279,0:456353736193593866
+mod:37189110674330836953,371484075669789573,0:40703107351879653
+mod:4919085789477,6627653096140609,0:4919085789477
+mod:1124829404566321352,1113121353192745,0:576837841648902
+mod:73970998780022288,690593097938779270,0:73970998780022288
+mod:406559451598,291528733390141,0:406559451598
+mod:8337041054557098684,144564322413327450,0:96874676997434034
+mod:33602045710930,3944255323850,0:2048003120130
+mod:36881013741727574167,2358692215512,0:2217232253623
+mod:6055783116809477,665900361366484113746,0:6055783116809477
+mod:6874334379769379421,7685349776541,0:4194447198069
+mod:4114973877055494,6202439146871230,0:4114973877055494
+mod:3926099959854080246,275452944727,0:275423967496
+mod:4029793101439201031,660396995221451032884,0:4029793101439201031
+mod:301872874428635697,54874102367289078,0:27502362592190307
+mod:5569303592565,237882890299906,0:5569303592565
+mod:-5030250164815763124,20652997723024,0:14613601685340
+mod:228359514067103,297994781044164,0:228359514067103
+mod:-424197230384775822561,35518873718705666052,0:2029254239692170063
+mod:264447937587468968,14314680638460766,0:6783686095175180
+mod:6394566749820905145,9683844165303,0:4880613879246
+mod:-8688948887808654898,734279103507671775,0:122400354283406402
+mod:-626916205862869883,94382847154774,0:69047786293799
+mod:1626914326860229332,7062310571812316625,0:1626914326860229332
+mod:54001071080896262095,42490007593568841,0:38761437063834025
+mod:24728563187886295882350,709499139923539295422,0:605592430485959838002
+mod:-1107994585324963758433,26155793492434894341,0:16704534849736698230
+mod:654008549965770,51389913007264,0:37329593878602
+mod:-519456375679038,4624572350871880932563,0:4624571831415505253525
+mod:-82236922719413533430,72103334739677626,0:32982218558637836
+mod:-323874523758275336,8012542519209926,0:4639719529331630
+mod:28055503703579420,59306141019480998333,0:28055503703579420
+mod:331202177649495634,20031374822914022410,0:331202177649495634
+mod:-130081790443955,81911619024148257,0:81781537233704302
+mod:12392000130570253028635,427646582276340386,0:85115948737663513
+mod:-3408044901060955810,3826012386295493550,0:417967485234537740
+mod:-2520566214354390679555,7522956445489849326,0:7147151330198693981
+mod:1980291342375366442,2779172585704919,0:1520461353464114
+mod:81051547602981,72198401841564,0:8853145761417
+mod:-92876397580264953214156,67027595927289169530,0:23850374957835754424
+mod:5011749939685736607,233831869913631792,0:101280671499468975
+mod:-809134913749137460747114,775995673975034727,0:431478675099304148
+mod:643341365602570,69924772710009984856,0:643341365602570
+mod:27791967964909927,59009798124981438889038,0:27791967964909927
+mod:-113914260724456,4611599197279102,0:4497684936554646
+mod:363308545066340586,9662463842692591834,0:363308545066340586
+mod:27756526116505105,3891223619279919535107,0:27756526116505105
+mod:704802873683670599667791,7264024574741209,0:546567259370500
+mod:787136088375328,120969078621542,0:61321616646076
+mod:7670850065383883511434,877940228500467933,0:286288975295180813
+mod:702943840459603392464,184873925058119829752751,0:702943840459603392464
+mod:346820606266075751,258033318226999763369665,0:346820606266075751
+mod:-19738877253014425,881986541366353479688437,0:881986521627476226674012
+mod:43236561155260520835698,38481338895759451581,0:22017575322656710235
+mod:482681206446127491983,75672199144043749590770,0:482681206446127491983
+mod:-9003595768210252773151956,24542596402501089193,0:2977625686803835252
+mod:500595090938893533,22068045096454773348,0:500595090938893533
+mod:2380288714663108486927735,564958976857884405,0:163611608764475305
+mod:-61794208268134898961577,163988560200473972889023,0:102194351932339073927446
+mod:-801112647021780575,5997315269791230838613,0:5996514157144209058038
+mod:3375858304586431,650460337591609485545992,0:3375858304586431
+mod:8320311342983951,42251663165732904527,0:8320311342983951
+mod:7459256407267723209637006,417970890631288166,0:349337361754478408
+mod:848180762170013347,7469835660313775,0:4089332554556772
+mod:8089787096351751904254417,50129556268942208341,0:29694338665148808860
+mod:-34903538093781704569582,183184852451752183835379,0:148281314357970479265797
+mod:48619014890072452,80354799021914778903,0:48619014890072452
+mod:-815988375058446388,8738660656145657284,0:7922672281087210896
+mod:31813448306518054090072,207434655868203321566266,0:31813448306518054090072
+mod:-8633600698002819419017,586048397265776638134,0:157125260983830152993
+mod:-857216833834708698,9172367193130972108680,0:9171509976297137399982
+mod:5504547056103565303478,13822143042666022,0:2988649206036176
+mod:9870113591998328200,40859674965133754765576,0:9870113591998328200
+mod:5384435851045720977148,202201600690593374,0:9426255910020902
+mod:-2551078867778519184089893,60228847348701786402454201,0:57677768480923267218364308
+mod:91679210346975867109461657,9997426629350491363488423,0:1702370682821444838065850
+mod:2292649799687862201,546378248247723870,0:107136806696966721
+mod:588814820029030818332181,8113490218013508525654874,0:588814820029030818332181
+mod:65454498830100158031,780288548110175467735,0:65454498830100158031
+mod:4709646238170145522365,55608341104804744,0:9004980917338773
+mod:-225535148248500667,8159132039306813709871312,0:8159131813771665461370645
+mod:76763315297183633054184,85934198951388076635,0:24075633594080619129
+mod:1133129576897649900,54644763452092731277,0:1133129576897649900
+mod:-67382808234452914542138,8955363760101370992534,0:4260101846358053398134
+mod:-90953375293336830190945,6853448055620747690936,0:4994897485353637482159
+mod:443616999780543985329,602650474818987637619854235,0:443616999780543985329
+mod:-32726760956482080293262442,7257539124551086281136,0:4740495243318834660918
+mod:8064248346280114405840575,2215292120106396321855736,0:1418371985960925440273367
+mod:-7028166529953061572415,793014187917784076,0:318217562258693173
+mod:-24801752752631583807972,746849063653448560403834425,0:746824261900695928820026453
+mod:866033908626319182842,6382377566902718089,0:4412937094452240827
+mod:-5696109440363786526866,467357847433239609373,0:379542576268328394983
+mod:-10407234425686004311,628564472015312749963777,0:628554064780887063959466
+mod:209459609329564838657,2486115412259790740945969,0:209459609329564838657
+mod:83211005582689134709,427365949717166750,0:302011337558785209
+mod:522043226813009221,84636707853907370269,0:522043226813009221
+mod:505480107359090528100756,628892849069663750,0:562098008522737006
+mod:-310708269201043467381433563,29010904881853615009335053,0:8411684499346297721252020
+mod:945016205353589874668951,176007434590298672,0:79677746280043975
+mod:3611093895058265247,4523612444279050027926505809,0:3611093895058265247
+mod:2248073915672967969228420426,417993946449832515848531,0:102471665768698995020708
+mod:75483556005338850007382,767992806236118220580991044,0:75483556005338850007382
+mod:349175730044864846750,194542620085155145157549,0:349175730044864846750
+mod:5214057366956683393,6766485378347583109969578772,0:5214057366956683393
+mod:42801122269815033051372,76491121430284940146293642,0:42801122269815033051372
+mod:1504356843590479398148441,98825538637920229212984,0:21973764021675959953681
+mod:1422956549105294508549700,73999528905391695937,0:19607783517587377127
+mod:199912292615681783148398065,5625251527460055267035,0:2103832806339068508235
+mod:8738762075990650132321428,8066858358673855106257,0:2354473546865052245097
+mod:8744971293400903575143822441,2181608008778482293077393,0:1086394216746544489631297
+mod:63912100585682096593583,11361184476808394745245,0:7106178201640122867358
+mod:64684262754316464701,22376578863907224393672,0:64684262754316464701
+mod:13792618112420611117,792966702790880958054,0:13792618112420611117
+mod:1114011944265093423883128,24116689971306070038294352,0:1114011944265093423883128
+mod:39678469855084024947237050,42142535719623301934525721,0:39678469855084024947237050
+mod:83034763665077760046967629,82778559778204667638,0:4244359548962628019
+mod:2396471122363838882513850900,59747356384740003525,0:57225475716145829475
+mod:864549729107840811638,74264623502102569648,0:47638870584712545510
+mod:293471055432367196531,95629011563915920942031898043,0:293471055432367196531
+mod:805770771235800281066969751,444417493982143896834,0:79401739074580625355
+mod:99254856446162105637797829350,101981775402621358245361,0:73717806842511917782490
+mod:22541739862903307325,418383569773975023302632076,0:22541739862903307325
+mod:13599043000903587396023017,686395340986063801303,0:178505287691364607981
+mod:-921575422288638694625782546,2041485695291750177603,0:216222744337548474126
+mod:-489269754337315502376167081,501875735917569336224,0:368721212244829894711
+mod:-80044798953445460081243,6139390882382293287544714,0:6059346083428847827463471
+mod:1697244421022884241204,9839911566031781174211,0:1697244421022884241204
+mod:940445668109981090346872,1166998590007295684475234,0:940445668109981090346872
+mod:399066130721328784362180646,2466979168009327704701836,0:1882484671827023905185050
+mod:-48110448286951664808938217,6924833390360325487794,0:3294109271876680254495
+mod:8202438083226798875527459,2712253233103808901251657,0:65678383915372171772488
+mod:5450714727456153005642027367,100450439174668838374882,0:72996960272497744180283
+mod:409375235483978782700540,154442023996251499419641,0:100491187491475783861258
+mod:75895449457418931569869638,96657756211092917375958176,0:75895449457418931569869638
+mod:-337896716384821901508,136332254359196503233175760151,0:136332254021299786848353858643
+mod:286597911534314020993735125,8939960441559894748118849,0:519177404397389053931957
+mod:-3629523279922780081559669,47176221977787068435634953,0:43546698697864288354075284
+mod:721006898368058427667864053628,560134433649198454347279482,0:113882261540016922915360294
+mod:5816434052384442045783498,8295493150888286278058,0:1293353611753364864840
+mod:609810757121108447302938155,91911350135942492551802190,0:58342656305453491992125015
+mod:-19105264771397651242810,62812840189408438467870,0:43707575418010787225060
+mod:-3384023484275449303514510512,36865912947085723132571998682,0:33481889462810273829057488170
+mod:794103148636604290205719396698,60830693353207800202838586376,0:3304135044902887568817773810
+mod:-872647162068256604091329081711,7171269767341809905452128,0:3142110266217873424018225
+mod:1741864928041849080630509776343,4019228270224295025021,0:3953212345502485484813
+mod:46472481719179435494357769,7926074597166240368807886225357,0:46472481719179435494357769
+mod:-8260893021299279875407235,8110427213374126288611,0:3632309128954812687374
+mod:-12778559515327410738082,60133073412668338924778,0:47354513897340928186696
+mod:-33979239742647553347892336,6474568036342863013409,0:5767880116134609491505
+mod:983404512267124852163233,80477942869108029021719,0:17669197837828503902605
+mod:3832523396251835150772,9395631266939763227204675100039,0:3832523396251835150772
+mod:88670226724007548654482766,32452353295811216769641,0:10397519851304439823554
+mod:96278532026543994019519712307,129820052877663606606885,0:86210882333451655589757
+mod:-5810653163494420168043,36986477497409060096423733207,0:36986471686755896602003565164
+mod:3126207974581460571577891,32180478067769596422373325424,0:3126207974581460571577891
+mod:51956357441149158122167659,1003490769172375032993217,0:778328213358031439513592
+mod:-561702379847624714751550,53922991187327968536105231702,0:53922429484948120911390480152
+mod:446077868534077880774451137,67277848506923282427435882416,0:446077868534077880774451137
+mod:1575047464232207678249043,70194506692490651832280909556,0:1575047464232207678249043
+mod:814270662793297992963934,403564259479336969832400620632,0:814270662793297992963934
+mod:790699201198504136904045859970,68724106656555736601709440224634,0:790699201198504136904045859970
+mod:8110552276797224689344660171,3909333328494414590072213560549,0:8110552276797224689344660171
+mod:-65870994230220283146814283,3379239242265180710762324,0:1713790615083331068432197
+mod:4019795295333902960419848174,50295832366163431551511941,0:46424538406991867850404835
+mod:11568598680110024328705699675,22452048595187151195492,0:1025051083178018882739
+mod:387522780739724474268318533074,9155092309434144095404353111490,0:387522780739724474268318533074
+mod:2391972635448121089016589,39976990962848470908868,0:33330168640061305393377
+mod:866848655025962221176014879,40996252765546194841051793,0:5927346949492129513927226
+mod:9039212181347754641685676061753,1413755859430626067769418378148,0:556677024763998235069165792865
+mod:62309693047935174482238300219097,1448468173515469111051509167,0:937627820239732135530382258
+mod:10235771277419233732197767436,47759815237747782490291,0:30955110842232226071189
+mod:4510445237186840834301611,9536931548375816882114508,0:4510445237186840834301611
+mod:32374689605351221312665153746,773865694054081649089543,0:18294598715523004122341
+mod:58121462593501432960291,544699189690679924713807,0:58121462593501432960291
+mod:487815493709763477417262324977,100467558757425018298664228901,0:85945258680063404222605409373
+mod:98070875983658870659113425694,60099405211091721761658040174,0:37971470772567148897455385520
+mod:918364128985502035087214237,2299858822935844817555228747,0:918364128985502035087214237
+mod:98947035094409552251212724,2825141475757917666304644602636,0:98947035094409552251212724
+mod:1526039375858118801195007,9842198071310595711976222424051,0:1526039375858118801195007
+mod:956310510459469197042596,12660491958158211655462388289,0:956310510459469197042596
+mod:712022876493637494246773,6907620845496782089063213,0:712022876493637494246773
+mod:-127487606866501768951687217731413,97214150491566835275008318146,0:57358578433918929123695676139
+mod:6751815551565439795678949,31071725936607844864896266530950,0:6751815551565439795678949
+mod:207247716655973517840426399106,8676153294057052584605417,0:442920832702751956803227
+mod:-966202956730918757628959,506872112425906694585759,0:47541268120894631542559
+mod:-68170698773654086579499859368,5144430238993385147152349982479,0:5076259540219731060572850123111
+mod:183149199419924949681672,26683244363440548441986070029128,0:183149199419924949681672
+mod:-9975221264569424411536101126696,74192946761934634594295284416,0:40826548291751258693762269464
+mod:225922343593361728051942267585750,5683400149678094053656150,0:3825868296308226483712150
+mod:1590802748651151308839006,37444237944901366482969738035104,0:1590802748651151308839006
+mod:9067619839451785696827107956190777,87355497973165371903530913,0:84293482668838694674156358
+mod:-86293581881377444715621610358507,7692884519189179893063221146996,0:6021032348892714001137043405445
+mod:797270639908743442539388404065,246054564304506055627938724988881,0:797270639908743442539388404065
+mod:205038144424990428525674376,85234961390603945529096075,0:34568221643782537467482226
+mod:35844939430843764162712556,653126866666115633914185924567756,0:35844939430843764162712556
+mod:4259287602245499035603599602,50729589724528668468977995092499,0:4259287602245499035603599602
+mod:2261834480876028227185763,424795020529636248111781917,0:2261834480876028227185763
+mod:39152906040428126999262088,4297272364540702463008576,0:477454759561804832184904
+mod:-5930922183829543621704345694286,197786250025515478569975835009,0:2665316935920735394929355984
+mod:13648638091639720241268467,60685727322075123781463007100346,0:13648638091639720241268467
+mod:-668319624482464990058154959802,710719216881033542598449292474287,0:710050897256551077608391137514485
+mod:642021199249584712913865808325586,543227057645582873078752689,0:152765287910622645761540601
+mod:-2656447484733675418860019290432,205011691602629984379183426293586,0:202355244117896308960323407003154
+mod:-76116380282907702927282762504,936328544643249459199496754,0:662560377838752727075971324
+mod:8093358695607350358964677676389573,829984096904096704239626252,0:340210087590552445135735881
+mod:-9278168173113556399784725246186,4280082896252256282175389133291,0:3562080515643212446741442153687
+mod:2802211761443428677828547316,747494545678197065832762122247199,0:2802211761443428677828547316
+mod:23492204756311184079845536545,337250910922702955980510700463272,0:23492204756311184079845536545
+mod:64710301838085669236316870323,868170439410850659865082898,0:465689321682720406300735871
+mod:2741127245480801383259770751238076,74176417788834011756636699109536,0:70776205082776960020849583294780
+mod:415065500982033616775933433,28746890219519286864975018117944504,0:415065500982033616775933433
+mod:-89217744891275021874139963535100059,3290121624016777142908239971,0:2829430817460639915155471175
+mod:-9317836992515247957659739610258,361276376419354526411745198556357,0:351958539426839278454085458946099
+mod:298421168958661320791582460540,9311321600116774390269301187799304,0:298421168958661320791582460540
+mod:5274155275590071857725575099101060,98122204238639783506999069,0:57734636536655754953174064
+mod:865783349805109330441131327,162630826994678660982290958,0:52629214831716025529676537
+mod:708516761779855069848378277411149,35904666994288818268923584882788350,0:708516761779855069848378277411149
+mod:6609496417442545300703371471487286,5902561608289411469926303,0:3737357682418540243913209
+mod:206488861625670348490519145948,55768433595490812270050489117,0:39183560839197911680367678597
+mod:235462255567476370046316727231771335,90122239517029363511961434219818206,0:55217776533417643022393858792134923
+mod:7378753800396502033389928296562,22504168678875184770299793837483,0:7378753800396502033389928296562
+mod:2757925654768646392546972258732,66265998215956320290751023811589600,0:2757925654768646392546972258732
+mod:-4495627928966379121510140686227227,4292233509252118764895120750881,0:2632788729841344099945860696061
+mod:60075078241755197289597987901298258,85793760621445664196834659007562403,0:60075078241755197289597987901298258
+mod:640202717640040770302982685361,1043941556622236018146973420441,0:640202717640040770302982685361
+mod:981675333306953772484178502284,14989243876208586685329510289358317,0:981675333306953772484178502284
+mod:87715989707184594635823373687043380,2924631585179762875239333452363500,0:2901673736971471253882703568501880
+mod:-323249437311463874466227132752562758,54630285509683054247993598313342182,0:4532275746634451021734457127490334
+mod:-14647356048136737851231147317,175677379713875589633642881,0:109543847828811677994854687
+mod:-6268327123157272100193046712,31032884392623150618360081127,0:24764557269465878518167034415
+mod:8830187989453831993186309990340663,959494270231543012302622845163608617,0:8830187989453831993186309990340663
+mod:2102106468815389931443009975417,244048361348982984508269787947,0:149719578023526055376851671841
+mod:767756521870180222085097228863,5629352943535035124861550483062,0:767756521870180222085097228863
+mod:852449392775158289272424932198,564809949353895492950864832457,0:287639443421262796321560099741
+mod:-94075133584459673485423491471,7078005136840583876255761330997303,0:7077911061706999416582275907505832
+mod:94026202014853579487205142874162,363228855132321701963096787271215,0:94026202014853579487205142874162
+mod:78501236594767796495670623879783,7018641410498793931533837751986,0:1296181079281063248798408607937
+mod:-83121914354650984352606847805013,52556446964608987755585827141661,0:21990979574566991158564806478309
+mod:554612894627846154817277112226378,90600992903463982226644139632,0:44217065743119607988333538906
+mod:525293194961196331029028416806301039,736093318498847487453110088942,0:72734093290490277635805244173
+mod:157610281371549009553406136918536,976813980235355373377808309891,0:343230553656794439578999026085
+mod:-266509790805154856208324746487,7013639425300014015101241233380,0:6747129634494859158892916486893
+mod:59653129021803829007632144466094,6178618914324116986866641510962341019,0:59653129021803829007632144466094
+mod:-1025495993097568795964701500702,857271481493597231020277064636,0:689046969889625666075852628570
+mod:481051936536536822112378933191985353,9466673918671293738127743696345889772,0:481051936536536822112378933191985353
+mod:848825342321881584621547504882,5509051479604448499464250938005578,0:848825342321881584621547504882
+mod:-26930177732304779325732093789608,5553144086178691095750038113040,0:835542698588676153018096775592
+mod:-930412667133937228253381813097,66449017645940693043271729675,0:66322597555173167395694132028
+mod:393034277242496542604957925805,4799386565947366109662393955284617,0:393034277242496542604957925805
+mod:86603638626688955985063356610183,1769014799372327392140745286156481,0:86603638626688955985063356610183
+mod:40877446922338785512028664714,3627227112486512731974346137499409882,0:40877446922338785512028664714
+mod:951744546236842962508833599628258421,802365455425080101863813995676143,0:139116102697961698350200756352823
+mod:30829284319654404192904595052,1296652777164452508914199335388219666,0:30829284319654404192904595052
+mod:73660971721825840324689412056336,5684533154366812172288342524757974326,0:73660971721825840324689412056336
+mod:8127358843185844147904557106702570660,3688282607387577967901654384422862,0:2072259111009884617212497819005674
+mod:36532892525294324678919117123848496713,92715061891153280227822277460692,0:5828075633057629393846902185185
+mod:-8597748351805543505111910190253821104,9557218184864474744270904051127420194,0:959469833058931239158993860873599090
+mod:774575051270128492444548860406,78181627397979349461399043516039569227,0:774575051270128492444548860406
+mod:71412172829277670593171097931971081,734737459512775442295997263661678,0:142639256538452690459363356788315
+mod:6184659289209085822436564762850,90249969123878877878427941364168671,0:6184659289209085822436564762850
+mod:188404876454609678788443725411,6011866633368206495263558549515721,0:188404876454609678788443725411
+mod:81043932065078534018074416730418,8372433471866735006229336375535354,0:81043932065078534018074416730418
+mod:6912342702093810814710065121185782090,79053815437751598622884440565862252,0:34660759009421734519118791955766166
+mod:-3169060990465931351414443670,3481005717923100913496633725151171,0:3481002548862110447565282310707501
+mod:-3677873239878011216446421508552,39945867794076672579972752013115,0:36267994554198661363526330504563
+mod:-88408316452809240011823526997216147179,430749395485673956071441817182,0:247080945638127516958667217647
+mod:-7006029462687996724256881439538686,5752004602477767685988190527369919519,0:5744998573015079689263933645930380833
+mod:172663755283332370937921725543,6631081406973798665639408060368,0:172663755283332370937921725543
+mod:877725872115390827864622867155990409562,3246622975450958412670313198657575,0:1350702224220999203693898915008312
+mod:1162325904966484479085618134964501604,9810351533284785336335637682672874,0:4704424038879809398012888409102472
+mod:-67246779579026319613494857580231,4479147727625713736723230094972,0:4419584062985100174076823939321
+mod:-83311824891620553984522523676903100800,570821292295355560082171193531,0:517563010884629547920243561062
+mod:25686998142667809989182628560877290,2025104174001151569408893055981534120,0:25686998142667809989182628560877290
+mod:-6182593212766128996183974088677690094,21672462542175162551645329360574,0:18538952890500736647244660057756
+mod:-294700116350712193407358863563690,47602175104818483716891162778987,0:38515109383017192610879275889219
+mod:99318338781646049264027201614,31132733056517268309209622249797280421,0:99318338781646049264027201614
+mod:-2566422039368713945896870934278082067,3422938407926845108634793366952796,0:781766576419885579224090936514933
+mod:1798229479312127271076623168674216,146420794203382070378885907918865097585,0:1798229479312127271076623168674216
+mod:-10575907960389417493180423047371,548554000428335526399148116041,0:395172048177293034802539273449
+mod:-41585237394069668771815671048852049750,6620785900949628605472441451228089,0:6539635695898127762206147762805348
+mod:1375415227799292140480888477226023092,123029527135707896415325486765764221416,0:1375415227799292140480888477226023092
+mod:-2079331025811185903148784604677,95045957198248711390742316452607286039,0:95045955118917685579556413303822681362
+mod:-212508186835656490444057415261195182,4829012565342247873891632422752490038715,0:4828800057155412217401188365337228843533
+mod:-560425113540022327972433105315966740,96209074671864129929198408439658600,0:16829334491162451602757345321984860
+mod:878336664644268081456398188824415429,932061958650634766658892044044056328852,0:878336664644268081456398188824415429
+mod:28882941735745195429234419733039022447,64140280097846201870647655651438569,0:19815691714404587442974689891666397
+mod:88232952784596907289907603989240788,93349243418019298106177761581992320992,0:88232952784596907289907603989240788
+mod:792301762499682540474009585487691810,421120400044388668787389960907,0:367290969121964719876967770219
+mod:76111941484805465095241888868932546,2831856059624821529741336978732478,0:2483683934560105321967127421888118
+mod:-5427708288474184011690247672955482270191,671682251167994228841481066017358827,0:155983214377351577760821530794410796
+mod:-8530853102666682143315062468746465,213498385560089813626810097876341271155,0:213489854706987146944666782813872524690
+mod:968866609367366454712369109246988,628634209852159542629660518990065356620,0:968866609367366454712369109246988
+mod:96097393485358514676281731274665078,3957833123075932141830397414925844074923,0:96097393485358514676281731274665078
+mod:-81978182783653208012914682683646556932,972774031969126613105009607688574,0:403212480999053283791985092639770
+mod:313104324214756365552882262334038,5945062360867852334605007338592823936,0:313104324214756365552882262334038
+mod:2735884017629695152167391129737071822780,3290205739029218948898407572995748,0:2270894901924122540569416928458576
+mod:-97466756197931651810599360815010262,3315237020945784440159312220994155,0:1990354430441881394180005814814388
+mod:4287211941100891093508540048565501812,594177978658290517920278334613052052,0:127966090492857468066591706274137448
+mod:5617959241381925678540184778777695094011,4078448937249847013764977403503471090,0:1935054788886340585810894153415403081
+mod:-3548112469563645005797230889810299281193,34963401912331074261420878238937,0:23794960044874975729481854354116
+mod:4922552264219521070158559671565380834,5646798983979557962421505933015709,0:4190349173326084889428003908698295
+mod:32565692680193961073474123363666015,878047053403499712307729237883224199,0:32565692680193961073474123363666015
+mod:768830069274599347793505224871406391916,49256101034975375638954310064864965,0:40844320703684820706353378994018196
+mod:642199331170025417801554157178084,71675957995271890601200242650759107386,0:642199331170025417801554157178084
+mod:42268335126087027949341092958250555849,386269043855800901191675132738936,0:72464078302734639658208027006177
+mod:61951474950542877141809186776499309394,1575592140257546405587708780583660678216,0:61951474950542877141809186776499309394
+mod:-50372525688338317312158892618403161,479484240404243987384900356318490043390,0:479433867878555649067588197425871640229
+mod:44683217172537023841274434066246364,58011321282881808274541027575827116208550,0:44683217172537023841274434066246364
+mod:114588115678254964728743791898564,4589417972133701399012552730584485633,0:114588115678254964728743791898564
+mod:787749081823153927726813864184041,31678364830089024747329753309219782268,0:787749081823153927726813864184041
+mod:-4210686607729439615194829247147791999288,202013476656713406344999304149677576978377,0:197802790048983966729804474902529784979089
+mod:-201317765219861856053478772267939948214725,28008182775029748896931627041800444,0:11094152473662864315215654119177355
+mod:-232349757997193586311539481768342879244,86500898319812757120814118782924774,0:78155788143292072088055401375988494
+mod:3459368213898794108935715830804259,645307545853931027509103766501511211,0:3459368213898794108935715830804259
+mod:-28214486245399572630623366879671715,4787018465719437691521185074756254,0:507624548917053518503743568865809
+mod:3106180109929449357402363559818380895066,469482281886594475593365429169214,0:356674718833276575481292181443332
+mod:770130766600035002140959295669804,926634653367571574740533619678875292928275,0:770130766600035002140959295669804
+mod:-6708203696875914373713983952300480,1838061152155611054471652207874138,0:644040911746529844172624879196072
+mod:-7022023536539325666545120950542389888,61599165978198027775591136704700507491129,0:61592143954661488449924591583749965101241
+mod:-3443533443745355681222242435436421990276,114311172439204299235358268154904366,0:90625985673833242925392730072035474
+mod:110440434921544638432764637319049273043,85855605443431360697149818939494456029,0:24584829478113277735614818379554817014
+mod:46258128333769427123848668553344812866281,2571328063101410768335059965106947440246,0:2545551261045444062152649146526706382099
+mod:363228842811153324360949224721752071886096,519776907108357809938962249484450996075,0:424561649519573023553574581605276625746
+mod:-7481133759236874924421451125199442,918037057467449661018383366170845,0:781199757970172024743999170338163
+mod:150233345756076313394229291485865,5605171356421762519368513553022673456091977,0:150233345756076313394229291485865
+mod:3185172342747413751304414848146001953,6651506504167945767766564692832116791091,0:3185172342747413751304414848146001953
+mod:605932275764163370707058593099297764806358,14520707105209378213724439334671383,0:12284018060727065660013089171020638
+mod:-47981623369556624178550389594061247212904,9181422689232628129475009481374015950,0:491604373090426086009955599360141796
+mod:874599738760971500384056236606682756504,44920344543206332304195675515171507,0:630504744210421366434326293515214
+mod:-5100339758640008895519382671699671,18538376885121966053582708191078256,0:13438037126481957158063325519378585
+mod:965966374431724388594710850103760963,51329769618720367882036219795372158,0:42030521294757766718058893787062119
+mod:55365396231165487163722749393764963,742461596124505780223115709313334341,0:55365396231165487163722749393764963
+mod:6538244814994833769942887762335568415335737,235589470700074178427678879883234150432018,0:177329106092830952395558005488246353671251
+mod:-19650261899708426741119367893002798,8812987996700889285483125610332533544693,0:8812968346438989577056384490964640541895
+mod:97698921976137171810654806439140172,2150746254976033978038152730412247,0:915340502215642798937933570589057
+mod:89923455582480950213180680168369292947024,990694177649308076053947944961089214039,0:760979594043223368325365121871263683514
+mod:723635984996285778841783493422287881642264,32276235065854550279733766315134173,0:19063611098078828395533076621443386
+mod:-5037258901456714281661245286129845002,306535320966797925963773461282861033272807,0:306530283707896469249491800037574903427805
+mod:166532365585666920632121582151238444,4667090491545163201419847209865957,0:3184198381586208582426929805929949
+mod:911936886147819373421198830106569057199,5615756921004609557346343726386068926525410,0:911936886147819373421198830106569057199
+mod:86811484072885033355160274493374615256,37068107901315780002032584004147872592,0:12675268270253473351095106485078870072
+mod:900473503013044141279558739534891246414484,563077317551901922040540262359036981493665,0:337396185461142219239018477175854264920819
+mod:296206604339420484011101863526048420,6943888401750337638037748772448658766,0:296206604339420484011101863526048420
+mod:76766227336308707540545234943801585701916947,862719523018962547718304126230369079803,0:581458558401082022815487697114611966204
+mod:82054010479033741262889658973891816396202551,74207348922359582189434798229625162234441019,0:7846661556674159073454860744266654161761532
+mod:5755949428068825531208655649279932079247416,534856249135883824768051408128323875,0:303149412971297936011710552241756791
+mod:-4452928490319786360637181545589562421706,303160457106458311370564160984723696,0:195464116979775085035415115043948838
+mod:-33234789698150515963593845391683006297003,247588244673392242851888266520387546,0:218325582291755629376064681215940307
+mod:45977596818262545665224859936336489390180665,27112842992285248552330285939262767,0:7978970070244814382475981419198853
+mod:19746632039239597257084558812475187,78543233940000315537304287419172400279725,0:19746632039239597257084558812475187
+mod:5238660120000018347305860723869512579464,9519590072642166905656304842744016323,0:2885580046826549194893060360303601814
+mod:421929309968572623211165422203258159204,6170672461209605966222290081308608002126042,0:421929309968572623211165422203258159204
+mod:97091659698518128542501333936202976578952,9041846719954776582047878587371155342936,0:6673192498970362722022548062491423149592
+mod:23139165317306380078171479574331055567930602,3235715510499720116696692085743763585,0:687224054572373129244754482756731812
+mod:7726755134733624542969321051092429534,137447273592584087361585543516012636379,0:7726755134733624542969321051092429534
+mod:-8035318446247202234206121089089275957949,1797181404653889821209194311109353672704806,0:1789146086207642618974988190020264396746857
+mod:44241982166867606755367641125284961693,185309069767665166238795112362391081,0:138423562163297190534404383035884415
+mod:-65785436012415799791107145824395590258329666,325370594025067544378522706736314963998472679,0:259585158012651744587415560911919373740143013
+mod:821027673057722511274869415993294010068508911,57940761411167592399099541246011867856,0:15088585564533356226393273829101110479
+mod:-897376592880832081463108433977538716243727,63994684847881571668961590693909662872,0:20872741011198050739952323156486210329
+mod:191486322813809144772467638907874658537,8919158359079954072103703171632009622394,0:191486322813809144772467638907874658537
+mod:163217130341378273663281863598861624,6240813543901974803730523328640195566309,0:163217130341378273663281863598861624
+mod:642113355959693728339535203311987630159829,323941666913544410706066077917137340119619,0:318171689046149317633469125394850290040210
+mod:90922298984492607133074207595203967287,4174997092394433838709995127446401945171627,0:90922298984492607133074207595203967287
+mod:-56138446847378331284150081036618044197,841578896703894278645078028402014609956835,0:841522758257046900313793878320977991912638
+mod:160326346782265576182652967313761281,561264601142183384980166754221561305236177968,0:160326346782265576182652967313761281
+mod:62576995621135938138768719119421725807,52496992618170687901372956534626144856655,0:62576995621135938138768719119421725807
+mod:-810322268830690053691854099385548648,520427764614796522518452921164896518986058,0:520426954292527691828399229310797133437410
+mod:-7946357739653867559456965124148378449835470,5327876492137615168373368729394652862957684,0:2709395244621362777289772334640927276079898
+mod:51331569935780141651744430445423490878343,752393011036235424760251760776480444081267,0:51331569935780141651744430445423490878343
+mod:6390091523604851953175389451017692789149570,538026068781142884378652825927355725561390604,0:6390091523604851953175389451017692789149570
+mod:50795967128946679209456313061694178754547719,2799907523414076596435050064346492259123881,0:397631707493300473625411903457318090317861
+mod:931794725698638185508827954509566305382537413,188887874108390274677254477767965547955941480,0:176243229265077086799810043437704113558771493
+mod:45956761520600045904065879294257993751858393,2754559558487710326209328606488100503,0:1112021195932856302477743058115163232
+mod:86998056199797702223316805148045842457568,853454763663288996214888780372138920872593497,0:86998056199797702223316805148045842457568
+mod:-20704801388339426733036642845379116124827,1435867681437150310057862989648368134,0:410577984280737997741465350352367453
+mod:2856130129221222388492861978859662650626462,3415046666744379998032348811600467386135912906,0:2856130129221222388492861978859662650626462
+mod:9174094790970904280083488936332437588,80223089031357892324412497824961233579,0:9174094790970904280083488936332437588
+mod:4534642237573685930694951916760916917,1687939078118830937441972536472082033553313,0:4534642237573685930694951916760916917
+mod:4953285485878049171718509399492969344,8438715605646215951383851878799856179,0:4953285485878049171718509399492969344
+mod:-5473561371563615410812461706913472604,214334897451541211570930222077036158481210,0:214329423890169647955519409615329245008606
+mod:32314040316433349581573558346471215798,854672171304077635036322002646520921344854,0:32314040316433349581573558346471215798
+mod:984601652834979681176881179524440398165232732,6010771562748020948016078628902359752985473102,0:984601652834979681176881179524440398165232732
+mod:698822785190474223385164957713213782961023671,150442537951079536547656264208689393334480936,0:97052633386156077194539900878456209623099927
+mod:-832138567182782528876254228044578514024849,377042837783032738781722401918006460405664,0:298989946166315687468912977709440867192143
+mod:-271707131793885697341132963275474633346,74513535025253601112542022792779088685,0:26347008307128707109035127895641721394
+mod:44640484386299773856766873434498216561663,5213123770976745902224829213477542076627816299,0:44640484386299773856766873434498216561663
+mod:-8174713099269176537506457338358109028363056209,7202185449263765965193807505095247595858978029,0:6229657799258355392881157671832386163354899849
+mod:12355340492830472409960851629397705304982,6132966232951258768476406645904988676022226517,0:12355340492830472409960851629397705304982
+mod:740672577198687499703984527131597058855628260,62988497968425244096425380714180031243,0:25908678444459756553419138341753752738
+mod:319004336538265669049369604224595570722530952,61211042298242370348907837021107959589032437,0:12949125047053817304830419119055772777368767
+mod:4806439359677487573544166219831820280885,5343125957234791643541038079815655996180160,0:4806439359677487573544166219831820280885
+mod:323024441762812965484474248139147756931591832,5765121910212312442407559411924073985538984,0:177614790923468709650921071399613741408728
+mod:4723337975870144045814369863570042890658212,89287300568064096399722912162338068807417604,0:4723337975870144045814369863570042890658212
+mod:4046612007916961296580001696582058791225882326,5729739966517853346267035412515108513431626770,0:4046612007916961296580001696582058791225882326
+mod:540533121775179300141141525507624112998,4914658151314087364162157813143111418270829,0:540533121775179300141141525507624112998
+mod:66280283111826907749579181590044353153733,204172771634272898466853823821147342141093,0:66280283111826907749579181590044353153733
+mod:925538924182292886302889784301398233703,1123951844806914762874832168405952076336884530,0:925538924182292886302889784301398233703
+mod:-9277230270610927782719268661989105709153,55678956296429757152650874683611007657644,0:46401726025818829369931606021621901948491
+mod:50293591559684931942237588278999569425818428,141131236033928957276244084171780508793074,0:50871531606223151894694313845708295484084
+mod:227536874010521150326799753293426594405370122100,5663713263329817356263170887251834777947840,0:2857369509067856283126068971384036093597940
+mod:-159636069245107191231315124801771805922519,5376563717710166640876235141463100221226553282,0:5376404081640921533685003826338298449420630763
+mod:296211412518831858845632004066852419532092957,9193193936667373505606545836126920558776593,0:2029206545475906666222537310790961651241981
+mod:86602967441811929071383589926953279497600400,29113787967675780279817029258848956369351891,0:28375391506460368511749531409255366758896618
+mod:935808235992985547250049168223094462501588,823359169504337998748976932597778859831206424,0:935808235992985547250049168223094462501588
+mod:1241588731631743791569571581848113730164929826,171962803446046629060145060037355991426961,0:17290751287129755324248378403472062271406
+mod:-74403542912395173151108580799350125207208,117394870062241902513223079179473780570881,0:42991327149846729362114498380123655363673
+mod:-97438192951192117314716964768364222640372905637,8024586066648229541713894611454280576509407,0:4355656117334010314857498525106400180823564
+mod:-737958699044282011354135601107494488027530,158340104707707507507946829328121909848911613226,0:158339366749008463225935475192520802354423585696
+mod:7238206747053249220557962252149262130217519,26583927802751023597693302694515406325578,0:7378384704970801985383919241071609660303
+mod:-76298303799498407827228786401180081621564,305509547184311996384274460275527665616703456,0:305433248880512497976447231489126485535081892
+mod:8484126595409899812717896552747684329372,304175476902105667248597679191320877778921077,0:8484126595409899812717896552747684329372
+mod:16618292546225677123057630920609252345178704453,1759703193372771615772702336566528721798637962,0:780963805870732581103309891510493848990962795
+mod:-86688490323412015602068918712338617474038884337,68055712910244091518751770267361236110795,0:60113101985245418861232982916749058457123
+mod:-2147105590126324395866565651207583306108779,8080551616254563514320925568870382437821720942,0:8078404510664437189925059003219174854515612163
+mod:8351518777266745029929974668820179263529631715443,175331741086869721483946575985451578498971069791,0:110926946183868120184485597503955074077991435266
+mod:-1795087841202144142663615322625965929380012985,35306979241856773462781084288773766694122468,0:5568100132551303938219976101496172020232883
+mod:1223266620160352395848150839920704951768,4664479506170256011858225502160377500533300400637,0:1223266620160352395848150839920704951768
+mod:39982725086518866718673198942063749137891,461771175994919359694841662569213792123219861,0:39982725086518866718673198942063749137891
+mod:357581778914196308302086292874528466152700626874,3109407409714291140644239657248083936467914372416,0:357581778914196308302086292874528466152700626874
+mod:149499532166554918559602886813953835372516,4116995844742979208794059184185312557100182485,0:149499532166554918559602886813953835372516
+mod:30162948061054933954336062823716515388316534139,210277285976133726432524140550436988594139754,0:93296166467811074485110725004026019354549317
+mod:52810485653680320320369005564031524621022350,82825120387123890672981225414839234585635496,0:52810485653680320320369005564031524621022350
+mod:7208022814700388108567430430861339898438,2633586073486065955736662183793128252475,0:1940850667728256197094106063275083393488
+mod:1133096693748508212236566391854344691508408508,2601250202595579849376374699877144432325855432,0:1133096693748508212236566391854344691508408508
+mod:24110493767768334678283829225780182918079966113,62617472892345734441670381366941494160023,0:11535407963705925298902727562240728070101
+mod:2029154393292042830677214368668639182381808222081,82610125404955917046846600049858255083588,0:65547351731225346301018769765882024339145
+mod:950870388742015370309491008506921827067333129594,9135792372038219712944984119888962386493530278645,0:950870388742015370309491008506921827067333129594
+mod:646334826846693204541658068926128186360010,54407099890316510058892785158311428336873182,0:646334826846693204541658068926128186360010
+mod:428552882985823327962705708694562616508577,141639571156330467462518777812629657176255,0:3634169516831925575149375256673644979812
+mod:21509351141318679646739001694607822320768,21896381149810489046647085552887947819439418684,0:21509351141318679646739001694607822320768
+mod:632728454831941197355087764542806015137812368262,222724285350635099362081058306677746403035965,0:191484436137515166777558951841215353190227662
+mod:29001858864232179857863618818997005925607,263069727005942155120496500688512817218817,0:29001858864232179857863618818997005925607
+mod:2833859942689944963761411216780529093075213667,24836085579076290404924895501933094503621863,0:2546186675247857599973129560156319662321285
+mod:87503819229335363919830481339117453040132756753,7265931585748836565776184592881080221565467,0:205142162125158187890287050603931819837672
+mod:3785119298527941754940929232952910144091163,384452066294060303214343786012747535262261,0:325050701881399026011835158838182326730814
+mod:38179577399511020742387225982022507255362,265561978107157383888631215376392729015255,0:38179577399511020742387225982022507255362
+mod:-42541955629872910052396184385091366868620,7073377596138431111003761711368230096543870670658,0:7073377553596475481130851658972045711452503802038
+mod:962822498059104139629105773638997541722777,291785910412123339651738662863457030701079,0:87464766822734120673889785048626449619540
+mod:-610694008008712552303733816313602703956727091,10013831675645158459604313031569589122775,0:9530562183081513694818229700258284829059
+mod:25840001817997722382069756182552718470600133,8684986931293242801082346374758755111010579020,0:25840001817997722382069756182552718470600133
+mod:65515204463103763906150928285942229386532511441,6904523147545678419356084749116545717835399,0:5088839190367063300396186324443615710245729
+mod:88029876839939054322959996030895683781141381988805,87155086119890274408175255450625302996948,0:42833542489532412926993261659835596440801
+mod:-140728222219088662551331451181555518857060,85465120005353614253381442147197316880331584686,0:85464979277131395164718890815746135324812727626
+mod:9386187660146534186830943256786039971200765327416,587965300048494341491681576852042742249853,0:156828577987386328282882864848506418512778
+mod:8015087164840320324802166753130112000577091656,6127305412955855242353538605784472950012242,0:571684694061667803738256764021381961079120
+mod:200585481998602232012071307195117379072828517,688377212094972591154108498471394888446887,0:267713278965207986225734139941466534784400
+mod:-2500594129935211199120603938323647766148423982331,1361156037555715012439087715972060812276689,0:599374805963096380934653500844754016423148
+mod:117111132825449273925221124600613715199470024967190,6687987114639191794225780163327374060501630866595,0:3415351876583013423382861824048356170942300235075
+mod:17302923664832474983271296805121649995183106066,41453082247135300103242413890739246798747574758,0:17302923664832474983271296805121649995183106066
+mod:804590820827842054650903665300245592864154,31922670356859924926370586627082780796917147,0:804590820827842054650903665300245592864154
+mod:1419527821402660938221344683778268760948333788257,28865159616287527805126478593002688908873146865,0:5135000204572075770147232721137004413549591872
+mod:-6349296345256358340236015836865079291052256775642,178072362342080585886203440168430935242413913,0:51806412867030122454025780494135951253706286
+mod:83483775554984848270591505226690350944356856326,500899723948831224438405152518791040164077250979465,0:83483775554984848270591505226690350944356856326
+mod:-5202440839318488047646864687648754749799822,423723177170085295356066936482198199652980649761,0:423717974729245976868019289617510550898230849939
+mod:525675600985546172797713152878987836214364203032,52969787195069967379407272322490869598290122,0:3432861671816524475382350588446320933032304
+mod:37858860128097787570803474618858008892810909590,5748777360917412753508983838083899279156995949,0:3366195962593311049749571590354613217868933896
+mod:45957868400560169903622579655897442394944091417163,62063277048172505864034466895124800993363976911,0:31043384912515564237074153505089659854748503023
+mod:18051383988929839561139635711444280609605686,829384533321617231836740782712342923300954,0:634308789175877692568079274485079220285652
+mod:2455769442319397759077734120262920951648644195950,902538521133892788023206849882232725042383975,0:864664835209375654611488583247939533359783950
+mod:4589658345087491870839566381729330015793440,513428177661658876831707141329481947688426657,0:4589658345087491870839566381729330015793440
+mod:-3573981672918561820060475190255839052046119,6138097283471921734295336167784166932835047133,0:6134523301799003172475275692593911093783001014
+mod:651620293244411254456830208908605775265324147,49737728886554678175954115600491082303192404,0:5029817719200438169426706102221705323822895
+mod:-16650974859063823766693159687850998551426028,945869854077417138401154817030148430752804974724,0:945853203102558074577388123870460579754253548696
+mod:-965598273519770488416791785443027019154228220991,58147062667685853263523283369280759917430291182,0:22901791830889017063104031834745899442086729103
+mod:28701469969197750610229907539580754650086642,3909053247766771922418857228732717683752395675,0:28701469969197750610229907539580754650086642
+mod:-8748391241949190130773015442145843092096091103,42809713885017092071880308569574525272117288,0:27600104479313743962447814616934588687952937
+mod:-6130419437464601359973583052365059560631450,2868142672962642021474985766046232299028848,0:2474008581423324704451374245773637336455094
+mod:95640797562953613006161464063899219827371659541,19819192346118145486800692560690336691790893,0:13194492933561032348122458568345289480600816
+mod:-5004080847919147880779643424152795003888630787668,21840420756428944369875564516044464145680642454,0:19215926059509324291736414537431749617916976752
+mod:2939482810778921033958889604777113454839240320170,566855177384622843277537161088088916192047616362,0:105206923855806817571203799336668873879002238360
+mod:291726867119014526479710686475643665173438062,202885774177743860764627132154911476520592335058005,0:291726867119014526479710686475643665173438062
+mod:8683025332039408014362977905935333328608348,78614799730964514801510410033797138266803757860,0:8683025332039408014362977905935333328608348
+mod:869468342614628804595566251564864548106595266,73624620788538462644074114115939464475401814111645,0:869468342614628804595566251564864548106595266
+mod:4728910553503250598863512353801889257516953314,648895113009231703768170210292430028966664779037,0:4728910553503250598863512353801889257516953314
+mod:760566451760297307988377549048192013905533937,2697105353808446098263423690773776969485171497,0:760566451760297307988377549048192013905533937
+mod:918153477317716353524438631647119722202588746160,40888243303074949046907063669422917592190788906358,0:918153477317716353524438631647119722202588746160
+mod:-1473776558819659703245310105293049377337981709,31054248040311137303584740614306271791161270545,0:29580471481491477600339430509013222413823288836
+mod:905086443229432348861962052611640110347186013855,16319880347082113262021644716353623982591699522702,0:905086443229432348861962052611640110347186013855
+mod:-3948357993060778828570152166999624499401960763170,77670033625089877508398637915359376482388910,0:75836304290184446800990065584763456761865590
+mod:-784992783303820924306757780883007042021257440780615,463574560419641941889185992215306604381633902571284,0:142156337535462959471614203547606166742010364361953
+mod:3823677606013902933129598925384688189274201201551,99529942495899622221328610053601822241548249,0:35805148927146252817712955466984220642119718
+mod:12254504447986771204864826285146960991558427605699,6125051499311360686388425114933437945893268599,0:4401449364049832087976055280085099771890407699
+mod:-2580894945525990910646902811077109168493411986,572510241156643657546678509117136144990147708808871,0:572507660261698131555767862214325067880979215396885
+mod:343089829587091844514156149817937152291781907,43377295017128784286263228943698366029281236815,0:343089829587091844514156149817937152291781907
+mod:7853011116124010483217978861490662971029642862525,552677408447001109928623269020934228695696472,0:17819500571712242170831972208515492491691877
+mod:887815431705947711841094597810602130602260715,8486574430538892118817816797303238023509341587403,0:887815431705947711841094597810602130602260715
+mod:67620759311796073899200379294956624554814285201520,87303800600842937580229698689028406709310049288843035,0:67620759311796073899200379294956624554814285201520
+mod:-38490591886267408374352863050032614782701178357,66475506278603268018635318767149490286581760362179844,0:66475467788011381751226944414286440253966977661001487
+mod:-544395011810833021655729041737889469872310533646777,731611503205277837707380015577043727374026342728599368,0:731067108193467004685724286535305837904154032194952591
+mod:8890962095194591840604729292735591304316116728,517571143480065164208802281191733497859755993101179949,0:8890962095194591840604729292735591304316116728
+mod:40588319468481766273347382652716318465741545598763,1536971037850601936767123301111618687777305090,0:1525271960920929137957640261803777606250087133
+mod:48235707095020151632145028961335649832134676937,794868261145529770762797624857872107306805378170,0:48235707095020151632145028961335649832134676937
+mod:-9523841594085891512065672092684699107288546273626439,473487777070786775175577792880772873295554421457750,0:419401724400630766621461557811531231918096576986311
+mod:90074633895471637214960779532906651648038212359500386,820079595762158387084577717033680869242497989232,0:371415339208611139101404795279693919203214214434
+mod:502553209306579947121167024397370721577297298727046100,52494082558436951205873151813775449908847817944715,0:27356974663013227343342084098339599897137542289405
+mod:5790702792462693399581381818523043045468711777,48910417508813857701976328940621637734412004053009,0:5790702792462693399581381818523043045468711777
+mod:8115756631582685507536476067391256503367264361488762,84450889017264877905314659939101106548473815858544561,0:8115756631582685507536476067391256503367264361488762
+mod:8194219075070331821784044970434313099982993771,652282608320462546135364960046755034411967968039334154,0:8194219075070331821784044970434313099982993771
+mod:75033785162139990322256697516355737268216190660,50448201882288504062521017516515948614320857837,0:24585583279851486259735679999839788653895332823
+mod:-310420971441772166248782136661913235149811988,52251157147894938842540415683732209931823110303,0:51940736176453166676291633547070296696673298315
+mod:-465851374976907401549861928175506333511972756050,404205507663774789620852323466440811463681452434704718,0:404205041812399812713450773604512635957347940461948668
+mod:86727934051201027780798621123886995870064920795,2623457841745489387377116124239592088889194223622807,0:86727934051201027780798621123886995870064920795
+mod:-2164209564341937597697994551840383739114494141322,5822096741927098565898057075974774660691292113200355,0:5819932532362756628300359081422934276952177619059033
+mod:-21572594290097356729450557279398987661535311983806,95173892429181732470545230031265828462190645462413613,0:95152319834891635113815779473986429474529110150429807
+mod:896154498632105428944035878874928031422856104434543133,2920373159440158169043176499665564441266475422,0:603088578315357918226288933626857244348602913
+mod:-28106796449976334513237948147051254770072052831429,8250476728385872623793527898989079209376092358,0:2577763634333516026601404804538096272293832277
+mod:-5910781525258418818015395848760618489911223430349957,51598547888760073234245679451691550056130732598,0:38529590602611260383715148455335218776511681335
+mod:7727963353453460964292856120418469526804141877435331,9692488255114907303703797109203796514048948603078,0:3050214126879843240929824383043705107129840782165
+mod:937009697498591315869575189938875974899784631458,9231715369857992569685209191243252034527233388658,0:937009697498591315869575189938875974899784631458
+mod:190934454146310086697642361797951041146551500749,10448518118997830258656577725632025806308987954,0:2861128004349142041823962736574576632989717577
+mod:716842295935464600709869948911248187992875653195892447,401547841844896246538515909881184133363330747247974,0:79398242324800638619049773334509939330269358258857
+mod:-538446228722400194015060345964154302722009578079,57520540642458327434814547831209263785958735384,0:36759177702183080333085132347938335137577775761
+mod:96967488061013453069137268213397106742518252838974707,4323900098433218426906897807465481156203036443592813,0:1841685895482647677185516449156521306051451079932821
+mod:4248753403571933538992485400308861658493364877663,939067422305299585909602271217318347813010825877,0:492483714350735195354076315439588267241321574155
+mod:-107460187565073890428227205420824162161759055432,282612401032124761876915123928433707969500860981828349,0:282612293571937196803024695701228287145338699222772917
+mod:6649481706449462881752315195565911763474357952858741,659725471155847914828668487679599556025560898493899721,0:6649481706449462881752315195565911763474357952858741
+mod:6305756385410127441079092163742836866873755879,9919320027008577000539126363765101039097548804251,0:6305756385410127441079092163742836866873755879
+mod:-38180683008697554526126494541279186939566773312,4697678019691033242250502480954454444789783096,0:4098419168521744654128027787310903063541274552
+mod:627353070533528810361133250533207881585454632738,247981734193053924842956535127898645616700024063945,0:627353070533528810361133250533207881585454632738
+mod:-977100235060594126432793245647088458561713536019153,711683384963018548537977961275571093400571875056194861,0:710706284727957954411545168029924004942010161520175708
+mod:1498139275498305618541952433970427820083740864078175,3957896946470021688374936335906211866428578229500974,0:1498139275498305618541952433970427820083740864078175
+mod:597201805617750253952058296204205724608800648357149,4978798146323419820714075023507404888549551451,0:4925562548693297046425284539523037059050912601
+mod:-56676822442119009829407208281675487240867001784809049878,6406684614200209335872193933373288202798878241606,0:2690987740863316857560626374071228113763853811606
+mod:8685426845950882129513316465433060160017749608742,5862536885517747336130664930278619887073507404339873116,0:8685426845950882129513316465433060160017749608742
+mod:-758552875949625615550950682460830448030408807239369540,6928982530621565423313581311775944174511467885237190,0:3635202418746581013543261834523411165852660136721360
+mod:165930319304414878413873653644927162776703980852674518,70941371417197323006528137030561117730233179743191461,0:24047576470020232400817379583804927316237621366291596
+mod:-30974844728461949004845422334486602888821195017,323336199778314705263073710488111629703644763021,0:292361355049852756258228288153625026814823568004
+mod:6133073724222023714159452874993644151837626947339205812,7463402457118308536507525382128605388905979122243374,0:5620306927892405686774536266059127545818087977395758
+mod:45342828302867171033162078210088228770176829233725,826633934789479436275857854693648185626420538347806062,0:45342828302867171033162078210088228770176829233725
+mod:-26272751936716551812042161754718676251990474722,3726791277147420607688434457942745910700285747248,0:3700518525210704055876392296188027234448295272526
+mod:-39318997476790646356737814318350583742657677501,1994697821466452959618065249537163794020403205602,0:1955378823989662313261327435218813210277745528101
+mod:8027107780836872755806128697397537471698261298622,1333439935985760787392296885353944866764267524928758610,0:8027107780836872755806128697397537471698261298622
+mod:-55936499409386931117510358618192060334282485918550322,398438202364094320499957997907168092925880758462,0:239820508270537478744707995268231581913761929858
+mod:4986596463362462090356441596215520136635434728102133698,904796510225702345660178949801987674355175932951442952042,0:4986596463362462090356441596215520136635434728102133698
+mod:206550560537111820336709370332003111271041434735753,8863245846520291116010486302557366093750491313639489405,0:206550560537111820336709370332003111271041434735753
+mod:576258003770289338613512178842212632031473801519,112928562274312812079466249863533328301249309332,0:11615192398725278216180929524545990525227254859
+mod:5044250943493799862304047991036206572453520324334513,35881021726135630824830413448736592392545545812443121,0:5044250943493799862304047991036206572453520324334513
+mod:905588871665990684975164361624636275705950128546215874,53243625735815790460446478875365074647441813141773592808,0:905588871665990684975164361624636275705950128546215874
+mod:5991116388159027989458739990542641030328044128925695503,721278676327052740788584942208715418345142864101,0:431868180450652741834416094047706629629986812960
+mod:-3474677351996973979038623915159768162722810109611432906,763685814389121867002329466465821059768201256128129,0:93103473530515821975157259717659222505605771554044
+mod:8460371705356400367952890710394988728910116421931757,6311797752969747892862660456068082967585770509045488820,0:8460371705356400367952890710394988728910116421931757
+mod:-264756559717037431451787362436705748418817738411460,7816554223015299624827224356467518163226383802462318164,0:7816289466455582587395772569105081457477964984723906704
+mod:84752881980947180661815959615676455311403364453605403063,52250068596287507582088091160391730925462299132305704,0:3270717768843363669075753521067750303515261005551175
+mod:64938454622435247872445936607970411171632403906819,964092617858022639258083183616152671542900110410,0:344249225947731042154363305688182178258096509349
+mod:40144089093980612505699952982513757457937212093962271,10902061466143734099157856887908326325446558980281568,0:7437904695549410208226382318788778481597535153117567
+mod:107130104935801948815478025681375166396055326914961974,6641641026382469722494881921027536542476581953333157,0:863848513682433255559914944934581716430015661631462
+mod:375770000201081420238670197853908213239792155799109438568,741847952379716980656595421052880669705080727039,0:186232142856874724410035514392651753500883140216
+mod:314494472877016149904621158951181139298853721401432703777,2289213676835383723493513562354885152593212937649884,0:8739694298587358772241304662150445534814153989973
+mod:491754906560818931573946605055051948215890543148276100,5346198427406770324055146743032112633140429155293,0:882811089383626706097337472163994367588586115374
+mod:831402402931313770942586028473722467913682852291371107996,249203176454681279672468752353764682559981472637056324863,0:83792873567269931925179771412428420233738434380202133407
+mod:-927301671513394245404756806010463865731294755475136031104,128994162476254345599482066271274174336327781183511925567,0:104651628296640519391099724159729528959327493992959373432
+mod:49063903583376380376914162724558461583861450724317254,941774744692403469242853096809411489238020290379296849870,0:49063903583376380376914162724558461583861450724317254
+mod:95814446741364664911508702682923954900446789248313,2444989997188453542574239416826458624894367967952,0:459836851014976751113365426692068529566438498185
+mod:96634339550441353817958772505469549255037435683448,78081012036785909772650615373227006202901241216144834,0:96634339550441353817958772505469549255037435683448
+mod:930319417728873563211760140268194907413484971952354004,89121326206650943149280333205573781193492882117302434,0:39106155662364131718956808212457095478556150779329664
+mod:296149508458734377319788304412051836966914377456545014105,5775874526745986573435749392656102466476051398568,0:3756015598637200337676470424188468229410269716225
+mod:42844020401978935822457442747009223068912783208882,70773879393663215011878508613578824050038059978191899,0:42844020401978935822457442747009223068912783208882
+mod:-90593635206751701986722625420716592016545661236480979772,6587808211180976790034063002169935351319078136248018,0:1903313409090829825808985124358934794301293201763764
+mod:5733125812846132405536083211632006878958607745362254467,12605191511011498307650361584364883404677231252914573,0:10368866846912173862819052330349813235144756539038325
+mod:95998165422977408040950062135290204359238945742902842,40371405656826836301445165513921557692353024588296,0:35334176700018152414903708698661724515806296523250
+mod:95998165422977408040950062135290204359238945742902842,40371405656826836301445165513921557692353024588296,=1:35334176700018152414903708698661724515806296523250
+mod:95998165422977408040950062135290204359238945742902842,40371405656826836301445165513921557692353024588296,=2:35334176700018152414903708698661724515806296523250
+mod:95998165422977408040950062135290204359238945742902842,40371405656826836301445165513921557692353024588296,101:35334176700018152414903708698661724515806296523250
+mod:-76855972323011457703707050993748256077521513979037807,1910956865546821689289334552684591792222791353473,0:801852416163817820695380673341213886931466292780
+mod:-9872019059197505082121902831056682448354872822219660550903,908082149115602660075723278246449391327542696231965833,0:650065987327038221360650038715334158171371214271985473
+mod:595855064966654171339977100486303810714342893653637711,594549781214651234933649045428169123584477791281395609,0:1305283752002936406328055058134687129865102372242102
diff --git a/polly/lib/External/isl/imath/tests/mul.tc b/polly/lib/External/isl/imath/tests/mul.tc
new file mode 100644 (file)
index 0000000..b113018
--- /dev/null
@@ -0,0 +1,864 @@
+## Multiplication tests
+## Generated and verified with GNU bc 1.05
+
+# Regression for zero-sign bug
+mul:0,5000,0:0
+mul:0,10235,=1:0
+mul:0,-58382939939929385885,=2:0
+
+# Basic functionality tests
+mul:0,0,0:0
+mul:100000000000000000,0,=1:0
+mul:102328632557663,995533253464107,0:101871556492663391138178301941
+mul:1099511627775,-65839281,=2:-72391055023845629775
+mul:424417695707616156,78196371461084006246,0:33187923788210071918733291062874510376
+mul:8785533773682081,509516924811454802,0:4476378151193669633826349848802962
+mul:3149810015499242805866,671806182669824281823,=1:2116061842647726364810477474851492861573718
+mul:7004291671016071522932056033,291108610609315306035746008,=2:2039009616651887991790118373228449729743842556412066264
+mul:62479450738832647,8434970263250341371151,0:527012309046267948145296885851102766697
+mul:9472845009207216089,8603477481125780254532680,=1:81499408718909018140819102866811806472288520
+mul:8704164997261749,601100642928524,=2:5232079176009991665860326228476
+mul:-18665805686013,-2922920804055208139127600955,0:54558671764099393911694170691186688942415
+mul:44144326678357949,-81195051773905850760614924,0:-3584300890173486959579517806592053823430876
+mul:9685579959286825,5953064636346354,0:57658883538135357049439528986050
+mul:-7,328492456,0:-2299447192
+mul:16522181,930,0:15365628330
+mul:844378,24,0:20265072
+mul:209,3,0:627
+mul:70522336,34102,0:2404952702272
+mul:32557663,995533,0:32412227919379
+mul:641,701,0:449341
+mul:290748,-233,0:-67744284
+mul:-95,4770,0:-453150
+mul:6839092,7,0:47873644
+mul:787590783,-6789049,0:-5346992417735367
+mul:721,15845,0:11424245
+mul:-37028,-949534667,0:35159369649676
+mul:618,-3,0:-1854
+mul:16657,-544851,0:-9075583107
+mul:28271,6,0:169626
+mul:-35357673,5207718,0:-184132790120214
+mul:99,-565,0:-55935
+mul:9311525,-5,0:-46557625
+mul:6221599,7764515429,0:48307701428550971
+mul:21590339,486739392,0:10508868477933888
+mul:335,3699183948,0:1239226622580
+mul:14,8755508782,0:122577122948
+mul:-5302,9,0:-47718
+mul:8236,9462435,0:77932614660
+mul:43040,2766705,0:119078983200
+mul:863478587,63,0:54399150981
+mul:8874055124,10,0:88740551240
+mul:8204,-89955,0:-737990820
+mul:3303887262,3,0:9911661786
+mul:75504,-62,0:-4681248
+mul:436,2123372,0:925790192
+mul:3361227,943089540,0:3169938025265580
+mul:37340421,223177728,0:8333550321343488
+mul:-35694701,238293550,0:-8505817017478550
+mul:4263,15500547338,0:66078833301894
+mul:1493,38730799,0:57825082907
+mul:-635007,298501,0:-189550224507
+mul:4968,-98492710997,0:-489311788233096
+mul:3367542606,17576297,0:59188929003209982
+mul:232155550,3921719,0:910448831390450
+mul:4860966,700,0:3402676200
+mul:2323372237,867,0:2014363729479
+mul:4268,-29035,0:-123921380
+mul:8,-73804207633,0:-590433661064
+mul:395170,26163606,0:10339072183020
+mul:-70027196,6945032910,0:-486341180815020360
+mul:5871172260,26773591,0:157192364779785660
+mul:17125540,836,0:14316951440
+mul:1988202315,-68060596,0:-135318234527479740
+mul:554434367524,-909419,0:-504213148079308556
+mul:-40457802353,3398,0:-137475612395494
+mul:410791452776,4492144466,0:1845334551267808737616
+mul:135751970,7417878752,0:1006991653805141440
+mul:9593,31047471995,0:297838398848035
+mul:-18387143,50226,0:-923512644318
+mul:413450673851,-124,0:-51267883557524
+mul:-618513698871,-318914624,0:197253063714294189504
+mul:37416674596,-8817,0:-329902819912932
+mul:6242382,-943205,0:-5887845914310
+mul:-4949666413,1501091102,0:-7429900210422557126
+mul:-6385784303120,899228089,0:-5742276615660794337680
+mul:6308,-79643949,0:-502394030292
+mul:2421,136928,0:331502688
+mul:333180111,442438,0:147411541950618
+mul:723761305,611024432789,0:442235840862251429645
+mul:-91289,-9223787613074,0:842030347409912386
+mul:10944,57098,0:624880512
+mul:57145099,-94544476,0:-5402753440923124
+mul:9327105307,88173695233,0:822405340745514901531
+mul:73230770347,67182928,0:4919857571607036016
+mul:4810254287,-4310,0:-20732195976970
+mul:7200253992,9893,0:71232112742856
+mul:-92709373682,-664752121448,0:61628752833224878931536
+mul:-2236424417,-69570761,0:155589748609671337
+mul:781963714,61084006246,0:47765476390121357644
+mul:78553,-3773682081509,0:-296434048548776477
+mul:24811454802,-26314981001549,0:-652912961735421705488298
+mul:805866671,8061826,0:6496756880801246
+mul:4281823377004,2916710,0:12488837061941336840
+mul:15229,320560332911,0:4881813309901619
+mul:6093153060,357460,0:2178058492827600
+mul:624794507388,3264784,0:2039819111008224192
+mul:2632503413711,-514594728450,0:-1354672379322310051777950
+mul:7216089,86034,0:620829001026
+mul:112578025,4532680608704,0:510280230883694129600
+mul:-972617496,-1100642928524,0:1070504569131119855904
+mul:86658,-56860,0:-4927373880
+mul:2292080,40552081391276,0:92948614715315894080
+mul:57144144326678,3579498119,0:204547357129208422518682
+mul:77390585076,614924,0:47589328137274224
+mul:685579,959286825595306,0:657666902604804292174
+mul:346354116,451435163995,0:156356427156803253420
+mul:443946215999,260668,0:115722572232027332
+mul:640447120070,-441698,0:-282884212040678860
+mul:1253208493501,-8521171736,0:-10678804794135860887736
+mul:8507343,62395589,0:530820677310027
+mul:81126006,461820852819773,0:37465681276782021316638
+mul:87891707090,40954510522233,0:3599561842834425768731970
+mul:-767589,-991593,0:761135879277
+mul:86229155,43027930,0:3710262045299150
+mul:-431963821,48986055721,0:-21160203804962069941
+mul:101557073166691,-74080192,0:-7523367479146517284672
+mul:-34269048183,250074,0:-8569797955315542
+mul:7650667716360,-959482143,0:-7340679055874008959480
+mul:-176432105527291,712269105001105,0:-125667137897384071121162656555
+mul:91973525400419,-52180215632622,0:-4799198387886300095948868618
+mul:9054526,-21388581343089,0:-193663465874114270814
+mul:19326311972,3180878,0:61474640572871416
+mul:501569850634,39035351302,0:19578955321989857425468
+mul:-3470290487760846,622612793613,0:-2160647255233400713100276598
+mul:827793089252612,77591849874263,0:64229997108241062748844324956
+mul:19866668332,4414961,0:87710565885715052
+mul:136274450771,8659380001,0:1180052253653656430771
+mul:952660786088689,171372582380,0:163259939044179413638699820
+mul:429415374,9140880954,0:3925234813551386796
+mul:-368107346,2945634,0:-1084309514027364
+mul:2147845929,79983807840463,0:171792896056056736025127
+mul:77885771608,-51236668812562,0:-3990607485089940493339696
+mul:62272695670,208399244,0:12977582699470073480
+mul:61973019,-1405255816878779,0:-87087945439289091663801
+mul:286206733986,212837117931767,0:60915416394244148267933262
+mul:-131938894,1048695278656631,0:-138363695208977699906114
+mul:27109492,306933238851468,0:8320804183177960934256
+mul:-314477095129839,3837918787896,0:-1206937551761766779621628744
+mul:4116345,9101435151,0:37464647076643095
+mul:63853435249810,902940229903,0:57655835504559765637068430
+mul:80076033,14791385,0:1184435433375705
+mul:-31038678,1454704764,0:-45152112754861992
+mul:20638192722,-14267370499730,0:-294452742009605188965060
+mul:8065790684,-1977228453431,0:-15947910839823487636804
+mul:362687955673,99742877979696,0:36175540507397430642015408
+mul:1235326072088,201675880263044,0:249135473000235948746315872
+mul:568009735,49546482048450,0:28142884138522341660750
+mul:849579042,-3197920541,0:-2716886269614901722
+mul:1808291492597692,96814519920612,0:175068872732372459073494427504
+mul:6275712123233717,739880208952795162,0:4643275197065752315694969352877154
+mul:774075573665981,7523229210171,0:5823547966683781965601892751
+mul:2944466357361,497012903828640,0:1463437774497728631346619040
+mul:282862415058866,-6240991940068,0:-1765342052530551975764042888
+mul:571225883598025,189932649930728,0:108494445780794463607647612200
+mul:815309478,-371377784,0:-302787827213836752
+mul:320172590239,777220834144,0:248844807655600692320416
+mul:654332382,7919190746613,0:5181782944743642722166
+mul:-5094673003562,268414312780910,0:-1367483153094548874555601420
+mul:-77841790209187781,35267718271550,0:-2745302326850733800658699930550
+mul:735762990564598234,-32739891496,0:-24088800477857417959993218064
+mul:-5999905013129575,144027889596460,0:-864153656820273314848441304500
+mul:6861193105404525,-4725324526382425,0:-32421364061213996907214475473125
+mul:859748569384694164,98523184164,0:84705166636223755282588018896
+mul:570460270963,-54720108308,0:-31215647812506387460604
+mul:61750383079701,3452251304617,0:213177840547497299540279517
+mul:-1738716695,8560399484936237,0:-14884109500328036282376715
+mul:9953417006786660,90085339160,0:896656946857288287863605600
+mul:188523146978,954842405502,0:180009895153280621872956
+mul:198834734074395695,171072375577893,0:34015130305505499211880376370635
+mul:-102893613303732727,155104650554,0:-15959277935713870085148480758
+mul:90836124710855,-98332551310,0:-8932147893931708201470050
+mul:10512242068892,84377075433,0:886992242016856266730236
+mul:-726835478343584190,29339956106373,0:-21325321031155383354737721042870
+mul:5033847480079150451,-69469662902517,0:-349699687543783241256712189585167
+mul:3869558083241,-8770208065,0:-33936829509626159538665
+mul:46079368203995132,23609959311256,0:1087932008384708532422296805792
+mul:979137194422864421,-1378816153373947,0:-1350050180039492392646639294639687
+mul:-72618673468,-244198092166982349,0:17733341516582659732950616332
+mul:529564016606,376298866055896536,0:199274338952843762914521876816
+mul:554186920892,-629719688885314,0:-348982415408420361378580088
+mul:3455963977845612750,271884481278417471,0:939622973433450671239608280300355250
+mul:-41270780965441117,-4124462824121691009,0:170219801814430998805436931657817053
+mul:47581683736,9394210662450,0:446992360690054950913200
+mul:8196306676684,76732052476696223555,0:628919434030412315441895170091620
+mul:2939970750639,-2013582768244,0:-5919874442628068251907916
+mul:70476757656499,-100957934015971,0:-7115187849144405009597945529
+mul:3674841030712174173,540185467629182772,0:1985095720638163814590166671314947556
+mul:82915322420038008,123799513890,0:10264876609633323785723931120
+mul:466513077506,73565730651787738,0:34319375405342972915054421428
+mul:-38890216282311653,91459939591112,0:-3556896831865504089438972828136
+mul:576595981539992,20909590051109791,0:12056385599118501431228849261672
+mul:956905636477652,8381376662473,0:8020186569762664723411553396
+mul:9187294026565993,54295427509,0:498828056823282593136101437
+mul:8866081281165098,6545042142269515,0:58028875622012459166053127387470
+mul:338772425501,-750860960783,0:-254370988898468150127283
+mul:6750486296504,8609697533187,0:58119645214823136262078248
+mul:736067207074328,329259058372493427315,0:242356795500164369960320250670469320
+mul:680100030114145,52232423165123,0:35523272567534917195872964835
+mul:22697310250913136791,365228836596285515,0:8289712216805950219366224267686882365
+mul:30594845950075862222,37349482121506846253,0:1142701651822614557685156508694964954166
+mul:866936756424,-1765396942933391,0:-1530487499507519421423353784
+mul:6939438360479781,24559856763503,0:170431612152541518812930232843
+mul:927595346004843560,7670228140092963222,0:7114867925545619902286593484943550320
+mul:-357321286444971587,7925597841132985664,0:-2831984816439127983772762412958328768
+mul:6673370692769029,520191499051311630305,0:3471430704396611186160057152801823845
+mul:9013236794945,1008467412252240244,0:9089555586614859880726704766580
+mul:406532185466775673747,9519149309169118189,0:3869840572441069484183117712436347484183
+mul:548046408595014443,777065152533771,0:425867766090470284154159790254553
+mul:23897406396584,-8555442893510156172118,0:-204452895728978731648341501271244912
+mul:54729344028716311850,2026849525600172204,0:110928144981012274062113279423765817400
+mul:-7936445752013,-98698488318151151,0:783315198342695407195996516963
+mul:6309028281362257922,271678876766048827,0:1714029716965733695518439315219557494
+mul:6357785774765671053291,56936125648067424,0:361987689715553942195290680512665092384
+mul:11095109588014,9104811531028000846,0:101018881714969199044361103459844
+mul:-921590308699737078,472826384755153630,0:-435752213887882691328892986497293140
+mul:652120832633171211942,-3387083844442113181,0:-2208787936835953406166467995677302807502
+mul:32731949302549,335896184427699,0:10994536879607092557766904751
+mul:3635516318567409721998,16713986701316425,0:60763971400954533716595371769881217150
+mul:6746198240933100303896,2007405485449,0:13542355354775500078274959306009304
+mul:-19072614334803913032,-240759760944833349,0:4591918067840391824783380728329304168
+mul:828472954262165857,127978158379025077,0:106026442953302260750986298136195989
+mul:8306750095431507743,6378030328941226919,0:52980704043597587430846783712468533817
+mul:7938532173109072,7646615157112938170608,0:60702900440124541070347993363328555776
+mul:25274397567311,3125247753747112,0:78988754224550174717491855832
+mul:400327281633151431,37147489147345586,0:14871153349853852722430493627433566
+mul:28164658061513141691,818613450005821036296,0:23055967903969532636848840948464301816536
+mul:476291935913056166817,170589720180888384,0:81250508071821874441129615756761553728
+mul:84130837655605609,16051948347568699941145,0:1350463860485469013094700782617631882305
+mul:438146043336536562159,-2206822496905640873917,0:-966910545365262749689560255553699552306803
+mul:8120293725815373571,24028314574527126,0:195116972081450718759827878362986946
+mul:-667658265953408,8440015504605457600699,0:-5635046116424757633428637247402232192
+mul:53314441150262832895,283247085055963859,0:15101160047199676268547968068076341805
+mul:6658153298145442,2140281300389057549,0:14250320999144418995877331910041658
+mul:213046498706732967,784948480361985741,0:167230525406291802914352434748623547
+mul:-3857522843819,419578526133778265155,0:-1618533749336956944635887834826945
+mul:-4948941087660882967,-779517282262677550602,0:3857785106731510951136294197380142396134
+mul:4277076043224464,448010594023993,0:1916175378810781677476700564752
+mul:-644113523059324254840,-71225587742718143,0:45877364252933205602125580469623562120
+mul:264902435468141506,-823887292259809475,0:-218249750270876020336340975899569350
+mul:1538706915662950684,448326823774496344436,0:689843584219022500302744788239345794224
+mul:2036808313025110180,30422160628736748027,0:61964109668796220999356441366572614860
+mul:7385426850078311,9871854919284839,0:72907862380963907579111265026929
+mul:804644713550364054117828,8379163811459445,0:6742249864863361798556496920366673485460
+mul:981008037679996757191201,-641409668917881464,0:-629228040654107304092567432937180101798264
+mul:64201713053871850,879119102660231895102,0:56440952369169517073431323344150678700
+mul:1033957429367195,1113485105415049436,0:1151296197233604656037339121652020
+mul:14455075580451942850,-1885962875546302716,0:-27261735907948286986307866636431780600
+mul:2615475057635555327591,71606675442458157933637,0:187285473579953754910128144228132079173078467
+mul:596676024530775,2621192750454214313695,0:1564002869869908372861756951031463625
+mul:71665682789483848832034,351563529541544408090967,0:25195040388475655750558432995602321242575636878
+mul:5092055214749737510271,-1833800774226189505,0:-9337814795210574311088704576082129905855
+mul:600508413963341945,5057063373752305154,0:3036809105884103889579068197287884530
+mul:-92318043858914149,958444935645415778103,0:-88481761605267642819033271229511079347
+mul:385447683586530283,1775981280157037775814,0:684547870529570889684189390051875975362
+mul:80717517906672139,362327909576030289130356,0:29246209529290308450092391020660324351484
+mul:31249856290116188,7875872084416640,0:246119870797357830310409800568320
+mul:5339381130045070,-287550419156538713298378,0:-1535341281980973219291224752615497896460
+mul:-28993892995370333046,698005135756870427,0:-20237886216353643864566444205658230642
+mul:9179674525723481348,81469928617693608886,0:747867428344352459523920577957828058328
+mul:7522547789649675160016,285918417200326088447794,0:2150834957330446680178114494867165936012204704
+mul:-901774653467788803,236000195734098992,0:-212818994726447447848669649751186576
+mul:142671415131788790,-2583777714764598301032762,0:-368631222951444570172731660827393454337980
+mul:951078283105727024828,1487627587101952300275691,0:1414850291441640178530450466337072693601856148
+mul:19185476025869672486,2445736876347152429980675,0:46922626206743672591769434078619109559208050
+mul:6741226163186521681303,2568160083399218078514720,0:17312547945462088421236893499979478635434280160
+mul:3987919571578399660412212,9884144363611069680876,0:39417172755950910755988046816263833157453257712
+mul:99431631881940059268,-291965406586754754564989,0:-29030596829995156232729757591886192217768052
+mul:36727416735327035,-1612205593089728906670,0:-59212146680431557459581110615442823450
+mul:19590774006340220367562,984968880458891391,0:19296302740348077288926838014277057458742
+mul:70695613219926859099201753,62591913993270611799645,0:4424973742363186825608316839246937058962268777685
+mul:77425442645246583405,-296832015660977965,0:-22982350203831985042851014697239670825
+mul:807971872592227526408,40230405885131399744453603,0:32505036378154987781247713889763216622213248024
+mul:965370212546292322,92058451234918953535616,0:88870486635336197062343410079373774340352
+mul:418561885926860582,239657399821326936,0:100311453245542262612436139913236752
+mul:4657697584188823828175,78713797195009784682708,0:366625063037526091489561582727843402285697900
+mul:-38091455008728662,5763777114003492300442812,0:-219550656618403959076635804481627756277544
+mul:54943065861736600767,6268390929335695219433,0:344404615677603400985934681975925581105111
+mul:-697639190379957186138,2936028900796584636,0:-2048288825283884939792000285015322975768
+mul:96018089280939789090187,29566309848085271814423786,0:2838900578701380961562729671686086004548591987982
+mul:-1112368751522257152114,1995174854903534746993983,0:-2219370162417645509690181099382354083873730062
+mul:-84342841213955171500540,5699084396809137598518,0:-480676970345002579334276102870293770140199720
+mul:225675029492277024520800,92998377812004114915728728,0:20987411655457949896280985578493804059256993542400
+mul:7655269162163547244,594548791001649285,0:4551431025156545678791700910016320540
+mul:17608380663675562604,264448308193844308642824889,0:4656506476542203967645749547080047894928850956
+mul:223093179893694063251643,17908241494426478956477995,0:3995206541295803079022953995876886965688677095785
+mul:-9501451313199296478183,164266650410143061944307590,0:-1560771581254303549338241248628058185171476308970
+mul:4558730178677382262,3122005086984557462,0:14232378808020807989791594528678539044
+mul:54440882483631228680923933,4478571958703194374379,0:243817409698246737082188977425300200477623112607
+mul:36855929355558415329723,308635436762628905,0:11375045853945367585945011810669865443315
+mul:28683868680975381560,42902583850929860163229,0:1230612081254607193977374775224312156657240
+mul:24731088466679335541839144,81462858536522998396,0:2014665161215334180518726488874060847202013024
+mul:-72335534127835253275,-227166439208550011362,0:16432205716068881729381218555965397710550
+mul:474777034176054735892,839001319154604024448982,0:398338557978020441829154570519593836838261944
+mul:6299666296143449904,797331145004636509,0:5022920141051174455685525850770945136
+mul:8540885149755672764459236,41765710483565552588310,0:356716136438079846570195465527416281897285131160
+mul:385990739803366398,2963466700114736836981086,0:1143870703959928224960974233605962253948228
+mul:-37246197932269024,3005402223074948482,0:-111939806066730874158935454164421568
+mul:-751622018429096822596,3003864133422104297,0:-2257770423049491832679123307914818295012
+mul:-6108319432277782804,-82931541043539126216389,0:506572343704992558730984950135146447174756
+mul:30921518942393713547539642,721143788088068568685,0:22298861303554770289882384831917605974237310770
+mul:570903751254308471830202651,-564896588437884119958,0:-322501581409949262735089396741686909437933608658
+mul:1054271475454361570597270062,16484741384321323400,0:17379392621732016481140067393169300655040050800
+mul:6529831639822170310307759,85346429845722052312845786,0:557297817952459046702350223377401463955562766253574
+mul:-754058902141939454006,69516695016006129145191,0:-52419682724305615903366455441899934040585146
+mul:976193241125104191848393,33823563038032982713854,0:33018333628496693179640404511073605465668736622
+mul:2920092456500658009757,8895875497550350532901302605,0:25976778934365816392930294156133718389132099516985
+mul:9994369499844252132394601638,93334243646132127297454621,0:932816917987935116609350111907831170748502078677269198
+mul:569015432462996733746,16322837154963292812416483,0:9287946242754509292015515862839485902412735318
+mul:192500272569416024937360278,-235265435750733300361,0:-45288660508178593749288683427056889794244460358
+mul:5267095375035104443898399000,-764192677627393558125306,0:-4025075717966937142285931052847299736560774785094000
+mul:51025753118541843018,-1664207936338749988204,0:-84917463297539057165628056384027919759672
+mul:-62402848465899883613105,12900108782353988220438351,0:-805003533538860189408921682314395887504788189855
+mul:-8212641700259728565,297115088713153106682478,0:-2440099767342009818056382435156531921584070
+mul:-5313586393962705049080,-76998532453336088964044527295,0:409138354399142425739761358816694829939838374638600
+mul:463290189242313601142817059,969769350842083604500926,0:449284626073024525963512524360298740721467414096634
+mul:1917277332460964412252,-708614825339303498360550,0:-1358611142068832022550567351649418376333458600
+mul:99562752968815530108,23844471852654970991199350,0:2374021260737762056439185654671360472955029800
+mul:3003923448532254675001,7732856831499478812681071,0:23228909960284118604870886637597256802569606071
+mul:5794073936773633607324540860,-76553654622431077040278132,0:-443557535012598304414911912958839564575760243598473520
+mul:-644932980169883872037968349,42642515095105038480,0:-27501564342225351457715028479060110852667069520
+mul:41892582203464757978762451494,68041907390182959305068217308,0:2850451198623775837247177391258991797607621147282401258152
+mul:-5550794996398648089925,-61773015425098686639107,0:342889344934094297210650346841878123357696975
+mul:26506218374693057900,-167675112099207386871,0:-4444433137302729109790367830963302830900
+mul:145568384864275126584,40072954892382195328941863291,0:5833355320423028246614959434448834158605847827944
+mul:3161170925861501561771687,413220145707787390821,0:1306259510591710846827739981054213899841485027
+mul:723440854928237000349411,-71208223609049472714282072,0:-51514938165651820551744112187918120977634013059592
+mul:94994080481292730137,4307839512004666207932600136,0:409219253303864061854413637026462925940577498632
+mul:7821178378958515500742,3087104738440174209004586,0:24144796833868673714228905443995252515164402812
+mul:869891649236864909625695,991848579874131467931448097,0:862800796939950559315938082847205513561495590052415
+mul:17628160996789341122894,299337591195948255548811,0:5276771249993287502058785568793774940966579034
+mul:99527056994641754235498057471,655773087035017085668857,0:65267165408886313115258469743139728285489416260880647
+mul:596721281791001887739,-328175786669349585798669238390,0:-195829476074104675040288189805440291150559409100210
+mul:266802917073126657350936,148259550527207353925931727,0:39556080564609535241696861668682911763097415546472
+mul:297095531532857951877,8071469565512676957784213778,0:2397997540817274789320989692996853463867804361306
+mul:-64574484904487858142015156737,351049851111701482889769,0:-22668863311335277552737854676715612712147868228723753
+mul:9213606993296693767546,-974475310790221342435,0:-8978432538291752468015873684497297955614510
+mul:-6506246525097752180174,-95653949321972166356216836249,0:622348175387957895590333791334216293967024502327326
+mul:7211807452760603826715508,25981532388511222064867790,0:187373808913606243431674903539484028735353962687320
+mul:244358078258267292267766114,6788410077941126965241803849,0:1658802841074748272013529977344553715539817794996972786
+mul:-84498071017578145227329893,51359077717175899950414794158,0:-4339742996343244440353286358071234877760977371555165094
+mul:315675121566194900458712010,607326754590110945679173086,0:191717947085635889541757875305524761525955701416962860
+mul:3336777364604897112789890,24326442512123908471776,0:81171922735817348191862980575095189973683144640
+mul:-631164366791648249399815693437,224085205047080377284686,0:-141434596550917146771849565583627819691166316250805782
+mul:-9374071452933990971885163627,-8124264246742383054580586,0:76157433551480046450059234199385450235104896467545422
+mul:-8986611810629266612086889,39090932189616079255587,0:-351295032903711635666432166463380265071682698843
+mul:131042125952122412011234961669,-603299752062616670818260436,0:-79057682096673636704088945577099341952975178863719227684
+mul:-5931135084197112120929525527383,817854717051260202081870677650,0:-4850806806078831488870903900854502497422338114185819841089950
+mul:37076034350171687718404493,6575825691817817445639700141386,0:243805539230578902066220627976270126208617978926437647298
+mul:6586877468189252639017707825771,813151310907233772623665199797,0:5356128048043411806613358165516537614499231407192441180568487
+mul:2933337084774328653741904208050,516673656644156545121601676651,0:1515577997760262602679690085554979355436376363966312331240550
+mul:-9902991686684787357658450,173313993122814232472956,0:-1716327033081373752497961221272672144589109878200
+mul:9274522469490915283112908394363,44864081129175577116760112,0:416092928505602244504563614588785724831758965222564048656
+mul:9608655195311416270604257657,65867528105907714734959487,0:632898366137150893335309426569727530606624485604541959
+mul:853239911600142024011098491,17829323361272785163230303,0:15212690288662738268179355293062413175232317048772773
+mul:23972081642808055559504902,-4501717580058722285684735,0:-107915541362031999704526719592126415237678659070970
+mul:5314236376598680151908105,3994830160691915764873,0:21229471758282529614266075257916580301482995665
+mul:4935319583093232012062136782,881389216056886912824752493825,0:4349937458332745712903267792817007035077166975812760371150
+mul:580231659494763900889556,96767644291944525456085901,0:56147650832913989511127904567807102400387849749956
+mul:303622305001319462939309066150,-27984889540977885375442171280684,0:-8496836667639022536327520662086169404630681920995637573246600
+mul:8908131273613694428163643,418798812110676949375564324,0:3730714795515386967446577233797553865021052144672332
+mul:604960317372762640669451812,820482420778387317631260055,0:496359305672865772215202726749222319854411791662969660
+mul:3125355862613621420823337,52123353846012574000878521623,0:162904029521719649924422263486125418351967284017515951
+mul:35876668588605457895900,-237986271303986771473105323,0:-8538154584211078670353490608427234416302669875700
+mul:-43001262189486935668928474222321,75601013836677651900921245468148,0:-3250939017782005364312622194873995196088464819832369459876131508
+mul:50360054222226284955381499,-7538629547593198554710875138,0:-379645792778070687264466482409787805710036592944271862
+mul:16303655607623383537122,23252538460647040924816117157,0:379101379065406527294500251303186510479764610602154
+mul:29876051059586965106021953,26235768232838079362376,0:783821151311760139992194729309972935608098240328
+mul:29623076251397963944271763623335,47441755805615786352682527,0:1405370749729958481398420374857049608464886735734463967545
+mul:9892811422980328964557595259,603482574014084208448431822759,0:5970139301776104093120254749814895923385575422031146699581
+mul:-2549498483308845928405350,2555383871703609992631017913548,0:-6514947305180240206124780570855709347291338943800681800
+mul:-935906971037827073384146870,879641356065373793312781,0:-823262477154750723009760282203349336801144752145470
+mul:19597038710644290533555897021,2985160892106475439715913026,0:58500313560112043537702497574448903543850923995448495546
+mul:-5608937456930306694772980,836399586633606428927522624674,0:-4691312970430260182524580697490183025347068206176508520
+mul:7718522069758342120350478031,7389561033066750535580836572,0:57036489919551968141273365317951375124662579683087349732
+mul:718875898101761373218778459,686314096776480574628984874102515,0:493374662700091643313347796063672168629137876643552239724385
+mul:1300200863593962819188902,525922101427424561614551608409976,0:683804370459089120916221427942950472299573480614205286352
+mul:539220635752920237029329058,29487916769600117002583914582181,0:15900493227532973069876042371837383552914044277544832315498
+mul:5654437789656914341120143121414,6765853316633901505298664574837,0:38257096672850301023676847185295792977091707859763702380259518
+mul:103114174998937498500059583,920095995082794389728025430890882,0:94874939452788796816569177101730218978113456477925771422206
+mul:29882936700790118228421849,-1860889369990333700884198092,0:-55608839250594344207705038774209133311036319056912108
+mul:8909623809613954310018698,-462806578041198407432067106139,0:-4123432506961820007043026316146032423296431299840587022
+mul:7230230288816368650543810,22162946284655819337870476,0:160243205516728709182606639762736983481104743553560
+mul:734442358589456361847988629,1647427465162259118128391711,0:1209940513118819039348215846845414818873067603985854219
+mul:47616626651192848094181030316,2182277257935167463613810412,0:103912681440487744288228839398232844775482481328848450192
+mul:294703827229370598691617,63046555168872062038888853,0:18580061101894254060770213008323255399294285845301
+mul:-533653415261740333749397,-51216937243134223196656339350075,0:27332093479044801759907744737948616465079304814903154775
+mul:784368839220787531616946253680351,39613735771181195550018240677,0:31071779944040382951244796866071327091341523727977793343837627
+mul:5770744507580580048400572,231937913382367374762373686161,0:1338454439750996843543440906327507234975603867940884092
+mul:388816489715059942531589642,82051838197217717225950877,0:31903107702510265086302832415272579698669593814016034
+mul:60241729629297025142644618709,85181464884435369517497693388632,0:5131478776995614297555781224894400552133266197008401795116088
+mul:1560786485638020475934392460005620,8850527081981124295638445,0:13813783060329443326853456039031810473529482812666188060900
+mul:8296622334734688413856037840,-83875508267086319614619277276,0:-695883415225932360550627205972534406741559721529708123840
+mul:-45794179084517723375284971259238,-49063790774577780701852303,0:2246836021296323435311993617164824492625064891225000325114
+mul:1752071933321291709931075226933,57773126045256149501100162,0:101222672644126613791673432521136796654007466067313063146
+mul:730668796977177255106481634556,938608337106204028806933670639254,0:685811824506138940332211187860302311716319126763710711336461224
+mul:921730456287198291208119641693911,5458708493078803375257300,0:5031457870064330030425732359718797657583243087557468300300
+mul:213400535376420556914942871216081,4183995847570912793889135547893162,0:892866953884353287726737673843872033409506009951957939872404338122
+mul:32806047880829491896013320805772,753489056993475245589087354,0:24718998081409010820901165463298804748196865416365375407288
+mul:15218771998961411533589410518,23457061020403160442042221,0:356987663435240813815179640133949762707316007457480478
+mul:9046617676720978441798060,7479379807328977629621989162,0:67663089575892274970250788865795328564433781112625720
+mul:2219170169044655639393672927,-5391273013704097527490654785062,0:-11964152245187612169646728984856115656974060298999913416474
+mul:277590531551034474232270111103,579362077865358674190909581933,0:160825427155156738840764040270546509814277905470205191502099
+mul:51422590325724235826789079575,2121952875387495603452158,0:109116313401543756339172704192689685091698905367472850
+mul:511034032165016743768820348,458982236103828060996895790272,0:234555542808254978695571194131402867112895172492654054656
+mul:4440454508740215531301617636697,3258309525326637800581711028116821,0:14468375222607860310511042523813260258037478238688128668452580237
+mul:6330009746329830092300048092,-6167250670699283492360751201828007,0:-39038756853585645999814749830700965509494204090781844412512644
+mul:-9374602262965156933926707655416,-30595740075402425097079774283,0:286822894147961315557763521486314502763707907853113422466728
+mul:83645893910576549628700447097824,49931389572768584324081547829643,0:4176555715011469153471691311085610269167538819874387285307996832
+mul:8030747712125824227213267818544,63329417394086865663449328880556,0:508582573847824473759474520875716327252822949675048995657830464
+mul:378845361147099357535431194,38180105668041356349238612217040,0:14464355920443542823460702653769947519591239573552714345760
+mul:25958762365949818177158173188075174,40582859445868015162861781,0:1053480804486029724349686454924029433193919106275980799524894
+mul:95871031013239291309686124,64936572493882710890460913285902999,0:6225536155454490886042480192744349881519233810545112600285876
+mul:455128054133718561191432952712,39088645380524987234419335395029,0:17790339110761304357582067458548970370146644724724054396868648
+mul:1307047523348091088814812136,44132853285705545682051355847561,0:57683736585366097743814172916945483114493512756215268800296
+mul:1418285824252402530993393665755,636810955908181043849421782278,0:903179951493194917152704617449910466299855863874287914489890
+mul:3071172872783184341780369192882346,-58125204065109316437571977973,0:-178512549949750604044117019967590439630943828607057692292564658
+mul:56958148205198214736866933854,4922289245511311172745764679844,0:280364480354686563048707584335842453616735148517258235038776
+mul:4836813580368584281452577588,-5400032605107989894617874622172581,0:-26118951038819470026364723997465834517846139303988539028714628
+mul:493001845960066187429806680791,4028800209124423703294502145421185,0:1986205940102641576976415454897329744147895770653902923543957335
+mul:71197215106470682909632132625,70077573297929109151274279,0:4989328060232124924682056253101608707528304143079252375
+mul:486722080146274783096432055886,505595939085965376271620470551,0:246084707185430303071142220010478564391091338964955649213186
+mul:-194536785271632924316130857883181,8276525052027013498990299177664024,0:-1610088576841469642302988316918048088947156051499250583217058380344
+mul:241211965193448971857220311,2710726738427327769580581757190,0:653859723678484041534242084550730982398579984949338286090
+mul:667013805494915469984846976421,118549400818390788595763048,0:79074086979016886300666397440542951393124558234159091208
+mul:507926799850267721181735296662204,67253859677995358015731931706714,0:34160037723823138942875018762752046517503606503615202081256837656
+mul:448088677681619431331494894631309,779948091351174817338856782981850,0:349485908913850840791957607115202038571061594442475706481388741650
+mul:187408370748924381155985806145,495794563709904959946586644094587256,0:92916051411047078205447640432962006059741039970472932758203488120
+mul:868633158815673181555237006,836615025635832190680248872,0:726711552430708313445938158474307639167624319024157232
+mul:945386362083356835627622353491,8230893874122803805176630038821,0:7781374816351144698349349350957993282560652485452042714874111
+mul:5596932048341890824814087121,-2850793263280920843358756089,0:-15955696178454147555303366966824500182482049050635229769
+mul:92079468846004092188293849,65000203344267255501708018874742834,0:5985184198822387758738668838849529371861013959766705099028066
+mul:284485059147524530505559245415623974,-52174853366891975161102679787418,0:-14842966246093682947479966058631799163262087269510590574706144359132
+mul:225019940499042054289943285,88057001889802818516938839002453179,0:19814581325767463952213083138864703402608880611447063777953015
+mul:267625311635136684363577960127905,2364801628264216400078340665206601706,0:632880772719489569595591177205490383145217286350462293583250151205930
+mul:-43414374537943144129863577734786164,-7033210862612719519352562332,0:305342450593798787132468697152495746155227469781974603501174448
+mul:32883132771659855270849300682688,359989040176539024964573548207106,0:11837567404467526702781425500654503476701270135055701604212780928
+mul:8225754994306229461538669946760,79816684330375527507314556065816,0:656552489759550261552969973902237676399765161631722139775956160
+mul:7425838080456254658426507595,-1772612320788255147892065709861,0:-13163132073595363322916797538873046375619972048032782894295
+mul:1660461221569443640519526747903779,1120888096894032723781619067526671,0:1861191218611314482654724970474950053651690424934372619599424189709
+mul:-11718764104457037189982579964973,581785925357694644406822708535571,0:-6817812018560073163564614103438500661271133223665021341304554583
+mul:6811677000322905212875962023,8457366124986245338105030092893823455,0:57608846316878860294885890656152159404437095902874498977846649465
+mul:234277964462994083732538315234,60350281492645017737168270090,0:14138741102865579012895614202346087042625169063690873551060
+mul:4183588612759663468880479337,-629574038019737820951243554610835051,0:-2633878776348494576596482359410905898287329191507888206720841187
+mul:2509727174403533842481294816277585179,366325095871570289922697736369296,0:919376047774859744204436335735246570640422606903982773682501840263984
+mul:9652053493694317708921453500950,-91539642994112368354952933916454,0:-883545530972852858614086011262208634456937177997222533109631300
+mul:35148593969489612322148628595,-82585065708416968121031576511657,0:-2902748942528768024032450841226352229253814757005116581031915
+mul:2800741702103544119527140802733199,46761480207188283686223358035,0:130966827668361702581651174249923174168745185881158323957903965
+mul:441336276433669766301405280032,2656936104993980830437872804,0:1172602287300221361851343901576358026321010825668017049728
+mul:19746122571650880858695931178058857,104545112367422664420669962306,0:2064360603074142331524120459909153582079341868724637548439444242
+mul:74432478600289091913597803372,1021411507303737809729230605483660893,0:76026190159474490029899083115858462446496838080724392481739931196
+mul:37218119790882940825047165121,-9786692593914842780007874460688,0:-364242297316869514078703840625474873421751340567491159263248
+mul:68400175404962139133336849460667620753,8111497426974768586772111911266,0:554827846801973241521975237100547882976582048728649063209959676103298
+mul:-36411507888779255237781266679960702586,288273015425729999064058691683,0:-10496455175296151796260705657513107808386313037221881095512634792238
+mul:-93804297004149089553676142929158,72597578405766612297542242292431,0:-6809964806556531666828055851398144826196098989021186645152603098
+mul:-82026709713179475197473688526642531,5827788603588390535677091203646382966,0:-478034324056320484117325267961249121989480834362662252362566162209526946
+mul:545760067487517393173385480028,42151112506666653978439280505,0:23004394006312331510547051427125022225825594077610367254140
+mul:-697412421088675986809554647004214,6926944054264140642234974161460,0:-4830936823630163298372038105376868436739545586561249485736392440
+mul:57812799959867792819685059219,779735108345604313576941265627654,0:45078669840470262146069880262711457187904686148856378194042226
+mul:1472311567166258003445083977221663144,83378953824849274359711951741465,0:122759798174546897063619713853094843283254982730610656163694407065960
+mul:570337459673916278308389115966167469,6333660822968779197930730584647562275,0:3612324024208219493962639588959668872206678635128690773184462125256631975
+mul:-388785693105293562593219349398,820248784628021659491960244881371621,0:-318900992250380064850834487637248605290643186101012034699480634158
+mul:11679788667362042415563834445557578,-5819547639993570526822921884507,0:-67971086574770424077123666817486620774164160205639229582134644046
+mul:-3982959591737356792197606403519482273,-333248358612381656382679653253,0:1327314746365915910353403610458733118195746910957791963061720284069
+mul:17221610285774362123428353448280602,11458184790118982447972303969280231679,0:197328393037816418804445305069398144307419769226493492273326450761590758
+mul:772738633297996807166456840381926971,785759122171938805714543081571173360415,0:607186430168577693296664258953260658244617930008242877365346151059192252965
+mul:125784145401376536208808801528812039333,452055550313139515567680226389953055,0:56861421070087227190049678638474498681709153815504817562127254516683512315
+mul:32903571905950760393177782893378791,6631740924411766007832465757451477,0:218207964368018909275497254276866261100277667630506488424913763424307
+mul:8742677352155721160009371273251,25083360125803108633092433384973055,0:219295724487824718593455764107115931859507036987734897375677251805
+mul:36273669132247708836176424212020,533102320793846929600697481505030771,0:19337577198109381261236591896304826004083902938845516133439528067420
+mul:11965144674509690079804137520044857,9349045655011350274674885782216185552,0:111862683830807014974569906953845003630437520055543213513177982475306064
+mul:3321305668226664033356712162893,-403949753985171409898849824686029161,0:-1341640607589716272160331793818630136041627867704613639659980122773
+mul:7395363159337411027760652209127419265,44729331460301249556947662501414682,0:330789650023303701714182934884591650253917627482713804287730858240648730
+mul:871058047335719958990871843414,28094200616974302760918376942978068402,0:24471679530879615091124208710919171690581838289918159716462725204428
+mul:7704699734056436938779166257084,546898541513497897846722209401,0:4213689047354900490455012376163453543698919981174872047646684
+mul:950290435067652970604023856243611,4001208123591666075058892234775,0:3802309808564151732408385790073534886035212910698424588605772525
+mul:3119293215232541154035748455321571,808684220462127868482572087900610,0:2522523202153131986496862299093703760338669354068320189935837058310
+mul:432360858532087298548744564083197299,240846574096518547683557847064319535,0:104132631550882737065113576806715978014672912813529852776264204584935965
+mul:-310788798729818682147559678302,-2172955391250831365155305151397888,0:675330195740329036485433048145632383792009398152531758882226176
+mul:649283478652713472152371045373000641269,9179675498867400603641823155076,0:5960211640807708792849652271953975864417053692073644908051640832431444
+mul:79980532708199255123596245351024866045,35273005660545430889304120342364,0:2821153782949751307464444766122322349363016295719088889624882638630380
+mul:-83351007958684418946822288153831314277,-51634644710916030743119182132599855,0:4303799682243404417092087784805566131916079838838464861475411381589629835
+mul:4992915740405389949821656927954249501,4523923119542484578579105473053048,0:22587566951947525817523244050874662178528093089821507414350736000529048
+mul:-801991401381703662108108758716412,1462655905419442096496214673085035312112,0:-1173037459326562975110029005457912568568341236188108696496766994916782144
+mul:679369055865583831572651301119431385801,6364653911974833953564963906049365,0:4323948919089537646576384302944771028193868888345656961053886629066066365
+mul:32178714589413433072024739357148883,2182815001928827996341206621079833349525,0:70240180948557688497445546843414635161913878682156096078900633584002330575
+mul:604754886257955637472038235002006997,75686581968330008368600832791867,0:45771830269510850321052484315153573724518799356687777800355778693399
+mul:287068066584060661996114628597630371136,52011890293701406927883275870768865,0:14930952785995133944874986127466642449246463907028312778992290363623480640
+mul:3979837024286745384581666788748758,7350136706945206821986896298939283,0:29252346199869589826241656345690372038181000414430037048634183660514
+mul:7385865195603313817759905903511277,1520983986703891701713359953638,0:11233782690466247146504034010039435409908987896556224062130175726
+mul:764457193068206149728854992613,27858021258550102776458498820919,0:21296264735745627187463264202183322605488975579352986954871347
+mul:-4155789385717252736363125208379519,513716864065732253356348104577569642,0:-2134899090948322867217472161243561749004221362611724116686910188962198
+mul:97365354260983249124725672833811771,5020029690975786355406829440294084209626,0:488776969262511703376009046688465573304498084561257966650740834323390307646
+mul:83139160308299020652846789174256754,3913486804605023733190361150860684,0:325364006812469954155078345060732025916284724658136533980363100059736
+mul:-17691166446369130975076403772363811082668,94600134419678935394632555907142,0:-1673586723867433503807220193308619446302933297119631426540241369893614856
+mul:634823647473707443708903538054380,3956996255499668253479385484122050809317,0:2511994795956101788922355113644864677876582447280810271598141786556658460
+mul:-3637804742599340390876015169076139565692,783241759542604459838225899706055858717,0:-2849280587465938677344529171806295752584262014073034029610817921718004492337164
+mul:585812248650822285457691267576462,21534520461947113931625020852108318,0:12615185855430383092677209963435811738114410942221928457106971210916
+mul:11281432653044672416448534028211038025,711109480140515578563170257201359462,0:8022333709146834455095073412796362253303159149746025747385289864175542550
+mul:676293649029453415159585825583394,97280549393475973449516311017466882903,0:65790217728903847286239146189723168106268785797184624412977724659312782
+mul:-60552656313655809329731693060696763524,493007935144068742422888317617165,0:-29852940056683907903878516926766558721475796609356660329816267168289460
+mul:499127054152037037035927375386500,1203956412395744650060889503126393,0:600927217446543074982206780295985557213897685478460386666725894500
+mul:50094686288665713475507184834256049095574,-832478827433992238527275985275884802100,0:-41702765702262121589947986555938357521572244317029059068815991395850316975905400
+mul:3587136855297236649460183411772356035310,-712398604370738955166219235841134498742,0:-2555471289400592763904206892884230251721266867884706454335385263422835302580020
+mul:-8101551106022390770336067301182994,9185799272249263720169676176910186035467,0:-74419222253790694721684461955969753328255728462706287902254787547941248198
+mul:68680574795029722620883183609775450677,-84158462638889794851250260034014551972363,0:-5780051587904985041122626676950144438458787116758152359160332249952887573639751
+mul:155258118178686765062886673806448566,-6850017870177195667059084688029341396610,0:-1063520884014087259630275993355034425232292561277443357397796113750571761260
+mul:285166743996114296479394289968524943,559627723033455856754700399288311,0:159587215627409862324848662934458300983070878875254327058667651841273
+mul:97635198013817214038209538637709608537616,-43337611052093405089732573050042882425535,0:-4231276236516932968241697386864918819022381398914657632453889680479868318366424560
+mul:2025635628106428290541842218677337,8363403252785996217814021695187802,0:16941207601064506909583426911328603088283663942724754575178256243274
+mul:39403341320445818916772945982544618,-3081545887974055895915003777735743,0:-121423204418458019221260007112987567988534380636151689137057510881174
+mul:66538675039876745133366881210395320367369,385523580015310377616062750074359,0:25652228210848657783496179630561675959121693223651695460689142031947191471
+mul:568797587304724025372575349953868,-809993079501337508688725757864677957,0:-460722109353884289924314758764698126555664169725436270804746626487676
+mul:87438670031005707662235517162074411507878,762858503307630620547057859718065131261504,0:66703332951062790053116333011119262791723282159398794542887647524305430508974128512
+mul:-135539991676075663249711183869449098,3187117064807540583340853903135708355720,0:-431981820434692750842384830628518023465403828254323238040947018231817140560
+mul:3623316226168035106420698863103708,281527696822113339094642926844583498510,0:1020063872011278433648537926576161108003887115843314376248917259593475080
+mul:462743256592937700094228107961335,-6269566498572477078237555404177435,0:-2901199618975409735420400360180614855892286694850259916640459475725
+mul:-685484600842741055621576203380446857767,871551172534175305655069705808532,0:-597434907618612100896516584776549623778036010575252420692205107539068044
+mul:220964518681325411201409247135357488007,-5641829172229111635876189209726787450,0:-1246644067523866218886679493927269969586873926750864717926006590010013112150
+mul:302531333113895329527974519952510,186535245939488501803212618851457571589,0:56432756626801787093558631197271214562205468328076903171812192205238390
+mul:817537141270922830542026664184986,7821981713799768623509532856543951,0:6394760569373296513276094902257760475138670289320772774910103319686
+mul:8468979244486855292413811013010058,-209488808243349961649691393540068,0:-1774156368965217661234169339486871316037510280452325791205110003944
+mul:879852422051274089521663230058530,49497155404087571445757965616479604,0:43550192066934760013905050742361301523530318780622661179293471222120
+mul:21764922287301916637920770938954126,164044760066720848860497915166650797335,0:3570421454491268052799273529790558940088345201564664677181891708888054210
+mul:59469732179854673335933541543666124,33859516881008254191737434099260638598,0:2013616400652829114516768709001157871422263380461883882597878170339454152
+mul:5622782096444522942366700649751601671560,1818924766888381565955786591467033096941030,0:10227417614039519288793528427282183495313347673374396346064272524023191670748106800
+mul:-83658234598433632746857009684831849359505,-29016349811234824466750396183186748,0:2427456599698498400779164525993522755993904434491695109250156524973603839740
+mul:7054089120269602821498711515003074,4095832337673576318592596805192095781914,0:28892366331631588775096150339023452623512261839491078775396601042143603636
+mul:990394898068553803695514279851854605418847,-7739084020331097221051527297005947155388,0:-7664749329459790605184280312841813382942964148487855083039273635724968309932797636
+mul:54075935489906064661012070011939942732,7918292813066039667153314788962651008581,0:428189091349545982631162674290883455991732907828213951097897291399359180583292
+mul:8772115771437424285869834799732506658796,-932849018789404004804426567212331569,0:-8183059590092457014103801212671744691867340048481623621821910552497102330924
+mul:-474373401937043543973615567508636867124,-23736477393422078122335330115520892673,0:11259953531119359125561737495585820068714950649943932579707916447562566182452
+mul:8436352086792195283692976718955932574,-24226347745891111460405966918193715809620,0:-204381999361401874523255301520944469344779076416596720733502946611674540561880
+mul:814519302031186083731939523439915121,55324835095437197264275880684820442585,0:45063146066925974240276350660152502606985477063819725670158134818053827785
+mul:-237764758709584162016066869681905512952347,27730963225107998869867496093972168,0:-6593445780002155177144945210712636481509108047897422208741783636396128278296
+mul:7518474854158787395750001309747813,8381114315785290417935232114225100106214,0:63013197233061936586019793610222181046567760778431006705881553819854209982
+mul:57926271609377407522025180011097851547,-460438760475654775684236043340437433561,0:-26671500698797845620038488129522785806400814035581845817517898599701653568867
+mul:6638349918167655693810387712273716693403,55308325418124425819340246954531134649556,0:367156017513396353523080763860964198057435071526450849007117311720362229502079068
+mul:-792096039638367514268257857215475476214,17985352918594429617981644232595132,0:-14246126818317002183748026216030950300744414227976528547481286648758190248
+mul:17523605051927467343416676052611136060682,32818776862511079287568864844380549,0:575103284025979425337961066906823946761256491065774387656701755680364474418
+mul:435598204136143930685119666237820390,902306362378699323196514142749053448065695,0:393043031032778127896845207627557199195066578791333475705362867607698330521050
+mul:7246625600474134146152993995542881524104,84045078681310625106949990828070364497,0:609043218765848459070950953243439359310276390319003636791153856018486171335688
+mul:-787638361574460696958641849383712843152717,-98972482600264920015196417920239935812005,0:77954524036229481100840641198098180090516196148063542559493953965332234357616967585
+mul:82374608290966933640517911377351376793038534,3375365592517566879211534105358267232412929,0:278044418522442081159379773928407521481969102832422171826378968402371349113290496806086
+mul:-65869507968457359071511077346860349916,233541308077986424091233056554170108328607,0:-15383251053406881762895333316227673851604711244588922960984017463587249932847012
+mul:434965647854018848199731601803786298508849,6881642201690537465635377223216241,0:2993277958557881269328249998872265799210459572563672559065439071522179016609
+mul:719612999193225374224745692059996056358,-315519530953816852193901984099603790510,0:-227051955973715854947761029625296545846391976119186350945960831820908385562580
+mul:3371856558784507755414140667220962994794,-46940188151078159734582108552804551252391781,0:-158275581287791729316741990876515371668219778704190560942981767461139678285151388114
+mul:4803433840417804894873156694592939602852,-72456645795090954873268375616538340122311,0:-348040704375306339795449754303228838077133852627838127804760032434988381444430972
+mul:48568835567133010333265540506612310476167,-10706367926604784868082114989212135746648832,0:-519995823348494578419271225922535589824979430677892239954987805560794580396454386944
+mul:-640514959144433868933444881224466486263623,495227035072426375802319189512972514543836,0:-317200324136634298803490410310491121240672331811889843420769547754733113081885677828
+mul:-6488859550432975345382980598094012298,1739553070312394609661279054142037504040,0:-11287715553781586837699646244863276062209616974051919639534825980076984683920
+mul:62439762329215278757554454849955204768025718,79602289985731119990152260854511851,0:4970348067570324615570705607275557501940237030878572771873031709232361903784018
+mul:6054057220822234921996955072468282902047103,-41461621564455176604944655360416823,0:-251011029419288750464457350960394818104993744337372045669164809905502059613769
+mul:41593335543156355768394832800525873230,751910447000975730197547607815241920,0:31274463520516267130210975092154781101937166708024981308551550511701801600
+mul:994454253731718339598418586069934146007,674502407982587721309172287657440910774,0:670761788770571291425639315014529979293655007270270606543282922218043975379418
+mul:467599304203676521904495847137440151064429,1065364075426775111107441639016359411726,0:498163500393153194363286906417357715847233221784448787935167388300077631164094454
+mul:-50006834540638623993722097585899096403763,-5313099491095445109561808031972399857647,0:265691287149161199757555723574229252417144350517780818574650795718178070835125661
+mul:80633786527554906657368596063180401716797,60423064130048311342811193512905633441,0:4872140454403075663557443919045087358815687394738194780627830508431609174608477
+mul:7515721962363288712694440724080300383839,847957688242291310060264069657345589412622,0:6373014220677391433202574116816230429840218559515683152967957040454035241151415858
+mul:27726212382161724111674518621229053817654,844465139764626291093420179330707907,0:23413819814445912412285655292812080594927908481755534067419056195692713990178
+mul:-9817131728229141224738800156068771165515,5514447437310670168515402768125807553,0:-54136056900474458343818772029658956395718462850811589025376047345570400134795
+mul:1101490427405231724327190816394483390794764,-1715150116840413365727028822839059671039358,0:-1889221435262680048398395651544618017331159617034111717493189130934881187657544321512
+mul:8714614705512806124985108394035361802445153,2277516152797095323407597912040972562623326,0:19847675757208518019561453963926275072330819370134031638574421823784137713762913438878
+mul:-40241069975197162607015133362864260639182295,92350494843755720369837991386076354459722485,0:-3716282725251658699531715999828990669514311285221505159677424152232919613685003025403075
+mul:94926798565178929705057494111757110129555,654944641739167114202854904453615515658738188,0:62171798077717196972382133382107571708777354355494810646721424261049356268684505946340
+mul:265280847975099333384365084677641815670787,79159871617113409657206914064640126799879245,0:20999597868187843053561037716605216806384147652131248848290439305459650098340274115815
+mul:116347226264838928071222153238640922289035,68573180747149861177662470447052670907671443,0:7978299376088341437815459477697033179544362328591411544546002100709937766389261527505
+mul:1040609825768545533315151293676302487896884,-81323728160947963681253577857302080515,0:-84626270592412620351087782103887368619510384932135633101731317980537259985615260
+mul:995902591817252306534602024050315471330353754,5332558356879676808399004303967153306,0:5310708688633218425617462275294145725219682434631220640352375632798303313330610724
+mul:2001969035383918099033090062929650143669765948,4190101466247488888803682714062857957220,0:8388453390544226191569030306431481670502667642604288098765832297433783873766796744560
+mul:520711239532941932960582838954921846930386522,-3853096594619017503346777573808512971,0:-2006350703824226084150485654917370322708059670415383459171549901585565143080576862
+mul:60199373689261241651972446393273631317362,4966864098864732001544113870901038040,0:299002107951333794206101094825317104561273941185545981038605377956818474450480
+mul:945149245494027792287917914515672725163081263,8902933189066222709145663761457459365794,0:8414600586329679076832097202813182563472890369046719691038445973643576962794864517822
+mul:42113632082774519107063284261972952560637120,550965713086089226514793739995356299364345,0:23203167331131067949789906196648817037171886959897217039074444030278552245924211486400
+mul:699130208513509445029837360613055447835,1388996167624703080432361535173321299212301763,0:971089180295924181746449876683106046223557368848629195863225292564207370057125033105
+mul:2708864861499120155181972404884433662661130826,-9669434874243213781569557549324652869447,0:-26193192361391605615558952560977409140576479476697591006776382263831361618654765273222
+mul:-2663320619224926510783240759799877830,-9288856838720796348912703146202293649985994,0:24739203947593564658057633395520384609185233542510185477275313665703022411113020
+mul:129339208558322679510730678747389994722,12274162664070343010820636150243461714,0:1587530484686971608662198892455480803480746517693529713477405341441469073508
+mul:7927826382521640149002540477963715500150746,169024688202278131082480706237325364215068990,0:1339998382427514783636289070847268513301546686442820771818201284402167398586309789966540
+mul:136906526225769628858637915191370345692692,539213183682016621647404279498623014328141,0:73821803873042744699575963663268898393281778327505656899589792517391459419633645572
+mul:30681142365936990868501835461428152495,-5027491490146180677917496407674117704,0:-154249182152711677657936575800296045756593757870287279358854312185891271480
+mul:-971981137022757867271162004648718096950546,4334305792750860480761829171455584581712,0:-4212863472642307283763302038750775419855652449217026116602685720873585162160014752
+mul:578802014801938809246604894083179003839,4755521418153118560811649969223227339815203,0:2752505378260798366799002210776469662264057939931455802132200174149940527887564317
+mul:-85637729865865539531457719920611651870241486,974400175977421869121902925057819107693817,0:-83445419051606298238772725013236132640041467317129471694684769066837807060528339092062
+mul:-168964790731095355351979412256338118430524648,170138331609580398941494555432555720911428772,0:-28747387595750458102364942972192784965490845982185971055009388748528499591310207242372256
+mul:790938498909251314495722876378080005340582079,5214770204816378474402582970231763702140978,0:4124562517954155419865932563949638361261784041659784084183845034248536666456801038333262
+mul:3097935765451813281781983641770574025792276,42609404056306319259222360596281494320705429231,0:132001196770618914910107580782114196079241607233335405092295156225025350707315539424419756
+mul:-98485087154927525975034391790808080098982,19775664577849930783360381707025488283978,0:-1947608049496163493701638026379883534026679881243207339494650490437933823564710396
+mul:25900464334299058097279910365875929228,58255952834922520501042331752256379575,0:1508856228661518846300670852569471328709790883165326524402490612694204718100
+mul:79400185595521899110261406600117591081721314118,201740226840130845073877991057259510967,0:16018211453189077537841902603464990449906833086676810898799136608951219916977272932106
+mul:981167299738316185980724229187020822277,8133607419206585086507618470282084549435045911,0:7980429628634459820355488852068596406179426323528568158104015662222056961076466559347
+mul:81466412463591236560961446462245299836549126707,866192944729287017177690246604876328497,0:70565631708368782955079491721185650392800025979803605094852603626778749894901807869379
+mul:6534998388738554052417315288897046254899165842,46609611771478693989087838979597248775,0:304593737826342807250457708401174251945994165789414852595908172190369819865656343550
+mul:948084924179221265735435784532032916982,31095014697784883179376411641933005719333,0:29480714652101151829666949589520351343767111464822561182540749953951625181413006
+mul:2750322192684776089555518232723747026,16282797711115835147148988819960931175880625768,0:44782939903878757031458893908209207556974070715102965333536520996427288006608965968
+mul:-916832268194684002726682872945582785046,80175456371164380904577325966825746198033406059,0:-73507445518318567912336331397416597212835389484585058461161628079009895397414630993714
+mul:282231592138255672195189656428026230056,96673996679717919403145753072968455552546,0:27284456001285230898827449612784823590027283270261564593974508775341064792522576
+mul:550580097204590201609373226827993784219420731,60517713169991893657707958780297059239491,0:33319848399733645437661395589377990023027893949147177182635468091834964459423419287921
+mul:31526794192792048622410273704705620482050682,70537996848502378104686898733501905256490,0:2223836909414548601160467423600948705201515061075175410087937767675574150990389426180
+mul:-923613180033278870451470473112995033306843225,62635452857298067541908563173475507759656054707,0:-57850929796353591491544159777994055136678493390586182701070726329142717640752659048072310075
+mul:469196843768624413897755875308788890398465291232,-15296277161521766221056511754171865009042943213,0:-7176964965596105854796051880140430745806790021143791822882675477990460153884190250962482808416
+mul:2628065716223500508449356215564412668664236,713708318009199991674271791693482010536664884,0:1875672361943518042666230150625785628379941211629586909201716940601968915751182647888624
+mul:604553604369312265623368647573085123221252020,990982890678004704551740474471789043760433700479,0:599102278427707884215998875763263404402845043498163599628915781601939770631217226224053717580
+mul:97586462652371414650265963064033775148721243,969409880443270812997088798402379069080662,0:94601281092717085428971288705993159426354381047162321909314102361504796669908919902866
+mul:-765406874969209688613302257358735487317,687488505077706911028822098735771705823765697808,0:-526208428248781293790355829561494931467780389995278558390525263117575307179181438701136
+mul:85075624707999635862443444914978287825359,778046486301986342411165862027907781749497,0:66192790874005569505967522431892177262190586520494284537342391004284567008622094423
+mul:8227248806783006644129224253415431417213104067,-96883503079217553138854609209329008354340832050,0:-797084685105450364093424636607878440722968607757607323583949926033112024630877523264018947350
+mul:5027554007771258456873599804445876368468,9124875242153734630106913217321584664013715,0:45875803094102741048036279096734905134493820588179489085096405521013297169145538620
+mul:39245745484403729199058188063461104557810253,220067769421357576954105356315871937975114,0:8636723668031045203182769468262937482316831571209371261835666035163932603354648043842
+mul:12265626358518464602956912462337886264411404165,-62808539324142868756473505816723401975937,0:-770386075474250281180131471535743658895165686987724121596740049447065305055237711577605
+mul:-12272356051659726939876917766506363796290,17656166644036956054896242696928896080969790493,0:-216682763563059549497954402078347159387989008283715984882662478463368364976841430670970
+mul:637223594292638303876168193085997138882431056,94504571343119776477559774058446419793557358444,0:60220542628347848605902201201551563824536878839327823946585532875841535294872255080309436864
+mul:5571012420064356266635359647247635200655740,-21295217227115690481188602248443089551209070396,0:-118635919660229953125503640983379408558760574394740036184511552934026350143637375021473040
+mul:5263843748978600609740419748581371970418448276216,5384845751134428162699702180820131424931650492254,0:28344986646322936927200214104061116351020656649291842992510958145976963325938398674483474160430864
+mul:886573921242233631853410597832339291851986573,91564665302299543163193474542608720062467,0:81178844364292397724319168352869382688643286956887488649289119221530204376834605255591
+mul:26539751625701457124278640373644598585396,2325338527842485879693477585982320189921160388553,0:61713906974613847646349243530903967347131153357438117664659209426320342893497093511371988
+mul:353508003643539157483752498296868928280378,10742495675871104458509832622060247315860,0:3797558200526546039055152211123089222303048576306814689403594641262243620006195080
+mul:-4734613561112436559828705330418786656799216681,5767402184612349878575526105980302509419976764,0:-27306420595655124123966761566392172844463942752586247604702902500841784311547866248421200284
+mul:82083010698635736174070971617820650592649198695,632174562080517027772509374721051956918078145045,0:51890791342660440565464109942127261004470910227369112903142988666567956432456853670311234716275
+mul:6173991144338684494350090118957116722781373,-738485502817232028305101940854863776286515,0:-4559402954616091182455382994371638790076884277447195239272169152306248043072153085095
+mul:-493513047233893983448577482415236886372545860,510358065314512191744416886029069217313650,0:-251868363993759605947955962960713974503486770964450697668654217509298887857540628989000
+mul:326654054139623246358073868314669601484091,-749350879522921841553744544029160051092161118734,0:-244778502769254807928944561265310682694306143662100245399456722534220714864996773263060794
+mul:1402621524995633967650615579165227953957890517212,-4307813373241246419295301377872133252586,0:-6042231762972223192990082937904905510649229289208158235372604963773370709779387376510232
+mul:429404746005804957738561594094664667352987,378882853314853204091011966904771925997210303,0:162694095393619197081345508962117529189396776805991399292350948184192266104441374225061
+mul:332341701384724523211310134953299492552149033413,851224516641538736779656410258860743437969813415,0:282897404121038737349436193561640178534459124296792792204901752510516940857699900180164210635395
+mul:8093542646198882950722808884458624246299608906958,-36537804019444103265563497755234936603188804846,0:-295720275029827809269384782284341360404517553913401964795999699888915544660313719313212433518468
+mul:22659814113479956892126670971189905912120035824,-7769923990496178313173088170032841760727,0:-176065033300511807783943084226119789640585676482818345603663798333554090985834476284048
+mul:-66431972193306385702365512934093484764859082,36581996652652744665199423002405565247156,0:-2430214184404654414022013017963434105734980396584113694039713331126873558134841270792
+mul:-888473800362239868616054745127669042022317,142999759078860850560633007783677610020527766,0:-127051539399680213509691775061090749319492899786422897068862876191428383442448290153822
+mul:5971942663513046812876552589351160577576206860,5155119487765712370432570496238254289228130147,0:30786078004495581876769132581215368897074670048309664867385023649025961965929287514674208420
+mul:36328343589972083920724771391132711614346,626466814451530915421088090957480792070888316,0:22758501683110503999668988831411680352271666146548027818547320776153981900886629381336
+mul:5293116409600323220539205506696278195160522774280,-89478075685508708042860880549625934136374,0:-473617870710425832617232568229956765445181004360727395884348946714817018728737310339660720
+mul:79576614103508536656978289576589750212587261,852468870734033057111244131505440601392558836846,0:67836586361655850604287977041894979998590061103440929502231721634765812139562797406437018806
+mul:8225066772418695359596812838151452668642167,32895491347247919323385073727832554930053,0:270567612842635564451661105276011053846580530826552326236219991362408128533171344851
+mul:6163942593967174125699747500635651388266851958125,35785148285967657728202559017385960485415693874,0:220577599751307459197829958073417379960145796516327396960366172323789774042408250526882467026250
+mul:2768453763718344802615194690925869147682838954,295289393573622382700104229276698254424111309,0:817495033025002504068133964169976601685138884223266625508984010676066936521469461617130786
+mul:543530772918490900335995207569824317804903920459,3816523263571207729432080444412751436592123632,0:2074397839310259902661375133149465196577634869313509399704184579022798133468044005917222187088
+mul:1092477340633785505464776554395206472561372312061,-80145274095041381989361699268630409045305877,0:-87556895907716629238600642139851536991533588781637223712321645442750907264691471870441282497
+mul:5221300639042222043517187865188827094681806,28716457589092549537459686031371792838180039728,0:149937258360957795852063558466179437205735302066386407915731516706048526458470970598788768
+mul:-468871256127286679587501070578429844680401783,7709908112767006788780052051800778651016113933,0:-3614954301459024712014678778499413536274302047069226791616378154943247688691115133744342539
+mul:60187668034435065431875732180204005950423,6575730301760601160210842777500398231559661,0:395777872486342581314679269175741080629857948827943943881264571589081297075932686603
+mul:85750547893356514086330287277441673045104762,79743140579005364490235586620393656130064,0:6838017995386660810928499954451837697514688360722982501737493782122901963128377764768
+mul:4548581293372942515724176487253593549214930,4238661184062900689214356649238748109095650,0:19279894970774516775564064389921196824376868554446937886047574519905039195049778054500
+mul:870890539340345883811990618518239041519315472381,-326492148393756245001717974027772662339968,0:-284338923205026619246910784734503794029639825911870769385331694156076881647046490736423808
+mul:66987553698256227716875714961629477167428173612,90975165679807773385648454136069587671757554212,0:6094203796183880252983468130806830185765137990039968456622459271312350291704985779779237853744
+mul:55214217278725852504312036656428464058159216571,-38639629611220548541845337991516346077285504,0:-2133456904923420705886788529419803172916228952081562524788395230166386012381289930934886784
+mul:891217139364757949280558543150622433360536923866,30525879876993440244467275213072433106397646327,0:27205187340566323080358381531226152260280933712987740283334272666071747659070919682319193540182
+mul:-27569366446500582408824975793718887457276922405388,634666021153562229559368735956062829411322343,0:-17497340108325047390655423017206758097517868311360137049025654413974571287769192246265387984084
+mul:502864235446447920785714797929749621810588808385,-661761137717295415776353819805381820532626437501375,0:-332776008566379289514058699683955504618562833566935527415040692964912956262842183217462238049029375
+mul:846540274257645306570757431119674434472851673,8616613565185012233547219046445322085886975,0:7294310410643867160484254450457795378883045914986526511813394090546583372432655817659175
+mul:-3309007371119113533010968742743901666008447,-54456422219293958622124113256532150483182055,0:180196702528418384342054817105817441009885252753576126005393548812004572770935068818585
+mul:3808438337556464123872249539607274641406985997532,8958313515020597801994910602927304472155060964765,0:34117184630454650095284221741033298990688190756311433174116017572873358206925691228892157828959980
+mul:3966980856734279836284487724100931405197679196,7991199588345191911654938564028578389298180118364,0:31700935789308233758627957773360639061582894143974709760939541889270491143844984071481380355344
+mul:65639444382189527381103754239686068124303248439,57344187472963481946737524023690750337279473205806,0:3764040604273435895633212274119116479837782295002539485107922790189834206416168312084346995236834
+mul:415167227201847402226579925485934896345892,586575228633844519664975226407615633553394085108,0:243526811217202913688658430933411830761556037052309989639490972226539908815021715654176336
+mul:61619333876398280418219395631027787927517659829394,919912829682211281138193507951318719985265,0:56684415789370483176959265833922690931907142380410669255035534110985337015940545738093879410
+mul:-868753784405826481862596863379498777711457154096,545880080147628730834302628389405153791727839,0:-474235385460008330984602458660116725933386690418517481411723635621365531412330794841516078544
+mul:9429941770445780812848883836626433106364646270218,13789105660912116612159357433833332620650429,0:130030463448925543470092963482754387029792169816829218586198208779745648441067644420051623522
+mul:43608475425036256086742701999180132009804867174088,26543470249142438881834938827109299420258184885237,0:1157520270054909035662868646857940204973664076401942399990577391349752558661122837219065938780138856
+mul:57684506610503798187871631196324475714333617510881,471695506003883133237678946411955700467360,0:27209522534225930626068350341042360052253774045631066166444663548471852016504199451585344160
+mul:45545031179301366913301053296868047362176530184,-91968879037454375774626628433933013352182139387,0:-4188725463286255430640627639956152535588659815635253627540812068959602079281136816961500757208
+mul:-390021533721654785753654976920878586915091,77031076759836910371783959035306703983828680,0:-30043778702102109808680236214798858402330647256427091328746624712038248759912250609880
+mul:423541795082126371645621560317104281087986536944,8300998559716429411460238557591751288655280830676799,0:3515819830956442096665703788765672916368036936505243022506012528660536007280216565165558183737162256
+mul:-22004254439719621882091733525180851819037175217519,99335356922776842325949741933027888097618837,0:-2185800468589145609464205476226975010639204222945574205629223171319215468510436674371426805403
+mul:-568617824838411255064542027229734991599889058339286,663945656360600870466864889023341282183894393751666,0:-377531334930676137341317084292560605510952651296593454952813714006651559679453405651218795949055750476
+mul:79416546968775553905606945911160893343240489,57823044209535496953371020115352329847370545,0:4592106506344161115031398878073106718740642471142046845754411556618094588197446229996505
+mul:944931014689390846530685010237152128723129879051,9132010491010578008428313272813386452749469110941235,0:8629119939424787805155145456276331139041940822281098763310858175298740567987777487797475766318567985
+mul:10724730362623743957337791385603755532922863,72480373654893123070601266938859686093303005387292,0:777332464030946381953104911976964384403745616151494866542937429270491850221347238960076456996
+mul:7713352208339235603081099644445084271357860,603624463205826416829628929324533190899935786563381,0:4655968086276246859527680228796939930213380744965640764495096069501972383741189048259822524660
+mul:-374652992235609318781751374140306949494493761487551,-8211631925711097443824357620157273567158306960781,0:3076512472105121389035620380499987642797429799314779956051883946663228512561940943539675904376737331
+mul:148033237001979427358794216800322662159772216729882,-2761071692676096788505988250569937615812882,0:-408730380261377140975921158356878339630350304768292968573861638003660928294552005391249939924
+mul:8799836897423935827052239970797993642793054321869,7294647877437509677171255169879966954414823484,0:64191711545589794049942507329622817162690486075145161653225201426081306037945865801824955971596
+mul:638050122120135743843926357476168630346968836720976,-521011870575614667006902791543319211035082259559038,0:-332431687646811297131860656825650731646114948863860886066225973078382224501114486836618755307604981088
+mul:-17589569754541719055752617853886490778777621596833622,-757763302557856615098419826290170728613135917189,0:13328730467773320372749612468589169429951770262414798041479922130537436948993914504659373603202928558
+mul:-9391500830250456597029446286855934735787373415653,28432489383197015180933073382445953529667174,0:-267023747648382060661246943486871855039477521250741910116209365765385119618211444260651874622
+mul:597671128380217947385553643776956963479914986403,71727950226724858021016384499343090206442916,0:42869724948406755644439192851387407923848606069058040508413206852418378147081162495135671148
+mul:220524861586728547654066186650842017022514113,99830670175055229565653522851124444573641171168883370,0:22015144722464404290431089740908195479979690191563438782672166808199720494718314317705872276000810
+mul:-19711747183549435340491469077888147043386014913558,-1141914280129478236596364286858351511269528735,0:22509125595197123566803201916751380078133670163026469768611121772532745591006866402480422089130
+mul:-8382072953685010521572064715326232892979307367,8986558828596332338706049003428573784660004270,0:-75325991703876567601582024901200837475422482663143278160590315962341962045355062611862457090
+mul:8502152308582607794375019565844324676023491104593,10470050208175536662422671560468368371690332,0:89017961548415452362336397742460566038542969501801207576446421265423116103719862689218894876
+mul:594601725521916181847167140525593251441576703983,963458725567603941710493681498226412426881800,0:572874220691643607273440473752072791294210386705034629979437739545297813514469057230330209400
+mul:7141961266638507042734562322157608790427840009,-4549724799885066646710284284349071123364728193387,0:-32493958294643778569864068941415075147150500523994618476463881411873140452414616492271247820483
+mul:-556279059738139499395948604306347001411150129841210,96265906951839620646630096006130967227739083772932,0:-53550708204008570858552227539689352744237572475214571815802430633001465739150610790161193168856127720
+mul:9097507009232650355633416767082868346314279788737,-12952310876092402836370081770801404571317963729609,0:-117833738981010925067125768441840140051091195908538031159411055746004033932320364747308545111613833
+mul:4268792759888467657870170840963084681877952381149,45230992824683770972952637110379461673717665076497477,0:193081734692577312252243894972856695658000409843190512520961090560296517492619302198905276169040861073
+mul:-14981624589272129153412283534256311120144659052,-3422881033749335138988900898217088225431538419464,0:51280318661372243898623018770432573729075192413326291326269850897282594874283136278341240588128
+mul:1220927142068793741881867214403185329458765760024,30622524744504892825380221509502752145574896,0:37387871619239277065352340275615230576537543517582369985500557751663316964285147851854757504
+mul:37912807996403481194979034824173466165481184382714959,-90878397829297201187948170371749592240094934625,0:-3445455247922915696812807051659782073986976942393793434021443082292576682286942256582247061114555375
+mul:11421510093950565340830017403217629128966938056,2237414009357389011349863244579333296452235392013656,0:25554646692221823247642416835188193586733448912454167957899665467614560251117634306180050458092736
+mul:192657988036570687555057992620686662908295387946910176,931495134488306662235768448970442482109561110,0:179459978476371988595767318602181178186396303909063154620374484681111185009707914339840931952855360
+mul:3406199971289940059753501832956133340637816361746774,21717729758322757474808809344766892648120530501033,0:73974930479281653383172304844520436444384314366038505444774962096871058594711397484185935845291417542
+mul:6909979467876024377878180024452018966109074368033,842722308262405734840545048662350517397572773044955,0:5823193847214313361590850639006414894786757219881236880655209757454129105445924052644535803723923515
+mul:373077837411940479742523640303846004174658252010,174968689985940718533112057941120724001834591,0:65276940474755009773288570940982140032743912931132908824689438802225554298870445697213277910
+mul:69447921082122879577796325457481062492384026062297,4859735149388070292660864796695584862286590039960,0:337498503134721348480339150893268639814027256856202938192556796481021571996594857372873378679388120
+mul:97668956744134573191931364533568770116368809990432277,32650097939706033583832290610502297382443475332059,0:3188901003364905942071745199167504684645498771234390707296643812873542739572337441867216444655526468343
+mul:-1130623853521736649164698623052358825973875071086,97117938880122601762963490311393663414262844,0:-109803858302732709122723543874405473115932722476026603503929119344711278986293484666788528584
+mul:5196766948376722446473792182397797566282488000645,612809465745222737408369151997835003504928829,0:3184627977237170791819733844305891092484494030274488141848280463948439552688134126307231094705
+mul:-260800009832764286426719551521843883719112476,-4764630548313512861236355180550436291099515479440,0:1242615693849653247685309234997680134044316133101561211221015368136727312822405604340425493440
+mul:446884272848375074930942162217302913946161786743256,21042882325490620038960351129083746002919260315816,0:9403733166660799648590511384420343808695460628780663235301885602775520005114834045365148352668136896
+mul:951599922613172445123982155673072679115439437787116,170174123089259663169419228763721448308107859122519941,0:161937682362503977661236466402707947708915167258582987092600978773889146161299886218655580651394622880156
+mul:21383950451514823653827321489681070470148156716394,474049024111864801681311013604155672359293053819708610,0:10137040843197072851050642470285630585293351622620638212811885320208800091533606694120847446939489952340
+mul:-470414357544256461922663993336752968654129573423633,9062081906619161788388889503790336651084511675587,0:-4262933438115683672713863671510520101815219800470041585560023172590216986734948687990123769014947571
+mul:780091812513073375693179028189802313142318232500,3497278556984926411479728842600230671778387696053,0:2728198368381477015989505443597065418103138169441425077910216137727395317905388139191010186322500
+mul:-1625948018138433921639232759767284243608022009577,842118879046315463699452834842435152085239651627,0:-1369241522422316177317692449844295269090380811960323302423745772493265931792379448342891937631779
+mul:25026283351500865895404594716390919370787136725638,193605742569640932386538365909397399503766353419,0:4845232172025567337840956469216133356563858466840983726314706900481952782728859639508827146256322
+mul:4935030558829975380051283297334807636335988292915939464,826975811338155401386754284486847375740824437795565,0:4081150900367009340504991854566589470179310873827349635534175745385923686159595506846989467997551147677160
+mul:692976306506130156561485116659173381923120836885557,770158528298664593632506223863839610768381103479684,0:533701612364605511333411361009902575918331545270987516486697902333932240009170947895587667949982523988
+mul:79877139216893064041018839082816187503862428735,7269106113282857654532427145534479409503583394410641,0:580635400993063264937521052415287406491591842310757481379039941960972027583729569639227998188169135
+mul:2539745404867281753796678186777103230989134057269,1232562503892732555700624680547460824244298064,0:3130394955473278587381949607908298163614591827039064669019870794477245183817740184883281827216
+mul:-12342369542383197426854745694214905543911988477283,900468407001638487525579769577535461149066925224901,0:-11113913840455339589057682433788692760910363591045622111658103604207392316252364497138359285304423983
+mul:25508383419230789798346692675791795579961116333703,-3196912743165527117167038251788165837584914845275,0:-81548076010491152335265692912387445585857263580983374333387917442921969005827781555255165512803325
+mul:-1299528036083269250543034346520127753461072609198859,600594652353551219594047525595273354045086799190,0:-780489589055124260606091767683960949165161003741168476167365844545079097602756258116044302510124210
+mul:2299157394917175882710807816574923359426328448491205413,-72838172890838078649390158065336999589794176457016,0:-167466423834226138899695762647031472841630725693307898812516233189758231307075087592787449022731421027608
+mul:-7349901043851956691882158234459042155688766310737050452,38963935506607940884321914070762438994955796523516,0:-286381070252598023694679445080668983274723778018815928227159321326339627469156721047447539093637496429232
+mul:958387014018743982544025716556283287504010616036,1443504353635051762579994152447131178181054158,0:1383435827203354324881238067046558111877918566103625557579208412963622898173192934117459277688
+mul:246125390054194220242986809766512103907648232140291,244701030143825150512131468437935457382757506654,0:60227136490812102782907271910174306533407908424359655603867506529129414912591634812915769093996314
+mul:-704660850546084071765145007935951186831012905395382833,5588984198927622386999113229239134076765551765835797488,0:-3938338359304962728083277304047487715370320826599483665593576088149516002866532798742909925478892863619723504
+mul:50682657377075501007405908966255159073041913889268,-221227972486061875975200412557047324616212536548,0:-11212421531736159902862014641256856908352469946769596801579726135954662759261565882858426274966864
+mul:-65153936048938235385603864221810574284616709045012408,2620409042204728497893539911547700871421142555353,0:-170729963157866373963111608067452447067616052160696883002411341925443387533862472832785201804711820024
+mul:2124140486540339235997181873057458560557130144031198,6337118390151757487365380009696068490770095523526655,0:13460929740520685472324728914077419222468164771987370279610883339996690538208206652608006128131304582690
+mul:70505951289040282645383932312380844925860919298,7547000534925894125969206219651626162975048702546706065,0:532108452093846047616616850898050963751081524640768880912328456268423081073299532380834291122692142370
+mul:-41539404414450841529694974131865311088044938789,-87120273993379326877611820290578462959192080166852098,0:3618924294108748055270837693949939912318794083201327440980670903703748636538106296956551875226229322
+mul:8365100924146743906263010309561180555381451232169,64464903694507870558459227754837948332608708108908133757,0:539255425469958633518840532058336282586265952721118473314120789860073187010825518609049764601833913228933
+mul:-607028381550248615720149092346152462853976790359415563,-638047705393414341349283089715056902457142563666819,0:387313065956814142347580416821601619522788233833564805598190281345003710840619549824608697022583095304097
+mul:9617834842433276206013447576300042077483363020815285,528061422615472570377974310003284316297281680382590494,0:5078807549375975305409474126592664059166274736600561408401824181271910205956102095093049029393852170900790
+mul:86576571095874523146332767288469633576872568596,28806568894922815646464384363885717260300665904363145435,0:2493973959959492744618741686252959362351894366493500719340778231935540767761675386859282345646361759260
+mul:307009198563449723583109556832166934014223122475324,138726608616028283757694379054230076836833023549,0:42590344930632202620089538756907194977499968842538325319841912047531571749213635995957120063404876
+mul:950446831200123302940271854492691726825599408858,-72101792770002156123347099210449392040964040896942,0:-68528920462096510067650339988235647246498530567363500303801515664792809889462344386842251299912236
+mul:981208671446974342191660850214776536471793694644642,42331603864003005956059961823201488180622810810249336717,0:41536136787617995005181391797616187316701801094427498210675495592371812354190764162938589949104015517920314
+mul:436034751789860072246023599184144455891992330310990,72833959249163120346712529298424162613591559886645,0:31758137343081624453269752355328026194721352914558720990171378846806391947794460806298848641997728550
+mul:90712859511805773491925085535825623597765615019643547,-747515802065477997196092836504038150570958532540685162,0:-67809295935620517600810302668580552577312402195771262364310764109361834590609187219719805153318608391949614
+mul:397399782669545823592934194763075791833495372998,-59196779886291303828419299835113054892183602687860135035,0:-23524787461549105672926147613053790427130112546635830152219683595731769479837306026216856302451972784930
+mul:32400956990211215478801690694170683149459902468,-4583955972534683626923454093368608704790928252299,0:-148524560311118107934748825020984325384128831537817042673475700215519245003301091136794236773932
+mul:987205647053507741802554416690401353287928887038,99876648283232575129630115679242229378848334523759990898,0:98598791193984227490766355696552554241176001533681327979309043773446027278571920948873010940294150180124
+mul:613843278686603793281546390730144010908586402122774247,-5096436233192165525303465082471737429087562092805456864,0:-3128413126999883739898127525581773020068974144641842702264583891275711281299548031054626111037897411968581408
+mul:-976952961430926103170472845979881570029763109667,935178486322270132160329332160301439376977149568344208099,0:-913625391679032626735612276016819847879751832378461622543415386714525380228017439645010525807254806593033
+mul:-14766907052440196735362466027665124699631240785562617,56185497908476101017098165076418921931361374576783903,0:-829686025309539659436877109175759992995713482163632861241130851163598589293178881677705053185350284154151
+mul:8086945629611784458016532027184114429962417844094,915144274243273504802165174453120299631299876477769004475,0:7400721989055888996136233798580013159529233408791044035035967083245349723159601722480356017380766138320650
+mul:78088762763327100616786616097147636046671948600444,567540241084477255158834032762283528860020033647985833,0:44318515244687212982877565975681071792510147353364795293924376495712873521681333329643702186243889509852
+mul:719986964333569855824423695658491299542433105292,-615276910378191482694097418592439439457014608822814,0:-442991354927732007722531933484439672517856888972765946209711703099793423501561916310953658633731688
+mul:45518095176552517046254533808850801860612235127698055,35562211507032265793347677842985571735031362689772443740,0:1618724128065785795744673208584473680751616875603258142963030074995341676160450789993590567976668358194925700
+mul:9347651927739244225461883666785850681796998039204,-49878021756813856103391637115956958358002286487531,0:-466242386226901006946356389028134676636414341103795172547644257145552025595817036151721871395165324
+mul:-918018144578664428004161449615771398954961013294489,-670699097650597095681408528960639081653596263477957,0:615713941195785615974127065795375976710193022314921690147944271007135254397488569454896629925801078973
+mul:27390700201762535100035783959539579449610388231,-1589447744597072139866306928627083981945967837919031841,0:-43536086658626030220375532900736667658969827278059194645833847995230392704902546272550528175660663271
+mul:2277199840598187516900058221233481999025368188568,9608219845154413235861538421470991851896216584568613,0:21879836699817971767000557908575054021947917457695046204371308982480723639160400066580492493518216184
+mul:-384224188940171310851587214747099156035618205974037811,-365155157346205326208918238248019306559191342503,0:140301444168666379290296176915045491501178018946537404762619540722359114634558549786149744296773380933
+mul:286446854858822908871115682474835177238732522628,-57158496101544373650727927690968913495792599007869,0:-16372871436747676262278174307506297592132492975051635951931260785772478739228382233254016392559732
+mul:-381089856197823678538852020226946248080829424869589,-3010621081997078653311455126099557341287585438919,0:1147317155204403033538417293781061706820038418656862236980125391331092308923135144143540086900134291
+mul:116824003493453841699155925492342665434851317689062,-23510392931055495213857939210838689217666922526899551035,0:-2746578225910099677716238357776888697288117665636655886289546239917490129557481316738650939508921530279170
+mul:580076669302513896163920831671903321718154827187111,57642903862300589084685292813271561699366462736142,0:33437303681368339826568875036607309078951222489453540109258834689115591802250959764588162866456265762
+mul:5760449410973032312996903274730533429280588604119,54924391723347076414566698417788233810196808558058264,0:316389179950806757476032029420089976949374325352943306272834362194992326589276708483681497464832389416
+mul:5657781195595763129830083459999757852112323789572340704,692061618840647789470644193517118113508111433346167161307,0:3915533213270179560961108305159334536041508008965034741386030883311266330352593550098270684221170821027129940128
+mul:-411686824144764716061907353842274549877341843077020461,64596348790121485579427789661619008385819947602752810318,0:-26593465684752629063594295950004957994828988051383949912582218957039523707407380651277297287183402393737916598
+mul:632256394728894097701649213009572878755743290206395156077,831219707790000649838963373434914934485492976701321111,0:525543975674910659026260706288720204381515414601996591588570479429744161463440855422928774392151685316940041547
+mul:1670481530219772906326138470230000469885289884882422,468290338328174403769157221534943442214405575737600,0:782270360957583948773973087197246461358063772951438918211359656647137302093722698373813315391924467200
+mul:-5940255960924729598832299636442321100271324046668226,57672031765846684220194592702663453624777841860734299817,0:-342586630475711125183923927161946766514304847978409032225317328682383801381008087781458635612556537811514642
+mul:1070320750308710183653165839089007570013512879851785,1457798154372592051774290334996812066679847800239,0:1560311614386725640264706359282306460222595994684719021358994107802507336028163090509939936607576615
+mul:4878833860261622243309660185570248437064542060170266009303,2713399212910344466363698742990679778889654409261764714,0:13238223956354223315835115083131058404743853065832322244195207641759173433600815039556809272534689440156121134342
+mul:-153727669883775746511963322850970227020812560900211022,967696702028565741720227898697068313091723784217356354,0:-148761759157065858120367305796775921605388922829212089475409575708151324377711363197839787691020073572533788
+mul:-540592613733911579302709730020084890208422708295834255759,1487237786400760689794761062671094249214728767786149324317,0:-803989762194224119099880670025468825040986939150865705871247661626924722104597624198557832395582009863760415991603
+mul:6147134348286513705872901614503400707429078163757093529,477008107151085089956583728568535862114663515203848020888,0:2932232919879568942454061197378668098753424444460385986524578717121657294266275306745807650523035121257761633752
+mul:7614680849639684551334463800131196276563566036683927,25187069984138015151555984154271413618496480687947851,0:191791499466750257309658251576197471575523021858632537910036998866329759048429339136517641910254745890877
+mul:34751974072174908316243318351151710272413759348773,8306602488518142539700335965542308143538343391985,0:288670834308846061096235572592461254734354939539314534410107250770305649520412166539742961467784405
+mul:1973284924569393016522181930166284437824113120930085705223363410232863255766399553325346410701486329074823374249547700471683909277697787590783678904983357211584574690370289495346677331618312561665754485123402827162476353576735207718451299565526093115255556962215997764515429748902159033904867393928929335369918394864191487555087825530530292436823694624357846430402766705368186347858763649288740551240105434820489955559033038872623623075504620415436212337263593361227009430895404467373404212231777284568356947010238293550872942631550054733886261493387307990754063500729850132294968984927109971586336754260617576297578,5023215555039217191451486096670046812323372237867852342682903508090873804207633443539517026163606065770027196694503291009850587117226026773591715017125540836707619882023150680605967194554434367524090941938814045780235333982097410791452776449214446635671357519707417878752761895933104747199582531838714305022614904134506738511247696618513698871318914624938137416674596881724436242382943205716649496664131501091102879563857843031208992280893614063087964394912022421136928015233318011144243860597237613050611024432789921991289922378761307428111094457098264457145099945444765267932710530788173695233378407323077034767182,0:9912235527621363370177765461045903296757346464251250997934314384765381968455767811674327750035883028560327843635490083086230089733649800500491928845965808260177110097000550870708488183060088779215210481900113545281854124601490142211180660492441361405426298053896802091578235012988730731854809702026093664780523793649405978324745399501432045298507869343282835244908856693641856464415460033802080004246708824900236489959461486545994943320360059459917374730418136788819890973086342429995201653932338829740545718352667527142958499428354077966431655595175455785104618218647409782931121099857213491801531717606789462812743975739913830932552436532349361163108142395102143904119547756730321871557900417573185916761969667939077354954258105548072267528998411702020631497735552158986372677452750936969993423245268272976429454770189221077520557005286622417163333812030510164503314440581497599501417407932697447376958591635071781976491704916693799964449632893911830806101578411062044010045678256608720149155356874608716245388282176400921764516344436742619757576145128777884235797616593795005421758664915151768829194432974835591116318659671888399376705850603804666493415116788205809451378581533592708248188469927900316495904963905315042780485196
+mul:5693930165221819,3016628443782411,0:17176471693318822194099185625609
+mul:19732849245693930165,22181930166284437824,0:437712683949801303830876080256140560960
+
+# Power of two multiplication
+mulp2:7328492456,15,0:240140040798208
+mulp2:9301,45,0:327249844798226432
+mulp2:221819,104,0:4499023815872409881769555333012783104
+mulp2:1,3,0:8
+mulp2:28443782,108,0:9230534995215592279593651121258540040192
+mulp2:131,76,0:9898080148094776367906816
+mulp2:93,36,0:6390911336448
+mulp2:85,4,0:1360
+mulp2:522,113,0:5420757920310360044185838167705780224
+mulp2:634102,29,0:340430919041024
+mulp2:86325,31,0:185381525913600
+mulp2:6639955332,101,0:16834286724196864462774406457915724529664
+mulp2:4641070,109,0:3012226647655029057743003824831688867840
+mulp2:86329074,43,0:759358565425078075392
+mulp2:337424,112,0:1752005575194255677729274193390761672704
+mulp2:477004716,31,0:1024359827628883968
+mulp2:90927769,62,0:419330320984095270608306176
+mulp2:875907836789,55,0:31557905658990701020815818752
+mulp2:983357211,56,0:70858354704507043363946496
+mulp2:4574690370289,41,0:10059850511215301155094528
+mulp2:534667733161831,94,0:10590185513519716577933182844778629828706304
+mulp2:61665754485,104,0:1250730090982990067823267062394063169781760
+mulp2:34028271,97,0:5391994769734856490537202784887898112
+mulp2:47635357,28,0:12787018778017792
+mulp2:35207718451299,38,0:9677823956166718317920256
+mulp2:5526093115255,15,0:181079019200675840
+mulp2:696221599776,31,0:1495124500903360462848
+mulp2:154297489021,86,0:11938189976268266978253598864697196544
+mulp2:3390486739392892,71,0:8005560469361491387429364912321724416
+mulp2:35369918394,31,0:75956321382209421312
+mulp2:41914875550878,28,0:11251438731683187130368
+mulp2:5305302924368,42,0:23332969016866530784182272
+mulp2:694624357846,102,0:3522163936626521236224897501281415419920384
+mulp2:40276670536,50,0:45347499604413458849726464
+mulp2:8634785876,54,0:155550473814310487519657984
+mulp2:492887405512401,103,0:4998472123541838661247665060074167267342942208
+
+
+
+# Multiplication by small integers
+
+mulv:39,34165,0:1332435
+mulv:1331169483,45488,0:60552237442704
+mulv:967,3873,0:3745191
+mulv:4609944,12208,0:56278196352
+mulv:-9187510646,-19674,0:180755084449404
+mulv:-9187510646,-19674,=1:180755084449404
+mulv:-705904,-32646,0:23044941984
+mulv:-494,61105,0:-30185870
+mulv:31884502736,41742,0:1330922913206112
+mulv:124758920,14754,0:1840693105680
+mulv:1578359,-34693,0:-54758008787
+mulv:66733360927656,-31832,0:-2124256345049145792
+mulv:25747369,-31317,0:-806330354973
+mulv:241723337947,63112,0:15255643304511064
+mulv:7902551,11307,0:89354144157
+mulv:-9354271604,39887,0:-373113831468748
+mulv:952191019,55813,0:53144637343447
+mulv:809248646915194,9772,0:7907977777655275768
+mulv:-2633237043,16406,0:-43200886927458
+mulv:764186567812009651,1311,0:1001848590401544652461
+mulv:866541923,29701,0:25737161655023
+mulv:-834567728673833890,4681,0:-3906611537922216439090
+mulv:332307463075,323,0:107335310573225
+mulv:27691642758,54832,0:1518388155706656
+mulv:2202473525085705,16772,0:36939885962737444260
+mulv:2202473525085705,16772,=1:36939885962737444260
+mulv:-16583738845087,37131,0:-615770807056925397
+mulv:9196926997210,10181,0:93633913758595010
+mulv:514078180671038315,62002,0:31873875357965717606630
+mulv:514078180671038315,62002,=1:31873875357965717606630
+mulv:-3412120508850357,36908,0:-125934543740648976156
+mulv:549214983476935,10691,0:5871657388351912085
+mulv:651367312269732,44154,0:28760472305957746728
+mulv:-9584205879196113,22814,0:-218654072927980121982
+mulv:987433915942054416876759,34616,0:34181012434250155694605889544
+mulv:98036280382191791,23951,0:2348066951433875586241
+mulv:80662726244584753,2712,0:218757313575313850136
+mulv:47866183268822904587301,56393,0:2699317673078730058391665293
+mulv:-6912574313961965048871386,30037,0:-207632994668475544172949821282
+mulv:-6912574313961965048871386,30037,=1:-207632994668475544172949821282
+mulv:727313511777411140493,-48518,0:-35287796964416433714439374
+mulv:465780278683330104360026,58793,0:27384619924629026825639008618
+mulv:9089195999415213350558115,62437,0:567502130615487675968797026255
+mulv:9089195999415213350558115,62437,=1:567502130615487675968797026255
+mulv:1956713589673152168482712,-63098,0:-123464714081196555526922161776
diff --git a/polly/lib/External/isl/imath/tests/neg.tc b/polly/lib/External/isl/imath/tests/neg.tc
new file mode 100644 (file)
index 0000000..6feabb3
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# Negation tests
+#
+
+neg:0,0:0
+neg:0,=1:0
+neg:-0,-0:-0
+neg:-0,=1:0
+neg:-1050000000000000000,58392:1050000000000000000
diff --git a/polly/lib/External/isl/imath/tests/pi1024.txt b/polly/lib/External/isl/imath/tests/pi1024.txt
new file mode 100644 (file)
index 0000000..204ad8b
--- /dev/null
@@ -0,0 +1 @@
+3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788
\ No newline at end of file
diff --git a/polly/lib/External/isl/imath/tests/pi1500-10.txt b/polly/lib/External/isl/imath/tests/pi1500-10.txt
new file mode 100644 (file)
index 0000000..aa774a0
--- /dev/null
@@ -0,0 +1 @@
+3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420198938095257201065485863278865936153381827968230301952035301852968995773622599413891249721775283479131515574857242454150695950829533116861727855889075098381754637464939319255060400927701671139009848824012858361603563707660104710181942955596198946767837449448255379774726847104047534646208046684259069491293313677028989152104752162056966024058038150193511253382430035587640247496473263914199272604269922796782354781636009341721641219924586315030286182974555706749838505494588586926995690927210797509302955
\ No newline at end of file
diff --git a/polly/lib/External/isl/imath/tests/pi1698-16.txt b/polly/lib/External/isl/imath/tests/pi1698-16.txt
new file mode 100644 (file)
index 0000000..7768ad3
--- /dev/null
@@ -0,0 +1 @@
+3.243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89452821E638D01377BE5466CF34E90C6CC0AC29B7C97C50DD3F84D5B5B54709179216D5D98979FB1BD1310BA698DFB5AC2FFD72DBD01ADFB7B8E1AFED6A267E96BA7C9045F12C7F9924A19947B3916CF70801F2E2858EFC16636920D871574E69A458FEA3F4933D7E0D95748F728EB658718BCD5882154AEE7B54A41DC25A59B59C30D5392AF26013C5D1B023286085F0CA417918B8DB38EF8E79DCB0603A180E6C9E0E8BB01E8A3ED71577C1BD314B2778AF2FDA55605C60E65525F3AA55AB945748986263E8144055CA396A2AAB10B6B4CC5C341141E8CEA15486AF7C72E993B3EE1411636FBC2A2BA9C55D741831F6CE5C3E169B87931EAFD6BA336C24CF5C7A325381289586773B8F48986B4BB9AFC4BFE81B6628219361D809CCFB21A991487CAC605DEC8032EF845D5DE98575B1DC262302EB651B8823893E81D396ACC50F6D6FF383F442392E0B4482A484200469C8F04A9E1F9B5E21C66842F6E96C9A670C9C61ABD388F06A51A0D2D8542F68960FA728AB5133A36EEF0B6C137A3BE4BA3BF0507EFB2A98A1F1651D39AF017666CA593E82430E888CEE8619456F9FB47D84A5C33B8B5EBEE06F75D885C12073401A449F56C16AA64ED3AA62363F77061BFEDF72429B023D37D0D724D00A1248DB0FEAD349F1C09B075372C980991B7B25D479D8F6E8DEF7E3FE501AB6794C3B976CE0BD04C006BAC1A94FB6409F60C45E5C9EC2196A246368FB6FAF3E6C53B51339B2EB3B52EC6F6DFC511F9B30952CCC814544AF5EBD09BEE3D004DE334AFD660F2807192E4BB3C0CBA85745C8740FD20B5F39B9D3FBDB5579C0BD1A60320AD6A100C6402C7279679F25FEFB1FA3CC8EA5E9F8DB3222F83C7516DFFD616B152F501EC8AD0552AB323DB5FAFD23876053317B483E00DF829E5C57BBCA6F8CA01A87562EDF1769DBD542A8F6287EFFC3AC6732C68C4F5573695B27B0BBCA58C8E1FFA35DB8F011A010FA3D98FD2183B84AFCB56C2DD1D35B9A53E479B6F84565D28E49BC4BFB9790E1DDF2DAA4CB7E3362FB1341CEE4C6E8EF20CADA36774C01D07E9EFE2BF11FB495DBDA4DAE909198EAAD8E716B93D5A0D08ED1D0AFC725E08E3C5B2F8E7594B78FF6E2FBF2122B648888B812900DF01C4FAD5EA0688FC31CD0
\ No newline at end of file
diff --git a/polly/lib/External/isl/imath/tests/qadd.tc b/polly/lib/External/isl/imath/tests/qadd.tc
new file mode 100644 (file)
index 0000000..5a98e52
--- /dev/null
@@ -0,0 +1,803 @@
+## Rational addition tests
+## Generated and verified in PLT Scheme (see imath-test.scm)
+
+qadd:3/13356872859954085399,9/62913230326443414581,6/70815656362754309351:308951546718917012334/840324018679312348674627422530435802819
+qadd:-1/10707768797352318399,-7/98320256665411314243,1/73359800109931088847:-57758212748959181012/350930192156520858413194622860526552319
+qadd:3/8871935578221811012,=1,-3/4866674049828142891:3/4435967789110905506
+qadd:9/4322444789227983625,0,-1/968244430692371869:9/4322444789227983625
+qadd:2/225379267690226671,1/650264369025696376,1/34848592015687152:217986857963088489/20936586756579823441422616437606328
+qadd:-3/68292234169742612,0,=2:-3/68292234169742612
+qadd:-6/86190045205685135,4/67524620320880421,7/25266746450126878:-60387541102541986/5819950077953408572132977712241835
+qadd:3/32384565517809325,1/12077081878824172,-5/29092772826669868:68615811154281841/391111049368729137348856297003900
+qadd:7/8696576917665055,-1/7581339998976754,3/1629599527000648:44372803075172223/65931706440072050529006903131470
+qadd:2/2271361357023875,3/7926992193500824,=2:22668068458073273/18005063745747695119878000173000
+qadd:1/149242689846961,=1,-8/422836348382141:2/149242689846961
+qadd:1/8658078704679,-3/951317712555992,2/558713214761595:925343476441955/8236583628464972469619886568
+qadd:1/16676404623347,-5/33326850326497,9/43833507346994:-7150738970034/79396005838055435322703637
+qadd:9/79221016041680,=1,=1:9/39610508020840
+qadd:-2/2334176395033,=1,3/4196164230632:-4/2334176395033
+qadd:6/8258476677649,3/2022168438715,7/2650901397286:36908440665237/16700030889405718666781035
+qadd:2/89237876621,3/593210741974,0:1454135113811/52936867002527677989854
+qadd:-1/86244958313,4/307620567537,7/284049788408:37359265715/26530723023449966085081
+qadd:7/30268895338,4/83657377701,8/72832717953:706677225259/2532216409883104057938
+qadd:-2/16397609979,9/46846025410,=1:53886438991/768162853739503566390
+qadd:0,1/192040267,0:1/192040267
+qadd:9/9089766539,=1,0:18/9089766539
+qadd:2/331584881,4/272560309,=2:1871460142/90376877625088229
+qadd:5/832601742,-3/639383129,=2:99872917/76050215287258674
+qadd:9/36166996,3/22041145,1/5580628:306871293/797162003050420
+qadd:8/17901539,=1,3/89155358:16/17901539
+qadd:5/5040389,4/3388433,-1/7168517:37103721/17079020420437
+qadd:-3/1713461,=1,1/4488431:-6/1713461
+qadd:5/516179,-1/59578,=1:-218289/30752912462
+qadd:-1/244201,2/201199,9/174458:287203/49132996999
+qadd:-1/41212,3/27175,=2:96461/1119936100
+qadd:-3/13547,4/29889,0:-35479/404906283
+qadd:2/1907,0,-1/9340:2/1907
+qadd:4/1341,4/9919,=2:45040/13301379
+qadd:3/160,-1/799,1/705:2237/127840
+qadd:4/85,2/265,1/5:246/4505
+qadd:-2/59,3/89,=2:-1/5251
+qadd:-7/55,9/74,-4/33:-23/4070
+qadd:1,1/2,1:3/2
+qadd:2,4/5,-9/7:14/5
+qadd:53/70893980658822810696,=1,9/9193530480905424214:53/35446990329411405348
+qadd:86/71933586324624884067,0,7/18408383381035284932:86/71933586324624884067
+qadd:35/378921420794267711,24/6551623471410322667,=2:238400935598423718409/2482550474295871845608778066489505237
+qadd:36/3722553911462108789,7/3244440092917636530,65/8189167080175627777:142857720725269676603/12077603158395035547949185323620462170
+qadd:74/204211327800791583,=1,-4/261650327849481535:148/204211327800791583
+qadd:14/190596241295804639,=1,5/7319468293717642:28/190596241295804639
+qadd:11/20832946214725250,=1,34/81808092645053823:11/10416473107362625
+qadd:-2/36273895397703103,21/88730391521225765,-11/10905700152968561:584291020309313633/3218596940638185709301052104048795
+qadd:39/8019234291976340,-41/686183563094027,47/1842385817838468:-302027447010362887/5502666759754131835671079321180
+qadd:27/3512663969871511,=1,-21/6043832798535571:54/3512663969871511
+qadd:-5/2985747324014,45/607698145828948,29/712218076096765:-1452066049782055/907216556358525513388378636
+qadd:19/46107312122174,92/20099305290153,=2:4623759515752915/926724942451947423255152622
+qadd:17/10280669487307,=1,29/71287679743652:34/10280669487307
+qadd:7/48006164806589,=1,=2:14/48006164806589
+qadd:-21/5174158635853,55/5726484671487,45/4364076509257:164322546870688/29629740116054290765023411
+qadd:2/515061581267,81/3885600123095,62/1777317903213:49491188328817/2001323343572560546061365
+qadd:59/587566787929,17/530520857961,37/408187963651:41289366014492/311716436441482018352769
+qadd:87/16848388346,=1,-29/793777748404:87/8424194173
+qadd:13/40356316605,-16/35824973661,12/36053750683:-59992136029/481921326476367313635
+qadd:62/58964244603,=1,-41/7476886656:124/58964244603
+qadd:49/2379119051,-9/250852979,16/749619475:-9120275488/596809101339002929
+qadd:35/1381737807,13/332249103,=1:365324816/5667668480949841
+qadd:-29/262819147,-44/212418643,12/429833273:-17724183115/55827686560157521
+qadd:14/189466127,31/78740185,-7/602930208:6975812527/14918597891213495
+qadd:19/15866903,3/8919802,67/8901141:217076947/141529633113206
+qadd:8/44756143,33/6935255,44/26346673:1532434759/310395264521465
+qadd:9/9886228,0,=2:9/9886228
+qadd:-31/5061520,-19/3104202,43/3631883:-96199571/7855990253520
+qadd:-31/302786,=1,31/132480:-31/151393
+qadd:10/50561,56/854269,-17/764873:11374106/43192694909
+qadd:-12/40781,=1,83/13428:-24/40781
+qadd:-7/5458,17/6090,1/14614:12539/8309805
+qadd:85/8919,25/1261,=2:330160/11246859
+qadd:25/2609,3/832,-17/7121:28627/2170688
+qadd:29/910,=1,-19/91:29/455
+qadd:41/715,2/15,64/97:409/2145
+qadd:22/3,-3/31,22:673/93
+qadd:35/29,=1,4:70/29
+qadd:-14,9/2,-20:-19/2
+qadd:-60,=1,43/2:-120
+qadd:375/18696391582109365451,-131/32949770573031503434,166/56750232802998421883:9906936667630486913669/616041813174061083543307811398267458734
+qadd:615/80348516296708248277,=1,=2:1230/80348516296708248277
+qadd:-150/1530888833706527119,136/9537020524274172927,=1:-1222352197257038250866/14600118227441300399114525155221107313
+qadd:89/1394353050192727085,=1,819/2322159924711043043:178/1394353050192727085
+qadd:62/46458468892037221,813/119745041246081149,-121/356270572095961665:45194927766483291911/5563171273706775007904337294446929
+qadd:809/639945078105944091,400/118384885068174771,-713/209608760084814514:117250467754177008713/25253274840505439393971462380909387
+qadd:1/576267190309129,=1,207/61006148560056413:2/576267190309129
+qadd:-515/3615716945775737,83/23367471127892459,454/27760785001119423:-11734143124365230214/84490161337046038094355667467283
+qadd:73/835205561268243,353/4576154733864164,=1:5197412055370031/31587023826011126162743214412
+qadd:159/1356415561313968,=1,610/1188572111871663:159/678207780656984
+qadd:17/27804219463543,=1,480/45536329454957:34/27804219463543
+qadd:-313/103858729128189,97/192554775266034,53/819834763511200:-16731782644278103/6666164748898110732454544142
+qadd:-497/99654168988628,739/9692326546155,144/61549637278907:68827344589157057/965880747523495532712125340
+qadd:-215/35851399647701,309/1276360474687,-79/2088545670863:10803664989081904/45759309472532992928244587
+qadd:-121/9491608537990,-109/8274027606869,1/42153880273:-2035742671072059/78533831076922767571453310
+qadd:513/9899067246839,413/3814421378956,43/320124503991:6045112940348935/37759213738065792812120084
+qadd:371/929964631846,19/164386836347,-347/394487184823:78656844289811/152873943743766506506562
+qadd:149/158337939815,305/905893441427,-73/931434015171:183271194416198/143437301207471553716005
+qadd:601/39399444858,=1,100/29792912589:601/19699722429
+qadd:7/24017912572,-55/47728203251,=2:-986887768703/1146331812901164171572
+qadd:497/5699936840,-145/2007901849,=1:171436377153/11444913720219217160
+qadd:-307/2244804442,112/2757559041,399/2539679446:-595152528083/6190180784314060122
+qadd:-15/24574214,=1,97/256299894:-15/12287107
+qadd:-79/117243052,17/136766977,280/170126053:-8811459299/16034977796293804
+qadd:245/15098288,971/75107317,120/16937981:33061730313/1133991902973296
+qadd:431/62180997,-385/41204984,-169/77089643:-6180335741/2562166986489048
+qadd:-917/102195,=1,=1:-1834/102195
+qadd:63/1841195,-479/6792243,=2:-454021096/12505843850385
+qadd:-164/387359,-783/642485,=2:-408669637/248872347115
+qadd:203/17726,557/813213,584/477219:174955621/14415013638
+qadd:696/29969,-780/92741,687/81050:41171916/2779355029
+qadd:139/11350,57/11570,949/42570:112759/6565975
+qadd:116/1819,288/689,=2:603796/1253291
+qadd:101/1329,260/2321,-115/2808:579961/3084609
+qadd:-995/559,-419/64,844/991:-297901/35776
+qadd:98/479,83/90,-941/427:48577/43110
+qadd:502/31,531/97,=1:65155/3007
+qadd:895/7,457/97,-217/22:90014/679
+qadd:60,=1,559/8:120
+qadd:842/9,-78,=1:140/9
+qadd:4707/49292519774798173060,-3367/70976135186689855734,4680/92255023230843683243:84058377121001851123459/1749296273614329067191168098769082663020
+qadd:1609/2121030704455118221,9004/45879979595713054965,-1909/56276212991908059822:92918647632416189900569/97312845442281711047521870162146017265
+qadd:1595/6629759211105345266,=1,=1:1595/3314879605552672633
+qadd:6064/3080056685556987183,4508/1637245998798276241,4554/192867820573257707:23813155275203645346388/5042810484500057739317394353730419103
+qadd:5984/719002302690645499,5551/827085169170104629,-1133/281319473813875339:8940459434549679264885/594676141154587307208842285377914871
+qadd:471/5383706422635043,-1059/135831330372294919,4069/661509955962879771:58275211503780396312/731276005720386541831883100246517
+qadd:317/23905256796561588,9403/29217659230012136,1579/93558964298111076:58510781908495614769/174613911721967007022035077857992
+qadd:37/3959930712621791,-553/29796300050913566,-467/11895602422350163:-25287874004559267/2743983341723415461995269514342
+qadd:4808/5483375732140019,-1167/2909491781718641,-442/1776182590086113:1084248143870831965/2279119518390974491600667770597
+qadd:-3671/9168542776331636,-7/406053390120221,1769/5947573797737151:-1554801794565652743/3722917876791723943159405611556
+qadd:1006/103477396982149,-8126/225516229246559,265/155176584822067:-613988001254904420/23335832379663506318642675291
+qadd:2623/84239743205954,3169/121906161822547,-5709/26194735454912:586715608680209007/10269343767154832537421844838
+qadd:443/2686896931288,3316/28495742324937,-3677/558065798916:1266668474946947/4503830741626282579878168
+qadd:4417/89265364740400,-7113/54425110575655,-7945/40916976250387:-78909765197159413/971655469314488996726992400
+qadd:-597/8004050520667,-963/5824074581732,5137/5348060857045:-11184873176696325/46616187188315454846655244
+qadd:5937/5559132885590,-4758/7557504569075,7304/2395270970465:3683710071392211/8402634436588302845425850
+qadd:4329/271647765458,626/121599326283,-7069/977356121708:696454984655815/33032185265975198932614
+qadd:3644/7586698567,-2933/927690827006,1427/63030966192:3358253586712853/7038110667865465100402
+qadd:4385/67179997993,-2494/15819866041,6466/4511530241:-98176802404757/1062778568883908855713
+qadd:-3914/47589537237,7583/20994047283,5647/65572699238:8445477569773/30275666513020217487
+qadd:1511/1463679102,1175/4782029924,32/176197467:4472735080007/3499678632448724124
+qadd:2671/2245073493,2492/4004524047,1097/1196765648:1810089652677/998938976666754019
+qadd:-6310/734134819,2131/871643491,2948/276012457:-3935629128921/639903836497813129
+qadd:-8499/333851789,1381/107324058,4694/778673201:-451097848333/35830328766039762
+qadd:7387/32996439,=1,-2169/53667347:14774/32996439
+qadd:64/927251,1425/83805722,-97/55678833:514222991/5977610733094
+qadd:-229/212766,841/1773874,-1644/3034871:-56820235/94355018871
+qadd:649/6801849,=1,6442/1282895:1298/6801849
+qadd:1093/555053,=1,=1:2186/555053
+qadd:1472/313297,-4055/65502,-988/274137:-1174000391/20521580094
+qadd:7186/53795,8849/16267,543/16231:592926617/875083265
+qadd:1855/76431,9227/21314,9319/78236:744766307/1629050334
+qadd:3649/8263,=1,2945/1888:7298/8263
+qadd:113/5086,-588/193,=2:-2968759/981598
+qadd:4457/114,=1,4229/115:4457/57
+qadd:-1210/279,18/101,2941/205:-117188/28179
+qadd:-1529/14,=1,=2:-1529/7
+qadd:1447/94,=1,=1:1447/47
+qadd:3859/4,=1,3307:3859/2
+qadd:2680,-5349/7,3131/5:13411/7
+qadd:26355/1842957535448256407,=1,=1:52710/1842957535448256407
+qadd:-23972/10860515422884440037,26937/77294406487002446441,=1:-1560351808360184484806983/839457093754789179857466996851368558317
+qadd:-40520/1003897140843598099,=1,=2:-81040/1003897140843598099
+qadd:53983/154204493365472465,389/90815930118883934,89726/3798744434445137383:4962501903526880198007/14004224493496648610131716407877310
+qadd:6730/8025480371035471,=1,=1:13460/8025480371035471
+qadd:5789/275109143231142112,-70061/298583162637001399,=1:-17545923755411446410021/82142958056310217788247049711814688
+qadd:43609/16618250357288024,=1,5530/63408107485667383:43609/8309125178644012
+qadd:87785/73225998153574891,37715/66514284957194283,=2:8600675025329377147220/4870574907461862714813485677548153
+qadd:29071/683129957825918,81512/615183458604239,24291/9113716458411940:73567287447390059985/420250250131516159851218866402
+qadd:59555/7990017410441913,=1,78329/5337044591694823:119110/7990017410441913
+qadd:5029/36615500243388,=1,-5844/782117748680987:5029/18307750121694
+qadd:-95034/708404684023045,7237/43582118287425,962/306992443764355:196988333789525843/6174755346891655642926741825
+qadd:81727/59355557665587,33706/37108442588563,-69327/385353327593:5033400114111763723/2202592303945575671784881481
+qadd:18580/8202880287033,=1,=1:37160/8202880287033
+qadd:3529/570956288395,51454/91669081267,72122/5210249411885:29701485050867573/52339038400785943996465
+qadd:1795/316792972368,=1,=1:1795/158396486184
+qadd:-17887/290287394860,-22309/449346280424,63263/662079031487:-3628369602468957/32609890283578494055160
+qadd:13131/63340483459,30113/382543142829,=1:6930545986888466/24230467610714148965511
+qadd:-14617/14636593116,1341/3731854192,-18413/12969994431:-8730210338977/13655407844135735568
+qadd:12677/16187316610,-88834/43865688355,2573/8033027431:-176379750491281/142013557143595015310
+qadd:66701/1078856211,28387/6472397775,-25495/5284061884:51371210583548/775865171069036725
+qadd:2351/2179309208,4443/1189508696,5983/1449971042:779950359715/162019203386804548
+qadd:98854/387184463,34645/227217379,11339/75650021:35875352504301/87975038872382477
+qadd:46993/558998125,79614/180403205,21187/172641639:10596352907263/20169010667798125
+qadd:-95664/49177319,32505/7903417,=1:842436270207/388668858999023
+qadd:7609/4376152,=1,-49134/16441549:7609/2188076
+qadd:-39475/6548191,9273/3028760,28453/1580168:-58838925857/19832898973160
+qadd:-71284/2152619,22629/219994,6307/1044349:33029563055/473563264286
+qadd:55471/884276,=1,70589/439282:55471/442138
+qadd:99253/702279,29725/193293,77332/452861:4451128156/15082846083
+qadd:4672/13301,=1,99701/23262:9344/13301
+qadd:11647/36600,-12718/86193,48531/86404:2942137/17238600
+qadd:81747/4862,86325/5233,34995/6364:847494201/25442846
+qadd:-12670/7457,-5355/1898,51394/8063:-63979895/14153386
+qadd:-23034/127,37704/779,-22033/804:-13155078/98933
+qadd:21121/777,88921/734,23573/138:84594431/570318
+qadd:93724/99,-81002/97,-29731/3:1072030/9603
+qadd:46063/35,84170,=1:2992013/35
+qadd:-53,53087/6,84985/2:52769/6
+qadd:6484,-25157,36395/3:-18673
+qadd:502735/93903639167159766403,=1,-182075/14327482370605034031:1005470/93903639167159766403
+qadd:964341/54574070369775729943,105355/12364735662003164536,891428/78644454680386798849:17673472736839515719955541/674793954121836196578645015875330901448
+qadd:395315/2495365929584166774,465224/7310483990485507083,179846/4219676087482572977:1350282699307880878594507/6080777559542678797435646824476753414
+qadd:484689/8598175504270279871,=1,455252/2180188091947909803:969378/8598175504270279871
+qadd:721437/15467677986707891,167201/325770348193492422,29365/5095805222384074:237608993916724138533505/5038910843474647501780261636102002
+qadd:305023/828712715944217373,760576/326121435327718203,856883/159328170084137681:243257847069985220706839/90086993466019930569059540240313573
+qadd:552495/79059081794978678,739237/4377984896396103,=1:60862213214209017915671/346119466021360760402283927291834
+qadd:-324714/14566706981425225,=1,898113/17904108312665273:-649428/14566706981425225
+qadd:678715/9330341670794893,305282/6752459700030591,-181029/707344352338564:7431381051249869095391/63002756119558606430363386571763
+qadd:29371/8832474155792490,=1,139981/1228293392110586:29371/4416237077896245
+qadd:-410473/489580012740170,138771/888182189776802,26594/728753620910729:-74158825009071779069/108709061946629702972179884085
+qadd:159641/107674771231896,751942/36141035619445,=1:86734773896978161277/3891477742407545118101817720
+qadd:74575/96461557770386,689363/40797971566422,=1:17384884394708131192/983858972792245290555894723
+qadd:82781/8818234639538,=1,755413/85622526494566:82781/4409117319769
+qadd:540719/4870455998403,227043/4599456084178,=2:3592816235626056311/22401448474575913801567734
+qadd:252638/766528476245,158438/3053066657539,180745/2135691256678:892767892946643192/2340262532877784911661055
+qadd:-110463/878079093193,79446/268839262339,12485/16768131207:40063080202058121/236062135689304156158427
+qadd:-173279/107650733329,=1,-23166/462291939529:-346558/107650733329
+qadd:227603/47564019356,=1,-433003/39021527209:227603/23782009678
+qadd:-488093/80889009444,323575/34893143332,-148268/9979738867:1142820277812053/352808975064124203426
+qadd:-39438/15658613,=1,973663/6699939467:-78876/15658613
+qadd:881284/8851714483,166494/3388645931,694663/5162409252:4460116791788006/29995326265191718673
+qadd:-114870/51892709,-65507/276496014,395733/970026370:-35160432816643/14348127194161926
+qadd:805009/674975377,-21652/70238877,=1:41928361272089/47409512483131629
+qadd:531750/53640289,-12447/5407124,-742474/12677537:2207577509817/290039694018836
+qadd:737071/19678454,-571315/70114882,66254/4831011:10109262560903/344938120038107
+qadd:-19051/242105,785139/2763106,252071/1451468:137446145189/668961778130
+qadd:-233713/2488948,-648637/4197650,196342/374913:-1297734569163/5223866286100
+qadd:122954/95949,-26357/1232,-122201/117397:-339635495/16887024
+qadd:-223119/635008,418877/230651,-13963/37538:214527625547/146465230208
+qadd:-350850/61369,36223/4210,=2:745890787/258363490
+qadd:-126959/62232,284090/70243,-7211/92126:8761507843/4371362376
+qadd:-711695/9271,-22121/1677,=1:-1398596306/15547467
+qadd:861190/3059,=1,=1:1722380/3059
+qadd:346850/883,=1,244382/179:693700/883
+qadd:-130222/837,34787/12,7523/70:9184685/3348
+qadd:59611/13,=1,284730:119222/13
+qadd:-312539/2,=1,264288/37:-312539
+qadd:25774,76897,818889/8:102671
+qadd:342195/2,=1,=1:342195
+qadd:-9963421/64053026836845890001,300354/3200175405137875241,1526802/10904004442804863547:-12646112012680203626199107/204980921107910491468445220168747365241
+qadd:1544746/18424173097448569597,=1,=1:3089492/18424173097448569597
+qadd:5502939/3595837892490654503,6889036/866793862132267183,7407877/6872500389210051386:29541770440420524774479945/3116850214433526564127456310938075049
+qadd:265311/258067740607743460,5963570/5903711115389815401,=1:3105324535591307979606911/1523557388749470699660729400565027460
+qadd:60563/46036455525940547,=1,1505826/654445038221898587:121126/46036455525940547
+qadd:-954257/72800654329359791,6813983/869337311132906228,7975903/926820989228750004:-333508793520619681655043/63288325083401809422309080476678348
+qadd:9224701/60870194897007141,=1,1821883/30701883983078087:18449402/60870194897007141
+qadd:-472292/38402815300459203,=1,516735/14385919705031017:-944584/38402815300459203
+qadd:289537/1490184116945967,532162/949630593545417,5373871/9041027854950185:1067972553205559092583/1415124427467351741680749483239
+qadd:235368/2501151346101235,-1497627/1230306186302420,3634873/991873798011092:-691243416109985255757/615436394797394918565529097740
+qadd:8661005/52512373464448,1561891/832613630894407,9705649/42723536578103:7293289423747373650203/43722517937117159639456542336
+qadd:-4730153/288796071652629,9865756/808268774461965,2287239/939894762570958:-324681130548077552707/77808282301366757649284251995
+qadd:1610793/18198109357633,-4540937/36733999418553,1841325/14250960840026:-23465598986712679592/668489338562054530332365049
+qadd:435304/45838403876965,-4386838/12812518890187,=2:-195508311263843424822/587305415569635079893842455
+qadd:8986417/9112103484695,8469481/5806694255278,4459/11976141472:129356163303090652221/52911198958077101695970210
+qadd:3544217/1265421249547,238276/343196380555,6363702/6030500114467:216840279994080201/62041141817416547622655
+qadd:4182082/59852165789,=1,21252/891696437201:8364164/59852165789
+qadd:-2035517/202890303722,1349377/178781840567,3182749/193387650969:-90137966399936945/36273101932616810690374
+qadd:-2767593/32666510356,2043425/57040767333,-2433227/14327142465:-91114064461230169/1863322816797631000548
+qadd:-1069001/77822361247,7895459/95688698401,=2:512151948229509972/7446720454217853266047
+qadd:1842385/9174964821,5302182/734041147,376177/387991044:2941159983715001/396164805934793511
+qadd:9881884/4806155721,110617/6086759637,=2:20226765065368655/9751304883906477759
+qadd:249851/7404273,698298/65948941,8016669/79629599:21647797885145/488303963224893
+qadd:3895008/857366795,9035727/613001216,2322321/896685634:10134576938814693/525566887893022720
+qadd:-3407547/17228942,84529/3672798,7629340/77644423:-2764721642047/15819605929929
+qadd:-540110/78141351,1842606/10051715,185431/9635562:138554690412056/785454589966965
+qadd:-1238471/9333511,=1,=2:-2476942/9333511
+qadd:1535971/4556655,3336373/6869142,=2:2861500402133/3477812248890
+qadd:6488119/859164,3475243/436240,3474202/209253:1454045177353/93700425840
+qadd:-1099325/87072,898870/374541,6289012/998611:-111158625395/10870677984
+qadd:-1328010/3161,1029437/61682,=2:-78660262463/194976802
+qadd:-9495731/39366,-5924095/3668,-4200041/90360:-134019132539/72197244
+qadd:8057514/1165,-3725111/9551,964934/671:72617561899/11126915
+qadd:6949552/3251,=1,2473528/7057:13899104/3251
+qadd:-1375009/860,2567011/520,-893444/341:74631239/22360
+qadd:777497/375,3031933/307,218759/18:1375666454/115125
+qadd:3512451/28,-4974729/35,-98751/8:-2336661/140
+qadd:1033229/12,=1,=1:1033229/6
+qadd:8918304,-107206/3,=2:26647706/3
+qadd:3773925/7,-2087107,1743275/6:-10835824/7
+qadd:91004807/59072744843943270902,66857083/90169331108143216589,49327406/40230329853973228555:1105024907262273351275240199/484231808118216434486399701089462490298
+qadd:23684903/30280432954739902140,=1,-97033093/13835661280927216350:23684903/15140216477369951070
+qadd:76895129/1344620316434429450,6943146/540322216560075233,-26842834/4119156804632661773:50884041715523364389289757/726528229807560676143208003430811850
+qadd:-3500080/5785508369822968503,17193686/1077431321752969609,-11569258/210771686269137723:95703118440466862159403338/6233487929911229465420510455923225327
+qadd:64737803/21853152068853546,1344114/484446976408948829,-57693827/360425471050724706:31391406050348051744010931/10586693444761065095093481009197634
+qadd:-30681157/96481087551474991,3533117/67968489447438645,-14011465/246504080723880149:-1744472925183103649335318/6557673781119831941716936724427195
+qadd:10201843/20635577001553626,=1,96155350/58811028695386393:10201843/10317788500776813
+qadd:-1930287/1991695532199008,-21005107/15139766280889058,85232497/42294449858268301:-35529935900150302716751/15076902430091964207158012827232
+qadd:48012711/4771810484651750,562029/68126124683089,-87432667/1413385161729655:5952815810837457145029/325084956041456469467279255750
+qadd:5866387/534388661369540,-74280761/494786664687655,6822321/9629582541211877:-7358437275760743013491/52881676681187080549726205740
+qadd:46722374/986410508713539,=1,21676529/310079888805331:93444748/986410508713539
+qadd:-56303815/448280769982579,=1,57376103/953365009027015:-112607630/448280769982579
+qadd:1417269/10344858882164,-51156177/69004831036706,=1:-215702512068721225557/356922619631147062206355892
+qadd:80037569/9275345057228,18450452/20021432962757,-15521502/12373106437439:1773601130997360284789/185705699269729891757657596
+qadd:6101405/2640485648371,-20543668/306400835399,14230627/825967431997:-52375784929790929233/809047008519944563485029
+qadd:27037665/2725847596723,3212701/7881968418975,3465591/735049950650:221867354952665272198/21485044672309587701018925
+qadd:4834099/48161095106,=1,72181809/308298507595:4834099/24080547553
+qadd:2911944/163084814009,-10109608/403642872445,-7803617/736030226402:-473338099824915392/65828022778751336082005
+qadd:21969634/11650585561,=1,-2791714/5600760747:43939268/11650585561
+qadd:78829897/49012267358,=1,-7604951/47216367175:78829897/24506133679
+qadd:19445492/1297091607,=1,62885411/4219108918:38890984/1297091607
+qadd:52380328/2810974779,49183495/4765727228,-4976759/496257510:387883919349243389/13396339041501582612
+qadd:8745425/897077767,15774302/979761841,20884293/386716906:22719209312471059/878922564516089047
+qadd:-57659740/421464991,=1,43283156/421488827:-115319480/421464991
+qadd:24026071/1736369,39164903/1294124,-6554987/6925344:99097438564011/2247076795756
+qadd:14218249/33339177,82993699/83617031,12153/57562:3955829388244442/2787722996723487
+qadd:87835945/5064396,2236259/32882,73177891/4440892:7106761339027/83263734636
+qadd:64270453/747130,52462151/4978177,54483440/786411:359145737780811/3719345382010
+qadd:77515742/83997,-78232069/771459,=1:17742985902595/21600080541
+qadd:16151167/91103,-68440793/300034,72464239/286942:-1389262325001/27333997502
+qadd:-47905567/27277,-20089455/87101,-96050621/89657:-4720602855302/2375853977
+qadd:-2982404/49995,=1,88907825/1729:-5964808/49995
+qadd:-98481971/1315,80677685/7857,20839038/961:-667681690372/10331955
+qadd:-6211399/6793,57937621/6057,-3438577/359:355947815710/41145201
+qadd:5865679/34,1860899/8,=2:55097999/136
+qadd:23345429/165,50130524/773,=2:26317553077/127545
+qadd:8189395/4,-30602711/48,=2:67670029/48
+qadd:31167001/15,26011293/89,=2:3164032484/1335
+qadd:87715029/8,57210911/3,8398329/2:720832375/24
+qadd:89586337/5,-20657924/5,4144685/2:68928413/5
+qadd:45374053/1934947640595205378,-878342702/35405417199994412197,25786213/6017346122507972907:-93059862349259521226926915/68507628475418090621542740789603195466
+qadd:866238635/23517962979026052651,140081155/7113881091341386771,591317773/7502259793356123703:9456742063465083425960989490/167303992143360186992226567080400879921
+qadd:187264688/2749316430368891609,74030301/204048834975005675,777410733/9632694272612564641:241743864302812512377748709/560994814594413644669245568234881075
+qadd:313283613/6685249134338162957,-295002604/168462092705930067,83793911/3114652596872305375:-1919389489962049170976247957/1126211059431114336488157420891928119
+qadd:622725611/642973530889486819,466130322/105261688931011189,-110468698/89768733490717633:365258608545449316873087197/67680479799363075510639822957017791
+qadd:172273567/735309213392006870,178508035/382275018951483603,=2:197114483889767511301022351/281090343484629926962696208068352610
+qadd:17553367/48463183083977111,292467608/23785726423353699,43459439/32702598236409962:14591430817907573630275021/1152732014440382376433523573183589
+qadd:72973408/18357258425372587,1146729/70850265929795,=2:26220985959472511209283/1300616641179617610304859529665
+qadd:201183991/7736480258952282,409452756/699726655055405,=1:3308496964840732241410547/5413421453498853777223961184210
+qadd:588622837/3660268385543296,96365803/346258205753288,877283956/8025277960045801:69567523696677926868093/158424745469213234294102294656
+qadd:928254321/705783785204222,=1,489283333/807148845748726:928254321/352891892602111
+qadd:152397935/976211791425421,-226290007/366059549380471,533087429/48259007602879:-165120253702526748340562/357351648469091954890550353291
+qadd:459988615/27514620962218,604652543/83262415165680,99455011/26970436598135:27468274284051179676787/1145466896841258418745139120
+qadd:144022423/2685255995458,33922842/6738872265491,=1:1061640226826987556329/18095597153535342866139878
+qadd:501792430/5780638369569,90233731/2388030172166,=1:1719904030652463235319/13804338840911244605216454
+qadd:464061973/6928147630370,-406560643/292003731780,-29850340/7482218860353:-268120432750896392597/202304496239080406215860
+qadd:29675674/18924786675,93377112/3121810099,=1:1859783743715414326/59079590163435630825
+qadd:125587910/783335021243,14748484/85895896271,-115687727/148918581825:22340490117693729222/67285263730130309484853
+qadd:-888517823/89522905525,=1,28721/1399760:-1777035646/89522905525
+qadd:994205969/53771940024,-568804915/41456863842,391201703/96086803818:1771819618833375823/371535999349193035368
+qadd:-84977861/360134264,-218217210/484944491,111762569/4111268304:-119797039864397191/174645127347139624
+qadd:-701405341/632889150,630062610/2192126171,-791346445/5983383139:-1138809214795597811/1387372869056944650
+qadd:-234546662/963657213,=1,=2:-469093324/963657213
+qadd:-452856/2789081,8372197/60736948,-242353549/286862486:-4154355742531/169400267664788
+qadd:-187052767/74234724,166350269/20205255,=2:952168605650019/166659058697180
+qadd:-274903712/23604721,38495599/2095174,-791027856/11974547:332706764236991/49455997716454
+qadd:-404894266/6164955,157832653/6403878,463040423/4614886:-59994899225479/1462208136870
+qadd:-540899545/680681,-21287447/2541780,2338951/144008:-1389337606201507/1730141352180
+qadd:78913331/78528,-590670400/833879,-8890225/542326:19420004369749/65482850112
+qadd:177364406/602109,=1,99001438/992219:354728812/602109
+qadd:518975591/39351,286741895/4956,-6511822/1385:1539513704349/21669284
+qadd:568231946/63665,697042925/7473,688346609/54619:48623635152583/475768545
+qadd:294003077/2932,799278104/9869,102543194/2815:5244999767841/28935908
+qadd:164683586/4895,285199167/5854,=1:2360107634909/28655330
+qadd:384813481/51,67752725/82,334380330/11:35010094417/4182
+qadd:-371677859/928,302076121/569,=2:68841938517/528032
+qadd:63675311/26,781198705/94,76504922/27:6574161391/611
+qadd:305503526/41,-254218383/23,-132508301/80:-3396372605/943
+qadd:642014667/5,421175863/7,-384744890/3:6599981984/35
+qadd:-20761287/2,278595273/5,413571671/8:453384111/10
+qadd:3167550432/27903875703136810681,-4353020263/68180687168471384344,6171494422/98306365101160490945:94499628742560480702887407505/1902505420103480375489882725653115378264
+qadd:-3183422884/37568196826955204211,9427961279/82738779554479999510,3089033603/9902435878598192629:90798980778421373608402959029/3108346755524761642315503554707229936610
+qadd:-5214220143/7727885703296351326,9213475679/2261661519763659362,-7239565223/2154991508915553068:14851971481103269456702367897/4369465431069270378226759286135253503
+qadd:519540517/134490908117547849,304460068/27850900631653987,987127340/519856570607360343:55416782343935509070885011/3745692917842731715413863484123963
+qadd:-3438305188/54619481101719075,-8594462002/390499828982107557,3593936628/135385731106207271:-604027547599991619791064622/7109632676437584813745363082849925
+qadd:-3992299182/540033726318821255,1110234925/68696689237726709,7386509615/931861031447596258:325306567387162498253078837/37098529074815619108104756710399795
+qadd:7394803302/93918095118354223,709650140/69209592401912969,-1612636291/26972979365753121:578440311773013525199364858/6500033082305387937149168159618087
+qadd:-3798450956/49564671078478937,8201952752/84323457683098803,=2:86228571904512932003378956/4179464444262829754322889925412411
+qadd:-9219410394/2493025593271873,=1,6505447590/7492751055706253:-18438820788/2493025593271873
+qadd:4539114361/8367641580192862,-1348803394/4603788574100933,=1:9610819468569602203625185/38522852699063773959572394140246
+qadd:2699722113/384212226724151,-647713391/102207743232507,1954070238/94962673621469:27073100289464582521250/39269464615811789500145176557
+qadd:168180211/23676230652675,-2799553761/104480802434474,2701278780/97731939901727:-48711277171120629966661/2473711577215174081940317950
+qadd:7857451474/65235454327413,2128537376/31498366243961,2221032207/18007954017209:386352987048442714936802/2054810232496045180328002893
+qadd:857071657/98686012424000,2073820807/52588250038741,=2:249729004524185769231837/5189724696679612807318184000
+qadd:2786190922/1961053446085,-4894735831/5462640499350,1754691331/2787361615253:1124224160076048145813/2142505995194760540508950
+qadd:3344367971/2002173783671,2783409797/7740436696732,=2:31459738694869961195559/15497699428361765200663172
+qadd:1886117201/422471806113,-7056920135/27481905959,-158290687/733655902149:-2929515699483111484496/11610330445926347327367
+qadd:5224375095/163575252188,=1,2792946472/109584621039:5224375095/81787626094
+qadd:8503914901/50951147588,5076419507/35985026241,-4565632313/3078383356:564663000383475116257/1833478382963243856708
+qadd:724347429/20249465581,3428823/41714000,2510643935/61823728396:99647261975147163/844686207245834000
+qadd:5343861871/442016043,=1,-5208128746/2708679643:10687723742/442016043
+qadd:9071089245/73007971,5216095151/4614034969,1604438701/1558498304:42235139506867257026/336861331209737899
+qadd:783186604/763828989,49730609/83655528,4913761943/765103417:1045490602777487/645439569459608
+qadd:8924999897/754869543,=1,-9645157610/502961879:17849999794/754869543
+qadd:-7684261227/59813341,=1,-2457478286/10588905:-15368522454/59813341
+qadd:355855462/12114485,2701511099/2628520,=2:6732557777029051/6368633222440
+qadd:3297355561/5434460,=1,=2:3297355561/2717230
+qadd:-992155139/1824719,-5941097341/619600,-1877283138/586285:-11455572523096579/1130595892400
+qadd:7275838099/179284,=1,6914524937/272956:7275838099/89642
+qadd:6041862082/922449,-5732991383/202771,9340070011/437822:-4063277752027745/187045906179
+qadd:-1436667881/18842,1512607713/43240,8383142315/71207:-16810482323047/407364040
+qadd:-118807714/9521,-9807321655/32654,1426332047/6126:-97255056570211/310898734
+qadd:3925687044/7783,=1,-3015747667/6013:7851374088/7783
+qadd:-2562020810/4693,=1,=1:-5124041620/4693
+qadd:3975212101/482,1639405105/322,-1189434281/368:517552889283/38801
+qadd:8766298199/223,-3219733643/528,1656354148/249:3910604846683/117744
+qadd:-1513168265/81,3248422098/35,2306426618/37:210161300663/2835
+qadd:2780622344/31,-2851908379/85,7370056704/83:147943739491/2635
+qadd:-1219272487/5,3254817416/3,6042779700:12616269619/15
+qadd:668084801/8,3276722729/2,8177104324:13774975717/8
+qadd:-28066364019/27142028496153875629,-83994986165/97945022620202828816,74560676951/94359392114426445353:-5028754966732282316332384444289/2658426595013981116986784879127641325264
+qadd:-3000528509/8658875177266760687,=1,3036743401/4590071950395407738:-6001057018/8658875177266760687
+qadd:-19793548593/942761710813665874,86192869057/7249541417045877905,-119695723/4978025286900417400:-62234813623148059219131076847/6834590068948699455368850293669113970
+qadd:92023085779/187292712323684346,26983243077/439795491723853676,-11509377282/6925087095539221979:22762551521651139809665123123/41185245256344513090796650857877948
+qadd:-39019146867/246528590445069470,28418521119/84449846740292087,98982289401/711557146503937079:3710816981145410193486195501/20819301680186352926550356806283890
+qadd:-42497869768/371989720063193939,-8478338149/81277488191100360,=2:-6607974742863148859707195391/30234390079646974039120816492718040
+qadd:88261843372/63085394341751879,-44784460532/26919006654835821,-41422100021/1786615630050841:-449324203944898245335311216/1698196150108560878202120263257659
+qadd:-24150972023/9515359277743228,42712236280/42853813844399797,35309213749/14159032046882283:-628538985474890673067967491/407769435150990797236812341324716
+qadd:5724825303/2203041349747678,27488395054/5646217321045969,59293151082/7082646499343447:92881678727922393840538219/12438850227925830110937189009982
+qadd:14619758075/4936846021982826,-16036864556/2323794990231661,39713546516/8749338469186367:-45198210415282107094702681/11472218053428795611140303453986
+qadd:14605450543/139939857109890,10799789228/278879311148721,-67807143038/835875361732289:1861492982610600772490141/13008776984352189991676650230
+qadd:65048626819/249759029072891,=1,16664913404/344763311872831:130097253638/249759029072891
+qadd:-16329783973/23223035673496,26102319760/44353999342379,7133401053/27271403075635:-118116124652153584810807/1030034508990285641359886984
+qadd:51518424902/90611385027845,21848929639/25416816549026,2259015995/982451260279:3289196130594630243043407/2303052950505897517817628970
+qadd:9823437047/2983803001614,=1,-86833764787/3363958851767:9823437047/1491901500807
+qadd:-98079469262/7501490848143,12931722520/6785167928089,-18159475732/2680006300059:-568478471106008568619958/50898875115673034643188727
+qadd:203196757/744982367287,10110532199/185236774284,56534913639/177096148301:7569807723954107571101/137998130614702004447508
+qadd:18053774608/289402099045,573966551/105073103957,=1:121357250637861762803/1788728049313487965945
+qadd:-87887709416/27708207675,6077181331/13094753558,5647506134/79889599187:-982480093181655186703/362832151038009157650
+qadd:84536683600/44724539921,14048255833/19894148141,62917100482/62400348937:2310087085710674796793/889756622726442436861
+qadd:-30706897551/6897893812,-35459830323/6252261713,31231362485/321173596:-436585704042722426139/43127437381107219956
+qadd:855281852/92743035,59782619892/1409591731,=1:6750019835289018032/130729815243843585
+qadd:-92900956537/439171163,11759229380/445905849,-96227598684/119216995:-36260765454744715973/195828990293832387
+qadd:82493426014/179464353,31442888876/890956139,-20219675248/552201081:79140902042897837174/159894867037013067
+qadd:23749016299/14965184,-98465907028/12423329,85060246231/4151941:-1178518573492073781/185917404377536
+qadd:9492555875/3149752,=1,10314585429/20597380:9492555875/1574876
+qadd:10417790685/234262,=1,28830989839/9136194:10417790685/117131
+qadd:21932976869/2808786,-13004555792/3211065,28289083248/7503535:11300400041688991/3006398139030
+qadd:-66836200744/46967,88530220745/490268,64385021287/164152:-28609651588628977/23026417156
+qadd:-77417153575/956591,18725852581/31923,43130968451/307644:15441594252736646/30537254493
+qadd:97474118123/10596,-23947620716/12055,49384521647/13258:921301504866029/127734780
+qadd:18734763309/24325,21131785949/50033,10659403415/5989:1451387105848622/1217052725
+qadd:-1439500917/9212,-33183518225/4942,-6451501592/4165:-22342898815751/3251836
+qadd:10232528693/1811,2932687043/798,34761925483/737:13476654131887/1445178
+qadd:14228896673/466,=1,-17513625375/892:14228896673/233
+qadd:5540039685/212,-15534067884/379,=2:-1193547350793/80348
+qadd:63449652064/71,828572732/73,=1:4690653264644/5183
+qadd:23839394581/78,18502903317/17,20062169746:1848496166603/1326
+qadd:98566503851/9,36994496837/4,27511550439/2:727216486937/36
+qadd:1606910501/2,-3681246287,65435551585:-5755582073/2
+qadd:750601900272/68617053518286344873,392311613561/52425272355238879732,-189516578487/12053234670522747307:66269776035679860138095215709857/3597267718910163826199560785077521814036
+qadd:728582633219/15054433453572577856,62100633056/55101558283029999661,34066971933/506753729147298419:41080928276086479104683504546695/829522742360026001203093417822576106816
+qadd:-579689114306/6008640125920920437,29545305921/385791954401533340,=2:-46112285663876043987863954563/2318085017474507283487811656942869580
+qadd:85157683276/9984413431548073099,-194463047535/4351994325185158469,110987855747/722945613070544238:-1570993709385158332729520696521/43452110594399688796381640689910925431
+qadd:-333254398312/3739752515251807,-222688186129/229969682138676072,343987180862/318762259733023233:-77471206755319178027151175567/860029697209772394782614685662104
+qadd:228232045087/269100475905208142,29685295504/987729914318359197,296390204576/285221182007931887:233419945485999538709461908707/265798590008880921671259700204981974
+qadd:186728741043/8484893283352760,907466508351/17668153885239362,242986408459/13685130290283387:5499454306559858179393716663/74956200115055216722781241669560
+qadd:167007555005/37196512845456713,32846177456/14691839559620265,643735617275/76387090563153388:525058780720595868923519779/78069314128972040645085253584135
+qadd:-406143410794/7443920130626979,569165220942/6593136079301147,=2:1559061670746557697064613500/49078778384672842351253263844913
+qadd:288899664973/5110051533246567,475174065413/4997103188916189,=1:1290608466212034033663878356/8511818270770826983316411657721
+qadd:285552853103/243786904599060,51739173381/25270326775286,-567539816837/84226741155405:9914673417298061239217159/3080287371376859806273415580
+qadd:750126891973/878577129895100,663130172971/179676426138219,-920208514541/740079136878614:717391123215580915464958187/157859598786325375229570826900
+qadd:318766376313/3618419265449,=1,34811188877/1841753199622:637532752626/3618419265449
+qadd:254236024269/14780919746920,-844586040520/76436593404511,=1:6949177131533900664879059/1129803152840031671306356120
+qadd:706710361987/1301067543579,=1,84203887945/2012418539922:1413420723974/1301067543579
+qadd:195640325029/3728726838817,603560861264/8341120578151,829455171841/8240881232572:3882373123270122662726067/31101760165560405628887367
+qadd:-70222263648/919970997005,-140598797839/277541553572,762482298447/448122269015:-148836412373857769622851/255330179749949459051860
+qadd:183632938397/738585229043,230841150433/35550437411,546670119297/439718525656:177024095248187490795786/26257027957782270927673
+qadd:-284412871457/19847149579,=1,71954251519/4976484407:-568825742914/19847149579
+qadd:80467423648/24677301847,35760826979/13928733407,-87061643423/13617181915:2003290013600243538949/343723558630931702729
+qadd:-271527910651/69743572,727102134527/552678311,235157903923/742370011:-99356886977216080017/38545759576066892
+qadd:594385696266/5016006577,171921164870/1559514399,=2:1789310745599888884124/7822534482310202223
+qadd:-274331202943/376136849,249566712436/202764467,=2:38246616684759927783/76267187706544483
+qadd:-177762749877/158322013,679117341835/140151101,=2:82605579510477149278/22189004434486313
+qadd:438527654989/19442480,=1,473198805899/30758263:438527654989/9721240
+qadd:205749903939/22577983,488255989076/24418833,755328978737/79282170:16048007965058596895/551327996353839
+qadd:-276465269559/4305250,=1,-6551354097/249518:-276465269559/2152625
+qadd:-77677567229/1108443,=1,403947412538/8640625:-155355134458/1108443
+qadd:-26363673381/34468,-404935701883/545635,=2:-28342266697745179/18806947180
+qadd:161513177189/516563,=1,=1:323026354378/516563
+qadd:63971909733/10957,29722925483/27477,-254713864821/72353:2083430258250872/301065489
+qadd:431338979813/33787,-14639411201/2198,=2:453461291380787/74263826
+qadd:604394639929/9703,-130898313877/529,19351109647/68:-950381575026090/5132887
+qadd:-436971275441/1805,-45135172974/143,150879980149/913:-143955879606133/258115
+qadd:133419066709/724,688077199855/411,308833205069/124:553003129112419/297564
+qadd:-752571481496/159,474015196916/845,-32200650919/727:-560554485554476/134355
+qadd:764385897608/49,-511836952661/77,814778276083/89:4825386205061/539
+qadd:320831977021/60,65509179103/10,=1:713887051639/60
+qadd:619010459321/7,670048524077/7,106364585881/3:1289058983398/7
+qadd:-966054954552/7,26919072829/6,=2:-5607896217509/42
+qadd:8601789733890/36226606798446835733,-9517603014260/49701591537140834451,5475796113274/19588834568871216561:82732177780862722364959957691810/1800520013873013869891754119384144237583
+qadd:2152113882697/44696374362534467140,556748656281/15909675605329183742,=2:29562040053204167968772348309257/355552408421137678797712040098560618940
+qadd:405932999909/48559005322063228,3790369457927/3702874233536819343,2557162633138/8338270525184407851:1687175416585403236677748248143/179807889613245206691727609459419204
+qadd:-6087806259569/972879120187377883,=1,7399937003904/6443577898545254653:-12175612519138/972879120187377883
+qadd:9620990949187/730309117665819684,7567489620737/569889108783714498,1735576396811/51095649586994799:1834917437585674959063670400039/69365868700532477556648779567429772
+qadd:8651924819461/863956468553652350,2187645516348/235829108485821557,=2:3930406211611089677582520538577/203746083749566560575560722713708950
+qadd:-4336348697751/46994132323169285,-8481317196881/25836479901410330,-4173835305205/32784713158384997:-102121625719989497206007233583/242832591050356154167841367542810
+qadd:9803783744995/7173215879645536,1461730234625/44252775572438103,-9376571794387/92339718365720632:444329948358750525431287428485/317434712454603074916166940258208
+qadd:1451028299837/7491788861639837,3708310594713/806013004930241,-8365440578715/8478738861000634:28951427689162292314899052498/6038479252673234548881051610717
+qadd:106500181351/1880557932860660,1907360387663/8006540878394810,-2341315210208/8571856456239177:443959976338708048693922589/1505676396363851684553219717460
+qadd:4027452706139/119900758316566,-4327345628086/101821781711479,-7365940733989/364587320094438:-108769612007597347818603095/12208508840350183550358061114
+qadd:6083358310044/255539217667673,=1,390223928059/413168482858447:12166716620088/255539217667673
+qadd:91210522789/5821394937509,=1,-2769366574049/39367880017274:182421045578/5821394937509
+qadd:1597250023359/36013018587610,665933164918/3231381509477,8810376679036/2323736290015:29143587637791868491339223/116371802364454460369779970
+qadd:68049078655/7615630087369,4706208009519/4980776034536,1596034611713/3058679589429:36179676534846948814094591/37931747827058819041375784
+qadd:1937588720533/7799363656349,=1,=1:3875177441066/7799363656349
+qadd:977734823551/117979135196,-1952291322312/890529662717,=2:640372220786512478954915/105063919473737223687532
+qadd:-9025156691504/937177282499,-361352397466/257871708085,-3807710093346/955531800671:-2665983829654588301357374/241671506616475707304415
+qadd:5896871870580/77613420173,-1845035969569/26828471132,8388653136749/65162440481:15004504808501131381123/2082249402567116945836
+qadd:231439434868/1670462139,2207560874293/16523176383,-2335974950174/54347294915:2503920488116666405057/9200446854606821079
+qadd:1929296372726/4735837665,-9028612240726/8555200715,-6233988999387/5091294091:-1050100968196714241828/1620641671109277219
+qadd:-269105387231/230611014,3594113298975/2873349794,-1154532309875/4520020294:13902050835756457559/165656527392757779
+qadd:2346217941151/799817318,-4884282294533/960803076,7966051335112/524910443:-826140075172001171009/384233469686235084
+qadd:4064314284160/311969293,199296652936/441645007,5304117147258/554326453:1857158546391753483368/137779680590770051
+qadd:815037963837/2968034,1418934409295/75864896,-339052747818/1710509:33022107966551620991/112584795367232
+qadd:7244018124286/72201723,6446019776692/10593765,7229442366932/73382069:180718386677888105702/254962695352365
+qadd:922615490114/3707093,59605234097/120775,-4190680399923/6307528:332391031902868371/447724157075
+qadd:-1218581321862/9688639,8211974626650/9377609,7971851835717/1568942:68135478463646641392/90856268284151
+qadd:-7077925805906/637155,=1,-2581658464835/734183:-14155851611812/637155
+qadd:217345331728/72451,-7227574835869/612249,3818947938173/281665:-390575562428408647/44358052299
+qadd:-3974762894203/14013,-1180890047119/1669,166220351784/5539:-23181691500703354/23387697
+qadd:-143792410986/14239,-1333280413059/7621,664497465190/6971:-20080421765671407/108515419
+qadd:5469270207451/9406,=1,=1:5469270207451/4703
+qadd:-393435064451/9103,4634513061154/615,1392205495718/1811:41946009831047497/5598345
+qadd:9578810210563/843,-4536594375665/136,4023125278157/374:-2521630870049027/114648
+qadd:993337628557/102,9593218874931/536,-4264424459806/127:755468647074757/27336
+qadd:547147143651/2,3730254823821/5,=1:10196245365897/10
+qadd:4901257128118/35,=1,5319057215527/23:9802514256236/35
+qadd:-6031845023279/9,=1,-1602500231005/7:-12063690046558/9
+qadd:-3297542082233/2,9743508972017/4,284781600324:3148424807551/4
+qadd:40957392574416/70276993727723336737,-10014910049617/17689665613055704872,-2779499153404/26725645738443989647:20704808283422464958622124875023/1243176519334238965594276156105347482664
+qadd:45844224448349/22079296648506779147,70206864303623/53740308116805165169,=2:4013800930951401093187151667305562/1186548204893097943291939751481539930843
+qadd:27961919364631/8718044862129208525,=1,-8519896737528/6252014363663191811:55923838729262/8718044862129208525
+qadd:-2067336322439/584317644440385925,2723713099539/473511695651648882,73786916799403/8182802497184968644:612605694933716051550733725377/276681238618144405533343878674785850
+qadd:32025894755248/66303294333949585,80751708273853/638681646107513563,-64873077706462/49077538736861797:25808455461998285269484001129629/42346697167557898041297541745721355
+qadd:19660637614444/956621220581308491,9683558119459/148734533812110639,10732473730492/212642830728841369:4062570985946694749593020498695/47427537092644392555022031027378583
+qadd:26463069132061/34590442491713868,1778591564927/1271271116297649,5452080117585/10453906972591852:31721334893010603543531044075/14657943479890240114084276365444
+qadd:26232104044847/79502877559485212,3370125338191/2578727156176402,63787406469289/92688221566095237:23970007227600682942443887999/14644016382629427726576098740516
+qadd:98696102763974/908742099728443,-35107937305612/133127339221267,-19866428041535/3060805116764176:-18764911111759790278837687058/120978417775194877383790397281
+qadd:-37908147551011/7228589226446608,-65775689566867/9504572716351133,=2:-835766185905903522330926482599/68704651939394172248397204806864
+qadd:-18185796452231/303760253880903,=1,18122968385557/178311473629270:-36371592904462/303760253880903
+qadd:14892304197019/46622881145226,-5611369712763/826515187978603,26394608317645/273451712601507:12047097379653626883559665019/38534519373850532904623599278
+qadd:-54139396579777/32007668492293,=1,1733479907912/25396380277249:-108278793159554/32007668492293
+qadd:-63788344296331/37589271154908,50915695251657/90027727110574,49591638223605/35445794413654:-174037989922283184534946429/153821665719064918309036236
+qadd:12071763393847/4649104873226,10020556788045/927371358623,=1:57781627015265173305975851/4311446702664405796927798
+qadd:18238074461897/2396590395463,68187595826700/5705685211381,-78696625586088/9509272732285:267478448989293363689511857/13674190377130981538364403
+qadd:-13345085506196/75622603113,-97672417230952/129165419515,-753859024931/4781291931:-9109966011214978026968516/9767825255906989950195
+qadd:3709838273470/57134914859,-5914995558694/134539418847,35401578919795/686522759833:161166717691666830854944/7686898241002684947573
+qadd:50811177302193/40048826548,32735197100597/82993263421,36780634570867/8850752755:5527991653268441530231409/3323782811400102100708
+qadd:-6542615556879/27016465451,76463178253406/72959925957,45891539817416/380667753:1588416066961789560067903/1971119318924808611607
+qadd:-21080435888478/3413079223,=1,81032696758521/2284760788:-42160871776956/3413079223
+qadd:96607459901/40160793,85203204881021/833797549,-4433713970891/1573415279:3502379337443843592302/33485970769296357
+qadd:16594106768116/498044839,23534220395438/517318473,=2:20305534981917169251350/257647795597010847
+qadd:25304409260441/118009964,72369014966310/788591957,71991883509399/461244341:28495118470309795185877/93061708456259548
+qadd:24936005724654/48277589,=1,=1:49872011449308/48277589
+qadd:24088512125936/40097553,-37235147981069/77180983,-72573429878023/38036452:366136725253403050931/3094768556434599
+qadd:32272280755220/7617329,65546010555974/1144891,-33329793981457/2504062:536233770828451454466/8721011416139
+qadd:95637195200652/7212125,33652777588976/3406657,98881012460311/8766053:568511159059561074364/24569236116125
+qadd:92571834195973/96535,59689565610747/775016,98663660317905/721679:77506784867459672213/74816169560
+qadd:78835501537635/372197,46671694263162/529757,859020873535/3702:59134723377739011609/197173966129
+qadd:20589023961027/22664,-69820834854036/30449,-24367466631311/33338:-955504210542560781/690096136
+qadd:-91531024180004/69325,1402659330981/806,21471287770931/22199:23465352631174601/55875950
+qadd:48834248870857/7428,16091745523789/5821,=2:403793648427963289/43238388
+qadd:89161018973989/1000,48863562276307/5136,=2:63349319465839313/642000
+qadd:67440349641709/582,-25644394065531/125,72123784494178/345:-6494993640925417/72750
+qadd:98894870521648/469,29922116846031,14386819758147/956:14132367671310187/469
+qadd:-51033784779973/2,=1,-595583264213/3:-51033784779973
+qadd:16012808775283/25,6902989657994/65,=2:242681462368649/325
+qadd:68123975569655/6,14855844433571/3,3396209893164:32611888145599/2
+qadd:31826754876396,-5624708171537,22269353475089/2:26202046704859
+qadd:989539922242669/82345437022131993998,-129844086283131/1228275122105070002,264019311827057/25912304890942474571:-2369160190225845180087828586083100/25285712928288631715150750102408461999
+qadd:458886340685990/45233073912526242751,-178745004976918/2119200954833746507,13324270929603/4608288006661132729:-7112713650273889105018361873484488/95857973425491043563396362893480320757
+qadd:412133102761216/1699197444312646113,134603450929112/552586191322068273,374607145779807/1505793782999860840:152152300462325569979931157947208/312984348018972438363137729558024283
+qadd:996107656472793/1538223134855538644,744500995880956/9784839986634291135,-657762555721801/3044920577968213070:10891962683834633525215962650253719/15051267238300426155470196651539120940
+qadd:735500231252758/172429147160677843,157779442625545/116184147677115296,167157993204247/685504231666635064:112659242215832711691135511285803/20033533497555240149484858223586528
+qadd:-809798210635595/265681969632351751,315376974249563/452100583295838976,-147441203225015/637765515904619836:-282320267684963796331611659915907/120114973441973604125868871487646976
+qadd:197530115746410/16154772056586701,805221852820256/61863667133511779,=2:25228112816673602730686944978846/999393441126437183906946118251079
+qadd:411518791826609/66555460731929013,73839516309311/29351284060524212,-941248859041399/40678192937974455:16993027983335510295184953297151/1953488233721913143499638751762756
+qadd:-44838693896353/4828879954536720,-214608302698603/905841390888158,945153758378794/1752566248144451:-538467237911556730436461644967/2187099667224743806751112080880
+qadd:159386221465363/4011294024192533,=1,-762687138435905/9496408082934519:318772442930726/4011294024192533
+qadd:282181219877794/834796594900371,-521732855952853/336927589199157,-509894079886271/627419469371216:-37829574829598341107104487645/31251778243494142409565798583
+qadd:-168247676776493/775628684714855,673499386955615/114978736437813,502043901819392/813501396039933:503040538376286093357421431016/89180806113436869664344812115
+qadd:-201804504690605/26153756292047,85735155596543/849483132120,546053722691518/68002507655451:2070866842412214685073860921/22217174811671243006249640
+qadd:-578160618834941/32832087076522,-257251067168429/84222664665342,-767269979542346/64606844680255:-14285079340160980125721709690/691301465027305293568825131
+qadd:682356166873497/9733351318990,138039263801749/4525351638292,=1:2215743124028395589742030317/22023418668731497795382540
+qadd:58719414801037/9289988230905,841010929365368/3284665753905,-902973183034592/8703989774549:11860526350745264583518663/45206675846272813400643
+qadd:446558621707731/443226736633,57828945916797/134385109829,-908538462064135/423200304851:85642164404908478623312500/59563073681574962665757
+qadd:-85597540319717/430995215447,152252722498749/811556745487,26984142839919/361403086885:-3847066307821160533891376/349777074368635709937689
+qadd:518235731671330/34633881143,=1,-927979812597974/20035419799:1036471463342660/34633881143
+qadd:23532022732187/25812132498,=1,=1:23532022732187/12906066249
+qadd:384857284291123/2633874476,313185874888348/8412878237,14688795975121/1210141392:4062649753475859805995799/22158465258130178812
+qadd:350680888140817/7696173335,-273757008800698/308695203,41351671290449/282932970:-1998627883448442480586979/2375771789971012005
+qadd:177593161287595/783161477,675923932791229/349011889,38454414011850/16453799:591339710238892839502188/273332666479800053
+qadd:-214254215144366/468801353,642094736898653/672467862,622095989308793/572560927:156935807429647724912017/315253843554617286
+qadd:396292476888376/40820787,78144967762423/8506238,572072869094153/34215214:6560897210173761576389/347231329569306
+qadd:-990761108038976/66972235,199957304336881/31214504,391113668586297/44776622:-17534528993910935008869/2090505097296440
+qadd:129684204888411/435077,76593779471978/829233,794637299697182/2210281:140862614063561491069/360780205941
+qadd:-316924088772521/8106207,321543746152208/2861707,=1:1699556282556306801709/23197589315349
+qadd:-273436429936583/946788,=1,209148812266786/332615:-273436429936583/473394
+qadd:-11329905072416/21011,546335249793749/483215,211883734808434/150249:6004269853848962799/10152830365
+qadd:516486908449729/1259,=1,278592054186065/36029:1032973816899458/1259
+qadd:675867112050751/79570,32097018416251/18680,522495180002645/78606:303583148169782415/29727352
+qadd:329176312670383/3138,479733224022673/9258,713130808296677/5238:379409763307129474/2420967
+qadd:-590917948306039/2612,816884550900490/4193,586769063997713/7174:-344016510295141647/10952116
+qadd:30172372558544/23,306945914193323/126,=1:10861474968822973/2898
+qadd:508708694453393/132,994695576147517/309,369736266501912/373:96163600879190227/13596
+qadd:140754426286115/21,=1,936716007464871/86:281508852572230/21
+qadd:851135198263564/93,-329349905996065/59,=1:19587435439916231/5487
+qadd:869963899450784/9,129438400763333/3,509437343941782:1258279101740783/9
+qadd:154547978608621/5,-497290343697757,216897795092209/9:-2331903739880164/5
+qadd:9731985466163977/5512338322751860171,556192589204029/57909174483790815689,-2632702504578039/18742877028358340228:566637166158105995162688554656064112/319214961745924282983965333270161022819
+qadd:649650388871168/3992465323969551173,=1,3565435999230529/84697466077371826772:1299300777742336/3992465323969551173
+qadd:605861655156859/2232205883730936795,690635835332709/557617629319401191,126519874372049/3918127150315881558:1879480514989199709022928131546724/1244717353038863867397627790868722845
+qadd:-942787630105114/2000750159815160879,6984110317895009/2298603201956044128,-1258842818920025/4276881172498189494:11806365169370987723241751703682319/4598930723665195806685719802743268512
+qadd:7833433836634319/173628534804912798,-279606913169869/51244112549651791,=2:352869626519730853604034544331867/8897440179374084695171531019521218
+qadd:7799997395732343/425865243834023704,9146433465939454/231677503759473387,1415892823490823/620146895568068431:5702232044157642641957254148473357/98663396629386077325737960315165448
+qadd:1103157747790413/55167635654497700,-8423319298239707/88661359798471577,=2:-366887144055470035037200946582599/4891237593994409584782505661872900
+qadd:-500322660362609/4271749116788519,263022279423891/3828812275602968,=2:-792076353933982410819593516083/16355725456656018147722464724392
+qadd:256405572619155/2602216073605499,2786963243737596/3122526924111005,7018660290695751/8853212585895845:8052913853397103348918187941179/8125489752187595377205654416495
+qadd:-4368184742676481/4675799278313048,9534128992433354/6253368044316277,=2:17263806580640358427509035221755/29239493788639924359785127882296
+qadd:2104015488715397/853633108483362,2250989455424197/214830172967862,1713791260754447/4504214438916:197793761447068078680364356794/15282179028881197103432309337
+qadd:2995889241927464/698314621089197,1530024756319507/462119541131685,6069020753402648/565006088361631:2452897619727218797598520162719/322704832263286198576707906945
+qadd:5394634397912672/14716326174237,-5034418169062420/75667401230663,-5368809838944386/37114054397355:334109825606166663739353787996/1113546157267298892365029131
+qadd:1863023478221507/7872199669441,183894543875548/37986075021761,94003419602892/2702656613089:72216604178533377861245942495/299033967229667971081705601
+qadd:-8112425603423209/3805513596434,-3425559927153486/4012067294371,9145612321513257/132453047192:-45583612319694234728476725463/15267976638537011973873014
+qadd:213689004449671/1644968610003,=1,1668412523740720/2790599079591:427378008899342/1644968610003
+qadd:6951530900384110/628329527679,=1,-5187804123446287/513799284482:13903061800768220/628329527679
+qadd:134541450167501/70194339817,=1,=1:269082900335002/70194339817
+qadd:1098519078141892/19462539993,1327840931140871/19058669129,=1:46779468868871976696405971/370930110136516976097
+qadd:393599031927369/19486752872,1205956039337142/5742832021,5417998674508339/69422174015:25760540437045892884254573/111909148378635314312
+qadd:-2774295194854405/200465239,-6897371711869624/4786302327,71942449286325/102497912:-14661298815608340389700571/959487239908311153
+qadd:-2018443788406565/3597931718,-2000020310248678/3595186621,784424627043279/3431202205:-14452618614207756440335669/12935235975825144878
+qadd:-1405824660836226/850566097,-4116287804839619/468886657,4256120357736763/794325993:-4160347277838789277433525/398819093779867729
+qadd:-2568463849296119/68653552,170163282864808/124349217,4853614637538325/536394242:-307704154764128593790807/8537015435468784
+qadd:5570716669286833/56389954,5139391070061720/86846191,321475980040349/37564864:773605549896559300463983/4897252715565214
+qadd:3347504025095300/41242589,8372336127620525/73791909,=1:592315530278270954466925/3043369374412401
+qadd:4075983457906123/7454814,1012312766726638/2012887,=1:15751097500406757342433/15005698188018
+qadd:615527827347805/803633,=1,-6945777364445267/2690675:1231055654695610/803633
+qadd:4703769450007771/437089,-8646742616442323/773872,7633024022889843/470014:-139280611661744758435/338250938608
+qadd:-1157040382968040/87421,=1,778971535469672/273235:-2314080765936080/87421
+qadd:7393810122090184/81127,-64368795434817/4927,501992012340776/76641:31207255204297937809/399712729
+qadd:1814818937088177/50093,4023822663774357/24016,=2:245150040289558524033/1203033488
+qadd:9908501657883705/3803,-5660305521631728/9565,2557272552018733/7891:73248676458892176741/36375695
+qadd:1377747830693440/3541,1463897897659346/1125,3757698108232021/785:6733628765141864186/3983625
+qadd:3772470251348881/322,-7016532949646302/455,388436705580099/410:-77549949346052627/20930
+qadd:334577361872867/32,=1,-5943062864162214/29:334577361872867/16
+qadd:2891305771316359/53,3527889195345726/85,-3763343617650326/27:432739117915213993/4505
+qadd:157402323585140/13,13773830296553/77,3582569222451484/75:12299038709910969/1001
+qadd:-3257588133523091/3,6604850595588048/5,=2:3526611119148689/15
+qadd:109197760602583,=1,4169449356780290/3:218395521205166
+qadd:-3861717767275060/7825274794195216053,16565852262776959/88858046256514809458,1031551014323301/4042869958710944726:-11237492096729581651889648474747087/36596769980659890200362549910023043646
+qadd:23543644363949797/98639149864308555901,55730679379575088/70634154829730489785,48139816814712375/1330063664360761159:7160212256620979254852952806236317933/6967292983788559769917597132102781971285
+qadd:41977719284209529/3751208484710673761,33643459441010377/4194025619262446095,=1:302259260626319542881502707310457152/15732664488071225574728266592393413295
+qadd:-1144293144120949/1098190461076821110,-2402308164750526/582336022019013435,-25203695452988903/938005039894823361:-132182201146680605942090063054147/25580634580908088582093143527264514
+qadd:8034042612751913/97483447149280005,=1,2973340210414523/29561736054695294:16068085225503826/97483447149280005
+qadd:60674693832444605/936779720392078057,21951623942977712/65677242692581337,9097858504748373/818881964501261360:24548782731586239427877568624602469/61525109045678996656110378925422209
+qadd:1302350266814895/5681021273569801,-6236914506844097/7270414939487546,94223237947234379/79008878766068900:-25963417158520815055488814517027/41303381938908446247501001198346
+qadd:-11497844255386016/8204893553520709,7432210588726085/14197957440789783,-6910737086418109/19876126699691764:-102265406650952939625835597880263/116492729479097473986005206116147
+qadd:83714996362880378/8618647846387783,=1,7515078968456230/3062009508291991:167429992725760756/8618647846387783
+qadd:62679487423356388/9001151280591673,56594267794644456/5882920271561917,1634168066276183/300039595214940:878151993207885545835175648690684/52953055335988261889639614117141
+qadd:83131003631837727/747131006183503,=1,17129603086958644/379709519880211:166262007263675454/747131006183503
+qadd:12501751630346081/788796894918041,-21129992690880754/254284308858567,-57956809836544559/534410517601146:-13488273351363624099898642556987/200578673254017756079725707247
+qadd:14059107156579494/6975563866089,37801476305972056/48622905291735,=2:315760415988492217755116230358/113057393739098097672824805
+qadd:23369025294115791/55396441570853,15495067710884335/11665951387764,-3995320971632302/75709901608329:1130993526142997139892946869079/646252194420679895483242692
+qadd:23916091038454111/4545952132054,4689829346138151/3614025441053,-85746958882796523/8521123688083:107753101178558963579755411037/16429186659052283048812862
+qadd:36133728528919771/1785997287207,85398862837628707/8358840780430,-11562670053745837/5200206297232:64936888705012721610457704697/2132695279720460390708430
+qadd:2214561180442189/33997391434,36979053972484369/162888179275,91720233502172759/335502577054:1617917211336886663944928121/5537773190783741330350
+qadd:77386819146397237/20397632304,-5108066159735617/907423591944,32886890778350867/330998714751:973867124217134726941645655/257073510728453452208
+qadd:61459176891343089/21824932076,2685806673289617/2388630617,=2:205420819832094399137810805/52131700970678970892
+qadd:17677723892339211/42474225106,61979558493207868/9941645861,=2:2808279389977180084128489679/422263704224247186266
+qadd:-69708713419564832/6145206843,80609591382825001/4848452972,-78928998060128503/231637472:157383193823784636159601139/29794746381498087396
+qadd:88237221032149171/9534767920,-44968975337449001/556184382,12982666497195442/788160233:-189846289596808310283200299/2651544501549312720
+qadd:-38677387896784223/788948329,9340381978275373/50293174,=2:5423870154623606862407915/39678715587406246
+qadd:26537170671851227/590770266,18034613855208113/484568177,28604184788975171/455924538:23513382039645396684971237/286268470821425082
+qadd:9355751715852854/52744199,-484818910468440/5805289,-50172393950328279/68610859:28741457430061116365246/306195318268511
+qadd:36415297589875947/29546624,-56431669004414295/28023964,31517851668463121/32802117:-161716079264478302849043/207003381824384
+qadd:22971653327178907/4250474,=1,=2:22971653327178907/2125237
+qadd:12746116741017752/5218893,725501139000903/48970,-48129279516836173/1863661:4410490152631478975819/255569190210
+qadd:-88067684618536709/385212,73238199971779517/895372,39724956709082291/929816:-3165069089046207431759/21556752429
+qadd:49757444137808553/108115,26265082097157139/107499,=1:1169789262614917960276/1660322055
+qadd:10749049993334979/14455,11334875189797027/234,77927344912508075/2392:166360898566956410371/3382470
+qadd:1195996993464494/4213,45875551157589131/5270,69424135139802925/44053:199576601182480892283/22202510
+qadd:3520647688460679/2036,2261968838807066/381,34281322264491172/471:5946735325114705075/775716
+qadd:83644190506134287/6033,55464798606172681/8524,67985855300849238/2989:1047602209865328446861/51425292
+qadd:-8698786374318557/422,=1,=2:-8698786374318557/211
+qadd:1118529795834147/2,64597983578878272/755,=1:973685963012537529/1510
+qadd:33377257316975885/26,-40430802589313980/13,97778637401253684/49:-47484347861652075/26
+qadd:82705834958465143/99,24938695531635533/58,-74579422882928086/77:7265869285222896061/5742
+qadd:-32270725150155926/3,=1,-3544924711445815/6:-64541450300311852/3
+qadd:60911268114686151/5,80821489004159773/3,4534056378518212/3:586841249364857318/15
+qadd:-969085346219845449/53998644227029731584,1246624309530693/107133612642748177,-772081460522893303/64669378244722644671:-36505591524565947914216726766988761/5785069833852173313379335508415322368
+qadd:276516649995371231/15574713369274151317,906182816129897588/83697559064365646467,750261136246505381/40984550246015537241:37257306266652922286275605079793914273/1303565492135388561581093647071484447039
+qadd:-140672089095897969/179764890360901598,555145526681662554/1124929648758424561,5984750631146458/28478509146741215:-58450529038488266189701503004255317/202222854972785735655957430027348478
+qadd:-91743425611973129/1107094290508801764,399222195217559278/8079799590284695019,-114641110490499569/4406882677696803466:-299291879701184741517973742167178059/8945099994859541614229671597869213516
+qadd:787379889340800499/956625527086654593,-285703704338782123/459459292066701282,=1:29485849930128206284237638735099593/146510162482723096999644580814762742
+qadd:70749404862883911/495750154649066152,102340090236266554/158445453266377071,27037741921079909/605403590162096:61945037083254592502710474876284889/78549357960247816623822130455000792
+qadd:424824527328220007/23301022216991169,=1,67711743764689990/11333924060290899:849649054656440014/23301022216991169
+qadd:-6663229010931365/88920552753855031,134776639101635638/5309079009270841,366231415498310197/74626301054129981:11949037637948372264801755088366813/472086240118252220339551129451071
+qadd:-32510210684122177/1231828288285445,76160397879785044/676677566334687,-672775726216560223/5675307994591383:71817602308634310869101932830981/833550568259218150148260730715
+qadd:-268284492174317874/5274188879184443,649062356676662391/7205197273636408,231369253089740151/660306726485266:1490234771907975806226632438826621/38001571332943211163847952000744
+qadd:582099480882485529/700067254239488,989829037297761831/930885508478467,561464185181264678/686338297243911:1234814867553904104143762394986571/651682461931850019474109104896
+qadd:184995254328058087/463884296042206,313384341252881473/372141661203466,996350678876136763/997053196652451:53554628948286149849685574294745/43157668133836737280672371499
+qadd:8377174919585897/71232491917440,535206177263043113/25679501875292,746828700553904237/1616624309526:9584797843777708399725583136911/457303727443905678209973120
+qadd:-996273291922997387/44830395380570,-634598527946819886/29124087104801,366443615185294376/48189152110425:-57464853049935846730538932170007/1305644340006389055869116570
+qadd:10766817872037711/8299561973528,60868128026713114/266071146523,-227636182703270761/704789537906:10368235517264478808183285205/45066815712965051739656
+qadd:-61525671534270701/3970810675288,-811892456616177891/5068701282778,-89068223096904603/546438576974:-1767863242073427178167323472493/10063426581750431012295032
+qadd:550334687546784844/502931729895,-860005583438026402/162375660659,358668116551573116/644883640627:-343163137323871850866714435594/81663871908074365700805
+qadd:260849523709491673/297757912904,692166926358108721/802149515516,-997204026651783755/55271345816:103834624609928804772316783513/59711591394249731154616
+qadd:505448870437825193/71845789337,=1,=2:1010897740875650386/71845789337
+qadd:159638929481820528/13739032115,=1,507310009865603761/12553274018:319277858963641056/13739032115
+qadd:-133426952279941451/1589703572,217840769690702699/4142491527,735044017796589411/3007360763:-206417769588551377033244849/6585333577451634444
+qadd:-101118601209663559/3745310451,885199546740371601/9397717537,-459446735274124418/3192681599:2365063061722212098564767868/35197369706872079187
+qadd:-12152036723542051/235562910,891926788712621059/872286523,697897009879673835/130239658:199504811995153362474243017/205478351711661930
+qadd:400891792612792759/54587710,697440729090382751/929044415,-386357311385415463/638053959:82103594641605549540396239/10142881420627930
+qadd:167013298876326173/1918052,47488502066189029/1167594,759419503750021473/53966266:143044571026631590544635/1119753003444
+qadd:676855379766713425/63269998,=1,-714573170617706497/94972518:676855379766713425/31634999
+qadd:409288543596204392/5585379,130886150841077932/843311,-107608169043445049/3162805:1076206289287247740778140/4710211549869
+qadd:691213642440502645/22737,=1,=1:1382427284881005290/22737
+qadd:960631875359803053/230030,228919423015609883/333487,37946707333060033/44234:373016577094395382122301/76712014610
+qadd:251068611473963959/515543,94841287315376536/22327,-479143444821261102/650503:54500370674810358811641/11510528561
+qadd:-108350199223779473/51984,111736989262785999/14705,=2:4215245970250990221551/764424720
+qadd:88108619904503621/81260,154844354458466755/2207,=1:12777107967424248002847/179340820
+qadd:-486724060444092739/5751,-246250309508757077/2993,449147573438373443/1564:-2872950642894031517654/17212743
+qadd:-850389260078463631/6276,-954710858838119571/8792,340877365239969027/584:-3367096931169472667837/13794648
+qadd:219904330718240359/222,757977245624505558/967,175510199184903827/581:380918436333178661029/214674
+qadd:318243239218041752/59,767069919224699682/347,=1:155687529242917769182/20473
+qadd:697074341020289390/53,106833670515931911/11,44958754351960065/23:13330002288567574573/583
+qadd:516501254786898965/6,-164729804637666233/6,=1:58628575024872122
+qadd:82963845478413593/7,55644033089135156,233198647629741003:472472077102359685/7
+qadd:164451756488343692,271265725719237343/8,=2:1586879777625986879/8
+qadd:5043821125454793265/5618281832502940151,=1,-543884583593009413/8012420875585043886:10087642250909586530/5618281832502940151
+qadd:1764906175362120158/31402243297654667473,2229661152827134119/6508891977220041701,1894248816526157489/7307308465166355047:81503945637767463543703614619050520045/204393809466816291062044346462348291573
+qadd:-1362907275103916799/4719984305032890358,5677647195374925883/7969616636801670538,-8231092261190079885/5235441156455608811:3984139289399363012151226105338442063/9404116360708223470362017252248218151
+qadd:290807472633374281/1258837033388879519,1699792368148991135/4469792775816725417,=2:3439610722427910580290181520680864242/5626740677772171640401250773318034423
+qadd:-9803615938594182209/179436612901884445,632531485773805909/24631423728192118,1107916995642111584/51994977769890891:-127977710890922943063734246473443157/4419779244737900457684595195804510
+qadd:212099052410103851/14112064685928255,-1546460633714174323/543797344189345181,1466382576090755442/798177433526983523:93515148908475176743400909755195666/7674103297236030685795513595989155
+qadd:2231031722816738561/15236183051646264,2143589106723393457/20940609306247892,=2:19844819918725746241023330019364515/79763739150750040606892869918872
+qadd:-9575590803372574182/19535794897504279,=1,8043316090192509079/21730235406706349:-19151181606745148364/19535794897504279
+qadd:5016235407304247978/3059319382797913,=1,1013119725862020638/1523223220476823:10032470814608495956/3059319382797913
+qadd:2894078389438839283/1569075282041943,-2665448726814208207/4452815285777552,1242049344845007051/681162286716620:8704506777937400951911781308349015/6986802400412087425201031863536
+qadd:-2761359171647944304/524718540633809,640460627361693124/51241877637449,24526182054440865/932662203109421:194564336936009885784577260588820/26887563253258451827973913241
+qadd:4377034106342870447/284491641803297,367444739727332559/187288898129576,4771977529029312743/237034833694131:924304852129543576890267568687495/53282126120413516875010012072
+qadd:-1084950831949751089/12896572149034,1068560037854748158/52652358693733,3302405312908713775/34972953328882:-43344458745114066006755621245865/679034942710545208837803922
+qadd:908971092109438313/2042877065884,=1,=1:908971092109438313/1021438532942
+qadd:7969199262095318650/6376127197957,=1,903887938076097336/594071493169:15938398524190637300/6376127197957
+qadd:4839349064327340004/3805686625309,4317900645018438773/5983979445459,-689687038324621568/7626332987577:45391142064495823172086675547693/22773150541707282934521831
+qadd:-1660640044482828405/123686665162,1468015760631904370/154714309067,=1:-75350803253335844678902090195/19136096941340209623854
+qadd:3359844750012921/70716653,290023334833820440/24901328071,446648123840546873/44205337621:104174075919044820029792711/1760938576436066363
+qadd:-8524152918701542873/27483319743,572629374273579433/1843500145,345801513474448186/34748134655:23479045766334416148429134/50665503931301862735
+qadd:461532154960869496/88629445599,-3067104818016109135/42934967742,-5658191264987110039/23622515075:-84006643809882954201032549611/1268434129261469622486
+qadd:2107778483720627369/79151569,4539993449270881832/8042518085,=1:353289677127684406239691077/12991386227318885
+qadd:-5200199645684863958/1508061869,1037044821661150583/89359314,574740187726215359/551649888:1099241478989643929419214815/134759374083397866
+qadd:6429669718772297/246412472,7129345785374382275/462920354,2455561683986174279/1566173:879868071849600067014183469/57034674384127544
+qadd:1738227802075055570/327533141,=1,2601403037612548877/229872139:3476455604150111140/327533141
+qadd:3436599097095658763/14598030,=1,958841139244535864/69388675:3436599097095658763/7299015
+qadd:6575572376501646299/89845794,1883123242302019558/2079573,=1:60955028559399331030329793/62280295788654
+qadd:8246990382353771761/1153985,7360354913817962691/3109420,528293916457716807/6436589:6827419199984137333012451/717644807740
+qadd:5939937149370464031/3123809,3641790392665278283/8453885,588122952232762701/1541615:61591803172727055602650382/26408322047965
+qadd:270376064542116947/102161,=1,=2:540752129084233894/102161
+qadd:131163854733041727/323971,3502368174871763808/31573,108739692256458838/855:1138806956366866519088139/10228736383
+qadd:2295686487125757632/9399,5192247177653340310/74391,7756262792928856511/14718:73193448228845327191934/233067003
+qadd:-1157668445283763977/98255,-6862870187854810458/92423,=1:-781306501026135719597061/9081021865
+qadd:331518036234256523/2056,815887256529953349/482,196168905129502546/4049:918627946445247864815/495496
+qadd:-2035788783736026328/8319,8303222045592699428/9011,-1864379673211519106/1401:50730011467040333299924/74962509
+qadd:2843403596885438497/227,3405071238014843037/907,410871865808099072/31:3351918233404462086178/205889
+qadd:6888377466446373262/559,-4233882656695844123/346,=1:16638198297468283895/193414
+qadd:-8544001908785450503/61,538024038063863901/19,-359823220116074567/8:-129516569945027861596/1159
+qadd:-2873163532076118107/33,599376533960103224/29,603524459540653533/83:-63542316809524018711/957
+qadd:1063922232492764301/2,6854581919241901325/6,6969845457837372101/4:5023174308360097114/3
+qadd:2352628464632327696,=1,-2926879886747018505/4:4705256929264655392
+qadd:38750299973229623063/36181224711595653198,95066204533556190887/4815411929001685731,8874164143102558897/10732317260440182753:402912262827843733479506682549361735631/19358611231345364982923389088229013082
+qadd:48742220039338674056/67138210285692216649,31818042798992490898/21353165712067248083,5900286084455262748/49045932502167224591:3177007149991956505876862526845604395450/1433613329842003680672466022985665933867
+qadd:87217932340221331903/2665309420727136089,1273107818123651579/33738995536126310,55551725128033095975/2650789751926588423:6335871691143231965413514248993402461/89924862648308245613767543263401590
+qadd:-54380689308824351360/1703471436980462073,=1,-72316980450522981244/8351933107679217397:-108761378617648702720/1703471436980462073
+qadd:37029624832139894565/54555708192540067,111936754529639081/4842509306811346,47780458168088681783/99817190816504869:185423091793508942579252306927292917/264186524662059269844548115200182
+qadd:-22582885555171871569/276061047279571597,37882169208497878632/62669917022723249,38915003092334150861/133381815208219710:9042523741043587572300262155802007623/17300722926216831696081927011958653
+qadd:33158690128759394124/27845156068309087,20040091306620091462/93471893000203813,-2800433644018142872/303526659689803:3657425005798313102460083146020310006/2602739448590962875785441279948731
+qadd:3197839850448851481/15625985746620581,=1,1644265406502320897/6242254024865644:6395679700897702962/15625985746620581
+qadd:1923674921668264769/66091808607807,47645418789767983519/2547180528667403,-94362350068612539221/364341393607160:8048919203651352698528804054357740/168347767990218650522372215221
+qadd:63079152525440745698/2231593339592783,3556320317878822237/3926878376870658,-99040920722967906187/1600307564553594:255640420818316291470533856441044855/8763195631215478802223581261214
+qadd:3155815575082653608/30192877351261,11795128154822010181/20651109856531,31816014676979512957/70387620365646:421299951848929855087786504702089/623516427065657629001935591
+qadd:23991887334900651603/96699483325270,3750668873805896041/943821328748345,=2:33586485731135365147071981775333/133236547213627390084100990
+qadd:2309692393299313895/92991584939154,13505703402565112683/18557182710305,94620445875012570863/90668308130179:1298778148869711868710408754878157/1725661832236727444233781970
+qadd:57594369573165928157/93091121490986,-8216395801314141034/4528867987769,-26450061693998675351/44029529374639:-504036203122513874440040155007791/421597400066041276891750234
+qadd:24542791235970972879/2344787306732,-64933302597803670427/4342923289956,=1:-5708415507036463291655594663905/1272903925549950743347974
+qadd:-172272128642878525/1253023290162,-56946438418624682181/1249572807253,19174037020580911223/8107587302833:-71570480197712551233049111945147/1565743830241120717144986
+qadd:3028920190202346838/805608849389,40089795752860144393/372471218723,15183822811879905592/111683851673:33424879823361049021005735273751/300066109945954583910247
+qadd:76500387765072442325/775493963262,122900265147567688/16725267965,50834815414479646533/248262732319:1374797898502481981169162896881/12970344340796815501830
+qadd:59590674910838495728/13005850369,86406272304132657397/74890842311,37835029633787556154/89471413727:5586582886484287970785818176901/974019089105240162759
+qadd:-1540621953597844070/6475929139,-8097002238368386377/33525625058,4994696033629226613/9124261493:-104085926706442851563193645463/217109572216290765062
+qadd:1020455924950028825/71307089,-15027123384295411453/4869731824,32588900069283614833/4623109762:3897806268140576872049136483/347246400580100336
+qadd:98927709935781735893/4858671845,14545842510003768295/485475574,36811564317330662262/7963827409:118700462230738581230190731857/2358766502829014030
+qadd:7968100306775934624/24002777,40497155380044030991/145085209,58654545110130593822/33483457:2128097688063097717151438423/3482447917625393
+qadd:-23611980270981239714/420152229,95487639446075722616/816419473,-5579567954544211437/617972198:20842064065896139239707560342/343020461379955317
+qadd:-41034887738055776999/13333375,84899158825411622388/47895653,30327216586322045860/36885673:-833400422192101699131885847/638610702318875
+qadd:24656093429908250495/27564561,2208448163081784406/5010537,=2:61471724170872663319500527/46037750926419
+qadd:2133095351837200006/1310507,=1,-21206650272439533589/973111:4266190703674400012/1310507
+qadd:19180784354554459582/1180789,47269383367680368601/863423,81472957723316044010/8522997:72376298287102409915675375/1019520380747
+qadd:57138477662354817611/225222,46133836132900735393/499504,97630303852343664772/247381:19465626493890525121323595/56249644944
+qadd:29853842167305129575/324248,24424888107355543894/33291,-23582416174010240026/335387:8913585378625575465223037/10794540168
+qadd:-420456923149560733/537,72302352874036923083/70362,23736761268395718034/5245:3080724488902811800075/12594798
+qadd:539720131536363641/89712,-47388649478839966234/1133,4570686076693373255/1613:-4250719019136660350779355/101643696
+qadd:-35074948988121263785/1743,46439113742337125259/3968,66374900563777261496/1307:-58234022331971565372443/6916224
+qadd:-28803141465771759543/4526,54869054724564777023/3954,1798941140485680569/657:33612430081929660893269/4473951
+qadd:725551877269445969/431,=1,32744674741853348893/693:1451103754538891938/431
+qadd:91879409948684343784/517,-92515200339135325921/86,41625165280534848151/424:-39928729319746109935733/44462
+qadd:-29166863008492740086/27,-62979221821453932179/87,14020736369187295840/17:-1412652023639374852105/783
+qadd:68001809592817590555/61,-7705962877958413589/4,38853502652707551384/11:-198056497184192866709/244
+qadd:-79744407268013845618/3,-17168463782676239957/9,40182413433838316451/2:-256401685586717776811/9
+qadd:-61204110018146728334/3,-31052192278051565633/2,=1:-215564796870448153567/6
diff --git a/polly/lib/External/isl/imath/tests/qaddz.tc b/polly/lib/External/isl/imath/tests/qaddz.tc
new file mode 100644 (file)
index 0000000..584ffcc
--- /dev/null
@@ -0,0 +1,800 @@
+qaddz:1/54620799347511326707,-4,5/50425624798430340799:-218483197390045306827/54620799347511326707
+qaddz:1/212138780821487407,-4,-1/2172160838694653181:-848555123285949627/212138780821487407
+qaddz:-8/2596450420794466343,3,-5/33209689038794936:7789351262383399021/2596450420794466343
+qaddz:0,0,1/7506665947113966172:0
+qaddz:3/301921530103952791,6,=1:1811529180623716749/301921530103952791
+qaddz:1/47796551294919635,0,9/408623107847915846:1/47796551294919635
+qaddz:0,-7,3/44304529385671853:-7
+qaddz:-6/59168527940606359,-7,0:-414179695584244519/59168527940606359
+qaddz:0,3,-1/1803043485158662:3
+qaddz:4/805996063056383,9,4/4602479413908539:7253964567507451/805996063056383
+qaddz:3/908244468147226,-7,3/60173056873814:-6357711277030579/908244468147226
+qaddz:0,4,-2/385639438244941:4
+qaddz:7/59007802744210,-6,0:-354046816465253/59007802744210
+qaddz:7/80088880526056,8,=1:640711044208455/80088880526056
+qaddz:4/1915432332283,6,1/975133146111:11492593993702/1915432332283
+qaddz:-2/4374674512379,1,1/1450918107984:4374674512377/4374674512379
+qaddz:-1/176293450395,-4,=1:-705173801581/176293450395
+qaddz:-2/150047873621,9,7/862965342703:1350430862587/150047873621
+qaddz:7/90154985532,7,5/5122907862:631084898731/90154985532
+qaddz:3/35150061317,2,1/39676293318:70300122637/35150061317
+qaddz:2/865482845,-7,1/6059793299:-6058379913/865482845
+qaddz:1/7111641188,4,8/9256455537:28446564753/7111641188
+qaddz:1/231395954,2,-3/198206266:462791909/231395954
+qaddz:-1/5342717,6,=1:32056301/5342717
+qaddz:-1/1255946,8,7/39589307:10047567/1255946
+qaddz:9/48244018,3,=1:144732063/48244018
+qaddz:5/7367079,8,1/3896866:58936637/7367079
+qaddz:3/326524,0,3/4328111:3/326524
+qaddz:-7/836910,-2,9/919579:-1673827/836910
+qaddz:5/887451,6,8/592505:5324711/887451
+qaddz:-8/94183,4,8/66975:376724/94183
+qaddz:2/33127,1,-1/14729:33129/33127
+qaddz:-1/1132,-5,8/8763:-5661/1132
+qaddz:1/4973,8,=1:39785/4973
+qaddz:-5/71,-4,4/875:-289/71
+qaddz:1/125,0,=1:1/125
+qaddz:0,9,=1:9
+qaddz:-3/29,4,4/67:113/29
+qaddz:5/3,9,5/8:32/3
+qaddz:1,-3,2:-2
+qaddz:31/75290504490996366117,-89,80/87349767408470122133:-6700854899698676584382/75290504490996366117
+qaddz:-1/2025002780262471319,54,13/33364955876728529603:109350150134173451225/2025002780262471319
+qaddz:5/226091118641865964,19,98/9684762482985042665:4295731254195453321/226091118641865964
+qaddz:-1/3269119415472267421,45,-31/5732304804177650236:147110373696252033944/3269119415472267421
+qaddz:-52/674837392469005073,-1,49/926152724308138640:-674837392469005125/674837392469005073
+qaddz:-33/233752284775146865,10,1/34021154309272456:2337522847751468617/233752284775146865
+qaddz:33/37915766989934257,32,9/20112346122968212:1213304543677896257/37915766989934257
+qaddz:31/42388535088021265,-6,=1:-254331210528127559/42388535088021265
+qaddz:21/134052208089341,-81,33/306549029392024:-10858228855236600/134052208089341
+qaddz:1/2145839249313809,73,33/3181662864206624:156646265199908058/2145839249313809
+qaddz:3/712097424282067,61,1/54860371983348:43437942881206090/712097424282067
+qaddz:-27/242055520851227,81,85/884187769743491:19606497188949360/242055520851227
+qaddz:87/75610348177252,5,-63/45006979682459:378051740886347/75610348177252
+qaddz:91/22460567019277,-63,-4/5688629009171:-1415015722214360/22460567019277
+qaddz:34/5611315344227,50,-26/8764714566551:280565767211384/5611315344227
+qaddz:2/1448323251689,48,=1:69519516081074/1448323251689
+qaddz:-13/507312090741,87,-31/36494655847:44136151894454/507312090741
+qaddz:35/695649048043,32,=1:22260769537411/695649048043
+qaddz:-22/53469298165,50,-41/44921870282:2673464908228/53469298165
+qaddz:0,-42,19/22231277127:-42
+qaddz:44/1990669661,15,88/2011535859:29860044959/1990669661
+qaddz:52/911062095,39,=1:35531421757/911062095
+qaddz:7/125107130,-87,86/274603713:-10884320303/125107130
+qaddz:3/56375633,-47,=1:-2649654748/56375633
+qaddz:-1/1856173,10,71/56499774:18561729/1856173
+qaddz:7/6626238,64,32/20302401:424079239/6626238
+qaddz:15/1633807,4,52/1107445:6535243/1633807
+qaddz:99/7321367,57,26/2807871:417318018/7321367
+qaddz:-10/101833,50,32/474687:5091640/101833
+qaddz:47/89673,-41,31/421155:-3676546/89673
+qaddz:29/67933,-9,-24/68509:-611368/67933
+qaddz:10/7473,12,=1:89686/7473
+qaddz:-65/3001,21,79/2243:62956/3001
+qaddz:8/4983,-5,=1:-24907/4983
+qaddz:3/230,-4,16/53:-917/230
+qaddz:16/377,66,-61/214:24898/377
+qaddz:-41/23,96,5/41:2167/23
+qaddz:-5/9,35,95/34:310/9
+qaddz:72,11,45:83
+qaddz:13/6,16,=1:109/6
+qaddz:-277/80983188935181565796,610,=1:49399745250460755135283/80983188935181565796
+qaddz:79/15192291024925486394,143,=1:2172497616564344554421/15192291024925486394
+qaddz:-231/6313238620833887902,481,325/134903344527041052:3036667776621100080631/6313238620833887902
+qaddz:935/1485416466862593748,222,-565/6248719316822480264:329762455643495812991/1485416466862593748
+qaddz:-967/626150835751553604,-409,77/6043113279368884:-256095691822385425003/626150835751553604
+qaddz:-191/672212197195743189,906,301/296825083216628537:609024250659343329043/672212197195743189
+qaddz:323/65375330562542722,876,935/31091316170043549:57268789572787424795/65375330562542722
+qaddz:-143/40251685718424887,46,373/18639328341468821:1851577543047544659/40251685718424887
+qaddz:130/6295699493323523,-390,-174/17530058264063:-2455322802396173840/6295699493323523
+qaddz:579/8145570591252371,-21,40/2232149554773023:-171056982416299212/8145570591252371
+qaddz:265/47192654250488,316,536/603327182103531:14912878743154473/47192654250488
+qaddz:71/34035968910103,-744,327/497134848511328:-25322760869116561/34035968910103
+qaddz:254/93818137594343,-487,83/17550216682523:-45689433008444787/93818137594343
+qaddz:-824/19205768158351,727,241/53745460287591:13962593451120353/19205768158351
+qaddz:-758/4519346718465,-718,=1:-3244890943858628/4519346718465
+qaddz:75/64951063118,573,-139/8704353659601:37216959166689/64951063118
+qaddz:-187/758236499162,224,294/841106266507:169844975812101/758236499162
+qaddz:-34/37119383027,-857,=1:-31811311254173/37119383027
+qaddz:-441/57312007072,914,=1:52383174463367/57312007072
+qaddz:25/18513015668,-567,50/47247431347:-10496879883731/18513015668
+qaddz:343/904828730,-386,84/2415081317:-349263889437/904828730
+qaddz:-15/705578962,85,67/15485401:59974211755/705578962
+qaddz:-671/597940315,-297,-38/36423405:-177588274226/597940315
+qaddz:141/16827008,1,=1:16827149/16827008
+qaddz:19/1823825,304,152/12228673:554442819/1823825
+qaddz:623/94768157,753,-15/53060492:71360422844/94768157
+qaddz:5/30576,-780,515/3838063:-23849275/30576
+qaddz:85/456198,-545,278/3171433:-248627825/456198
+qaddz:-61/154737,175,230/373207:27078914/154737
+qaddz:784/22467,-975,221/842081:-21904541/22467
+qaddz:264/26219,577,=1:15128627/26219
+qaddz:648/86443,318,-751/62582:27489522/86443
+qaddz:-736/5001,599,73/1531:2994863/5001
+qaddz:58/1057,11,163/2848:11685/1057
+qaddz:265/416,564,33/505:234889/416
+qaddz:603/8,39,155/119:915/8
+qaddz:51/43,341,-3/53:14714/43
+qaddz:89/68,-261,42/5:-17659/68
+qaddz:316/3,138,=1:730/3
+qaddz:-157/4,778,-242:2955/4
+qaddz:-1220/24425361794374611191,-2739,9923/58596476391899748982:-66901065954792060053369/24425361794374611191
+qaddz:4756/68889234195734663973,9499,=1:654378835625283573084283/68889234195734663973
+qaddz:-6740/6193173096605308887,-3748,-1774/1349471376636973063:-23212012766076697715216/6193173096605308887
+qaddz:4951/5273171148713492245,2850,73/76840073320949141:15028537773833452903201/5273171148713492245
+qaddz:307/50758090271672590,-7992,4023/144759202361690600:-405658657451207338973/50758090271672590
+qaddz:4507/193110223350280382,2550,-4697/807940924231898113:492431069543214978607/193110223350280382
+qaddz:7135/87030719499305628,-2633,=1:-229151884441671711389/87030719499305628
+qaddz:-4425/57492072202943332,-9695,8774/1065824219401905:-557385640007535608165/57492072202943332
+qaddz:-2171/59546743026218,-2275,3354/2713497612422239:-135468840384648121/59546743026218
+qaddz:-420/497459043701647,-2485,6408/6394215912846235:-1236185723598593215/497459043701647
+qaddz:1796/82252594594341,9198,4191/934791612378541:756559365078750314/82252594594341
+qaddz:6624/484898002393549,-2338,4534/518674030101081:-1133691529596110938/484898002393549
+qaddz:2261/81693124807278,2477,6397/30033270473277:202353870147629867/81693124807278
+qaddz:1971/3597019637272,1116,3989/62351952484275:4014273915197523/3597019637272
+qaddz:-821/2973214305299,7102,2099/3415351232644:21115767996232677/2973214305299
+qaddz:3455/5604793125537,-4157,1475/8622435080543:-23299125022853854/5604793125537
+qaddz:-663/231000718186,2230,1885/90136214836:515131601554117/231000718186
+qaddz:9841/907754978407,475,-3707/314368976315:431183614753166/907754978407
+qaddz:388/1661926713,-9986,-4927/71849157859:-16596000155630/1661926713
+qaddz:893/2494453262,4917,6805/49826778773:12265226690147/2494453262
+qaddz:-2393/1820211958,9429,=1:17162778549589/1820211958
+qaddz:3478/4373863243,7552,9147/4954348655:33031415214614/4373863243
+qaddz:-5135/74721107,-742,4898/141314343:-55443066529/74721107
+qaddz:-1789/88275441,-7193,5814/533915795:-634965248902/88275441
+qaddz:3322/13291911,9390,-3263/50883910:124811047612/13291911
+qaddz:4577/34396558,-489,=1:-16819912285/34396558
+qaddz:8903/3869879,-4634,-3811/2146853:-17933010383/3869879
+qaddz:4014/1153681,4901,802/351473:5654194595/1153681
+qaddz:471/442073,-2998,9329/562186:-1325334383/442073
+qaddz:-893/461068,4168,2066/986911:1921730531/461068
+qaddz:336/38503,8872,653/13211:341598952/38503
+qaddz:8000/86117,1965,=1:169227905/86117
+qaddz:-8578/2779,-9006,9377/9189:-25036252/2779
+qaddz:-211/1008,-1599,=1:-1612003/1008
+qaddz:-1675/366,-4872,=1:-1784827/366
+qaddz:209/137,651,2717/320:89396/137
+qaddz:-5333/38,8162,370/67:304823/38
+qaddz:1729/8,6131,-5099/27:50777/8
+qaddz:3528/5,1915,9521/3:13103/5
+qaddz:-1303/4,104,-2439:-887/4
+qaddz:9256/43175436158473507749,-33340,=1:-1439469041523506748342404/43175436158473507749
+qaddz:43562/48013284592061748195,-32389,3543/476829824739261233:-1555102274652287962244293/48013284592061748195
+qaddz:31781/970330955234841076,25523,=1:24765756970458848814529/970330955234841076
+qaddz:72455/9090210348118255617,89034,48363/241345568170272728:809337788134360770676433/9090210348118255617
+qaddz:81871/335292796101778469,36100,=1:12104069939274202812771/335292796101778469
+qaddz:4031/299114846145519512,11847,48460/472966149918742127:3543613582285969662695/299114846145519512
+qaddz:70081/4000940087930231,28866,-48187/41751383598706590:115491136578194118127/4000940087930231
+qaddz:53565/36491429482144547,3583,22780/40933313880950073:130748791834523965466/36491429482144547
+qaddz:71053/3239886404702374,6327,5499/820365894600107:20498761282551991351/3239886404702374
+qaddz:1901/1115077430717827,78838,32029/643930274853778:87910474482932046927/1115077430717827
+qaddz:13107/6867073713490,67883,12163/313820861435242:466157564892854777/6867073713490
+qaddz:7612/71978407947133,-35439,47880/289218281250503:-2550842799238438775/71978407947133
+qaddz:487/93536104647,54212,=1:5070779305123651/93536104647
+qaddz:24139/22092733596669,7166,12083/20662610330153:158316528953754193/22092733596669
+qaddz:3756/377555799673,-90845,-6186/7949435140837:-34299056621289929/377555799673
+qaddz:51740/5334618145423,33038,30992/9506692645181:176245114288536814/5334618145423
+qaddz:-19431/313093258328,-29145,73759/467815221180:-9125103013988991/313093258328
+qaddz:45134/532171216165,-65154,-98921/239496530364:-34673083417969276/532171216165
+qaddz:-10586/5380332719,43778,-83869/38492047300:235540205761796/5380332719
+qaddz:-64073/25839289167,56469,-20852/44667409353:1459118819907250/25839289167
+qaddz:83896/6875621201,-60135,68147/7560028407:-413465480838239/6875621201
+qaddz:14947/3229243360,20054,72954/2728010911:64759246356387/3229243360
+qaddz:12569/138044852,29541,4251/162658732:4077982985501/138044852
+qaddz:28489/894461083,-54474,99821/372230979:-48724873006853/894461083
+qaddz:461/1016937,67128,-5113/48518554:68264947397/1016937
+qaddz:16058/28261309,-81920,5223/49399519:-2315166417222/28261309
+qaddz:-19094/531145,82677,89232/5738845:43913456071/531145
+qaddz:47358/4287503,-45771,=1:-196243252455/4287503
+qaddz:-44068/383233,28914,=1:11080754894/383233
+qaddz:-84061/931926,49385,=1:46023081449/931926
+qaddz:32731/30919,93827,16987/24520:2901069744/30919
+qaddz:-21037/20727,69534,11467/44693:1441210181/20727
+qaddz:-47647/8209,-53576,=1:-439853031/8209
+qaddz:50277/5119,34616,=1:177249581/5119
+qaddz:-45615/49,-81078,=1:-4018437/49
+qaddz:938/11,60282,36405/461:664040/11
+qaddz:35243/28,51616,=1:1480491/28
+qaddz:-44031/10,33851,-23233/67:294479/10
+qaddz:-40623/2,22693,=1:4763/2
+qaddz:50400,33578,4505/7:83978
+qaddz:44296/145305576996331809,-672446,887487/74206063873608800927:-97710154028875339590518/145305576996331809
+qaddz:641331/10728482754302259559,568057,480993/26722669314559144651:6094389727960678658948194/10728482754302259559
+qaddz:-10499/172183973129275356,938689,261219/9688984711512627413:161627201552746354637785/172183973129275356
+qaddz:-220611/2078134078025492204,-247650,=1:-514649904423013144541211/2078134078025492204
+qaddz:-93245/773599326123432094,810506,507053/740092254069402604:627006895418998452686319/773599326123432094
+qaddz:41051/5604661525608694,512095,417153/767762014998995362:2870119143956584194981/5604661525608694
+qaddz:256857/23764638432843923,-937980,-101171/1839317653823037:-22290755557238942638683/23764638432843923
+qaddz:-332573/48056484575068455,801985,51624/28399631222945227:38540579781936274550602/48056484575068455
+qaddz:555886/6363636074566197,531487,-826671/4672965611688254:3382189846362964900825/6363636074566197
+qaddz:-563124/5236412248020907,-719499,-431679/3372450157381352:-3767593376038795128717/5236412248020907
+qaddz:701612/201096646211621,852450,410105/341513117509976:171424836063097023062/201096646211621
+qaddz:44341/596871824184687,-222953,40264/891060847151681:-133074363817448476370/596871824184687
+qaddz:10699/24587438378106,344946,=1:8481338518774162975/24587438378106
+qaddz:227237/49603690945178,672137,=1:33340476020819332623/49603690945178
+qaddz:597973/5184695092393,114662,356604/1911748822639:594487508684564139/5184695092393
+qaddz:641047/1530353811852,785653,=1:1202327063343600403/1530353811852
+qaddz:597136/70017180317,618996,296751/321064961965:43340354548098868/70017180317
+qaddz:695839/510312151846,171207,205001/260822503888:87369012581793961/510312151846
+qaddz:809905/71504572844,73808,693901/76175273098:5277609513279857/71504572844
+qaddz:255273/62347365151,-84966,-374235/27650351674:-5297406227164593/62347365151
+qaddz:713594/3263659443,510765,=1:1666963016117489/3263659443
+qaddz:295910/3582838971,-154033,-25081/64948294:-551875434924133/3582838971
+qaddz:-630478/469725959,648937,2485/978731798:304822554025105/469725959
+qaddz:857939/546600623,-325885,374369/469544259:-178128943168416/546600623
+qaddz:4621/225308,181124,-720337/99151657:40808690813/225308
+qaddz:763904/62700883,137970,229231/94941727:8650841591414/62700883
+qaddz:65347/480512,137371,214509/5722910:66008479299/480512
+qaddz:-111067/738339,649352,84919/764118:479441795261/738339
+qaddz:171027/450233,-6580,9836/486877:-2962362113/450233
+qaddz:913138/821889,489239,134731/100945:402101065609/821889
+qaddz:701114/19829,-614638,-23827/46967:-12186955788/19829
+qaddz:326257/29870,642576,=1:19194071377/29870
+qaddz:106159/1985,574591,-569660/4723:1140669294/1985
+qaddz:148129/3938,47925,860775/3839:188876779/3938
+qaddz:887330/711,205135,-45802/45:146738315/711
+qaddz:42863/18,-93194,208961/276:-1634629/18
+qaddz:4012/29,-93697,20725:-2713201/29
+qaddz:22117,453874,196189/90:475991
+qaddz:-612637/8,-695084,609247/5:-6173309/8
+qaddz:57845,-697681,-866863/7:-639836
+qaddz:4360261/62036756574194097073,8366924,9603243/52038505911108171230:519056827462782371462773713/62036756574194097073
+qaddz:122203/37104707293639154664,6618642,2840782/70804511700211559411:245582774091386441903768491/37104707293639154664
+qaddz:2975379/3405105441588501638,1224553,-452223/338247701671728355:4169732083813524449293193/3405105441588501638
+qaddz:1236750/6927456590095070879,4061575,8656635/218877078505884724:28136384499915387506611175/6927456590095070879
+qaddz:5514100/889151389478456273,579914,4385513/526230054850522272:515631338878009496614622/889151389478456273
+qaddz:4769436/180047856472105135,9133872,5104049/860727869521825524:1644534074890579878402156/180047856472105135
+qaddz:1129619/13834516044696008,3200844,-6235960/99099205495661801:44282127674568950160371/13834516044696008
+qaddz:-4436473/31680301433353002,-5808829,2360562/31638389601284341:-184025453694802489691131/31680301433353002
+qaddz:3832873/3686022654332134,3511591,2148425/643043583198782:12943803978748836598067/3686022654332134
+qaddz:-7569910/152442797410363,8827549,=1:1345696263837044920377/152442797410363
+qaddz:4372465/567281920816919,7607995,=1:4315878017165520039870/567281920816919
+qaddz:5998833/480252391591963,727708,1934709/45746184416396:349483507380610209637/480252391591963
+qaddz:3161338/53726702330731,2061828,-609862/19212003746435:110775219213169597606/53726702330731
+qaddz:131113/3229582131545,-2913645,-2325146/23074994508107:-9409855829665300412/3229582131545
+qaddz:4389212/772304888811,-9008024,4662292/1333533763161:-6956940973722430252/772304888811
+qaddz:815149/899391465210,1866152,-3495177/4058839242973:1678401181585387069/899391465210
+qaddz:6099185/812281384924,516393,3627307/291261495421:419456421211158317/812281384924
+qaddz:2706122/517440388607,-5819,7950079/252677744377:-3010985618598011/517440388607
+qaddz:3534256/50461476673,7199887,=1:363316929902270207/50461476673
+qaddz:-341422/3319030425,9477224,=1:31455194800198778/3319030425
+qaddz:1777807/3107794205,-7728298,-3370724/3708129283:-24017959737135283/3107794205
+qaddz:-5327233/9277787037,3319889,6246449/2731964013:30801223123151660/9277787037
+qaddz:-9819076/309587449,-64284,=1:-19901529390592/309587449
+qaddz:5932665/955345021,2160126,2378998/340986557:2063665624765311/955345021
+qaddz:27849/96378415,6447655,-1830047/14377112:621414769394674/96378415
+qaddz:452633/3628007,-6184207,2601894/13372759:-22436345832816/3628007
+qaddz:1646531/1203794,-1799977,-2372416/1725139:-2166799866207/1203794
+qaddz:2641959/511223,1901148,1953355/2249527:971913225963/511223
+qaddz:-10086/1165,1012800,-8266052/33291:1179901914/1165
+qaddz:2434418/167529,2764968,=1:463214758490/167529
+qaddz:6481704/22457,4174437,7094833/47337:93751813413/22457
+qaddz:-3250889/26779,7463010,4107129/47161:199848693901/26779
+qaddz:599335/1376,7764075,-2794121/1154:10683966535/1376
+qaddz:-1446188/1023,-1120763,=1:-1147986737/1023
+qaddz:-6355319/520,8873579,-4229533/845:4607905761/520
+qaddz:-8333079/502,4777754,-2211765/838:2390099429/502
+qaddz:-664681/39,1853000,7994519/83:71602319/39
+qaddz:-6686979/41,-8893574,-1077101/12:-371323513/41
+qaddz:-188498,9478449,=1:9289951
+qaddz:-1148991/2,3210266,=1:5271541/2
+qaddz:13593663/25788635148712130170,9749642,73140616/63308113773746847799:251429960368560030228492803/25788635148712130170
+qaddz:55138471/984284327092850808,71726057,45865951/15569580966066839785:70598833749268461402242527/984284327092850808
+qaddz:-93458416/3876652721819618213,38189554,-59813819/4844052168542685795:148047638459177287911288586/3876652721819618213
+qaddz:-13202403/1193328009457250122,10267890,1513303/582767321730759548:12252960735026003941980177/1193328009457250122
+qaddz:56178208/35416123641813139,77841322,6805923/142304130637208152:2756837884394189272907966/35416123641813139
+qaddz:91725073/281875811815728492,-75791628,=1:-21363826671335698322939903/281875811815728492
+qaddz:-87952363/35128220892663058,-95959069,-6580898/40762262950663657:-3370871372486296064325365/35128220892663058
+qaddz:1593208/1779268204772945,57788357,=1:102820986216168051194573/1779268204772945
+qaddz:-40115057/1844576541622880,45148647,48149671/4721486463692100:83280135142212176128303/1844576541622880
+qaddz:71660059/7908261305514706,46408705,87309016/9251884131271557:367012165990546935575789/7908261305514706
+qaddz:12899069/900901725436207,-53144602,-36141736/346358215988697:-47878063639420484505545/900901725436207
+qaddz:12859471/415241177014271,71268555,-60349912/357890988024495:29593638662306321407876/415241177014271
+qaddz:6490779/7687148332738,-56678219,2747770/29442703192421:-435693876688402742843/7687148332738
+qaddz:-60847891/99630307357354,88116713,-98374273/39412545202138:8779095199509690009511/99630307357354
+qaddz:-25941332/4772253631053,-67231252,85813662/2010665859491:-320844586477265209688/4772253631053
+qaddz:4828372/85755227179,10688383,10501313/2337582857089:916584712345989929/85755227179
+qaddz:57153058/801923397935,80676502,=1:64696374617406976428/801923397935
+qaddz:33518641/130632158802,75978846,54844171/383744120637:9925280676298221133/130632158802
+qaddz:8437861/17969987688,54020652,-71865526/87734026923:970750451346170437/17969987688
+qaddz:4070024/3913628749,33427821,512282/796504041:130824081286095953/3913628749
+qaddz:81166629/3135890000,93859365,56814645/4127270728:294332644191016629/3135890000
+qaddz:75095946/6594060085,92035409,-11381306/3866199715:606887016968645711/6594060085
+qaddz:-6201133/708702298,47074908,22887883/94448148:33362095471537451/708702298
+qaddz:6027874/49969387,18501816,-9130290/81894907:924524409934666/49969387
+qaddz:13827470/4398317,50518578,62727273/34158559:222196734260696/4398317
+qaddz:-89138866/91998795,18780715,-35130848/77386067:1727803060099559/91998795
+qaddz:1174985/377026,86316466,16615749/3874669:32543553085101/377026
+qaddz:-9292539/4656085,1624786,65325863/1600219:7565132430271/4656085
+qaddz:-2336639/845282,-4069510,8089655/167446:-3439885888459/845282
+qaddz:-31078338/91681,89417696,2569245/159973:8197872708638/91681
+qaddz:73383631/12053,83445739,19141505/6087:1005844875798/12053
+qaddz:22853974/63407,-85636132,-6290341/12816:-5429907367750/63407
+qaddz:21369191/1915,48981131,5257100/483:93820235056/1915
+qaddz:-45229274/277,6529852,80452675/6632:1763539730/277
+qaddz:-17600350/527,60401374,37082689/442:31813923748/527
+qaddz:85256283/467,-24966013,67067455/319:-11573871788/467
+qaddz:80505325/66,13054914,=1:942129649/66
+qaddz:-4197971/62,-58438955,9669086/33:-3627413181/62
+qaddz:45758807/4,-88423268,27591403:-307934265/4
+qaddz:48139065/2,43301388,-36531779/2:134741841/2
+qaddz:-746260196/20472817142129557823,982354175,32526895/10440994669702430816:20111557393582539517581700829/20472817142129557823
+qaddz:-29549747/14838788589925929214,634211818,-74451525/12916990835817929011:9410935088534580052120701305/14838788589925929214
+qaddz:-448318501/7278955030505777603,769108616,=1:5598307029438536391798808947/7278955030505777603
+qaddz:59483976/2793541975287617267,-163303460,314082880/1773468794441614937:-456195070219702394797359844/2793541975287617267
+qaddz:-39988340/60152702435264949,648519691,73804544/228852852664255579:39010211996132972188622419/60152702435264949
+qaddz:-729061405/768059604671461839,714606502,-471314823/354142770917954234:548860387421776203265215773/768059604671461839
+qaddz:-248555917/7165349396837386,582365762,-82300902/5346138197190155:4172854161485444439422215/7165349396837386
+qaddz:543269507/64494661180201173,690548092,897863403/18149141182810736:44536665222174388734581423/64494661180201173
+qaddz:318338239/8630148497550833,845781111,-235304841/3148342727645078:7299216584353524632053702/8630148497550833
+qaddz:859971543/1629667855750118,-528676738,-821484768/9266342092322843:-861567486001426067383541/1629667855750118
+qaddz:-374749715/8438356773884,291407771,-932095108/907679125024843:2459002738379912702849/8438356773884
+qaddz:-105904217/719249349028152,954350873,-483804897/722878772519704:686416244149698456872479/719249349028152
+qaddz:215809489/24453042701551,949038292,509810695/60521395527768:23206873879683242600381/24453042701551
+qaddz:150432367/67777562170303,451848420,463171069/798174121745:30625184378103331903627/67777562170303
+qaddz:-8493914/1778903924623,-83428918,=1:-148412029657258941828/1778903924623
+qaddz:147732646/368561418133,316756885,462378256/2791638842869:116744366739139328351/368561418133
+qaddz:-66012899/43799234004,-321281986,982505097/911502425047:-14071904886149864843/43799234004
+qaddz:169940076/279466336907,-71525240,15350688/150338991023:-19988896819024092604/279466336907
+qaddz:233355217/32843819415,72601264,-758317611/7873649159:2384502804350095777/32843819415
+qaddz:285149260/19453167983,144991594,-201126001/42622707256:2820545834490084162/19453167983
+qaddz:940581418/5616720353,-615369286,215195096/2354964241:-3456357192346696540/5616720353
+qaddz:-396923483/8795362315,114388371,116424557/500425708:1006087167170715382/8795362315
+qaddz:43457937/310448072,540792846,48194518/73220787:167888096435550849/310448072
+qaddz:428882054/550113049,-311285439,56137087/291468974:-171242181528711457/550113049
+qaddz:-286703423/15020682,237972794,95770627/88535037:3574513376622085/15020682
+qaddz:-672536805/72578564,-454083180,-450947664/92210965:-32956705813490325/72578564
+qaddz:-842687259/2802968,164043467,877832687/5847351:459807745922797/2802968
+qaddz:9656746/198233,-84422497,=1:-16735315191055/198233
+qaddz:236817273/916726,899428028,-92124131/51259:824529295213601/916726
+qaddz:-32742959/6896,967049226,-375835070/139297:6668738719537/6896
+qaddz:46021278/1013,797203137,559435694/97037:807612799059/1013
+qaddz:495550757/63198,245997332,948028412/39911:15547034938493/63198
+qaddz:-760591485/8548,-293617711,573012945/8054:-2510604785113/8548
+qaddz:268239779/2820,-917135865,-106555829/892:-2586054899521/2820
+qaddz:301095018/37,-382369768,-77751485/296:-13846586398/37
+qaddz:3850763/277,-710988721,-86297861/101:-196940024954/277
+qaddz:195470025/41,-660449973,225753766/29:-26882978868/41
+qaddz:375745961/37,910651525,-88347614/45:34069852386/37
+qaddz:-91575821/2,869025199,629588221/2:1646474577/2
+qaddz:436219553/3,113713165,=1:777359048/3
+qaddz:-844868513/21771218036213010780,986546099,258641158/22466107297036584855:21478310224104386517209078707/21771218036213010780
+qaddz:833503855/8069616060533418368,463027937,-193589362/1951752452419151303:3736457676890855827326450671/8069616060533418368
+qaddz:724738643/11366387107722525,376750281,4819705753/4712039757409798110:4282289536789239288518168/11366387107722525
+qaddz:508814249/2088448235503890884,845043285,6799873277/8328817117516288610:1764829157482661583405728189/2088448235503890884
+qaddz:7996084039/717257384492120308,2419507504,2667813745/128249445552768127:1735409624078098322072875271/717257384492120308
+qaddz:7585030779/180538136040165892,489184216,1064881163/655356926166745922:88316406536909903972991451/180538136040165892
+qaddz:3584540521/91456981705312186,-9911261646,=1:-906454075034784339973677635/91456981705312186
+qaddz:3050007448/41294095103098713,6024934948,=1:248794236732695102097529372/41294095103098713
+qaddz:5293029102/2042882846608867,1387341294,=1:2834175731904754348683000/2042882846608867
+qaddz:4856278727/7671234032065848,-4714174847,-826015688/342674325919645:-36163538519415207233046529/7671234032065848
+qaddz:-1287980783/264067516251600,-7283705114,1474901722/155847550710807:-1923389918563058318663183/264067516251600
+qaddz:-5319461421/224860303990304,7455512951,889923834/139644515373281:1676448908565503130965683/224860303990304
+qaddz:2092800065/39695887391801,-8479055683,1732884799/61967662266203:-336583639581176223855018/39695887391801
+qaddz:1206911087/46584702098976,-2120326658,1346835184/16267372805513:-98774785715446160391121/46584702098976
+qaddz:569792579/414501273499,-8640944572,6673457161/7160564523311:-3581682529327701704849/414501273499
+qaddz:9313961147/9034962045642,-4887430523,6725061071/3300706280530:-44157749276007915969619/9034962045642
+qaddz:-5240204781/952774687199,-8153058385,806610703/7522631755:-7768027652488799318396/952774687199
+qaddz:1072533129/47749905913,-2190169028,7000962285/325419804967:-104580365019494129435/47749905913
+qaddz:539059499/15953197306,2833840907,3868176763/46023931661:45208823123724056041/15953197306
+qaddz:674514633/2185964591,-3939960534,6112848571/51458323114:-8612614216586936961/2185964591
+qaddz:3187633456/3615599831,3078822354,3648967863/4642156796:11131789585989055630/3615599831
+qaddz:3613164783/790101889,5924355725,1093627703/4194434934:4680844653043629308/790101889
+qaddz:7839467059/761810399,3436300760,2070395267/976614917:2617809660899070299/761810399
+qaddz:225690899/491794201,4884762823,622206155/258312784:2402298029837480322/491794201
+qaddz:-7725783503/84500941,-1043559105,9836874767/38034734:-88181734087401308/84500941
+qaddz:1162986782/14963043,1957888112,-8677864987/68949839:29295965172031598/14963043
+qaddz:-2073053051/3932529,3953921935,9300508123/4505890:15548910600070564/3932529
+qaddz:-2553049553/6593625,6886901572,2612889293/3618567:45409643824628947/6593625
+qaddz:157807783/17000,4402443990,876550711/970248:74841705637783/17000
+qaddz:810075291/750871,-6494923353,1278293443/275880:-4876848782915172/750871
+qaddz:2989273314/56921,-2790577575,3360184275/44087:-158839476873261/56921
+qaddz:3268425371/11550,7335374991,2237230499/48036:84726849571421/11550
+qaddz:-3154163419/9858,824560371,4511685191/5191:8125361973899/9858
+qaddz:7027175150/7267,-5589392198,14743439/42:-40611085927716/7267
+qaddz:4661020509/730,-1409612732,-472504172/703:-1024356273851/730
+qaddz:550638145/104,3388785600,7616106439/471:352984340545/104
+qaddz:-2172843710/11,76395123,736231113/29:-1332497357/11
+qaddz:-6453196546/63,4130453785,-5670101997/64:253765391909/63
+qaddz:1769225059,-8164754222,1531642609/9:-6395529163
+qaddz:7580730244/3,-8295939153,-1516372895:-17307087215/3
+qaddz:58423769119/50643850140797602406,90335026336,=1:4574913536225388721450090733535/50643850140797602406
+qaddz:-42124546066/6087273228356965143,-24064378632,75472938387/29014055899155453086:-146486447803619008497702570442/6087273228356965143
+qaddz:85077906583/7059686186393838266,-86403115965,=1:-609978884239495412773574610107/7059686186393838266
+qaddz:2409771251/78123085616637683,15985845324,=1:1248863562901179163797515543/78123085616637683
+qaddz:52223576739/412739442713673226,-46190346315,31453828195/12849072264316598:-19064577796804669642459685451/412739442713673226
+qaddz:-44585554037/157326507974173406,59214099831,7574929311/32876530728519241:9315947549245321588003740349/157326507974173406
+qaddz:-47861969231/60513239361297573,-63013076957,=1:-3813125408790805542688294592/60513239361297573
+qaddz:-31901636875/33882731297200408,-55696719345,31284269910/21963113061657589:-1887156975702218940497129635/33882731297200408
+qaddz:1727465561/671724526279818,-68558893487,=1:-46052690249823572892279805/671724526279818
+qaddz:17391142729/435638497115449,79866074338,=1:34792736595117065793390491/435638497115449
+qaddz:-14607124051/752098365273835,79819155439,34961447441/234817885230781:60031856323210021057514514/752098365273835
+qaddz:-33882594912/853897505052767,-69441770727,68892865654/360632311106545:-59296154770231603933546521/853897505052767
+qaddz:56393173391/95959531164605,80334900495,=1:7708899387655450534152866/95959531164605
+qaddz:76008103374/82690250931395,-41801579607,72201983593/77462511255258:-3456583107031437979958391/82690250931395
+qaddz:42873865571/227802171757,96248926412,=1:21925714465976151611455/227802171757
+qaddz:2188733045/317649531592,-27294537694,-13503437379/778368702506:-8670097113517099095803/317649531592
+qaddz:-40936176209/483902341255,59864812412,-30132933091/131952074240:28968722884917247480851/483902341255
+qaddz:29030847755/204795623153,98812754244,=1:20236419580893256259087/204795623153
+qaddz:7022832233/85729381270,286720337,65140586861/51219438458:24580357095558720223/85729381270
+qaddz:83478631598/83831440713,2447203008,78651932717/87841022347:205152553961305896302/83831440713
+qaddz:70410742832/4854173541,25635871440,41240688913/9691426040:124440968914936311872/4854173541
+qaddz:13133061735/215660389,-54580960568,73195756378/2318826503:-11770951174955479217/215660389
+qaddz:97316922721/33728456,49150998791,-43302763720/346667451:1657787397395219417/33728456
+qaddz:42314512205/91048434,3019543575,=1:274924756213023755/91048434
+qaddz:9911778891/3761798,99193069336,84599064764/16160639:373144299753805019/3761798
+qaddz:22143440303/71908,57401237223,-44550917147/46946156:4127630309671787/71908
+qaddz:13575690632/9774495,-56625307968,27090428376/1406293:-553483776030985528/9774495
+qaddz:65452607896/5739831,88854202629,=1:510008172182823595/5739831
+qaddz:-48594032321/296227,26116980382,90351957100/631949:7736506153586393/296227
+qaddz:38854983873/478381,91268688211,-37086942845/919397:43661245190050264/478381
+qaddz:-3289168101/2633,39943120731,86275372528/65091:105166947716622/2633
+qaddz:71226110755/74802,75928864342,-681828710/6523:5679702136621039/74802
+qaddz:-11750464340/9973,3631010522,-10917246741/3869:36200317471566/9973
+qaddz:15180336658/9543,75388205179,42003176179/4581:719444822359855/9543
+qaddz:37691546351/502,-21661824585,-16098775076/329:-10836544395319/502
+qaddz:-35885239812/857,34474662009,=1:29508900101901/857
+qaddz:22416794298/37,77595160739,19551745221/79:2893437741641/37
+qaddz:6506889348/5,89218535043,42795404175/52:452599564563/5
+qaddz:-17539280423/2,-76893365070,11913582381/2:-171326010563/2
+qaddz:-18732975933/8,-68638332129,=1:-567839632965/8
+qaddz:752606019983/39088539215799132539,78330421475,375459572044/17732255158454998643:3061821751615612031471862895008/39088539215799132539
+qaddz:-87137756962/6035494303898759827,-609859506482,522818453593/79286344644150136171:-3680803577550619796673205455576/6035494303898759827
+qaddz:-421506353201/1519073638798046220,841569835268,206505393657/3285765743903619005:1278406551963233090464143733759/1519073638798046220
+qaddz:313227767819/3667276491812736850,-527972639267,112687878130/8071994431605454933:-1936221648304195391507820121131/3667276491812736850
+qaddz:45625693955/874183546628376789,86870332839,316926200883/622490420207251454:75940615657984567948357767926/874183546628376789
+qaddz:307191711010/592741905927742817,469188479690,640816126728/494995852882629881:278107673690790651608739597740/592741905927742817
+qaddz:-15083287151/7156847089669175,536288677413,-968335381430/55030206560476363:3838136060165760061381557124/7156847089669175
+qaddz:494377643469/98558071038934628,454517393920,719586404719/50508704469542694:44796357598398794466182305229/98558071038934628
+qaddz:45709637656/3099309256090823,-330553962257,-99912647867/433025093788036:-1024488954860616607596429855/3099309256090823
+qaddz:-666357878153/2095670070843359,757413983851,=1:1587289817194775273218717356/2095670070843359
+qaddz:126425902111/416943810772372,-678980645165,678919705009/106535794783049:-283096777635778691091479269/416943810772372
+qaddz:585263176259/851781334135526,22092528056,485539073651/458880186297433:18818003021966803924493715/851781334135526
+qaddz:-873682780814/76616993618553,693272108938,956115786575/5882428371192:53116424746422652551145900/76616993618553
+qaddz:304885366516/59327405229613,446589528583,-184321844164/42141769957411:26494997933545783426894895/59327405229613
+qaddz:227263949507/3005012215064,-970992420883,944562884485/8363349411634:-2917844085487752336832005/3005012215064
+qaddz:256051015589/5849799282523,145771147218,425125619888/7082715872863:852731952408667058486603/5849799282523
+qaddz:922332758083/714594213406,203681203456,751751042693/26386109479:145549409370150101489219/714594213406
+qaddz:54459784009/28808646278,-878737718814,-508120353933/475490279255:-25315244112394691890283/28808646278
+qaddz:-75343229837/18301076728,-18822576757,-5004528638/1010757283:-344473421523869640933/18301076728
+qaddz:455494735961/31781276434,112071922031,-828539887333/78026709049:3561788735012400453415/31781276434
+qaddz:970291731117/7275020519,-637559590581,=1:-4638259102591722400422/7275020519
+qaddz:-982813942861/3854475224,783494985089,=1:3019962007170985992075/3854475224
+qaddz:892057818224/861585953,-595915633524,-949622564162/410937589:-513432538125316470148/861585953
+qaddz:292775249633/706174681,844137005926,193717693265/82462566:596108181172863409239/706174681
+qaddz:-4493924646/5798807,-582307144826,-746783726287/48847174:-3376686752060947228/5798807
+qaddz:-90281739197/55430389,586184656508,420537839926/78274081:32492443445788082415/55430389
+qaddz:-53911496672/874759,873541937929,=1:764138618169337439/874759
+qaddz:994025741513/6110189,974615575614,-72802324373/849950:5955086363371072559/6110189
+qaddz:624261056662/482529,-97311267314,=1:-46954884244700444/482529
+qaddz:-39993733292/46881,-841794041874,216763126337/306248:-39464186470828286/46881
+qaddz:792871375475/84839,12838795021,=1:1090023402162094/84839
+qaddz:54064516459/38317,126266853725,=1:4838221098697284/38317
+qaddz:157148550179/2580,316644803876,=1:817100742550259/2580
+qaddz:-892971311861/9503,293701366371,267061134465/5464:2790151113311752/9503
+qaddz:56861735925/22,425609853419,=1:9420278511143/22
+qaddz:975604652373/62,798330121028,9837445133/3:50472072156109/62
+qaddz:301936419421/8,401226430058,642908142507/92:3511747859885/8
+qaddz:960812431491/91,821665693935,184158030746/25:75732390579576/91
+qaddz:-288196323271/3,-6851210649,=1:-308749955218/3
+qaddz:27950016152/3,811526852805,=1:2462530574567/3
+qaddz:-1239949810170/37215316493340542309,5084146392476,-296516594614/47057875211140309013:189208117094469900857215847456914/37215316493340542309
+qaddz:-9982761144683/86065596803955058468,2050494075451,-6484572703254/4884291350957415781:176476996346664368103513547324385/86065596803955058468
+qaddz:6263655072498/2824969489983333169,5441993837821,2221750454035/2194218699041801277:15373466556521632295955651057247/2824969489983333169
+qaddz:-5989792323571/836318289746974211,-2931974130042,816998017476/3394736245988200951:-2452063590019098006588326670433/836318289746974211
+qaddz:-7698578874730/344070437345848791,6704395369109,=1:2306784246788816955726767522489/344070437345848791
+qaddz:4466480763133/830946743248529621,-996598272615,=1:-828120088956544529460779865782/830946743248529621
+qaddz:4485142594172/49082393942890253,9197604183793,-4770331797107/16903008398062353:451440431879703596984582863801/49082393942890253
+qaddz:-134312893516/16006607498131703,-5249882281532,1583762956049/37750476556875940:-84032805091878883507373502512/16006607498131703
+qaddz:2427070778131/1995258741120055,6244907615189,3514628161072/4284871651689771:12460206506693051427861293526/1995258741120055
+qaddz:5325619193316/9866683016060977,4027295598641,9237993735817/7374034428483561:39736049083768285110593525573/9866683016060977
+qaddz:4506791224955/98740859078376,-2433647151513,7230124153235/24547192761813:-240300410434031792022757933/98740859078376
+qaddz:6263613039105/662686345538291,3241626331560,6974592366933/417432893529050:2148181507262199091454803065/662686345538291
+qaddz:-1811100007460/13795113510661,11776226228,=1:162454377540672125809248/13795113510661
+qaddz:1928373998137/24092133222096,101879503692,2556288163059/81191221300450:2454494575550613661976569/24092133222096
+qaddz:247425249267/4299310767884,9656652793497,6941336412649/1087093561201:41516951336799008176899615/4299310767884
+qaddz:4375335748035/3738750520588,3905049802371,723270679177/5043873825535:14600006981541018102462183/3738750520588
+qaddz:7794911344062/83950994789,-8243600514425,-2603543493997/10276127701:-692058463821295982987263/83950994789
+qaddz:-3095785250121/322417942963,4195151544235,-8472000440819/880146461714:1352592131307205816218184/322417942963
+qaddz:-4517167531751/11212303539,1754468949877,5238909223466/69391666005:19671638411254333182952/11212303539
+qaddz:1112980425235/45979665716,8827854965263,2125854079037/42150601594:405901820293236512448543/45979665716
+qaddz:563381672458/1066429293,-8418949099715,=1:-8978213935648672279037/1066429293
+qaddz:2857062479357/2065941250,6427518036538,3720687400259/8823089384:13278874649659923871857/2065941250
+qaddz:6660515562878/864868567,3023828885557,-2827547445095/772367393:2615214561765405149697/864868567
+qaddz:3112189653770/430887893,-7852737661995,-86959631083/81894801:-3383649582346582072765/430887893
+qaddz:7683412484443/95948152,1332390320090,2759996778764/6533551:127840396638736458123/95948152
+qaddz:159684374850/3723623,-1974161463836,3321588400449/53889098:-7351032872769022978/3723623
+qaddz:6040625454008/1761191,7333833752524,=1:12916288041066950092/1761191
+qaddz:212485296160/215857,2626911385981,255098287490/595687:567037423528996877/215857
+qaddz:-954041238820/149351,8462499450675,-3418839060974/6081:1263881801416523105/149351
+qaddz:2631178437270/289589,4915496549364,-7382060007604/607303:1423476361412208666/289589
+qaddz:-4190078661321/81307,6205900529843,-4545813476917/72302:504578964301283480/81307
+qaddz:3075448966277/10503,8355956941265,3979238326369/89488:87765691203072572/10503
+qaddz:-4159327490855/1442,9824287076936,-4853919949437/3400:14162462637450857/1442
+qaddz:2105555375170/7889,5827815981584,7350815564091/1621:45977745834091346/7889
+qaddz:-970057756335/134,5386054563891,90106168024/673:720761253805059/134
+qaddz:705786323151/74,863825635194,-8448597370801/341:64628883327507/74
+qaddz:677223680197/15,1191619181913,2784760197168/47:18551511408892/15
+qaddz:1250102070269/12,7296468619064,-8785308120663/49:88807725499037/12
+qaddz:815291444846,-8875650934350,-9869792677199/4:-8060359489504
+qaddz:8187166853148/5,9378339124723,9909614166843/4:55078862476763/5
+qaddz:5422808604175/4005553410506916322,59300928198551,=1:237533035191931723527928367253597/4005553410506916322
+qaddz:10175385793742/12145808688724905047,-50946207146217,89160661571041/31082940158416923936:-618782885414101287608920784463457/12145808688724905047
+qaddz:-66447228282594/5132267228812337113,-55179117587940,46405635667194/2000839741729635683:-283193976911366915176041931499814/5132267228812337113
+qaddz:5047791146973/4721169311443187453,-99279491905591,13672396382858/7559676837928609713:-468715290440348563665526200602750/4721169311443187453
+qaddz:29394169412845/154033282520525053,-29623023279395,9504860273065/124604054480863853:-4562931513907140557523146770090/154033282520525053
+qaddz:4067070745921/152576293456659409,771698149382,82888271738589/108217943144539550:117742843300069025816248581159/152576293456659409
+qaddz:75868597092083/18545709845595165,82562069353348,62428349184891/98682364625908466:1531172182479096917186342454503/18545709845595165
+qaddz:38258707804725/80482758393493951,26694314420345,16108158643166/21949554170590857:2148432057972588200266536637820/80482758393493951
+qaddz:46555640927056/1709747501026629,-16128468753166,32141736958103/3736469425292601:-27575609146111592776953130358/1709747501026629
+qaddz:45370445351363/7110877719431711,86735990625964,-33565334246797/6384179688851649:616769023215005197115686895767/7110877719431711
+qaddz:9475910636228/981744732543279,96180861167731,=1:94425053822896329193346366177/981744732543279
+qaddz:91004040702465/936897618249146,45878038637853,=1:42983025129746861152661226003/936897618249146
+qaddz:7213181652898/7450266621563,23288667968005,30404125827566/4549937716875:173506785622698280708744713/7450266621563
+qaddz:-89229843161908/67491130269077,87276718571732,84273766896387/35434923631324:5890404382582247110442769456/67491130269077
+qaddz:6912185841959/2387122535810,95367158366052,16820307441286/172628433269:227653092911770818644164079/2387122535810
+qaddz:18631413455311/5393632894857,30541536678945,67884298820845/8941925270968:164729836891057997564141176/5393632894857
+qaddz:95264142661666/640329051433,33493375919635,26112952504575/900465490172:21446781632004027732248621/640329051433
+qaddz:26873236385920/167838163737,63857215148601,48278558616779/606456030301:10717677731926604660867857/167838163737
+qaddz:4401103056499/2897755980,-11052252274481,89598593400912/9441413885:-32026730116444816089881/2897755980
+qaddz:1318889016693/4307161820,-79377185552021,28715124462201/59240718095:-341890382987401586021527/4307161820
+qaddz:76790810847961/5450577611,68261418218311,51631448908695/2088035198:372064157912624257682982/5450577611
+qaddz:21126534617963/8738346544,57900812244090,-48117757406954/4100802105:505957362589063270542923/8738346544
+qaddz:54005121935732/492299853,-95310437087251,7343525049871/87207576:-46921314113414293538371/492299853
+qaddz:65465816406636/92490709,85963247914764,=1:7950801813045110334312/92490709
+qaddz:-1567974419029/2146031,73885253968091,=1:158560043890421877792/2146031
+qaddz:76063102421737/23698475,94901902098254,36870175818609/29433536:2249030430391022384387/23698475
+qaddz:21982490259259/3028082,35729075461978,-48666061360318/4739221:108190592265547525455/3028082
+qaddz:44090802588674/2725087,-59617101535954,4729707469385/5642703:-162461744282505689324/2725087
+qaddz:31794415201437/483367,88454206922687,23449145143186/104191:42755876432013648566/483367
+qaddz:21120858803723/196745,-97469888172037,=1:-19176692027548615842/196745
+qaddz:6353568582461/36133,71560599712641,-9946843698401/1669:2585705502985439714/36133
+qaddz:37008170564675/36399,98738162943972,=1:3594007401168201503/36399
+qaddz:-19046004662298/5177,97280021451374,27910156790976/751:503599625049100900/5177
+qaddz:67988194828572/3833,91182292091517,8505334994139/1301:349569713781613233/3833
+qaddz:-27835175210909/97,-86045963939656,69384812566415/607:-8374293677357541/97
+qaddz:-66933996037605/499,-26758226932551,44077986933749/138:-13419289235380554/499
+qaddz:-69719056900661/20,19918523107231,=1:328651405243959/20
+qaddz:9273298009097/11,72385368670495,71790012014913/62:805512353384542/11
+qaddz:21941955990125/9,52544189533470,-12392727415391/2:494839661791355/9
+qaddz:-6780461974136,98345436504870,=1:91564974530734
+qaddz:-84540612076693/19951779938951892435,-646908420217313,96551072703477/9551882373716321942:-12906974440830846345093795912803848/19951779938951892435
+qaddz:-83364626051404/25732505849792137517,-259790031036174,=1:-6685048493356028415791438435591362/25732505849792137517
+qaddz:-897066937584389/9348251282430626623,601658334644890,=1:5624453298429168053199845947322081/9348251282430626623
+qaddz:-205588700127652/1395648197045308621,722142436485815,631381416931617/2014178604201247978:1007856789491333998582718663583463/1395648197045308621
+qaddz:271688711340751/180941683917606723,-804877924901239,356634127117981/581970885207340397:-145635967079739188257214306089046/180941683917606723
+qaddz:-150593304294442/751040562206456283,-252704334790286,580538958605443/761261694295334982:-189791205672904947390115336361380/751040562206456283
+qaddz:-33791007514234/9931544134782813,644114592405109,-28689348856389/27441863478469573:6397052502328982483214019077383/9931544134782813
+qaddz:571363848651239/66311445792999286,-10840446958246,29259414259102/2538648211395449:-718845710843613051916101161117/66311445792999286
+qaddz:911329771312150/9119213968348277,389930802134286,44063137011973/945363924228012:3555862417512229944211542037372/9119213968348277
+qaddz:304065915990821/6933490862650654,-179336341462285,23446882001027/1428507361849985:-1243426884869950368991555593569/6933490862650654
+qaddz:13794668675671/40367472899842,-309167092058184,502787291762833/565691523820858:-12480294210181685647999731257/40367472899842
+qaddz:-67226439568370/155342790290953,-999058912984495,463385115124522/611519522742283:-155196599208057935177067342105/155342790290953
+qaddz:959309013745217/47174481901345,384897898127779,=1:18157358929095601304695707972/47174481901345
+qaddz:65775323516640/39878078972149,40619665002388,983890817704139/3521649399512:1619834208787531337994008452/39878078972149
+qaddz:256671220274850/66938758003,-730244708478110,930955533204827/6929373391761:-48881673823530816492539480/66938758003
+qaddz:-893936101636063/827048331634,597691527840677,-126588969738553/668190758507:494319780931514439309440155/827048331634
+qaddz:234866720760362/249576871361,816339748530719,745271148727983/265090084030:203739520406157211340598921/249576871361
+qaddz:21197614731825/513159868888,-383505627380083,188859267143231/81431113864:-196799697464152377607825879/513159868888
+qaddz:964492287424130/65578382813,954893437672646,-807333982742123/64002138636:62620367402282827454057328/65578382813
+qaddz:-177007104279849/1974354920,357812362625802,199235392833781/39880047906:706448598410069193365991/1974354920
+qaddz:91059156010499/3926511496,80812106334647,889997682906405/8258270479:317309664630025024612411/3926511496
+qaddz:451880285884181/1898972562,396985801563335,-25588857743575/1369245348:753865145124230156098451/1898972562
+qaddz:-31366502392369/134800936,883517312779341,385458521261359/159439811:119098960703493425870807/134800936
+qaddz:-10128482818698/70545329,960042254669295,158648344293111/128796202:67726496699418719154357/70545329
+qaddz:335395247847445/29367757,-244136374073097,-48337710344902/5085513:-7169737373244565085984/29367757
+qaddz:122530580993759/16204629,960637241145668,=1:15566770218879665890931/16204629
+qaddz:817780076457530/3494021,283630218235935,3662113752156/4047877:991010756531016302165/3494021
+qaddz:-217463590706488/7914657,312381371588143,-746462040054419/4436039:2472391191846106405463/7914657
+qaddz:100306351636824/211229,-198763366297580,-307504584166445/361449:-41984486793319888996/211229
+qaddz:144895746707409/536491,670873254269860,-454046918862603/780899:359917607952238168669/536491
+qaddz:334763841889403/29410,-358386406501860,411931926070123/15800:-10539809451377813197/29410
+qaddz:177232274198821/12516,750894264493456,79990853919389/37735:9398369846674294117/12516
+qaddz:179909139835812/1979,408538585432232,499794975465566/4363:808677769710222940/1979
+qaddz:374051483837827/3284,-984497815753029,=1:-3232716775449109409/3284
+qaddz:72651383395505/137,180883369883715,=1:24853673057464460/137
+qaddz:-795240710923177/87,-266514612085555,-145736783502361/320:-23982011962366462/87
+qaddz:293684182859578/93,-548418457694218,115702982878171/33:-50709232382702696/93
+qaddz:-775889557419502/17,435575409934841,891608394581532/29:6628892411472795/17
+qaddz:298220230000324/3,766606056221642,-153273190527374/3:2598038398665250/3
+qaddz:249679021051517,393498225268690,=1:643177246320207
+qaddz:3542672594684587/23493960223203744626,-8259187214851748,=1:-194041015901719887360631082447021661/23493960223203744626
+qaddz:6602377363368086/26756588963267146371,647903723659326,-14331599050621/14088246371426023870:17335693621722809158754291144574032/26756588963267146371
+qaddz:953643270036373/672267077222382067,2730834301717412,=1:1835849994394189222848787000486977/672267077222382067
+qaddz:4732337125860764/6964537546610955687,1462613230096260,1598512177911468/1847092196188952335:10186424757175331839719046730291384/6964537546610955687
+qaddz:392871539920454/124667933854771591,4222301184211601,4921205597352118/360784888091913307:526385564748215632593338807347645/124667933854771591
+qaddz:2490987481558645/273236967005544791,5809366131098920,-8409430808361398/118474537825945987:1587333581886205001306049593284365/273236967005544791
+qaddz:4255269445550164/45737089432737585,4857866077021042,1465698613834409/6912785090125613:222184655216973491505517154813734/45737089432737585
+qaddz:9210797969401333/8163980149744856,9750466506961289,6445568175713494/15481234020450335:79602615013584036398759188280717/8163980149744856
+qaddz:414318154924738/4286466178431057,-1529884082696356,=1:-6557796377397951866564056203554/4286466178431057
+qaddz:1482835316159491/9227279017181664,3761016398994804,217567654667999/4259451401870992:34703947701720897607169976233347/9227279017181664
+qaddz:-859552591107487/51274074663284,-418382458987624,-4461813189832442/202453728783091:-21452173439940648539914304703/51274074663284
+qaddz:651597097619645/119852979164632,9814527719768623,549507364552128/130838602558483:1176300386308132636435962561381/119852979164632
+qaddz:3062835747588459/29244354985217,-1153612952589391,-1697694605519151/20613920170229:-33736666701065396523928444388/29244354985217
+qaddz:-3555234895468573/82553845875899,9556279680346194,=1:788907639878281506316585509833/82553845875899
+qaddz:-3430655994829779/1022475878060,-3861606915733328,23919352405729/346214612268:-3948399921890433631600813459/1022475878060
+qaddz:8941063770802759/6431761572186,-9248680430430457,=1:-59485307385862346247287666243/6431761572186
+qaddz:-1458085892513495/865768190522,2913463648461976,2967255557005217/183961790972:2522384151079091183948077977/865768190522
+qaddz:309596223775083/196561317238,1984332827634766,-56866515384243/60782960375:390043074438804409147671391/196561317238
+qaddz:9692793587023183/17106658395,1171032202882506,9344415493288159/22347599779:20032447873948158050561053/17106658395
+qaddz:1297322765335855/78060494353,2404633388766311,=1:187706871066125196217477638/78060494353
+qaddz:8963645561434168/8924489269,421621279944751,-927728264088899/2108513434:3762754597412620773811187/8924489269
+qaddz:2904608103864485/1444422187,-8951359589722050,1306658433557061/999915185:-12929542392305138079258865/1444422187
+qaddz:-6451464021043383/499665577,-9753719382757790,-1838096568039957/168375724:-4873597829733219012638213/499665577
+qaddz:-7656575927425727/878618401,1131218876361418,9338726624701012/366586573:993909712673109853826891/878618401
+qaddz:4172728002376239/19479743,368831988655257,-6420008608192074/55268659:7184756521911324335190/19479743
+qaddz:6161530173305165/99639697,-1432201837180119,490175175009028/6720087:-142704150937940218278778/99639697
+qaddz:6918228969049918/4185569,-1641939400683084,-9043134997963566/4283597:-6872443737148726164878/4185569
+qaddz:1451717795705836/141415,-9179648440127908,=1:-1298138532442892403984/141415
+qaddz:8140278576768419/808479,112313592852123,1026877402176763/31094:90811321514068319336/808479
+qaddz:5643486834069101/530944,1715393818673080,4580531049699971/438581:910783699148393856621/530944
+qaddz:-1028760789941125/31581,6778845120322328,3983036171498424/29225:214081678984109499443/31581
+qaddz:185311071775543/30749,3825266581520702,-9282766742556431/28854:117623307426251841341/30749
+qaddz:6239950654595061/6550,297809616078377,958337836911634/1219:1956892935967964411/6550
+qaddz:1051395142542259/1190,5736372693566227,843234486155860/5981:6827334900486352389/1190
+qaddz:8170656479179803/377,1507295266275575,2218120930173065/774:576420971865071578/377
+qaddz:-2473414150338949/204,-9581413081720714,-4722755512692772/455:-1957081682821364605/204
+qaddz:-8681518748104826/77,-3407099061618709,=1:-271028146492745419/77
+qaddz:8708666762588363/78,82065604323195,16011547616829:15109783899797573/78
+qaddz:-9527121546851805/7,5686511086561176,-10800792278755:30278456059076427/7
+qaddz:-3156505883016239/9,8703260342529372,-186440241608063/4:75172837199748109/9
+qaddz:-29299633375857887/9525577839119524640,19394264263578925,11770323744387737/9435334262616904973:184741573875175155232312577746354113/9525577839119524640
+qaddz:45414752276742165/12207900549477852191,73340302679712901,-1762362316527451/5610201133037246999:895331121382539119649801382270558256/12207900549477852191
+qaddz:51287924597675777/9802415152761834211,23795752241231275,26808795167323503/4767990503572354769:233255842340811827381416634655824802/9802415152761834211
+qaddz:-11478523036790/4661848726590019,-92346960041294475,-99921528151340483/9725949381928447460:-430507558072968016697671897881815/4661848726590019
+qaddz:35557351930961/1508286209602511,-81125561093339512,267345760579243/34391099339971446:-122360565043349990608741738783671/1508286209602511
+qaddz:-4793426675094793/37007904105416450,60895517302185125,11894447435691093/106928191679495960:2253615464768995346344506445211457/37007904105416450
+qaddz:31586795072540784/44373236784764585,90702169150810719,18513292834106234/37597849772411799:4024748828620693789339255382127399/44373236784764585
+qaddz:-1049981287826468/21587060162890651,71326478095880873,17797674000912830/41386390390327551:1539728973862882607828674533591855/21587060162890651
+qaddz:7766969806666613/5323521507239637,-31539639298859404,=1:-167901948138058494538892792329735/5323521507239637
+qaddz:28336169012562031/1963339938986121,36117112871692963,6517543421786160/2515812174582889:70910170181864535729772042928554/1963339938986121
+qaddz:51605249327254279/329660326356162,44496912384848741,=1:14668866658630834332811390546321/329660326356162
+qaddz:95776204572834299/360483541928559,14896033753227230,-634271284568050/59231390665489:5369775008050814030088926295869/360483541928559
+qaddz:3199790617176713/2044034589474,61554085339919034,86943016409024831/69267518528772:125818679558232164197205824829/2044034589474
+qaddz:63207445866080934/73630340098063,62781346312315459,=1:4622611880790123804296516936851/73630340098063
+qaddz:-10562032121106923/7562195446113,2371574008330945,-12004106935992565/4243540006504:17934306165909664170696759862/7562195446113
+qaddz:74286029526835348/6426144147769,-56596118082865321,10556610079748403/5666686062526:-363694813004573972309622783501/6426144147769
+qaddz:7784837673853468/63315839471,36983417562905989,24368105233273509/482119525015:2341636129509702481462345287/63315839471
+qaddz:41230861520352699/248615826076,65301921451058132,21820151723088751/772186719402:16235091145946112952997802731/248615826076
+qaddz:7868735455391473/2376142635,24220945772157046,42112368834645777/38165511736:57552421917114088371647683/2376142635
+qaddz:16212068555703281/21768826663,22486544931183098,31430506824676803/88055986181:489505698872898192433045255/21768826663
+qaddz:18990156909977866/4288195941,41076064025528634,4353887544365053/451796487:176142211045518165608052460/4288195941
+qaddz:-52094180225299371/8295443431,97662863401423145,-9449635278901807/4480020195:810156758603891764016311124/8295443431
+qaddz:70121165050790582/884849671,9294106339201909,871866453377042/132524629:8223887006602988632012521/884849671
+qaddz:89800859106311942/275630735,48525545845357510,-21376168718994863/279135020:13375131957432945925381792/275630735
+qaddz:65595348623886377/41322369,78674639156794339,-7330652418059047/43068742:3251022535774253157155468/41322369
+qaddz:4765824965091103/13071190,9760309664863845,=1:127578866854096607216653/13071190
+qaddz:-6087229416296351/2127106,89049693910575358,21234009428205913/420191:189418132128118891157597/2127106
+qaddz:62215823394518468/8207157,27553281434116768,-10639236075124883/1311092:226134168810804865827044/8207157
+qaddz:-8994816719328305/35983,-81534831740246875,=1:-2933876845326022631430/35983
+qaddz:33370840040824831/471708,31379166699519941,-3805555942820402/57901:14801837336337193154059/471708
+qaddz:15270801632993512/43891,62114435487940553,91890892291173796/96141:2726279958802831805235/43891
+qaddz:52066031635427411/80207,79948554826885018,-32268139784894785/9291:6412485803031602066137/80207
+qaddz:30138851628256646/2271,8808985720955931,4132024812310306/403:20035345423919175947/2271
+qaddz:-48704579394955369/515,96280004013075991,96197516817859731/8348:49535497487339179996/515
+qaddz:-76138989019830581/163,-7824132792666947,84793723224519789/121:-1351472634224542942/163
+qaddz:14262406418152892/23,45957936069739248,60434066726939490/989:1071294936022155596/23
+qaddz:34014765103829171/5,12306267367411447,20552835074171214/59:95546101940886406/5
+qaddz:91849502756698141/20,-82945870135128988,79066927763083824/47:-1567067899945881619/20
+qaddz:21965479380351319/2,66229223349934130,-87992715521815677/8:154423926080219579/2
+qaddz:13175376582771327,80435538108007231,-11481476371288002/5:93610914690778558
+qaddz:233543544528899097/29308688028184850696,-313371565494318136,-546211686884835394/64310476577955517625:-9184509449976866806361166554956123559/29308688028184850696
+qaddz:615655938896447797/54625270368834900652,952119518403165605,-481883729818516183/20964479862538317110:52009786116217798007515677541374922257/54625270368834900652
+qaddz:-306096577466260199/1563899474881584021,-795305085572154223,-267651228746045877/3959443707942409072:-1243777205696945233963124085010730882/1563899474881584021
+qaddz:303249287074462526/988120532724227499,996970552281399322,-597979414385274083/1415816308850447338:985127073230663601717735166266818204/988120532724227499
+qaddz:952339724809160651/584399533289204739,-621203230425875224,-89809265051648755/476952842063426958:-363030877938627789190802770194325885/584399533289204739
+qaddz:-165153711870868787/63787766852635668,255678391566014218,=1:16309153630469804511357374991058837/63787766852635668
+qaddz:-170282783383418995/92637597632923627,745590434716695858,727513707271968617/97034490370058355:69069706690241882092088302517817971/92637597632923627
+qaddz:402676307184383008/54079780485931177,-833124989932029446,616876399608513026/73463803299685963:-45055216572867773936309791509054934/54079780485931177
+qaddz:638546632762921290/5700920505461219,866490174226616488,=1:4939791602029182823423545032900162/5700920505461219
+qaddz:490462229342420061/2997315021629032,-794115458808160581,-232736090223412025/6604604996597921:-2380214193593530011634172725167531/2997315021629032
+qaddz:989191334948063646/238829798613001,932376780689163706,-297260947715156566/95515827924885:222679358763432156823484377005352/238829798613001
+qaddz:733917544080141979/846584851419104,-407471079015324208,-856462825746108845/144065790220028:-344958842885769496528467364727653/846584851419104
+qaddz:-776150844455451188/60437639060267,140648215789491479,110557086596050071/2940144395374:8500446100355055871518908513705/60437639060267
+qaddz:40423809761966727/80515282319291,-896056243874632922,993643995036126943/67717664005426:-72146221449529496100479662331575/80515282319291
+qaddz:241416851638718491/3382660773031,667600506773221104,972636880608985845/976751193229:2258266046317632867918161964715/3382660773031
+qaddz:-311949759477562509/5272945258477,790859608208962462,=1:4170159421226114570459102727865/5272945258477
+qaddz:901115730770569756/737757545883,-294335029298267342,=1:-217147888881589502127194883230/737757545883
+qaddz:18952440190304626/427387361229,-871562962990980105,43270210830528697/42201089691:-372494994897624619964197044419/427387361229
+qaddz:368767126618980087/13867934102,408207198365664686,-388533375692412433/38881769599:5660990527265847091495502059/13867934102
+qaddz:185955534050890250/81788514027,9078725197697519,6436386921261961/22246601990:742535443365117414885489263/81788514027
+qaddz:82375478298045903/9517446343,433517004473691938,-26962495372093825/2304101598:4125974828938829453324728637/9517446343
+qaddz:44007143033079188/7383992497,504540760833169168,449177596957809274/5425450729:3725525192466799748276811684/7383992497
+qaddz:224818172747147/390111499,962172118291046785,59451455054756859/215170474:375354407362750397748227862/390111499
+qaddz:666309089683814939/682581559,-650419141072050333,2300719817124450/74245723:-443964110650091957941794208/682581559
+qaddz:542166078934696959/86595368,203399832612491739,620419080726846107/28244360:17613483898383202470361911/86595368
+qaddz:297894210502629889/46145547,12817895959056372,-291344707530390547/39774025:591489118313956392405373/46145547
+qaddz:715463509593675473/5054643,203255281666377882,=1:1027383602151494890281599/5054643
+qaddz:-658143668234554099/5196064,-351454032197965311,885876617433980026/6310607:-1826178302502356660290003/5196064
+qaddz:-864175272258886331/214462,-113193172511339576,664419730196309649/256429:-24276498338399167034443/214462
+qaddz:554632290831706045/878862,789543599984323318,=1:693900422001713191610161/878862
+qaddz:150056203172522033/10088,195421727932292330,-430213757895224789/5107:1971564447584137547073/10088
+qaddz:649664968382611201/15350,341314581999530333,172494507042296540/811:5239828498661173222751/15350
+qaddz:5864597320149566/905,489601633652276174,975732764347807769/9424:443095343052630087036/905
+qaddz:-178366641538470155/6144,334923469737215876,171402458096874349/1678:2057591431423915871989/6144
+qaddz:783919995622849413/623,278317030520011920,784978030394811864/577:174175430009590275573/623
+qaddz:-749742866135544447/698,79278627691587063,696350994873672899/683:54586739262592225527/698
+qaddz:344612331720575876/25,384322240275621066,-573701559443193526/77:9952668338611102526/25
+qaddz:99948350225973980/79,433526372044256631,233613544663506071/70:34348531741722247829/79
+qaddz:-813485941375813961/5,-73645253545358755,182695807997160858:-1181712209102607736/5
+qaddz:109732737408333914,661611874779880732,190730815184312667:771344612188214646
+qaddz:4439294254467838396/7399413423727575529,-375832621848838675,572455588779808659/2231006844433926946:-2780940947183026582974366027530945679/7399413423727575529
+qaddz:7401374720469772972/86040177417213246183,-4800899289575736825,4427571953719739521/79545327171368379:-413070226637269428522568343871874016003/86040177417213246183
+qaddz:-8281164336639608343/9930865450361852117,6652240436187019086,=1:66062504715229724855994090627548896719/9930865450361852117
+qaddz:2289593814998925046/2242678823806551791,1233211911037543012,8805138183115340751/6847414846976791820:2765698238149906948783491675567059538/2242678823806551791
+qaddz:58801253288456253/38080076339475325,4579333826855732576,-4512504820594295629/667425159645398768:174381381710607976743900573639143453/38080076339475325
+qaddz:1716963717527421640/225107768198324627,1976152916296866074,-8003061483125113466/474882649845647945:444847372606198139049564734922426038/225107768198324627
+qaddz:1034271517993599571/34228782689291755,7928647196076102620,=1:271387941894551313583006246493497671/34228782689291755
+qaddz:-43641059638095731/1029053223531219,4223820009592786988,4164140830282395355/41576160555557154:4346535596487121765588673396882641/1029053223531219
+qaddz:84297032713892287/207039580865947,440521401243831520,-6509343821181533355/9783431747165674:91205366276002625631486487141727/207039580865947
+qaddz:-100413440983654438/8617388967629029,-6540040006542842669,=1:-56358068600234775154346511687892839/8617388967629029
+qaddz:1601279569975518578/576041083643833,1520282279789457956,=1:875745051894437875280462407703926/576041083643833
+qaddz:1171909659900623927/396276655723830,1432202312057184673,-8716463823146798000/535782069662653:567548342541959482379720697481517/396276655723830
+qaddz:4919734080771991528/21359215600941,-486806183295567418,9601757988490006002/10830396257143:-10397798224876307889797677748810/21359215600941
+qaddz:-3738648400400330743/50301136962499,9954014077000284556,8872351197089153189/16636866534142:500698225413830641940352100534701/50301136962499
+qaddz:167898860851405426/29985611753,3092079056219981783,-9747501808202416505/7849158986817:92717882089562932366622101025/29985611753
+qaddz:7674883887123290368/1292702782951,7265216107539444345,5305342163772150486/5832447092447:9391765080964346281672802652463/1292702782951
+qaddz:9423076605657351418/240889071441,-6059127953500151569,-9218210247853014151/104806977658:-1459577706451435060703511889511/240889071441
+qaddz:6906236673658662814/140167346995,5953302177726308344,6858441000058123625/723669979514:834458572118358858467470489094/140167346995
+qaddz:559876427517689463/32071119551,-5256353831354881895,-4515947459706955400/25152550949:-168577152127179433134512739682/32071119551
+qaddz:4068672547617525067/1548794000,1708587743626678397,-207685545846576256/11174851881:2646250449871210288820743067/1548794000
+qaddz:-5137896362067916551/3635693101,2393661747677268624,-695423398519672103/878721119:8702619497019951948732646473/3635693101
+qaddz:234276694270475397/294461381,-3074163560486378221,-5996024834040014309/815688460:-905222447206419268373507804/294461381
+qaddz:-1281564341537166075/106650493,148338290500462844,2961154916731862131/237638921:15820350531087237503616017/106650493
+qaddz:-6081903223358942866/140515995,8576558583908287121,10228381531459438/108952997:1205143657011760730194057529/140515995
+qaddz:2904197618588220738/91768927,1341853265056004046,=1:123140437229833704797299380/91768927
+qaddz:8444844737047959/6508337,-3121162187991725782,577600780863107469/77886268:-20313575342662659863796575/6508337
+qaddz:-7581658318588584115/8539308,1829695701216611407,=1:15624327557306300932102241/8539308
+qaddz:5686384777950870687/5180266,5725674667424296916,=1:29660523493104170838730343/5180266
+qaddz:-9349000804660487281/169585,-9931090441642768328,9282213820882713035/676238:-1684173321546793527391161/169585
+qaddz:-4987687379036548499/415933,-4529830725292970964,-2701909210096535388/203425:-1884111070750660328517911/415933
+qaddz:1296987410190297797/20878,3549166774468354520,3245395317975795443/28657:74100800904760495966357/20878
+qaddz:1416158818097070767/3904,7994210571119010019,7360059100347464896/48079:31210814228466712184943/3904
+qaddz:9709919947974007131/874,-6830730629919228709,2205443246566180090/303:-5960348650601431884535/874
+qaddz:1925917894957464961/685,-6027249478829109060,-5343051367134373712/1021:-4126739975102982241139/685
+qaddz:3125021296756461042/505,-3536767182227478666,1332510672665779772/45:-1782942405728120265288/505
+qaddz:-5071777645997131741/514,8260041058129029864,-531041568629881135/103:4240589326232324218355/514
+qaddz:-2218822602969636376/29,3585630033488142992,3393420876741550072/15:101764448368186510392/29
+qaddz:880044572043278916/11,-6109313865580717394,124212297019093925/14:-66322407949344612418/11
+qaddz:6248985291450346275/2,9493162199953532306,-4130466083733148400/7:25235309691357410887/2
+qaddz:1986241673445749321/4,5178416138859731379,2046732894250340779/8:22699906228884674837/4
+qaddz:9979832122548221402/12717137847146036559,79527741365413786355,73831860449336535169/1514391878508936732:1011365249616145076974769500777993573847/12717137847146036559
+qaddz:7935653883386524088/43702671649323180779,31726785951925090635,-73129402153480840711/23070283018861257208:1386545308945341622873014968339451428753/43702671649323180779
+qaddz:-93473235956409121974/3521849589372767293,14176089406854262878,86358338521892655661/8513932339338708236:49926054656441321879828060404133327280/3521849589372767293
+qaddz:-75776234900005146680/1934924867434433667,58779385165176736174,=1:113733694048607113038507934157157223378/1934924867434433667
+qaddz:10754058131593805677/10119651272346505,54504300977159159643,95585489620287220450/323814423064533371:551564518731865556391884682101903392/10119651272346505
+qaddz:-26320122648161591867/118955488311945989,36439044282055136810,19850642639958356517/200120485264504867:4334624306192492122600675236564163223/118955488311945989
+qaddz:21672449029428526941/15150265559827046,99277026381166669676,18730584597709492865/69655516304512819:1504073313664630491063919887801384037/15150265559827046
+qaddz:85792494086863781236/50064798708777621,-76374367048497097864,-76196863606569205097/60267456232905085:-3823667312793305504369462034586320308/50064798708777621
+qaddz:82198870205394916580/3448850359841959,92122854365946272671,-9499119469817233118/381994720733569:317717939429662268414058202075719069/3448850359841959
+qaddz:6940206776533138781/442725248202698,52972508975617224025,5617429131950608687/3366289783208936:23452267184149790024086119808558231/442725248202698
+qaddz:55599986966946799564/351405696052723,81353132501416252986,2145222144601366685/198829739629804:28587954152729636171116544308980442/351405696052723
+qaddz:94458271410973778847/361353862043500,54761990849557223858,-14653194369734462194/40666523642913:19788456886678404891313989807601847/361353862043500
+qaddz:-84180062330049702321/10106997571532,34216878817519062264,43542034768301689369/65407469845390:345829911113985714017035852166127/10106997571532
+qaddz:-24742695506396929785/17404029796744,41450961372253719353,=1:721413766826363551856884212256847/17404029796744
+qaddz:34674970696505269672/434120698329,90706045368333568168,4047354904123103766/5628094003009:39377371757997599606800990460944/434120698329
+qaddz:16761364796027525373/5854257789796,65993384007951488766,2006868112336026267/163736160281:386342282403565536077626910957109/5854257789796
+qaddz:13213233170358417707/28953389411,-84133659565012740924,38441120866807154861/611830462605:-2435954607945105525978669538057/28953389411
+qaddz:-64998396976150810447/657173799966,68741723486105419807,29966320909708913126/113185344833:45175259639510928939657721516115/657173799966
+qaddz:-75993621747015299032/49530111977,64950591439466856818,=1:3217010066893177413628750610154/49530111977
+qaddz:-20552895783534231165/77134912822,22987772657101552827,59095027841080059905/57879333453:1773159839856930680727938416629/77134912822
+qaddz:23575585295873866365/354640952,10572907047388947403,63974647548865514804/2902818571:3749585844269110717151714021/354640952
+qaddz:-3423087053862335915/3563944811,14776086984480635327,87473419453510292251/150143797:52661158531801310749782602282/3563944811
+qaddz:20175953575026075815/258856713,-707977887059042238,-88657359408605704674/445245889:-183264808544835335630767879/258856713
+qaddz:5641506401094150499/81605428,27796153257209226730,-31152461920419370958/183221007:2268316988949659433944840939/81605428
+qaddz:64291966735347840169/1472255,-37813006182818155116,58751143690989021203/3131508:-55670323125718207612466411/1472255
+qaddz:-40829665387689228845/40252968,65646528058726294873,48548143291840415697/19567973:2642467552429346280592204219/40252968
+qaddz:84643493739932974309/2975141,-85925500041436529739,29931128280261616739/3657301:-255640393475285778591243890/2975141
+qaddz:49533459783522540811/7076331,28143218875743097472,=1:199150781703665812199676043/7076331
+qaddz:45584750001594149227/984336,41115590339049176247,15975001635513275306/154305:40471601316728311544416219/984336
+qaddz:6418669402794912089/164220,73293587179171456413,-2508617797150506151/19201:12036279305232939367054949/164220
+qaddz:9535512106815022878/7681,28863162607332458363,16912585483283156773/19761:221707487499027427709081/7681
+qaddz:31040563813369589503/9684,-10330625966877227525,58520741913037533005/66343:-100010741299425701762597/9684
+qaddz:25406696906821168845/637,-96989536360380372540,89275628731812608081/8978:-61756927964655476139135/637
+qaddz:12530150187862657939/1219,40341242697614742420,=1:49188504998580233667919/1219
+qaddz:80569150582987599935/2,-15179790697208915754,82993038152425243161/355:50209569188569768427/2
+qaddz:36661516357580891535/19,-66347692158873159944,2979405734116612133/33:-1223944634661009147401/19
+qaddz:-77628572518590925665/92,9553267737685350880,69073840554559304981/47:801272059348461355295/92
+qaddz:94231430591775515069/83,1462408193524266778,-64327046129355071262/11:215611310654289657643/83
+qaddz:-6524291256793749081/5,46538712122784125243,=1:226169269357126877134/5
+qaddz:1240850785353652095/2,42205460810156144332,=1:85651772405665940759/2
diff --git a/polly/lib/External/isl/imath/tests/qdiv.tc b/polly/lib/External/isl/imath/tests/qdiv.tc
new file mode 100644 (file)
index 0000000..f0dd12f
--- /dev/null
@@ -0,0 +1,803 @@
+## Rational division tests
+## Generated and verified in PLT Scheme (see imath-test.scm)
+
+qdiv:3/8827981081671378268,0,3/3926508931624275206:$MP_UNDEF
+qdiv:-3/474373049650626538,-3/30777320180374251050,9/1226655408788630648:15388660090187125525/237186524825313269
+qdiv:1/1306590006879123716,=1,0:1
+qdiv:4/687201385528545547,8/9869825196514386591,-3/5975430289097816269:9869825196514386591/1374402771057091094
+qdiv:1/61423611473194332,1/15455670029280858,9/557484359857054244:2575945004880143/10237268578865722
+qdiv:-5/979333377476953559,1/99869524971840393,=1:-499347624859201965/979333377476953559
+qdiv:-7/30691138649930912,1/11634392715914207,3/17315717048169457:-81440749011399449/30691138649930912
+qdiv:3/20309884568576860,5/77811383120554786,-1/10721697997657271:116717074680832179/50774711421442150
+qdiv:9/5449666303362005,-5/2861847982830984,1/1826459823357042:-25756631845478856/27248331516810025
+qdiv:7/8847841671787170,2/1586192862907947,=1:3701116680118543/5898561114524780
+qdiv:8/289082769132563,=1,0:1
+qdiv:4/404037054778449,-3/231560563043393,7/849880896656765:-926242252173572/1212111164335347
+qdiv:1/48469516794680,-1/28088185111303,2/21754840126411:-28088185111303/48469516794680
+qdiv:8/50407054689999,=1,=1:1
+qdiv:-5/3164747219031,=1,1/3512888487599:1
+qdiv:5/5486024696808,3/3947571370957,4/5612399333251:19737856854785/16458074090424
+qdiv:0,1/41619742838,3/808926099199:0
+qdiv:-7/908640056265,1/159999865095,4/624715801203:-74666603711/60576003751
+qdiv:3/31854541511,2/14382200067,7/81824133981:43146600201/63709083022
+qdiv:-2/53726093607,2/89209379771,=2:-2175838531/1310392527
+qdiv:-1/6605722316,1/2540812616,9/2982865172:-635203154/1651430579
+qdiv:9/9991323937,=1,0:1
+qdiv:3/179688887,9/702152629,=1:702152629/539066661
+qdiv:3/404963252,-5/696394373,=2:-2089183119/2024816260
+qdiv:1/6333273,1/37207089,2/31767299:4134121/703697
+qdiv:3/90875674,=1,3/86752486:1
+qdiv:5/7636188,2/3416475,-8/1655405:5694125/5090792
+qdiv:-2/244339,=1,9/4733791:1
+qdiv:1/107213,-1/229854,=1:-7926/3697
+qdiv:-1/191856,2/941299,4/169459:-941299/383712
+qdiv:-1/11772,1/30223,=2:-30223/11772
+qdiv:-7/11960,6/95509,8/90341:-668563/71760
+qdiv:7/6422,4/4147,0:2233/1976
+qdiv:8/9005,1/5326,=2:42608/9005
+qdiv:1/665,-4/217,3/278:-31/380
+qdiv:3/140,1/227,1/100:681/140
+qdiv:-5/27,2/11,=2:-55/54
+qdiv:-7/26,1/5,-7/78:-35/26
+qdiv:1,7/2,8/9:2/7
+qdiv:1,1/4,-5/2:4
+qdiv:55/20700362000632320869,=1,69/80225473900126748965:1
+qdiv:14/3091014050673014971,-28/81380133061144194395,84/40859471274765910171:-81380133061144194395/6182028101346029942
+qdiv:1/314668662662881104,98/4475605721586782695,=1:4475605721586782695/30837528940962348192
+qdiv:3/1845567143863582553,11/786490044553073944,18/1855454337971843903:2359470133659221832/20301238582499408083
+qdiv:63/385333292496806971,=1,-1/32472264092720881:1
+qdiv:3/149509460292616220,=1,89/655644037836531409:1
+qdiv:59/60850170481238094,=1,31/16962204174702505:1
+qdiv:-21/11323738586240236,89/72739976921345915,-68/47763887738600551:-1527539515348264215/1007812734175381004
+qdiv:42/8561938043647535,-93/6809871846010066,17/9985561445050651:-95338205844140924/265420079353073585
+qdiv:74/824445644271491,=1,-10/462004715375339:1
+qdiv:-91/158705946232261,66/377268980338471,1/180572218716832:-34331477210800861/10474592451329226
+qdiv:13/294374634105374,17/137508734190942,=2:893806772241123/2502184389895679
+qdiv:60/52806122696123,=1,25/35647894318199:1
+qdiv:2/70084255188433,=1,=1:1
+qdiv:-11/522366309775,29/712593081308,89/4408829724580:-7838523894388/15148622983475
+qdiv:84/102632540711,61/53857049409,15/1404297586412:4523992150356/6260584983371
+qdiv:70/902531223717,92/698425518183,18/41071684813:8148297712135/13838812096994
+qdiv:9/100549718122,=1,-29/262025912406:1
+qdiv:5/78979980317,-29/15117078653,65/7124115824:-75585393265/2290419429193
+qdiv:31/30756865282,=1,-11/69831756369:1
+qdiv:43/1638160013,-9/6652991074,36/1999878215:-286078616182/14743440117
+qdiv:4/7372173731,11/274587688,=1:1098350752/81093911041
+qdiv:-75/216042979,-19/338590753,33/292120913:25394306475/4104816601
+qdiv:5/521918956,74/512764585,-35/161566463:2563822925/38622002744
+qdiv:18/42121601,28/26500085,65/84650518:238500765/589702414
+qdiv:41/41853940,11/85956056,53/26801053:881049574/115098335
+qdiv:96/7914185,0,=1:$MP_UNDEF
+qdiv:-18/2408419,-29/2331289,39/1991248:41963202/69844151
+qdiv:-21/209413,=1,38/45091:1
+qdiv:73/941827,31/311506,-28/306503:22739938/29196637
+qdiv:-80/34347,=1,76/60617:1
+qdiv:-27/34016,44/3123,11/36759:-84321/1496704
+qdiv:45/4447,95/7813,=2:70317/84493
+qdiv:31/107,16/1959,-2/1335:60729/1712
+qdiv:7/6,=1,-72/455:1
+qdiv:82/415,5/846,4/63:69372/2075
+qdiv:95/28,-25/38,28/19:-361/70
+qdiv:89/43,=1,79/14:1
+qdiv:-49,8,-71/9:-49/8
+qdiv:-10,=1,1/4:1
+qdiv:808/45524274987585732633,-72/3230580501556764385,69/50585273432898431555:-326288630657233202885/409718474888271593697
+qdiv:319/66978137654707641182,=1,=1:1
+qdiv:-669/4359545352267142613,389/6178257053522267612,=1:-4133253968806397032428/1695863142031918476457
+qdiv:991/3477727818712482910,=1,529/5027018252141619996:1
+qdiv:3/23180871072888724,592/673665479785224825,-596/518946796253532009:2020996439355674475/13723075675150124608
+qdiv:179/793396855429515116,931/387517624716045840,-695/566279872123894778:17341413706043051340/184663118101219643249
+qdiv:221/3427690629405359,=1,598/80947651271959489:1
+qdiv:-724/52750058649448927,153/12336232443953527,67/55314453014305481:-8931432289422353548/8070758973365685831
+qdiv:575/8856014113088424,77/1046092009770736,=1:75187863202271650/85239135838476081
+qdiv:639/7628460189090482,=1,3/187674005095612:1
+qdiv:167/57172907255471,=1,458/490173841920009:1
+qdiv:-64/133181712979849,571/541047169178329,495/108993178847291:-34627018827413056/76046758111493779
+qdiv:-527/33346321735789,13/1536370494056,616/27148895576567:-809667250367512/433502182565257
+qdiv:-600/42483246609437,177/7709155575481,-274/29153462781241:-1541831115096200/2506511549956783
+qdiv:-891/3797928330707,-557/8539817631461,44/93582862751:7608977509631751/2115446080203799
+qdiv:30/101373302507,64/912736019917,127/1421964160402:13691040298755/3243945680224
+qdiv:95/811213545591,967/271585517890,-221/724077624393:25800624199550/784443498586497
+qdiv:482/121409952851,873/176693357788,-173/379909953056:85166198453816/105990888838923
+qdiv:211/83869812582,=1,425/21426470616:1
+qdiv:89/16604301838,-370/14168930881,=1:-1261034848409/6143591680060
+qdiv:357/8146855082,-657/9471809692,=1:-563572676674/892080631479
+qdiv:-21/2562596293,903/2881728821,156/164990119:-2881728821/110191640599
+qdiv:-579/609663644,=1,157/25380668:1
+qdiv:-39/383217583,929/665052497,817/218315394:-25937047383/356009134607
+qdiv:937/74356752,422/14604731,959/48789395:13684632947/31378549344
+qdiv:81/64759993,-169/12649693,-554/43474193:-1024625133/10944438817
+qdiv:-277/389415,=1,=2:1
+qdiv:251/2232087,-151/728262,=1:-60931254/112348379
+qdiv:-61/65749,-207/485432,=1:29611352/13610043
+qdiv:363/228754,227/70325,569/103195:25527975/51927158
+qdiv:159/83267,-157/2354,327/82759:-374286/13072919
+qdiv:41/1099,471/99860,201/1723:4094260/517629
+qdiv:14/23,27/70,=1:980/621
+qdiv:775/8954,916/3399,-956/2393:239475/745624
+qdiv:-16/17,-337/37,753/524:592/5729
+qdiv:680/89,955/296,-767/913:40256/16999
+qdiv:671/29,69/71,=1:47641/2001
+qdiv:45/7,227/47,-588/17:2115/1589
+qdiv:309/4,=1,477/7:1
+qdiv:995/8,-542/3,=2:-2985/4336
+qdiv:709/12248686694307459921,-359/3012348473905143856,3209/3205529400054125663:-305107866856963856272/628182646179482587377
+qdiv:7039/48532814476573486698,1842/19665238977050464607,-686/59623200188183875815:138423617159458220368673/89397444265848362497716
+qdiv:451/329309233590151305,=1,=2:1
+qdiv:809/682008587763566662,8909/1007199215258353342,2888/6648659691864956039:407412082572003926839/3038007254192807695879
+qdiv:7143/477997774542113905,8817/680997252822749635,-1905/134302220820939382:324290891794193376187/280967091875854553359
+qdiv:347/219003978754231945,-8579/862605866526757805,1879/749017786570395462:-59864847136956991667/375767026746511171231
+qdiv:2252/19919238262742963,3008/30104309448888197,8998/18293466522564645:16948726219724054911/14979267173582708176
+qdiv:3132/7632328378838467,-7891/65522084848474051,-6375/16422802718592713:-205215169745420727732/60226703237414343097
+qdiv:3091/6666475760056275,-4948/972687207365139,-1089/869334750550498:-1002192052655214883/10995240686919482900
+qdiv:-1181/1328394658282401,-4449/5267675168926367,2101/2626633098162958:6221124374502039427/5910027834698402049
+qdiv:7323/118964685899438,-259/116805460794557,9535/306412793639648:-855366389398540911/30811853647954442
+qdiv:2433/121526971245398,360/82851643972451,-3062/418315498791959:67192683261657761/14583236549447760
+qdiv:6067/57796241878231,964/16961015496389,-6693/83462416525900:102902481016592063/55715577170614684
+qdiv:4159/18938105171021,-3304/15702563734975,-497/5886368665864:-65306962573761025/62571499485053384
+qdiv:-2339/6560171909556,-3315/879777839282,1570/7171072558101:1028900183040299/10873484940089070
+qdiv:1225/584214253087,-6283/3835506609411,1613/7130518143781:-4698495596528475/3670618152145621
+qdiv:608/483278255319,2413/247017404385,-9588/346021249721:2634852313440/20458779475171
+qdiv:5057/839656743164,-8443/6430957362,3191/797476829669:-16260675689817/3544610941266826
+qdiv:8/2915377743,-2073/42761112191,3028/25982265273:-342088897528/6043578061239
+qdiv:-3080/48285456271,7722/56966382901,4950/16693686061:-7975293606140/16948195151121
+qdiv:2506/7829482533,3738/894286585,1315/9318157842:160077298715/2090471836311
+qdiv:395/539727584,3101/2435581364,8543/4140459726:240513659695/418423809496
+qdiv:-2933/85901348,1075/31492019,5089/657510451:-7105083979/7103380700
+qdiv:-109/7944981,1560/35171599,8205/374231336:-3833704291/12394170360
+qdiv:351/84445888,=1,-972/45463937:1
+qdiv:1896/15952037,1648/24133709,-8841/97126097:5719689033/3286119622
+qdiv:-7849/786920,8468/8925921,-3114/6765635:-70059553929/6663638560
+qdiv:245/566264,=1,8221/9131472:1
+qdiv:79/17927,=1,=2:1
+qdiv:1970/222369,-9680/117859,-333/53716:-3316889/30750456
+qdiv:1255/31098,5871/80299,581/4346:100775245/182576358
+qdiv:2551/88863,310/16021,937/5727:40869571/27547530
+qdiv:8096/4615,=1,359/1549:1
+qdiv:4380/6089,-1293/32,=2:-46720/2624359
+qdiv:4841/137,=1,63/127:1
+qdiv:-7195/394,1026/73,2871/383:-525235/404244
+qdiv:-2123/25,=1,=1:1
+qdiv:4877/72,=1,=2:1
+qdiv:2059/8,=1,1797/2:1
+qdiv:4309/5,-928/7,9812/5:-30163/4640
+qdiv:1276/48998512603828859815,=1,=1:1
+qdiv:-87759/12642453185607565556,61169/76861786640093390298,=2:-3372656766873977919581091/386663109455214588747482
+qdiv:-73621/3641518581487027232,=1,=2:1
+qdiv:30239/2864992309604629419,69203/360791977688831821,48533/7318731980981091051:10909988613332585435219/198266062801569169683057
+qdiv:3258/375353145849458519,=1,=1:1
+qdiv:7705/911649391027518118,-4527/523603872108693505,=2:-4034367834597483456025/4127036793181574520186
+qdiv:80183/27684870128356298,=1,31447/10044082204150725:1
+qdiv:55812/2242876918063201,273/5987187297553853,=2:111385632483691881212/204101799543751291
+qdiv:4768/1013825352338725,547/51853159734450,13214/1209874359544049:9889434624554304/22182498709171303
+qdiv:6676/2650290894306779,=1,41501/3206334096847699:1
+qdiv:28681/68017529704052,=1,-17941/468955454103104:1
+qdiv:-19043/55558808816913,76696/93211283557235,37794/88565241121255:-1775022472780426105/4261138401021959448
+qdiv:58963/41164814718796,37371/41375121127588,-43794/48988525394521:609900316761492811/384592572714031329
+qdiv:12779/2181401551509,=1,=2:1
+qdiv:9529/1314170728394,48148/4767551174553,88486/9446535741037:45429995142315537/63274692230714312
+qdiv:45171/1935400244048,=1,=2:1
+qdiv:-8055/796756979512,-40221/581590215415,13256/244193996163:520523242796425/3560706941439128
+qdiv:73154/947174782947,39139/519633159803,=2:38013244172228662/37071473829762633
+qdiv:-42235/18400469972,3745/6423311093,-18889/85101890714:-54257708802571/13781952009028
+qdiv:63068/11796773127,-31/59107640,90784/7564528991:-219282390560/21511762761
+qdiv:16431/9543805406,42548/5364916925,-5126/2217017905:88150949994675/406069832414488
+qdiv:57923/8084487099,72400/4961088589,979/745380355:287361134340647/585316865967600
+qdiv:51393/552384269,8157/339410251,69420/934416791:5814437009881/1501932827411
+qdiv:16234/493942565,93863/203157564,58764/900515657:3298059893976/46362930978595
+qdiv:-43437/39051397,12197/12032365,=2:-522649838505/476309889209
+qdiv:61845/28993019,=1,-30098/34003047:1
+qdiv:-21977/2530949,7118/5886975,89761/8051121:-129378049575/18015294982
+qdiv:-67667/570818,24964/4493829,77381/5174833:-304083926943/14249900552
+qdiv:80188/494389,=1,88457/134084:1
+qdiv:15689/433436,13517/141762,7082/140371:1112052009/2929377206
+qdiv:10873/14999,=1,95341/35511:1
+qdiv:66107/92401,-30477/19660,82518/86557:-1299663620/2816105277
+qdiv:91501/4959,49360/2327,1601/402:212922827/244776240
+qdiv:-1728/335,-29231/3035,23678/2657:1048896/1958477
+qdiv:-31582/403,6626/71,-96811/384:-1121161/1335139
+qdiv:1149/28,16127/136,1326/875:39066/112889
+qdiv:13158/11,-59582/45,-5678/35:-296055/327701
+qdiv:83796/5,15431,=2:83796/77155
+qdiv:-50168,82697/4,27476/3:-200672/82697
+qdiv:43313/8,-23369/3,37118/9:-129939/186952
+qdiv:343272/40939026292046552549,=1,-149188/1630670088822528293:1
+qdiv:7090/17394546172873749111,806868/84886259115708426355,977287/27695656418221378384:300921788565186371428475/7017551340707148098847174
+qdiv:273653/494417711699854970,520824/6619891999027460951,385411/1812431346892436901:1811553305209861771624003/257504610278365264895280
+qdiv:30655/71199858589215198,=1,684829/6532276093969322272:1
+qdiv:181927/723554427646445064,996115/645768630995539314,80483/188550933731713724:19580458288520913463013/120123903115839770821060
+qdiv:72786/190019706414733673,37703/744879257576358133,926598/93783057457592441:54216781641952803068538/7164312990954703673119
+qdiv:6030/34221301230292789,254491/329459713137161,=2:1986642070217080830/8709013171398442165399
+qdiv:-374458/43126191217786237,=1,896258/14496576313551015:1
+qdiv:564923/3144080096402171,794248/4739399554899871,-434642/3276748536360521:2677395814752699824933/2497179328407231512408
+qdiv:199922/1178376836454579,=1,83513/1610790739884089:1
+qdiv:-268911/54100968009644,28397/60052294389392,81027/47026501432603:-4037180634136448028/384076297142465167
+qdiv:893838/55403243375203,986288/2293797524067,=2:1025141695658499573/27321777051021108232
+qdiv:18303/82870490401642,913885/30405433858676,=2:278255327957673414/37867049060352299585
+qdiv:5047/32151410465425,=1,176188/13701013860219:1
+qdiv:187835/1220654728179,405949/2196086232716,=2:412501857522209860/495523566249536871
+qdiv:378036/6357059248081,114851/4050423226594,862111/3515447797224:1531205794888689384/730114611701350931
+qdiv:-294719/147652614747,104431/366828548330,676351/724118840846:-108111342935269270/15419510210643957
+qdiv:-331898/628206486043,=1,-177396/338495728537:1
+qdiv:177685/26330782667,=1,-420269/95383974662:1
+qdiv:-318696/28047340105,197485/16144733252,-240020/96906119801:-5145261908479392/5538928960635925
+qdiv:-576953/5244331985,=1,2965/50930228:1
+qdiv:370624/2877285795,5441/59491598,666008/8960730819:22049014017152/15655312010595
+qdiv:-902401/154074924,-583513/621607888,790132/568175569:140234894934772/22476180282003
+qdiv:220793/55445126,-127133/589508175,=1:-130159278482775/7048905203758
+qdiv:992605/96130864,-338301/47600647,-268171/7895145:-47248640215435/32521167422064
+qdiv:200098/69076309,-713974/36753541,226577/9980229:-3677155023509/24659344320983
+qdiv:-24613/302985,301411/2633942,57255/1357249:-64829214446/91323011835
+qdiv:-224679/8931277,-609222/9892805,231393/5325206:740901844865/1813710145498
+qdiv:374358/364639,-31343/26526,-293019/312248:-9930220308/11428880177
+qdiv:-390237/256456,390385/933736,-349530/445567:-45547291929/12514571945
+qdiv:-871638/36751,61626/4051,=2:-588500923/377469521
+qdiv:-87914/16631,783263/70173,-431150/88143:-6169189122/13026446953
+qdiv:-128/2205,-668595/5258,=2:673024/1474251975
+qdiv:405269/1719,=1,=2:1
+qdiv:123781/830,=1,356120/629:1
+qdiv:-130038/131,640786/467,214577/394:-30363873/41971483
+qdiv:940928/95,=1,934701/79:1
+qdiv:-468415/11,=1,79087/4:1
+qdiv:170049,838068,204415/2:5153/25396
+qdiv:937045/9,=1,=1:1
+qdiv:-895965/11817608522407410412,1662758/31138269586404741097,1787239/8265484069296678539:-27898799709983123856973605/19649823111501100921836296
+qdiv:9485555/29939758418824763622,=1,=1:1
+qdiv:3256189/100080959665237165,9746921/1570372596135540846,7102111/7910145060985949414:5113429973437990611795894/975481207461253093518965
+qdiv:8443036/2594663966536136217,6210896/4467012950800475059,=2:9428787789018659935059781/4028797012775855571405108
+qdiv:1180903/105749612753261488,=1,5874507/437668716132551285:1
+qdiv:-96672/840052608584629,2690215/425934540850990364,4714612/192754505384388189:-41175943933146940468608/2259922128403497705235
+qdiv:2821007/83364576953405163,=1,582088/4860812540794867:1
+qdiv:-797070/17849830777864213,=1,9498931/55689637536119864:1
+qdiv:7021411/6724756422420817,852445/1318535168793131,5879850/6896277416986789:9257977338050946727841/5732484988510513347565
+qdiv:2862688/9366273253135011,-2712503/6212570364248993,6269770/1992362624741777:-17784650630891221273184/25406044297948476742533
+qdiv:1770043/227457000705496,1050787/653965284988262,4665931/732005792365452:578773337468239117633/119504429700163012676
+qdiv:-6397271/15882716560575,4689255/783371764982764,2301170/95355180815573:-5011441474343051637044/74478108045259121625
+qdiv:1734439/13086156486143,-3265601/63043422188314,8065931/40472250566091:-109344970136877145846/42734165707305066943
+qdiv:2779319/3703679337417,-2792251/56401900482152,=1:-8250467034008116552/544294859662208193
+qdiv:8906654/1989823550291,5015729/711711398937,350071/21519066915:6338967178187826798/9980415686077527139
+qdiv:1342773/5863720123828,8311991/8825950349708,1394645/2412447722267:2962811957232115071/12184797223944305387
+qdiv:4499434/306371176997,=1,3752751/959913819173:1
+qdiv:-3583690/490293948611,272623/13035328183,8190059/637847763742:-46714575256135270/133665407152176653
+qdiv:-1213471/56665475600,3817747/17865032159,-816041/17280339528:-21678698439013889/216334449475473200
+qdiv:-2100116/20836208549,4331/50448644,=2:-105948004442704/90241619225719
+qdiv:36713/12904114,883015/6814675799,7851017/3608793001:250187192608687/11394526223710
+qdiv:5022803/2809898795,8967230/3296219033,=1:16556258847609499/25197008771487850
+qdiv:781841/201099058,85007/147631535,2241175/183484024:115424386955935/17094827623406
+qdiv:3699468/393449053,829829/358610807,1152449/409680870:1326669204950676/326495434201937
+qdiv:-3463205/9915829,9661223/82242321,503777/9897306:-40688859614115/13685576456981
+qdiv:-1589921/41367712,9942811/90188714,3708164/23097593:-71696465175797/205655670959216
+qdiv:-5779163/4536533,=1,=2:1
+qdiv:2210759/3222751,5205241/5080834,=2:11232499493006/16775195637991
+qdiv:2183333/139811,5752077/430948,1225681/247001:134414712812/114886233921
+qdiv:-8070429/171845,128419/37928,290524/56769:-306095231112/22068163055
+qdiv:-3211584/2153,3758472/791,=2:-105848456/337166259
+qdiv:-6466794/31769,-3915902/42711,-7456369/21580:138101619267/62202145319
+qdiv:3729205/1518,-260137/3841,2483611/6182:-622777235/17169042
+qdiv:6860802/4649,=1,5289160/3861:1
+qdiv:-83438/7,571053/190,-1052132/281:-15853220/3997371
+qdiv:8063462/909,2183491/660,8119557/104:1773961640/661597773
+qdiv:3049687/87,-1582395/16,-1200911/16:-1574032/4440915
+qdiv:352110/19,=1,=1:1
+qdiv:2962406/3,-3345297/2,=1:-5924812/10035891
+qdiv:7149844,-6647775/8,3754198:-57198752/6647775
+qdiv:86792351/49133761328196981964,83681596/94733888541192208399,45540422/93887740620391683883:8222176905862032109831156049/4111591565426603253130734544
+qdiv:37275015/45938947789509093778,=1,-31078003/24048804548446901925:1
+qdiv:18714228/278784499974669995,28535131/7442575198888787547,-18894836/167878993350595593:139282049179150116798118716/7955152227546704989094345
+qdiv:-24811360/2159236580309869299,44687068/2174509444305355231,-2185967/982469534126187980:-13488134161515029641056040/24122487973098647608881333
+qdiv:38561291/399479362141639464,73235730/642777863686427933,-44021955/503809548217143929:24786344249970680274941503/29256162706377329542848720
+qdiv:-9532213/318095670778469600,28369139/87482667379251144,-92704577/641723560262485864:-104237927408396710637709/1128012537451580286209300
+qdiv:12970933/24974407644034125,=1,7781491/55007097983499252:1
+qdiv:-73795622/62522679678898791,-40287452/37729183605206197,10065628/1450024137592451:1392124285849196872934767/1259439728237505227635266
+qdiv:45877577/2870321629840685,62804508/3060757957189363,-24942819/194614932107914:140420158859317704613451/180269137763902339807980
+qdiv:27765340/1722659366920429,-49740100/4392314052861681,32854898/4914960185867565:-6097704653224127296827/4284262458827941525145
+qdiv:31840878/650549338557053,=1,82034659/746923000065290:1
+qdiv:-3799624/89718613403123,=1,68910040/992826933898731:1
+qdiv:31394779/66096039231279,-10511385/62803293159157,=1:-1971695509203945841303/694760915335077611415
+qdiv:86839209/60474989629672,50531989/58732772835419,-863777/980850237675:5100307535404473143571/3055921510741699577608
+qdiv:27323066/1973122068799,-78173848/609142108427,75125805/9127401261224:-489518530350884623/4536663079168781428
+qdiv:36867962/1416533338363,635443/97562183222,98853338/2812167235847:3596918863665733564/900126194129399809
+qdiv:47352329/413811029048,=1,10407191/442238417413:1
+qdiv:68800501/774974238286,-2280234/152962980017,-48441105/249265282913:-956720878147508047/160647509751258084
+qdiv:65729629/84892894017,=1,-25288745/76133875626:1
+qdiv:76580386/41315133127,=1,-96951946/56344054531:1
+qdiv:16421575/8944123642,=1,956371/8341427945:1
+qdiv:3853661/95830379,49444059/3207768145,-6661391/2303483651:1765950142489835/676891844752623
+qdiv:55380577/150811366,32344153/137899626,37704187/990478015:3818480427982101/2438932948021499
+qdiv:-1819205/194369638,=1,1770897/587958251:1
+qdiv:27198033/94223324,1701651/36639143,-5208757/47970432:332170873468573/53445071169308
+qdiv:26144007/33885110,94294868/78704229,77077115/11515724:2057643913905603/3195191974615480
+qdiv:7734047/454358,41930099/1017254,26486906/1535151:3933745123469/9525637960721
+qdiv:95593715/5378931,77945657/2828365,15099226/479451:270373917725975/419264310752667
+qdiv:64278733/781984,-55137203/906657,=2:-58278763225581/43116410550752
+qdiv:2755454/91023,-44515162/293371,53356021/607819:-404185147717/2025951795363
+qdiv:-851882/63,-75090427/4230,-20131985/3239:400384540/525632989
+qdiv:-4882658/14371,=1,60992107/31701:1
+qdiv:-11263333/2311,69417077/9812,11529690/407:-110515823396/160422864947
+qdiv:-23572979/329,15626746/7287,-22762379/5404:-24539471139/734457062
+qdiv:45146947/609,5802442/59,=1:2663669873/3533687178
+qdiv:48034468/31,50219011/517,=1:24833819956/1556789341
+qdiv:6524645/17,-58706702/87,=1:-567644115/998013934
+qdiv:334487/34,84187235/74,=1:12376019/1431182995
+qdiv:21060395,7521975/2,89723525/8:8424158/1504395
+qdiv:49115243,-71749933/4,85184626/9:-196460972/71749933
+qdiv:309597727/33672758861109919384,-177164051/55601420918529748854,895889621/23670804105482899489:-8607036767173531213539627429/2982801184090189837176432292
+qdiv:48916804/2660589522598316323,313914094/34752378183509684779,904253494/34791426109034240319:849987636068309641218063158/417598274746171497229978181
+qdiv:242729/247715169151474017,221774365/420531110603394201,93370673/386036618278885054:11341677327294585668281/6104097148826193214908245
+qdiv:16768055/4024792916152716086,-311564292/4024075770824349991,76507261/4630876961864888130:-268828381869920701148755/4995943248477037255823112
+qdiv:23219936/109884862578864265,380304636/829661649046413301,-237169652/48494008574580541:4816172598128044469692184/10447430666241248898558135
+qdiv:516810898/660599886600041083,74020472/119618011649135401,=2:30909946008682063757200049/24448957704640758091525588
+qdiv:189691986/87372198519829129,649602410/62948713754669759,162659075/29230871469718464:5970433264134411679425687/28378595362739717493300445
+qdiv:14774898/4079300020169327,819672300/24627820907020229,=1:60645590310581894568607/557281538320373108590350
+qdiv:71574531/9911187558077269,287480027/3692301867467201,=1:264274774474389069457731/2849268466798117360206263
+qdiv:719634375/1976359498657996,6512606/19580323447829,2020281/463180107697268:14090673826676267521875/12871250729117056697576
+qdiv:663048253/304000499307584,=1,26624410/650833137359949:1
+qdiv:248932257/31572538733168,-3297144/159684389656921,453206117/278240003582858:-281919117198331916317/738292245736400512
+qdiv:693286598/13147402069069,20606065/4637179960822,588199091/60290317447874:3214894719352057663556/270916221616370303485
+qdiv:1279088/487824767579,431725597/47207595894190,=2:60382669417107698720/210606439014430019663
+qdiv:78549245/8831126280331,541356457/4279964344475,=2:336187967885431171375/4780787234439578947267
+qdiv:110033578/47682346357,-152259539/1111037317327,-766205582/7952747013871:-122251411317011206006/7260092074755149423
+qdiv:47060001/489637479337,140861141/250864895102,=1:11805702214365015102/68970894015773743517
+qdiv:109248031/51582112839,562377671/23862568900,-27370055/52346954108:2606938666926835900/29008628483656017969
+qdiv:-342511511/53452279775,=1,547211519/16341758885:1
+qdiv:340877767/26494707436,-719326026/7059828707,32400255/14657164768:-2406538645044657269/19058332609970529336
+qdiv:-932440839/8204417554,-57679385/756117222,189301605/4430094677:352517288432014629/236612879398962145
+qdiv:-980924395/4737725778,96878060/5344143499,-563492138/260341141:-1048440145709951621/91796336436926136
+qdiv:-748092457/68521924,=1,=2:1
+qdiv:-72010946/931437,38577842/94683927,-194004572/356767967:-87413835311089/460677300243
+qdiv:-99158610/59323363,528264721/50347358,=1:-4992374036452380/31338439803976723
+qdiv:-273698543/89114428,65593727/66452645,-456099010/45664741:-18187992114996235/5845347461993156
+qdiv:-434183749/4880425,227158395/799133,696633020/1207589:-346970561889617/1108629509917875
+qdiv:-950455305/243592,-458911412/6191101,201783811/2324399:5884364789240805/111787148671904
+qdiv:699903049/451554,-235876093/487743,-158455564/246001:-113790937609469/35503597766174
+qdiv:220813028/437657,=1,735013805/653689:1
+qdiv:7685509/196,754004453/40926,-707049919/17530:157268570667/73892436394
+qdiv:222143479/26751,391098157/28855,193987153/3253:6409950086545/10462266797907
+qdiv:129843395/733,174902609/2529,586864566/2891:328373945955/128203612397
+qdiv:318016269/2750,486693651/2170,=1:23003176791/44613584675
+qdiv:199207703/783,697191979/15,628918929/959:996038515/181967106519
+qdiv:-822112671/383,700601486/287,=1:-235946336577/268330369138
+qdiv:702853697/90,57317887/96,6934229/20:11245659152/859768305
+qdiv:236859557/10,-12598119,-844214996/3:-236859557/125981190
+qdiv:666692788/3,837163259/5,-44955282/5:3333463940/2511489777
+qdiv:-267890720/3,994822169/2,306713231/6:-535781440/2984466507
+qdiv:8971865945/84652096998217220652,-1766409152/949158554479936975,51683336/978028041559081475:-8515723311343973731748816375/149530238873642626243696207104
+qdiv:-4783142107/20353559370672239325,1489328761/30130844818064603669,9037981957/29934040642660151619:-144120112568767560055460590583/30313141359463225930997726325
+qdiv:-5011919027/9589021627165778205,6908330432/8223014240433381075,-223144684/369584710951584897:-2747538768728001022382280935/4416275328003700232170922304
+qdiv:3264032212/4288823609663243543,127527384/8323211793086562335,3176342735/6939281510473238183:399518108822541446555675515/8043271402614567205789434
+qdiv:-4588453891/349300703246919169,-4621109572/563134654578914825,2946587906/489244399145625531:2583917396959562695328834075/1614156823280669651376185668
+qdiv:-2433362101/159409638288916225,85838756/19437108683105947,7818956051/899163746350160639:-47297523622488030397514647/13683525045130537342216100
+qdiv:4804263237/27326781078392456,875410347/26595379067270065,-7249537521/50005537812647291:42590400642321641076700135/7974048968742858036380744
+qdiv:-2132504576/319379206557339,3197623346/47180453249202543,=1:-5589585136204360627685376/56736355950816859668683
+qdiv:-17110179/337414992862541,=1,5637859401/8456872970863411:1
+qdiv:929796549/785511765727417,-8659917002/9734288265288811,=2:-74800889554022586414159/56218733018957846081354
+qdiv:2024811003/923122484568110,-2213327573/685808753095771,2505827052/382175752770445:-1388633109222027433568313/2043172448350864859497030
+qdiv:4321265761/608661263330203,-1955439753/18999520283666,1985116091/422495636527147:-82101976477230893359826/1190200430427080111759859
+qdiv:5403084171/20759093453216,1272181959/3497884340798,4111729721/4478504823638:3149893918959073884743/4401557362729400955024
+qdiv:4169845699/5710332227959,9148517943/2081193666800,=1:8678256460292019093200/52241076847974077768337
+qdiv:4493194533/2604354754064,-3502324668/5226679118353,4603317541/1537717259387:-1118308859063283788769/434347423780067640512
+qdiv:6987915227/4137866098763,801022943/1354532951118,=1:9465361434590718873786/3314525680171066919509
+qdiv:5294179409/20297663855,-1916636849/2091902413,-1119938671/198399693697:-11074906680542013917/38903250493108392895
+qdiv:1295990518/61239499731,=1,539185569/58234040869:1
+qdiv:2091734371/22379348546,3771243501/14969120476,-1020067815/19323989012:15655711901644540298/42198986380358149773
+qdiv:4013255624/2622410663,2585175687/49776501221,6260772357/9422047988:199765823468221116904/6779392287317150481
+qdiv:27739307/489082696,=1,-1635872773/284162212:1
+qdiv:1004677799/8383863362,3327131707/4220463949,234611693/146976367:4240206431040168251/27894217618865818934
+qdiv:8434446327/446741110,305497651/332988425,9725313826/929456845:561714599634952995/27295671942026522
+qdiv:344714653/17732695,=1,-3209292581/367817366:1
+qdiv:-6843554898/34497445,=1,-2081199716/16214703:1
+qdiv:5803347322/79453889,1102662623/8094456,=2:46974939550646832/87610833652290847
+qdiv:8712618248/2572733,=1,=1:1
+qdiv:-4833921086/2762331,-7642479217/5423409,-1583615993/2873706:8738777041034058/7037019085991609
+qdiv:8518925689/40191,=1,6550456120/871279:1
+qdiv:876819073/100630,-902089199/140111,9433117031/258480:-122851997137103/90777236095370
+qdiv:-110986687/426,3857966128/39887,1189959236/13549:-4426925984369/1643493570528
+qdiv:-7975883597/55733,-1666217426/13007,9979667239/98463:103742317946179/92863295803258
+qdiv:9307983176/5287,=1,-4477921884/4391:1
+qdiv:-6231410261/9293,=1,=1:1
+qdiv:4528426169/109,644958250/991,-966669111/247:4487670333479/70300449250
+qdiv:4728746197/670,-3092342009/975,5344313590/51:-922105508415/414373829206
+qdiv:-9298448594,6025771347/65,230306877/25:-604399158610/6025771347
+qdiv:8659053685/17,-5401196332/59,5062434592/49:-510884167415/91820337644
+qdiv:-9777515257/3,4806469000/3,2254605905/4:-9777515257/4806469000
+qdiv:51777408,125752274,147067434:25888704/62876137
+qdiv:-50627047179/45073388301558717898,-39488625025/47733211534284913713,32711658675/27270403149344569493:2416591552351429302575995065627/1779886129246473834093878197450
+qdiv:-91204883678/4376981341885366059,=1,92252001911/64145968577542202922:1
+qdiv:-6468661773/3340956703659991393,51917096173/4290285077565474605,-4184909817/2082344794208597768:-27752403076520125481965774665/173452770493744834242733238989
+qdiv:79042137253/2565404331216876095,46463876503/9217979332756333154,-71237527399/9032839782059615122:728608787615043443963462385962/119198630025922238587532895785
+qdiv:-71497371020/911351878610216589,35308340296/356473827680782925,64081379374/293532001774391069:-6371735379153120728201458375/8044580564842102716669092586
+qdiv:-59711844557/491536178108971083,-80079287644/210346837810811533,=1:12560197682415668432518875881/39361866994220711332435198452
+qdiv:82691530516/13829489779198215,-54368150702/41857898377267367,-23138364722/2016009305137557:-1730646840499715679485735686/375941892223608628924698465
+qdiv:-2532396359/43747227235758060,281496679/79780911611953,49395555307/46061856818743718:-202036890083810598079127/12314699182324243937482740
+qdiv:39329031241/771013386869700,23150277229/3870964064839779,42048700955/3103108290222419:50747088879624005983511913/5949724551101261166687100
+qdiv:36630047839/8265775107927151,-17088940048/166471968138409,7720288135/2420444961206493:-62864702647035107663383/1456219951233173329798384
+qdiv:3233508452/61288804249597,1009629177/396153232886351,-1862094182/304377258983311:1280964826825140313938652/61878964993834721691669
+qdiv:39400418349/280335370062674,=1,528864863/5327344259528:1
+qdiv:-30978168489/22888879909274,18822952031/21160004002172,1575282546/5389019145925:-327749084603599268979054/215418144287792067017747
+qdiv:95503923490/49551349663127,85560857352/20589539380841,30851800131/2025645536851:983190896861090417927545/2119827980062941250629852
+qdiv:37807143/340515189301,=1,-2818312259/743193551514:1
+qdiv:-83826099190/4358399428931,4772431013/6348630185134,-853009636/374419764711:-532180903619670747441460/20800160601671793837103
+qdiv:58301964846/768140939347,8148193743/65129075956,8259717541/561157474998:1265717698946391947592/2086320398576455968607
+qdiv:19788341553/40137672403,17083972289/174789239733,=1:3458789175625802525349/685710883077812040467
+qdiv:-10973954453/10832242662,34763618831/810622373,6976849061/881334394:-8895732999884776969/376567954986664768122
+qdiv:80042291705/98079883084,86963751533/70819982692,25719162328/28990442539:1417148428294028792465/2132348645725666441943
+qdiv:-62862242431/5180961911,-26432627160/2693765641,79398909214/5912386617:169336148776840113271/136946434523624102760
+qdiv:7346613183/88310017,50873662935/5009376481,=1:12267317097974916341/1497551346214039965
+qdiv:-8864563721/49900586,47950826631/18964907,-17937545168/328567993:-168115626564338947/2392774348071305766
+qdiv:24094021571/450614802,84569474563/64046670,-12933174970/817622387:257190308088453095/6351376172575046921
+qdiv:3494981654/23432223,-89282047405/11919821,48429893805/30458672:-41659555713963934/2092076844690531315
+qdiv:33495688780/3147047,=1,37167537331/76683481:1
+qdiv:5470526576/1258187,=1,17782212381/952621:1
+qdiv:1485833227/309723,-22316021107/3171654,83073086566/5001853:-1570849632582486/2303928335107787
+qdiv:-9654830/13783,68644421742/595891,6668182574/31547:-16070464535/2642810237067
+qdiv:-18629056304/310987,33795740865/249491,34685999906/394187:-4647781886341264/10510036064383755
+qdiv:58031794382/46405,-8325673530/923,7246189925/58537:-26781673107293/193176440079825
+qdiv:42752677499/79662,68629448895/67033,10722691188/21005:409405747255781/781022736839070
+qdiv:-14745678708/1589,-18308273147/872,-7354773097/844:12858231833376/29091846030583
+qdiv:36286205520/4483,16203338783/1827,78196029593/7698:66294897485040/72639567764189
+qdiv:5973900741/238,=1,-62903827999/275:1
+qdiv:15604013335/563,-83645760588/407,=1:-6350833427345/47092563211044
+qdiv:47070101778/5,9828239935/11,=1:517771119558/49141199675
+qdiv:14795131351/62,84397328746/93,29769038089/50:44385394053/168794657492
+qdiv:4462854035,72133672643/6,79206774199/5:26777124210/72133672643
+qdiv:77933302681,-41096015935/8,22243311204/5:-47958955496/3161231995
+qdiv:569473516504/74989462888441761347,16884022641/33541962454158520316,-961841214350/8067206202574290521:19101259309214790462605845295264/1266123789244879955792666657427
+qdiv:239854097519/52524719736478674886,106866734141/32499507073759497471,89805916001/5326340692191230017:7795139938988940832361667874449/5613145259908802128558135482926
+qdiv:-677983905959/5228931513669930017,90555544897/909803638402840864,=1:-616832224420067701296618308576/473508742449475516893291473249
+qdiv:200250717/41414149596190990,-189493590347/1507829061340539502,775951232712/5167695853317665663:-150971925323440008221161467/3923857949074995465316186765
+qdiv:-630502736561/79958533096752240,-705956121098/327213288587355799,256428699470/80995134791334257:206308873893452061172472667239/56447215873669265291942759520
+qdiv:660718319453/697816356986416684,128827317994/37354325475235679,331980136084/301012355599229933:24680687152298103397985363587/89897809722903725688255011896
+qdiv:545833880297/25947106528604223,8458087019/90279863958356590,720827317409/51875766695198665:49277808457075055538901107230/219462884910197530744881237
+qdiv:44847037444/5916668180191961,258200335112/6285554319853929,953656869133/47501466102410949:70472122484696276618379369/381921426718017882672108658
+qdiv:-160898376199/4244945324446856,927280098477/5862228193719167,=1:-943222997277410780922906233/3936253318482561347233038312
+qdiv:176768268366/3002473163637239,48101070360/1068329140204261,=2:31474448693140808084117921/24070362149687771109189340
+qdiv:951576739240/465019676388521,207183722946/207969918137525,-162267142743/832527824784031:98949668280657886691990500/48172253898658956359351433
+qdiv:50497726912/167462116853589,561688826809/565768492770317,-23899967761/571729295367736:28570022843329314205671104/94061599950444071831067501
+qdiv:769692991889/77684301794679,=1,667256125514/92489368710909:1
+qdiv:289207008385/46369327373772,-371984422048/18704673822691,=1:-5409522759077686040264035/17248667443887083093725056
+qdiv:584171767751/2720004210686,=1,428825886595/4631070272424:1
+qdiv:820600220165/1539493346318,780404246878/3986857306711,59567377973/1411194292060:3271615983653485532027315/1201427145506990824295204
+qdiv:-398300561149/618514875987,-626035084114/392429382255,852340023938/456860499943:52101614387840641003665/129070670804760607923506
+qdiv:91238813259/372867824401,672788008343/125652609006,163390268350/18360751511:1042217720782234146414/22805545541266931543413
+qdiv:-448368178212/59572694995,=1,525642488427/25427754721:1
+qdiv:180771359707/24203640124,257130797261/27852202428,-904507763905/73268882369:1258720125936041692149/1555875320425612225091
+qdiv:-305344025090/2609111987,165179438933/5095448550,471583662827/9986485010:-1555864769896004119500/430971654126024789871
+qdiv:18656226690/3750570061,49208551961/1566294696,=2:29221148911920636240/184560121730089439621
+qdiv:-507207818414/660318275,441940040115/475326707,=2:-241089422091380582698/291821084942167601625
+qdiv:-117224089919/84114141,716572188281/615080131,=2:-72102208583734299389/60273854081746581621
+qdiv:32648685593/8729669,=1,404404757551/92590568:1
+qdiv:11283539119/1423144,673710725321/52857428,175857709907/93503240:149104714141931483/239696844119057306
+qdiv:-783312088280/1307187,=1,-999024378776/8099417:1
+qdiv:-335550743735/9259612,=1,110401498541/2695293:1
+qdiv:-969453169592/714537,-142206723743/5688,=2:612694403182144/11290218418127999
+qdiv:915427154883/429041,=1,=2:1
+qdiv:33170923218/1141,492375916059/48304,-152255782445/12013:534096091707424/187266973407773
+qdiv:66307453504/1149,-380214630350/90741,=2:-1002800773067744/72811101712025
+qdiv:115050365732/105,-356906258167/6917,133352622384/2245:-795803379768244/37475157107535
+qdiv:-936999502170/2803,-22830683342/699,653640693595/4907:327481326008415/31997202703813
+qdiv:299176277149/342,240000696411/4,755800068407/466:598352554298/41040119086281
+qdiv:-182582420949/29,133253307768/5,-631023253657/163:-304304034915/1288115308424
+qdiv:936258791901/32,-530850202731/22,405531901705/82:-3432948903637/2831201081232
+qdiv:407182068269/13,170897351552/27,=2:10993915843263/2221665570176
+qdiv:148775056789/4,302163295511,99960897446:148775056789/1208653182044
+qdiv:-337133478853/9,213727099090/3,=1:-337133478853/641181297270
+qdiv:2931561288588/46490752158254610139,-8202572289073/5477030782824843748,406508166805/409333849870858141:-16056251419334141316586635547824/381343755351460032640212424711147
+qdiv:8659279723725/77988438020199829427,472793658484/11699334077378093301,=1:101307806357325053531850553266225/36872438931022959247544091408668
+qdiv:2933595046594/2949357762979009185,3563536035074/8149803984266631315,4953133863743/4139113595975136772:796940819965221171181561483037/350338088956698021793464271823
+qdiv:-4417286673431/7291794623128083428,=1,5735393868933/1602164499207861679:1
+qdiv:5248399908431/133410821320193982,4294585586137/263895726266579654,2738534220357/842657575741413097:692515152786424448774583831437/286472095138201924171005013767
+qdiv:4823557797176/919788364227952961,4539296003171/202991457794647718,=2:139877289857927988799859320624/596455949357591266717470691333
+qdiv:-8420302353377/39920399284053083,-5878820386633/66459700639056554,-57753189302/1760668157424275:559610773695778812487195882858/234684857153620681793355639539
+qdiv:7389413759263/1342000762039062,5356497784623/12667867863288484,-6593133123716/2889567465913753:46804058544754751951948113646/3594212054412306699594471813
+qdiv:1110445958551/1731649423193452,9842168648143/8566872566929873,-784869046327/167483466404282:1359007002766958389525956289/2434740808932786168687079948
+qdiv:1750996678106/4784358421053287,3800412570471/5372315012242984,-8798822160864/7712445715859279:9406905740176459704104908304/18182535885009697370933688177
+qdiv:2392372723343/980802467194173,-5448032534257/790892614293517,-6821479423957/326036850666889:-1892109917529246153239467331/5343443750953388433293284461
+qdiv:3989933324048/125562720671257,=1,3984983239471/152537155573207:1
+qdiv:4001595047662/49753925398623,=1,-9759772064070/51453270252949:1
+qdiv:368358730412/8572667880419,939557773577/12062683819407,8877992040917/39600926316690:4443394897078137606705684/8054516747341535313888763
+qdiv:1215069339240/989318778961,69044090164/8028108572887,3367060670233/4440041254459:12767943166236631504170/89406564104085955811
+qdiv:1791644247845/5689125725259,=1,=2:1
+qdiv:5606399066403/368046160633,-3784609207827/3426986245,=2:-6404350828181307542245/464303629479008974291497
+qdiv:-131513275529/98691678493,-561412154288/53531566077,-1122072538634/477295425653:7040111598983370629733/55406707833053807327984
+qdiv:2966189201493/3188846587,-765990729969/28303317097,94779711197/8832856319:-27984331179851201608607/814208974978428088601
+qdiv:4487898063908/86671538827,20575135814/82013021801,-4824743345930/15244374571:184033040877976247629154/891639341286949625089
+qdiv:6640651737996/5578359755,-1524912145445/1866824798,-1206385524772/935902225:-12396933339372731624808/8506508542061094565975
+qdiv:-1670244987890/2390269259,211444100122/435503801,-4113147761077/5387610014:-363699020413646984945/252704166259267374799
+qdiv:3616096167490/89600697,-3281988440649/45164705,1140366335303/460713772:-163319916656316440450/294068451828093532353
+qdiv:75228599651/227555070,4602761483680/8510461,8893663369183/844450330:640230063414449111/1047381711612106257600
+qdiv:1795848602659/48671731,2894778221972/9864249,-1468924406276/60038807:17714697782930438091/140893866924479473532
+qdiv:150328765525/5091087,1032046096177/24250562,1454940060232/550925:3645557048747475050/5254236463647474399
+qdiv:5125626061499/940322,9381566963714/9633539,-8717701934147/1648464:49377918562867014961/8821693810453475908
+qdiv:-2858213327627/534239,3443629667062/7382473,7810993394329/9751719:-21100682719446481571/1839721269701535818
+qdiv:-1463079225989/126068,=1,-6765832125078/62359:1
+qdiv:1136379360139/124039,-504843410569/55521,6082255198462/98425:-63092918454277419/62620271803568191
+qdiv:-5785459125301/48585,-980138141280/17669,6000542902487/97411:102223277284943369/47620011594088800
+qdiv:-7679165118448/26823,-944998596479/5462,1824880606740/11483:41943599876962976/25347697353356217
+qdiv:3243495212743/8274,=1,=2:1
+qdiv:-5971611956701/476,1643325077002/3767,475412157786/739:-22495062240892667/782222736652952
+qdiv:2952006102878/561,-2920328989442/43,260516724704/29:-63468131211877/819152281538481
+qdiv:9857529529369/141,664372705021/114,-6783178462275/902:374586122116022/31225517135987
+qdiv:5524525978566/67,4357728100577/48,=2:265177246971168/291967782738659
+qdiv:2336151251737/30,=1,194224488061/2:1
+qdiv:-415797686927/8,=1,-3430578037345/3:1
+qdiv:-323787783182,2111647170213,1892571894592/3:-323787783182/2111647170213
+qdiv:19507584899771/19602559368642654516,-98762473989467/63334639758731491371,-3928554750602/4788014258733220903:-411835287396622150572883462125347/645332419924184274699173167994324
+qdiv:55521794790863/72416102594186986653,6390012176892/15510036414312966041,=2:861145058994297080790192816083383/462739777379915195047434279022476
+qdiv:61284142285049/2628054567745986049,=1,-44698994133307/3227806563441401147:1
+qdiv:-85595920452185/5755403767929246941,45867122342099/7759255048184778135,45612340440994/3866169183382889141:-664160577872639158424643100974975/263983808751788330415801251269159
+qdiv:4740740764385/24661806310764913,3530577952996/95659364762369765,-69284592611657/403777287873565361:453496250024140373610112819525/87070429641844221178520029348
+qdiv:20986114241917/947849730677321165,25408740172553/922531137812244018,42932138005871/490205905567788427:19360343849853428823690688102506/24083667529404391955545898984245
+qdiv:45088960299948/94417228575271127,50050142431591/43572012598861909,20043424278442/2756764567254895:1964616746258918695428071880732/4725595738188403692879874973057
+qdiv:21661156181730/71263658579336941,45008374468118/4277846527853817,26745019699809/84174122749515532:46331550880656462369663081705/1603730715653453519692992073519
+qdiv:99154176787717/8705129313567042,-45151880678379/791205466934650,-22406681696383/1924187101524921:-39225663371923231697880847025/196526480028019185473628192459
+qdiv:-5609307442339/94365505564204,-14842593099555/1569343315609241,=2:8802929139831877689263054699/1400628801723273247416329220
+qdiv:-97037008499074/756578572377141,=1,503224365293/860417586944670:1
+qdiv:85000145508250/380984289349707,-15377953570116/246971712665843,27541060282194/114009089402725:-10496315756509182254824852375/2929379356281716958334278006
+qdiv:-24399306423841/29748858502501,=1,62060968306792/72768955027007:1
+qdiv:-4232559885721/1925922878561,864465944283/775519705501,15493915917617/18579937913849:-3282433596089696135051221/1664894739831468401216763
+qdiv:15584390849814/2278161614515,54457886654043/1079434289611,=2:5607441955329714560494118/41354622327616490710744715
+qdiv:11500059385610/2919980131561,41696366394311/9941918005064,-32114194968938/1137740395947:114332647465101300708729040/121752561429675892981949471
+qdiv:-31278600650774/453275229047,-28532854752978/575231763625,-3852037577017/756431205514:8996222308033400370647875/6466618136760442777675983
+qdiv:44062310842317/210587042386,-55360722545765/100402527517,12610888787411/239675278392:-4423967376808340040536889/11658250825264599879795290
+qdiv:48958684754698/12723573349,4149226003351/3090304164,91252399807903/12674198651:151297227361406547962472/52792981395214568292499
+qdiv:-88974567840351/35825259835,14381460656143/10545670717,97792216817499/5521151606:-938296494631719471701667/515219564813152563916405
+qdiv:-29910765212475/3946907284,=1,36882758665041/2632441948:1
+qdiv:12047819336467/160596922,21879038061983/8612278458,-76714046143249/572675448:51879587468665298963943/1756853084537657508163
+qdiv:78772359143669/473800927,10721848829934/52677443,=1:4149526458766152558367/5080021914776594548818
+qdiv:18817085731832/220202645,46482990078371/128558081,30334199853605/727511244:2419088431696802534392/10235677362766051491295
+qdiv:1071383129760/480581,=1,=1:1
+qdiv:59583931345369/53336138,-86968002500/590691,-24368993907767/80312012:-35195691990327359979/4638537382924345000
+qdiv:5688670904574/472795,75880902224492/703611,-80911142949749/9592736:2001305711919108357/17938055583614347570
+qdiv:34034170400721/362423,19314454819243/6528148,6009826067910/6552391:222180101433125994708/7000002658954505789
+qdiv:83460851334154/339967,65893345957783/584029,66032371258108/62613:48743557543834626466/22401563145229613161
+qdiv:696783133091/32893,37868822555967/926246,95224409497087/888005:645392589893006386/1245619180333422531
+qdiv:37717285918991/12822,-1013012164984/227,-18964497863773/15698:-8561823903610957/12988841979424848
+qdiv:-10788708465143/1210,35785601092532/21011,7989331652889/78460:-226681553561119573/43300577321963720
+qdiv:88903457578888/8873,3656416213577/1396,=1:124109226780127648/32443381063068721
+qdiv:12369335335111/1726,49037936736719/2202,=1:13618638203957211/42319739403788497
+qdiv:12617072789709/796,-14476116805342/121,77649458159946/637:-1526665807554789/11522988977052232
+qdiv:67256470760364/343,93944013181019/811,37737599056319/358:54544997786655204/32222796521089517
+qdiv:-91036418449252/85,=1,-14624790219589/71:1
+qdiv:90733799845020/23,12126352178876/15,=1:340251749418825/69726525028537
+qdiv:16289285460967,75541729906965,31946672959257/2:16289285460967/75541729906965
+qdiv:531095972608,-5291079364402,12305754948727/3:-265547986304/2645539682201
+qdiv:160966533905511/4967535563229348506,-442581751532572/8984740788208442429,495627298842758/79806562952710497373:-1446242582717381874997643569326219/2198540590374386626354894598537432
+qdiv:846754392871971/52993412627792440100,-675514445173562/91617804931552670537,27007423378808/1709931290008410469:-77577778791079552140504662184818427/35797815729116844431852155988636200
+qdiv:45614023605550/1179336166017880593,811804712592947/9699287451192063895,901835327286365/3950301615799586609:442423526755689695993353876617250/957390657304613583282558459977571
+qdiv:464881279654941/9833448339137766220,1646029459597/2342068146526146209,-832981812917597/18521573988396140:1088783636996150710534902035268669/16186145655645954516040321413340
+qdiv:4229214776561/171585302869236077,295560300000344/195031349213283619,362544544704566/882044098766689437:824829463985447643862206454259/50713803591681301033130117210488
+qdiv:-783158820408286/503902970658703793,28022392112882/393792758740011325,-148579890099548/819284251472506133:-154201136210076013184280381919475/7060283315322135516614328780713
+qdiv:60027070722089/3527765978642153,37939143520707/1586793930078527,=2:95250591462205287902363482903/133840419771172027935698562171
+qdiv:141700790775610/12344985164771471,448607065704321/72973195171472846,-244344912157487/80621772408426809:10340359461220627648694394086060/5538047570931503297279622226191
+qdiv:-444095239925813/951645354772783,-163717942365872/3710144267118465,179957355330809/2863453381499460:149787037133214031805625676095/14163765395040027237637605616
+qdiv:490326069822452/448476138248369,=1,-236690894605813/2698259084215151:1
+qdiv:165158943072602/623311238414071,-597025041348600/83514840703301,-552484980244026/127678064255807:-6896611410716957117792029601/186066208943603905731528075300
+qdiv:-325041244622487/131017693842736,498210461660640/209968722758669,429274286710968/922035781432495:-22749498325757227956037196601/21758128578367297773853703680
+qdiv:-238357795569557/66187456271695,39950248573653/1546335570925,90339128985173/5004173134412:-73716227579295071828866045/528841066102400696597330367
+qdiv:-359791068917359/63265515095071,-994683695475560/28650227587657,-399535391547415/31717531716704:10308096008488719777261437863/62929176350930046925956964760
+qdiv:308293748883350/6238067591429,78244308628587/806222876113,=1:248553472912393419138418550/488093285869757029225580823
+qdiv:682129460838697/3097305982387,225155835658909/2056462894529,-875562120758647/6664025303008:1402773925479852984592788713/697376516755683065693635783
+qdiv:359301682748683/2940702974,268231011568139/65687387428,-14850805009387/192019789638:11800794419122542088878662/394393866718727380472693
+qdiv:-241203400501853/332337903488,235227035230030/173322412037,846432442456450/482763093159:-623969480097129824597083/1166788951224568448049920
+qdiv:248519658251861/276786224,=1,-394213812698198/83455587503:1
+qdiv:182875910078197/27817962639,=1,=1:1
+qdiv:110911658388961/383629306,687630093841477/2420083617,155379288838024/9875847499:268415487401425129751937/263795055685120695524962
+qdiv:573112467958159/9872133118,-489234981147827/3619910406,238846563705977/489924762:-1037307893285040668351277/2414896429936784290217293
+qdiv:888923070376622/668668973,33510462457835/119313137,507394628224328/514868127:106060200078306542283214/22407406516435585253455
+qdiv:-55229371022605/427082953,265672135996511/172307189,286493947193530/652156591:-9516417671143123007345/113464040371207515576983
+qdiv:86350760735383/34763061,166332560995049/10808478,409535214096212/2843497:311106765897216992358/1927409654719036361663
+qdiv:-526887225315220/62364781,379859437167168/29483203,31678687276584/32988215:-554797250788406080345/846066093204060453936
+qdiv:726480663971978/9429277,621839044883483/2484303,282821010941771/7377203:1804798092947576861334/5863492603621793931791
+qdiv:-266940245547361/6815452,381659084362202/6793379,=1:-1813426258356285722819/2601179169834538345304
+qdiv:-52306849857668/413037,=1,851795607859277/218365:1
+qdiv:-955560519915196/876763,600541379064812/884807,258058491132109/283242:-211371659236151206793/131633115283250440889
+qdiv:83188488364775/7428,=1,909855616022861/57814:1
+qdiv:12513129780980/65681,242195762149522/26907,733634580329507/67945:168345391508414430/7953829926871377241
+qdiv:102024066442285/634,54104883041557/6299,51186522023145/1582:642649594519953215/34302495848347138
+qdiv:-26631109318613/1062,404096111387523/1555,374428590131443/4870:-41411374990443215/429150070293549426
+qdiv:963930172849509/556,429505950038041/339,=1:326772328595983551/238805308221150796
+qdiv:35409769648583/190,402498581379988/269,142263070810850/29:9525228035468827/76474730462197720
+qdiv:979207315133077/41,=1,277675341412115/12:1
+qdiv:729890422328468,-207010622708828/13,=1:-2372143872567521/51752655677207
+qdiv:664184931453977/5,263094792374994/5,612770715664829/8:664184931453977/263094792374994
+qdiv:386777398336118/9,-203562236005259/4,280368609411177/2:-1547109593344472/1832060124047331
+qdiv:846748198636336/76773803058781380969,1801233601495438/43951036051554528101,-985640234538135/13669939898764919281:18607730302427229122582057095838968/69143776892035130477190634596759711
+qdiv:3891890618737276/6895557650428977805,=1,1111068254412479/16589207394191005337:1
+qdiv:125869026052733/9512475498663033351,1424684423763397/9653552384747479895,1477787248473387/726686337264726454:1215083236617203328243121127303035/13552275674376176199352055144053347
+qdiv:-2561702659033141/64484986154218090,3571827544304442/1907338065210223751,-257437056062343/308468989548243692:-4886032993324156667740785934331891/230329249739726743799833423755780
+qdiv:251427380280479/17080042626196354,-8498494882766151/431225536698454495,=1:-108421907002135971034718918303105/145154654856157445334163190813454
+qdiv:4494233115621053/420999973410664205,8502817658603234/225118720507724895,769427242578913/224964781616403409:202347201730411498629276398842887/715937201637537517148588100207794
+qdiv:1082573471098327/16190062236884916,-9285142983057539/68911329784144138,=2:-2869291441631632483178789948351/5781809337464493137192021122374
+qdiv:-54148197646247/67087793059307529,606637391147105/10211716656528727,=2:-552946051825190099886939237569/40697963759315177457206273053545
+qdiv:1552820047883756/1409852829677289,374732588752648/1411748879243035,946186753596337/2784600373889665:548047990566502118911738159865/132079450156304156086221052818
+qdiv:-622450586504533/2629689473880042,42458393126567/46859716926298,=1:-14583929142105291235301954417/55826194741396982866540637907
+qdiv:3985435662577/336228049466,1092888342910160/28572447705111,2326116659781853/93785125130264:113873652051065741394331047/367459715820812046873974560
+qdiv:7163492071774727/830515940073459,3657279442118065/897414555540119,5964135597835892/909513080742871:6428622053706882865266378772513/3037428873982020434994650936835
+qdiv:3607952451488590/49193513780067,-3043939406564413/65486757325344,-866352414070632/19967852787311:-78757702210671087993244608320/49914025047505139104450318557
+qdiv:9495052294801966/38526321702455,6497122364756042/67241074266611,976932655859167/35062261580861:319228758260067099260465478613/125155113182403225758093741555
+qdiv:-8635923474747691/834091522151,-6012381717476054/9878110045469,9959093802197859/5095796016470:85306602427806718417312762079/5014876618482445518753072154
+qdiv:2821313461694584/702859941105,=1,3985236573834282/7019306492603:1
+qdiv:80074080855208/13358267917,=1,-1127102895421894/492325215749:1
+qdiv:2903637249590617/66609940717,=1,=1:1
+qdiv:1317275961025638/30056701615,1903028147618023/12972309420,=1:3417622271590487337781992/11439749839580218061441429
+qdiv:162369131285203/29375345061,1123696767790/4238363,580047582726290/4797152503:688179318381346842689/33008980297761640385190
+qdiv:-4786042110917887/821667120,-223845848166680/444195731,4201261485857429/7441612588:2125939474055953896940397/183926773387073235561600
+qdiv:-3647633785553978/3264747911,-2590574647212125/3171736042,1034451358224699/9321063772:11569331545658450959075076/8457573167775347067620875
+qdiv:-1182656408586511/263603111,-3183826575455972/641377267,67932666203435/9814518:758528935139251758245437/839266590174670462728892
+qdiv:-1010164506152201/73078179,1003381341185915/606903468,8716869883166609/714842540:-204357447344759374244356/24441760418814789549595
+qdiv:2146746992979571/54021,4486129793037235/14014464,4736792350294185/48933406:10028502816740150171648/80781739183221490645
+qdiv:174759124915340/38909873,808299936999437/3899591,=2:681489110687735625940/31450847894556094741501
+qdiv:1331080173593011/170345,1847682196363704/169667,=2:225840379813005397337/314743423739575157880
+qdiv:401756500827695/5268383,=1,-1785129473905456/1874737:1
+qdiv:9588863636181187/514679,-1885957167516959/372023,1236604399361407/932066:-3567277816523033731301/970662549020460941161
+qdiv:-1948318799147741/361624,=1,2127325154839916/20417:1
+qdiv:1427781136273691/76759,-7623865373435316/42907,1659481401097244/10649:-61261805214095259737/585200282199521420844
+qdiv:1719870896249226/12205,317200077044831/19050,=1:6552708114709551060/774285388066432471
+qdiv:8138959322580502/8221,-1163751251034425/1383,7539031083296853/4651:-11256180743128834266/9567199034754007925
+qdiv:169053135509582/2079,8384337995393067/1027,1100360786228606/2923:173617570168340714/17431038692422186293
+qdiv:2884372934790855/473,-3411772457185025/498,7754693992370393/59:-287283544305169158/322753674449703365
+qdiv:9645445945124801/694,=1,-928157555471025/697:1
+qdiv:526455353835711/2,6821493510127697/42,-8165061988695477/61:11055562430549931/6821493510127697
+qdiv:3494561591012431/18,1579558097950769/68,3011416104352409/38:118815094094422654/14216022881556921
+qdiv:-1075752344316397/2,1031504762905937/4,=2:-2151504688632794/1031504762905937
+qdiv:3510047439829528/3,=1,8531234312015747/9:1
+qdiv:-68345423328108071/30673713062451046410,84635933116432261/52124678834577315684,11829641732143217/15648982195593167418:-593747206798476915089200913572547594/432683054531040224143843344222038835
+qdiv:88353531187611591/15437715341399284739,24211922635091389/65206525720651916247,4391301426749866/9028296670139901087:523747891263219677852058701936219907/33979706318956630192030846045273861
+qdiv:23319878514419521/3762815638844579088,1735842457506851/1043622756122083662,=2:4056192647941777068775888487994317/1088609190946197612434792161888648
+qdiv:-44931766141664776/660272913423169311,-20934212682408103/543885314267387231,-15811898876311121/1155697907525944754:24437727748548095710058962184875256/13822293598033858379756137767327033
+qdiv:6078883422776446/585720619063886603,=1,1045243009859441/415511111781051358:1
+qdiv:90440439133569617/948175107640141387,42133680477668241/92268692005881214,845568841006347/5611357858009690:8344821023291981428329461501475038/39950107022188408181066157319590267
+qdiv:4186499515356231/14864815583978242,-18423317485074290/7509262009862299,2871933150211711/1349599950356374:-31437521764971471895320241635069/273859216860711138847895113598180
+qdiv:-29582635046879003/50061021370846352,10045103192105828/55898368325607727,-37052174592310080/96357604503422813:-1653621029892474317451914610856181/502868125572366763986389511739456
+qdiv:13407277935430429/1013601685235852,=1,12172330844000900/902390153283673:1
+qdiv:27360619531891829/446629134514741,4131082115213588/1108810664462473,1247084760967392/7561950200172275:30337746723261895886437065833117/1845061629727170372539949500708
+qdiv:61461830136885063/892616617339285,=1,33738741342160459/830691355475130:1
+qdiv:61440064505101811/137342816799395,-4711908842636087/41515812949603,-24218275768586906/186742521237115:-2550734225605349400573727031033/647146832949617421060066767365
+qdiv:5758080755122561/15095071042602,29045716031779306/2037705119057,=2:11733270630656838625131744977/438447146982952474786587994212
+qdiv:54526928002573683/59702858549279,92640788780483269/77681659329590,-71811590482866045/83384156477179:4235742245385010165548357179970/5530919908454825601037871513051
+qdiv:80792214616474631/6644270819756,63735176539398861/9296933147014,-49380745622098487/1490898600966:375559909044285990116562200917/211736886836362524703961348958
+qdiv:32030499525154974/3954323046161,31366526470107724/1768190715343,-49495147706919681/3289020191827:28318015934088697649997283041/62016689249383006938747323782
+qdiv:9328741686632077/243149745260,2480495311675799/1003030744,2895546265991266/48368547577:2339253678631596761893822/150782950788148707639240685
+qdiv:86704861543195229/19495202697,-67726887612055909/399405679895,79366554520762433/427533781579:-34630414174861729349465220955/1320349402033968246851586573
+qdiv:44938705263692416/75214947649,13088918735108810/42829053903,=1:87485555912259650621649984/44749197156510201930394895
+qdiv:44904786185636646/96125537099,24798894892177726/66253590239,=2:1487551651856539065713149197/1191903545486115802757228437
+qdiv:-40789888748879566/226781493,92548538546533322/4980935825,-18457923779643496/7489800193:-101585909083529329449925975/10494147873275438368704873
+qdiv:69711578560849724/2839609701,-17832323142587131/1317413634,70780014264413677/5219758825:-30612994681241841674245672/16878945929019074475119277
+qdiv:-59818087210738392/689533643,44169679860852171/464682497,=2:-9265472710283227069441608/10152160088199043518029651
+qdiv:13285049487986594/299383163,66537912712814595/528333412,1270866798654711/67428626:7018935524576810218278728/19920330767380344083663985
+qdiv:1503810128215281/2257159,-70775598572813631/84477811,-63395967835353025/15198273:-42346195930418758543297/53250593099671147511443
+qdiv:8428754085692575/2245416,-22542294434269243/25119135,13783461291888720/14173951:-70574337253437786640875/16872276199806368846696
+qdiv:9563262734920725/514036,=1,=2:1
+qdiv:53451507046231654/9484455,47537920203789693/4546483,-80647128625430672/4405781:243016368110072428972882/450871264966434172722315
+qdiv:-44159999533489381/113642,27485426878029480/364853,35852359000720457/949621:-16111908309792201125993/3123498881273026166160
+qdiv:32853589059772384/503717,40780321841499481/989824,=2:32519270937500140220416/20541741377034594070877
+qdiv:79928002171125410/57963,8207223112140364/45757,6211993052732583/4990:1828632797672092692685/237857636624495959266
+qdiv:19663131964133109/36425,71845241352937178/25359,86972744437274535/81994:498637363478451511131/2616962916280736708650
+qdiv:14435384562180968/755,72009011268495388/5897,49643107641306868/4273:21281365690795292074/13591700876928504485
+qdiv:24454205396414067/6880,69532248800465987/6162,26996222231515961/2920:75343406826351740427/239190935873602995280
+qdiv:-1788783461774743/10,=1,=1:1
+qdiv:2169480921871575/32,24356653728462933/275,=1:198869084504894375/259804306436937952
+qdiv:55640518711168835/32,-11942433331158949/2,49472052316509365/97:-55640518711168835/191078933298543184
+qdiv:60550088149390965/4,18432938626319732/3,-64770809459825588/55:181650264448172895/73731754505278928
+qdiv:-7803681495846471,=1,-17883711462854096/3:1
+qdiv:50341568785662927,62590376897604859,80681563059961663/2:50341568785662927/62590376897604859
+qdiv:-203151633689699473/4601599975290251067,525611526456048199/10684809311118564881,-92007105653918839/5233554995228398975:-2170636467216648863175567911942007713/2418653987152422537498561743363178333
+qdiv:65298869984225348/19019228638839514289,56379757376977511/14055232146718391290,964945810921349082/20809092926836677025:917790776546668763561146735400418920/1072299496155034051021485798116154679
+qdiv:-145588071893096095/4173101898033488969,950865051078788090/1909232631512562529,503871559562682707/9612144818358151944:-55592299523459199702887019418644851/793611349886120203227511154180715842
+qdiv:-416108982689762077/6607155238394910018,110992754943723449/1849236166477509591,-268331055516600845/4522919721232620152:-256494593328690673619763717091860169/244448787416768310712157092743870694
+qdiv:25569109100431274/108937408231316295,-72437832965809993/62540068610663445,=1:-106606255830300730275789651105262/526079318745889626493211550315729
+qdiv:877324076175281223/214264808883890725,42146916770679749/32999264126549449,285006538829039936/192084798661860001:28951048914289093786435738190696127/9030601066914945269923974086428025
+qdiv:53167133313707651/16126281481928302,=1,866634487225725687/8471335588786562:1
+qdiv:-404441666294175709/28651204642462452,737283168872077719/15929980120269742,595275127996297901/911315023660732:-3221373851937494010053214312048539/10562025475398550561404400841653494
+qdiv:-696867039120140351/7944197978612428,305556608949512209/6106076808329836,-21961011512486436/271929687123929:-81829301270403260762717504246393/46680811445545827264035485867951
+qdiv:-680855634912930787/1356189151638221,76800812974773809/4396449080201477,115900299432052362/915351235529267:-2993347129862947189365178516172399/104156429393384168102319274153789
+qdiv:858455835027039516/181700684219717,276128875832819233/429408279720099,513501697172110895/688533497518381:368628043334642145377689092432084/50172805671644532495814915417061
+qdiv:316851319525526256/292918890269407,11393663510588707/7832467998606,183243936246901525/329030327691009:2481727820499768843861224399136/3337419271624680006372401786749
+qdiv:425938764355509261/38431838740736,51646287499025181/14744319169037,61598803394948627/2198532513800:2093392362707622954000159317219/661620597573408443663531491072
+qdiv:-32900087887779412/15187739925135,-77577586584555989/5103062080335,20798656203711947/4200421664287:11192746062654396148286870868/78548547271058557114805058901
+qdiv:486662144374613085/7279800587764,370935209793408403/1211133632516,-89246445251861285/6389412265973:147353222681112795182018767965/675083589569104285293074145223
+qdiv:-964120868211092407/359784141044,-101341301532555954/2823707878015,-3905142618376867/213434004577:2722395690926323209655048732105/36460993124171644711757975976
+qdiv:523113306979362837/776795904043,-598929472099127320/298887489003,374389526725869791/822603563483:-156352022787117273091784381511/465245960737238351450759754760
+qdiv:840479323018514793/77550808147,641898923324106797/94049021855,-530841733088610489/198795819997:79046258219243902336497801015/49779780252473669714285675159
+qdiv:128459136724688363/3656348195,=1,=1:1
+qdiv:117942267177399129/15104768300,=1,673568920447088655/16579651733:1
+qdiv:-380358764362707601/4878763095,26907876636599267/4680009378,46112939804078386/9100681911:-593360861407321255383960726/43759051833151076714550455
+qdiv:-687756860919714982/4983016997,810697365335247161/2657532848,-767797307972200547/8201158600:-1827736449331510055462728736/4039718750888655206458995517
+qdiv:-671538226625519919/488528633,212340873444231067/18548520,903467856142920989/292805725:-12456040227327988727969880/103734596633736204897641411
+qdiv:264766040442810006/105576217,906671624054033815/16237552,-17400397472077592/73576121:226271176290748973607648/5038050533098478619883045
+qdiv:198599362591258655/32652407,180852394942204767/534302,330626253412331177/39365397:106112036631234681883810/5905266006577611529424169
+qdiv:193437965129974007/33032327,=1,-712641084972416324/72668161:1
+qdiv:5650691886191629/31580,778039554898468719/522286,-85572216893806154/638707:1475638631235740571947/12285244571846821073010
+qdiv:255988566078185670/3226711,=1,=1:1
+qdiv:119176135632936277/90407,742203087602826989/37340,435710884024344205/699587:4450036904533840583180/67100354540908779594523
+qdiv:601345588172172775/239872,543493254518268378/505985,-428607861122460011/847997:304271847431296841558375/130368813947806072367616
+qdiv:-384629861853292408/8659,25928764268860430/2863,=2:-78656806748998297436/16036940700290175955
+qdiv:16969933057999661/91390,899168628900829159/84974,=2:721001545835231596907/41087510497623388420505
+qdiv:-338452503566548909/60,-471242201877785904/1471,571852972365820021/8097:26203349091915444481/1488133269087744960
+qdiv:-67208679240212206/7945,-147655843020220929/3895,247227362702367322/3545:52355561128125308474/234625134559131056181
+qdiv:372479537607215503/364,287530886573098995/616,172294866607452652/419:8194549827358741066/3737901525450286935
+qdiv:182710333561165768/213,510797940135310553/999,=2:60842541075868200744/36266653749607049263
+qdiv:579561523155053213/54,988155654509496101/36,200878090425916240/7:1159123046310106426/2964466963528488303
+qdiv:515113236713830593/61,-312166546603055389/64,=2:-32967247149685157952/19042159342786378729
+qdiv:292464149557005921,89917333945444994,81421444399876118:292464149557005921/89917333945444994
+qdiv:296110466389461193/3,109472330812647154,=1:296110466389461193/328416992437941462
+qdiv:4092114512174117006/26116630455695638973,=1,-447003756121465797/20917550324131376672:1
+qdiv:259937566541134655/4158701589393004579,1547780345841112833/51410910398305904707,938595196927633599/39410655506871762710:13363626942599952654588701490085321085/6436756584280690243327152586824662307
+qdiv:-1896779359348956490/1347192914723660737,1473868522523514384/1232156863222473595,-5707768245722740379/418206171177904664:-1168564852820271637019025039914440775/992792615388954378876171247477770504
+qdiv:208447940832270699/9600679647480708145,2870404120011924515/3559456450102995519,=1:741961367506113511552059562591997781/27557830415043255728392135816485674675
+qdiv:-4297501973500096783/204423371799318060,2877397514219613038/539249559830239969,8324733346597146387/157919348439263966:-2317426047579514781946227871614919727/588207301863749530458354605484866280
+qdiv:93720929235782808/55293543050375,-7894380025587801253/181187413116917545,3736135546224315869/181899903281616836:-3396210544629034994552431212913272/87301648360171916529438973423975
+qdiv:81994885389922697/294916754436330,9443771936591527133/5056845538523172,=1:69105911727624901444765437205814/464187761529411335843377885990315
+qdiv:-1327130679702964642/1750505879782173,=1,119824008643752477/44623528623225535:1
+qdiv:3879822966686063981/3001133305530870,=1,863100334242503747/3064363459719574:1
+qdiv:4471609326841143121/3136394938408391,-2100659771756104576/2883761130954275,15497169860790465/125833380421061:-1172277560868827200679819871072025/598954425041270209782934871990656
+qdiv:-1428825541118510643/189287913101264,333610284195481532/220738789477061,670131441507861203/870560425567724:-315397220320406686290969132860223/63148394484482295041093957856448
+qdiv:8591262769553056858/438853613359311,2189525401934819634/71978219024849,5936949921650810154/230960129719523:309191896663460373602599905932221/480440567090546674289419809756087
+qdiv:-4064523795777485/244411410943,4019762771700340189/48942084942433,1825370830820857864/84013901689297:-198926268863481870604702521005/982475890687424536786577288227
+qdiv:3308449940543897586/24769809780163,=1,=1:1
+qdiv:5505516603567201356/4103863380997,=1,9200863431181416289/2198737928697:1
+qdiv:299025438242526319/7174665063033,2342598970518801198/2840711341985,-624920076676181455/1731259940133:849444953957579679543172203215/16807362990478315705960265913534
+qdiv:-1317323502669839257/383434104838,1699132754315376723/126762068816,=2:-83493326249184161811746154856/325752723325920927661123442937
+qdiv:801340903278936479/656286066237,2305646751022168759/405803179528,9784332106348628477/2005196814:154924576672907071866862888/720897492310842731598125817
+qdiv:-7034488704242870267/26137866450,1404864734358647884/61096984649,8568167552998854754/11743533017:-429786048376690545870597531283/36720166806981064794567091800
+qdiv:1957064921110117593/22698952475,-2877695287391612383/80652467816,-6543222962701862213/80347703614:-157842115563656338161407886888/65320668566033676195338497925
+qdiv:2797239636828126649/9292862128,4813087393853254410/1395246169,=2:3902837887059395018464057681/44727357561093127896237984480
+qdiv:-4315815575872328781/941797525,2364548726161022722/1932241689,7324535609142564031/6044609444:-8339198777736056212162751109/2226926138040353951048363050
+qdiv:30859738907627663/2542365,6600947823086520511/563823249,2650371430256452002/735290035:5799812751396779944979029/5594006237413787239649505
+qdiv:1239632473056172538/39020573,=1,4893570761803052153/806566500:1
+qdiv:4340355836717522794/84976723,=1,4177413596064433650/4807901:1
+qdiv:5251208912622866942/60282373,1588514721403315667/15272978,=2:80201598195892969102093276/95759436951625758474837791
+qdiv:3180027096600073679/1131489,1551586490431667735/1426711,1709665203917621573/6158822:4536979639017387718639769/1755603046472037293807415
+qdiv:8243752949511560636/648121,9011505934664251587/2857664,2654767072043691455/1609529:23557876028713004413314304/5840546237880529402818027
+qdiv:1059685344014955483/517268,=1,=2:1
+qdiv:7618913893338931327/87339,2570669407313338666/518057,289391906262782051/116872:3947031674841486746471639/224519695365339685749774
+qdiv:700273840899540863/79614,769420078468545381/1045,649456732765994158/34395:731786163740020201835/61256610127194771962934
+qdiv:-187558807564904619/362,-9545050345452388419/23068,=1:721101095484536625182/575884704175627434613
+qdiv:9871582247297764418/7063,1928022567530041238/3221,858557805597948211/218:15898183209273049595189/6808811697232340631997
+qdiv:-6853417837322192169/596,243646027011694943/64,-2802878255693787218/3819:-109654685397155074704/36303258024742546507
+qdiv:6270595962911796812/909,6451237634004612584/717,4154473691343572326/653:374668108783979859517/488681250775849403238
+qdiv:2859818002359754548/881,-978746824548811382/135,=1:-193037715159283431990/431137976213751413771
+qdiv:-163677610836218181,1125556291854647923/21,-543556322760873342/61:-3437229827560581801/1125556291854647923
+qdiv:-2743247019285632266/73,2721276457623268991/11,9892328911405524379/35:-30175717212141954926/198653181406498636343
+qdiv:3970324237073990007/4,2239223157773235406,146642702970818545/2:3970324237073990007/8956892631092941624
+qdiv:1833757668733454039,=1,-8814196290971390691/2:1
+qdiv:41577911849641052701/99022939143770450788,29562744466456608111/56837407285672400044,31020970526416154186/17913773857228432749:84399311067351185113571896143048525673/104549637365170333914120618648568826481
+qdiv:11645154448997394881/94761538126264735491,88207691494542159651/12578224627720796822,25570027647696327707/17624189500133230570:146475368483991438069574417703503868182/8358696520589854489200399496481407873641
+qdiv:36037910341862609485/5084165437585712934,14803543978704731158/4018809000761174679,40592658881592860140/1875002057807619289:2540868042991257484177217842751705795/1320415204391415532618346800916375396
+qdiv:-6362828133579539977/1405399076052451953,=1,-79310041992515227141/9766031882584814055:1
+qdiv:18995499865084840909/132084112242521874,40315757995363267494/108424549445496181,9141557851421924653/395183670085599750:294225502051972481196626700993152647/760724443457415783589919753058309108
+qdiv:-20679072031164937/331072269490614784,60303816476959382024/820747184142174667,32412125947207417888/849382221894135357:-16972290140251822462187296540050979/19964921379972472722742560644478242816
+qdiv:342025503923893090/638329775416737,6081856724756077351/10064175190260298,-12635294626204723652/12747811376654893:3442204591027121039210818623540820/3882230237230318511251099432023687
+qdiv:95772012363596472232/93464593843091931,=1,66811795410951517976/57387498829697707:1
+qdiv:39150280549083930478/221651102097297,27527655361557153686/8200729391818537,-10566813759037632949/1540621706438105:160530428198407079993270396049835343/3050767574521854917099344177093371
+qdiv:775796793430257737/1824356921264078,59648355674434946375/4234888027379937,-48407842369116658019/8912961054912311:3285412552177544656250926732822569/108819890516676835653288543143817250
+qdiv:28476387945046958277/999638881195952,58250700361065854943/221262414969004,29643575123794329851/477719531693567:525062863859610263002381953020509/4852472078151375703306701265899228
+qdiv:366203441988870367/188565554272086,94732323070906583248/862962947506991,=2:316020001685920962364670925235697/17863253007347820007476928001615328
+qdiv:8483230698254754551/15259557038423,23368061392310636478/85223679281645,32515807430078447491/85784287822340:722972132300268572088173474516395/356586265693334541919071831394194
+qdiv:49879409479136730807/66163096356056,-38087887001526926307/13816595584511,-1454659694645612910/17634310154753:-229721209589152224414677275243459/840004179226866288683545915055064
+qdiv:62960436874158600601/6181269755427,-38093682298270231594/6182059511551,=2:-389225167629298487685523755042151/235467326263142673710199028360638
+qdiv:-44149559729162857485/8838649113689,-92868732768946894695/9715947205117,7772268284865525232/3917639152071:28596986097180394710634075583383/54722276171844870774524704398657
+qdiv:2160674978760021747/440085907262,27830441916338793631/444373630892,57774193577066913529/985831440387:480073492744542921823635504162/6123892640127175948232611124161
+qdiv:36779826517186231622/593017430523,19227595668423969206/337403938281,11416362949398192276/562802104127:2068276386031765079995376420297/1900383229737324483921166079123
+qdiv:26089630323225357334/95419525743,10301251794111780015/99138956899,91414665551775455692/70400356165:152146984477946008199958796898/57820032985492584056520319185
+qdiv:-29243000664559124719/43374840118,-10759429621437816793/825473183,449211716437215496/6016537709:1270490149423407156499311083/24562554715302029930281605346
+qdiv:43740120582679037273/1380740386,-10453142250046604709/682904599,5705113158551362448/866195241:-29870329506726074294624118527/14433075665242257503894077674
+qdiv:52606375144331115549/7041068780,44326164670224665111/2919045833,89932878257209865497/5189085588:11812340011868808955042304409/24007967245896760392232102660
+qdiv:18724901946698874513/497209057,618446872748526095/146164963,15390306579353612360/304964183:2736924600217868965334288019/307497386403893657834842415
+qdiv:-73271009353030104361/888009485,6268171386817340605/445545539,-30294808731792985583/748195570:-32645571355269839130747995579/5566195645099402419715638425
+qdiv:-6170226889332372331/27347419,92903445126985172210/30514679,3697622268386381476/88810455:-188282492885145865988946749/2540669440431171711214025990
+qdiv:22447257099357853357/73571392,96930598757046526391/75068541,=2:1685082839900686088401942137/7131319077949382755350606272
+qdiv:18405537170427326117/869259,=1,-1420857565162351747/93018:1
+qdiv:49104082785088634230/2249621,37173384714202722705/3494738,82295002552935357721/1027368:34321180812839016682336348/16725205378829888650868961
+qdiv:31797840681830305220/155259,1587139799259633659/9846,26303565519013168528/557087:34786837705922353910680/27379748677027940251409
+qdiv:49251043005944454115/458557,12656810517669387971/114174,-68275280158906352129/488558:5623188584160702104126010/5803869060550921539817847
+qdiv:-64285887839653334497/93042,15579348394621354273/8674,59955417746039738115/74473:-278807895560576511713489/724766866666180022134233
+qdiv:63842413368795633893/62393,-87956339382997486493/5714,7858337204545049957/43385:-364795549989298252064602/5487859883123362174757749
+qdiv:-68051470229786982728/7677,26179928923183325293/1125,86355329936141165696/9285:-8506433778723372841000/22331479371475376474929
+qdiv:-50081439194849732369/6752,5504600376647160870/1069,14173817213125628066/7065:-53537058499294363902461/37167061743121630194240
+qdiv:47895210529721192309/101,=1,8891562052096223369/598:1
+qdiv:2023765290182261065/98,-3528906224032626601/8,210162627484795020/311:-426055850564686540/9100863419873615971
+qdiv:-55071290496801275816/43,-14530504979971463081/90,41799056582024748637/60:4956416144712114823440/624811714138772912483
+qdiv:2952763925816064856/9,-2794894328282573619/22,33252147556814701294/27:-64960806367953426832/25154048954543162571
+qdiv:-22874728508743973476/3,-97353210331533196276,78585121833788001065/3:5718682127185993369/73014907748649897207
+qdiv:-18829566175245957052/3,-20433551292296144981/4,=1:75318264700983828208/61300653876888434943
diff --git a/polly/lib/External/isl/imath/tests/qdivz.tc b/polly/lib/External/isl/imath/tests/qdivz.tc
new file mode 100644 (file)
index 0000000..b4f010d
--- /dev/null
@@ -0,0 +1,800 @@
+qdivz:7/14189789968569496825,-4,4/56970792418717696577:-7/56759159874277987300
+qdivz:-1/18980926711980671485,-2,2/34538922161232588701:1/37961853423961342970
+qdivz:1/2252731937540774329,3,1/1284950176761593374:1/6758195812622322987
+qdivz:5/5990342115257096507,-5,=1:-1/5990342115257096507
+qdivz:-2/184808182320120951,9,1/93245347658569125:-2/1663273640881088559
+qdivz:-3/953191474882739911,6,=1:-1/1906382949765479822
+qdivz:-9/58755486411564677,0,4/31278777005155811:$MP_UNDEF
+qdivz:-1/6574102725079796,-3,-7/53860936069380022:1/19722308175239388
+qdivz:5/3092518668717267,0,1/1348431717766123:$MP_UNDEF
+qdivz:1/1711104650637484,4,5/891266886610953:1/6844418602549936
+qdivz:-3/752256450310990,7,0:-3/5265795152176930
+qdivz:0,1,1/221073922196749:0
+qdivz:0,6,-9/20067002597087:0
+qdivz:0,8,7/58718030529726:0
+qdivz:0,9,2/620702207617:0
+qdivz:-3/2637082492171,9,6/2399598811007:-1/7911247476513
+qdivz:2/989821160739,-3,1/35099223664:-2/2969463482217
+qdivz:7/596707899127,4,-3/111426253072:7/2386831596508
+qdivz:-7/90687746735,-8,2/80220574745:7/725501973880
+qdivz:1/6207705905,5,=1:1/31038529525
+qdivz:-6/7404342365,5,=1:-6/37021711825
+qdivz:1/669923792,4,7/932900852:1/2679695168
+qdivz:1/447676458,-1,-1/780010677:-1/447676458
+qdivz:-8/632835687,-1,=1:8/632835687
+qdivz:-3/34120079,-2,8/62163153:3/68240158
+qdivz:0,7,0:0
+qdivz:1/4563667,8,3/4687252:1/36509336
+qdivz:6/9767093,1,8/1612033:6/9767093
+qdivz:-1/44242,5,2/127465:-1/221210
+qdivz:3/442637,7,-1/427529:3/3098459
+qdivz:5/99573,4,2/18535:5/398292
+qdivz:-1/92756,-9,1/2349:1/834804
+qdivz:7/9020,7,2/4657:1/9020
+qdivz:1/619,0,4/4281:$MP_UNDEF
+qdivz:1/57,7,0:1/399
+qdivz:3/497,-4,=1:-3/1988
+qdivz:7/13,0,-3:$MP_UNDEF
+qdivz:0,-1,-4/23:0
+qdivz:0,9,-1/7:0
+qdivz:1/2,6,1:1/12
+qdivz:92/54148884014131151533,-84,=1:-23/1137126564296754182193
+qdivz:-19/23897843385077955493,71,69/61266965124498535070:-19/1696746880340534840003
+qdivz:55/6196267973202090504,-7,5/287457924210607772:-55/43373875812414633528
+qdivz:-48/83164040244933491,-32,5/1047923356026875081:3/166328080489866982
+qdivz:21/587480004246184118,-57,15/677609340847439434:-7/11162120080677498242
+qdivz:30/104315744428261859,21,33/4537728827744434:10/730210210997833013
+qdivz:63/43591673951063050,-60,-72/62642630564846123:-21/871833479021261000
+qdivz:22/49235810624301237,22,=1:1/49235810624301237
+qdivz:-67/86699263349277,68,-18/1746465712913311:-67/5895549907750836
+qdivz:4/662982233689325,-70,3/223690708572257:-2/23204378179126375
+qdivz:48/30832308107873,0,-78/969311075733763:$MP_UNDEF
+qdivz:-79/719541528020900,71,29/227964213458863:-79/51087448489483900
+qdivz:46/99191502629977,45,=1:46/4463617618348965
+qdivz:-45/94030959875366,-49,1/739436814946:45/4607517033892934
+qdivz:85/1156056884433,21,70/1021249005383:85/24277194573093
+qdivz:-45/3343573640758,81,-23/371241990007:-5/30092162766822
+qdivz:9/908355558094,0,13/114278107776:$MP_UNDEF
+qdivz:37/482896223634,76,=1:37/36700112996184
+qdivz:0,-62,=1:0
+qdivz:1/224399171,-96,1/829119227:-1/21542320416
+qdivz:34/3276847561,-87,0:-34/285085737807
+qdivz:8/447224053,-69,17/1706735282:-8/30858459657
+qdivz:58/337629635,17,14/309654075:58/5739703795
+qdivz:19/143535299,5,=1:19/717676495
+qdivz:89/21730150,-36,-11/3380230:-89/782285400
+qdivz:14/11625951,84,-75/90670231:1/69755706
+qdivz:-35/6938168,-92,40/1158419:35/638311456
+qdivz:81/4813535,4,7/2110299:81/19254140
+qdivz:17/267858,-12,51/311648:-17/3214296
+qdivz:-13/119265,96,0:-13/11449440
+qdivz:5/42218,84,37/8213:5/3546312
+qdivz:98/47455,48,-49/28060:49/1138920
+qdivz:-1/1148,56,7/2357:-1/64288
+qdivz:89/566,3,8/7135:89/1698
+qdivz:-21/746,-21,=1:1/746
+qdivz:-38/319,2,7/698:-19/319
+qdivz:21/11,-69,-1:-7/253
+qdivz:8/31,16,=1:1/62
+qdivz:95/7,92,-22:95/644
+qdivz:23,55,44/5:23/55
+qdivz:1/60738652894409193768,-551,107/57758377963603747061:-1/33466997744819465766168
+qdivz:110/79622749216992783521,579,251/88218014233937017256:110/46101571796638821658659
+qdivz:83/4082129227447654187,15,18/1341986384427533683:83/61231938411714812805
+qdivz:993/372817934005169,561,163/3344274496871800764:331/69716953658966603
+qdivz:961/240704079603040791,598,=1:961/143941039602618393018
+qdivz:679/875463698688215197,414,-683/864641730477058828:679/362441971256921091558
+qdivz:661/48034471229067507,803,-793/39170031634988712:661/38571680396941208121
+qdivz:301/29669334975743711,779,-15/1858966466467087:301/23112411946104350869
+qdivz:-376/9004373296401219,353,-206/1302368237251547:-376/3178543773629630307
+qdivz:-311/1125853364758500,60,219/4621090656923606:-311/67551201885510000
+qdivz:890/98890870399971,-103,=1:-890/10185759651197013
+qdivz:-368/970340921930931,911,320/23157236509251:-368/883980579879078141
+qdivz:153/17403469351714,-174,1/10019300229250:-51/1009401222399412
+qdivz:-45/41421091188493,-796,=1:45/32971188586040428
+qdivz:285/4042719934577,918,111/3917056138984:95/1237072299980562
+qdivz:232/2392703971997,-223,29/510798153426:-232/533572985755331
+qdivz:-288/16825025249,683,26/102920443589:-288/11491492245067
+qdivz:57/859553008166,-596,384/457223544793:-57/512293592866936
+qdivz:241/26996988926,711,402/76733915611:241/19194859126386
+qdivz:113/64370447211,32,654/51387222133:113/2059854310752
+qdivz:37/20055174,-333,266/1472467541:-1/180496566
+qdivz:-41/1427473740,466,=1:-41/665202762840
+qdivz:331/299809977,756,-955/46378116:331/226656342612
+qdivz:-29/129229071,339,607/422149878:-29/43808655069
+qdivz:809/62921676,331,358/1765487:809/20827074756
+qdivz:-23/2282319,-417,85/63854587:23/951727023
+qdivz:19/1064117,478,637/1700008:19/508647926
+qdivz:418/1515977,194,736/128183:209/147049769
+qdivz:2/2337,714,=1:1/834309
+qdivz:765/922036,-964,997/935249:-765/888842704
+qdivz:-574/71689,948,617/3930:-287/33980586
+qdivz:-407/558,960,817/20918:-407/535680
+qdivz:6/215,99,-59/760:2/7095
+qdivz:-916/8789,71,-23/237:-916/624019
+qdivz:192/103,-275,241/262:-192/28325
+qdivz:-641/520,803,-980/299:-641/417560
+qdivz:-808/23,85,419/23:-808/1955
+qdivz:30,160,114/25:3/16
+qdivz:99,883,92:99/883
+qdivz:249/7,435,=1:83/1015
+qdivz:8669/47763182821761519000,2612,2570/33173836138961742453:8669/124757433530441087628000
+qdivz:6761/57372086615909714512,8060,=1:6761/462419018124232298966720
+qdivz:1411/382658058312182873,825,-3109/4771378321641389271:1411/315692898107550870225
+qdivz:761/867527777386531139,5053,2023/1270134890218434390:761/4383617859134141845367
+qdivz:-9176/793276121303032795,-6985,=1:9176/5541033707301684073075
+qdivz:1369/360850321203415946,4395,-8748/566863280507933113:1369/1585937161689013082670
+qdivz:-6215/67983977826422952,-2039,922/49515404491925443:6215/138619330788076399128
+qdivz:-316/10499786595298753,2815,8687/66197583183800979:-316/29556899265765989695
+qdivz:1606/5305463362124029,1731,112/3026842383841497:1606/9183757079836694199
+qdivz:3055/1662027684799994,-4034,124/192242800980443:-3055/6704619680483175796
+qdivz:-5787/765368742920927,2169,7724/706366155708607:-643/184453867043943407
+qdivz:192/253214519977831,2403,=1:64/202824830502242631
+qdivz:-9511/57149625422873,1022,8816/23226399448707:-9511/58406917182176206
+qdivz:4230/77042165665729,-418,9283/86186701790732:-2115/16101812624137361
+qdivz:1097/8661587667062,8556,-1294/1841284483249:1097/74108544079382472
+qdivz:5073/8529249706045,4830,-1957/777278713702:1691/13732092026732450
+qdivz:3288/146119907411,9777,3763/497379016899:1096/476204778252449
+qdivz:8321/215917327006,6435,4949/764334137352:8321/1389427999283610
+qdivz:6030/96286272709,3144,=1:1005/50454006899516
+qdivz:9082/62592066789,7051,8147/63758112020:9082/441336662929239
+qdivz:4051/1918506696,-1174,7400/4885927323:-4051/2252326861104
+qdivz:-3965/8753839922,977,5991/7987170626:-3965/8552501603794
+qdivz:-5834/689611533,6425,-2453/364281564:-5834/4430754099525
+qdivz:1124/704967041,-5270,=1:-562/1857588153035
+qdivz:7944/57190105,7680,-9489/89859484:331/18300833600
+qdivz:6843/70048130,4671,=1:2281/109064938410
+qdivz:2533/9359236,1758,=1:2533/16453536888
+qdivz:1385/626883,5784,157/3146564:1385/3625891272
+qdivz:4688/160917,3538,9758/811127:2344/284662173
+qdivz:9463/781649,3734,5600/250357:9463/2918677366
+qdivz:691/30478,8036,-841/15767:691/244921208
+qdivz:7469/16264,-5140,=1:-7469/83596960
+qdivz:7515/3959,6138,-6065/3429:835/2700038
+qdivz:13/274,3740,4679/7583:13/1024760
+qdivz:1229/24,-7646,-6995/619:-1229/183504
+qdivz:687/823,6221,=1:687/5119883
+qdivz:449/4,7444,1039/12:449/29776
+qdivz:-994/3,-6901,-48:994/20703
+qdivz:1612,1197,=1:1612/1197
+qdivz:4205/3,3230,263/3:841/1938
+qdivz:2417/5769966068557054097,-28966,58670/6149020325783377203:-2417/167132837141823628973702
+qdivz:30796/2288360383424599467,99939,-42281/20938438853892364104:30796/228696448359071046132513
+qdivz:8506/579725899434273775,77119,-37442/962475407368879243:8506/44707881638471759254225
+qdivz:-61035/3482034023582042798,77561,-12752/1085806378725747165:-61035/270070040903046821455678
+qdivz:6403/315592922992076985,33571,65893/416723435457372548:6403/10594770017767016463435
+qdivz:42598/69939063133387941,43735,4765/30061903416091521:42598/3058784926138721599635
+qdivz:-8062/70710522833104625,3389,=1:-8062/239637961881391574125
+qdivz:29201/20949143115498720,38501,-83185/22636843869370839:29201/806562959089816218720
+qdivz:90114/2645706758131727,2395,39560/6948564113170771:90114/6336467685725486165
+qdivz:28967/9011742303197945,68899,70841/1427120257870104:28967/620900032948035212555
+qdivz:9374/952169153467751,15363,23536/955542414786031:9374/14628174704725058613
+qdivz:51148/254739984446201,82728,52657/828166332061258:12787/5268532358316329082
+qdivz:81421/51545697474492,-58001,7295/10940115310379:-81421/2989701999218010492
+qdivz:30074/21203238537003,-89481,-39057/81001965285511:-30074/1897286987529565443
+qdivz:68431/7698279661359,47986,=1:68431/369409647829972974
+qdivz:-65063/7943806973855,-56338,70937/1359955225665:65063/447538197293042990
+qdivz:64467/215908405691,30481,-35757/415900569994:64467/6581104113867371
+qdivz:-89549/201351835302,99827,23735/207632772853:-89549/20100349662692754
+qdivz:7871/103822521,-89272,22388/34036415431:-7871/9268444094712
+qdivz:-5548/6399177947,10277,9825/12940044851:-5548/65764351761319
+qdivz:9159/2485995284,50120,15415/595065179:9159/124598083634080
+qdivz:9078/1432788533,-52955,96908/495178011:-6/50147598655
+qdivz:47557/12504243,-82563,37658/472974143:-47557/1032387814809
+qdivz:96527/90426700,48323,75980/494535141:96527/4369689424100
+qdivz:-33033/11045147,3862,=1:-33033/42656357714
+qdivz:22621/19382503,89975,19721/94899651:22621/1743940707425
+qdivz:-3547/8566286,16505,-23598/8026213:-3547/141386550430
+qdivz:-74521/2199771,-55243,49586/7659031:74521/121521949353
+qdivz:-1886/42955,-46801,=1:1886/2010336955
+qdivz:16475/254131,5428,8394/88357:16475/1379423068
+qdivz:23/68130,-87120,49568/89377:-23/5935485600
+qdivz:46067/8205,87890,=1:46067/721137450
+qdivz:-17041/835,61576,25568/1097:-17041/51415960
+qdivz:70979/7890,-71592,-52925/7919:-70979/564860880
+qdivz:69860/859,77846,72800/971:34930/33434857
+qdivz:-2713/19,33421,2857/197:-2713/634999
+qdivz:23292/25,-64396,2263/19:-5823/402475
+qdivz:1446/19,14512,=1:723/137864
+qdivz:-4428,48879,-30206:-492/5431
+qdivz:42445/8,-64598,-238:-42445/516784
+qdivz:725105/89205530254624460472,498415,343423/44377628962630043366:145021/8892274872371730093230376
+qdivz:48277/129907785767997567,633952,44806/4308907194103851519:48277/82355300603193593594784
+qdivz:40582/400024522521846161,924653,693295/4356572124867623097:40582/369883874823392618307133
+qdivz:931685/4908062338032376156,-81098,140947/4372557097040418764:-931685/398034039489749641499288
+qdivz:766956/116055603158859563,-526495,91809/510346928234219477:-766956/61102694785123765621685
+qdivz:741603/132214366402214038,479618,515977/280622060822043768:741603/63412389985097092477484
+qdivz:-516699/76045719725268866,99626,233591/68059428628090678:-516699/7576130873349636044116
+qdivz:220269/518413710467221,624520,163971/21127267464610397:220269/323759730460988858920
+qdivz:-28142/1957881267309015,181534,320653/2331263900982418:-14071/177711008989837364505
+qdivz:-690794/3288684236568943,143025,2357/9370516939377:-690794/470364062935273072575
+qdivz:-859112/140095463625325,816822,612219/121557578324606:-429556/57216528394682608575
+qdivz:220971/363994210767806,-560494,110590/4404890122781:-3027/2794747550275214468
+qdivz:-18965/505806570474,717219,-43623/93798137994313:-18965/362774082668791806
+qdivz:-173609/8550763730716,-693162,-19411/825399841571:173609/5927064489110563992
+qdivz:183202/1439642401317,469971,=1:183202/676590178989351807
+qdivz:455279/3670831046834,369898,=1:455279/1357833062561802932
+qdivz:-278149/271832786844,243731,780869/789593611916:-278149/66254076970274964
+qdivz:-106981/327902270288,456307,146862/152267328143:-106981/149624101248306416
+qdivz:-177325/26201489293,232388,327906/60969287669:-4325/148510041312724
+qdivz:387294/30547191461,840749,353120/74968646269:387294/25682520673644289
+qdivz:302341/5821897743,177341,-55465/623909789:302341/1032461167641363
+qdivz:998005/7400105717,957579,-133949/4820770760:998005/7086185832379143
+qdivz:-143240/188037809,86894,60337/619625170:-71620/8169678687623
+qdivz:-288213/115013614,232366,=1:-288213/26725253430724
+qdivz:227311/82086188,230582,831983/50818067:227311/18927597401416
+qdivz:379211/28238460,-975706,454719/36515711:-379211/27552434852760
+qdivz:281082/1807583,231844,196945/2033663:140541/209538636526
+qdivz:14670/147551,989329,416446/5701543:14670/145976483279
+qdivz:691512/671245,324873,482828/621975:230504/72689792295
+qdivz:-112163/289428,737146,786171/133222:-112163/213350692488
+qdivz:10835/598,235729,106069/97042:10835/140965942
+qdivz:584561/52856,65410,-46519/23887:584561/3457310960
+qdivz:352640/4817,820728,289214/4691:44080/494180847
+qdivz:320159/3132,320681,-404140/371:320159/1004372892
+qdivz:-180226/529,-13347,343684/89:180226/7060563
+qdivz:-95731/17,317981,-401174/3:-95731/5405677
+qdivz:-35074/93,-199642,705874/89:17537/9283353
+qdivz:-483824/3,208717,=1:-483824/626151
+qdivz:-33504,640890,558617/2:-5584/106815
+qdivz:29565,707439,781129/7:9855/235813
+qdivz:531715/4028736917662068622,-6375863,3168443/14968317395104615452:-531715/25686674650055629830470786
+qdivz:9312820/86437123986635347829,-3647798,-9921787/17852839666224243529:-423310/14332053091100020388178661
+qdivz:4905097/1681959789098950192,8490550,5024043/8545615644430661068:4905097/14280763687334091552685600
+qdivz:9734997/1577074521689225743,-6832621,-1088972/709315347360105245:-9734997/10775552495458759285362403
+qdivz:-5219429/637213619457793955,922999,4000516/81347433120051823:-5219429/588147533545924362671045
+qdivz:-7759663/763271482741194316,5893021,-7904753/307331388791664740:-7759663/4497974876494995669268636
+qdivz:-7637867/8373635589819800,-9864736,=1:7637867/82603704453776614572800
+qdivz:-1227995/24598537455164863,6580218,6299290/38542781724475047:-1227995/161863738936150024480134
+qdivz:6988198/9489671176695433,-7796211,2820841/7357436554413976:-6988198/73983478814135878404363
+qdivz:4655307/6278254340914480,9462770,-6281733/6153291637649389:4655307/59409676829575313909600
+qdivz:-3031228/480320878032225,-727330,1226393/130648347238455:1515614/174675892109589104625
+qdivz:805552/214495438615263,1327196,-4903014/270461362054651:201388/71169372037105648137
+qdivz:-8334607/59169490017165,4126493,=1:-8334607/244162486369401252345
+qdivz:-2740096/62311500192201,5879218,=1:-1370048/183171446768495789409
+qdivz:6018950/576700070291,4317824,7475008/942911804001:429925/177863528878869056
+qdivz:2223856/5382329849761,-3906006,252260/533340995361:-1111928/10511706343572782283
+qdivz:2243556/156929905105,-3830812,-2435277/814377058247:-560889/150292240908773815
+qdivz:857583/89117603081,-2195895,-4700762/733917585385:-285861/65230966339184165
+qdivz:3208465/408709893,1515642,31276/1253645275:3208465/619457879646306
+qdivz:-4098989/29766939365,4871162,4547567/76483554090:-4098989/144999583891092130
+qdivz:344051/517335170,-8077846,=1:-344051/4178953833643820
+qdivz:-4130140/2212436731,2194454,=1:-2065070/2427545317044937
+qdivz:5542680/216220363,6891467,6087552/929545577:503880/135461408758411
+qdivz:6509555/836740618,6251993,662482/133872459:6509555/5231296486551674
+qdivz:1638179/17457984,-269806,4370443/34189662:-1638179/4710268831104
+qdivz:2432741/2349231,8748014,-5489595/31977161:2432741/20551105677234
+qdivz:4969351/8828308,4450547,-456455/409972:4969351/39290799684476
+qdivz:129047/5679221,7992010,=1:129047/45388391024210
+qdivz:1678079/404405,9368845,2425353/203762:1678079/3788807762225
+qdivz:7313393/106210,5702,=1:7313393/605609420
+qdivz:9380792/29837,3628650,8349541/69163:4690396/54134015025
+qdivz:141835/4553,1259021,651103/91477:141835/5732322613
+qdivz:3409832/4613,-6381406,6023255/7573:-1704916/14718712939
+qdivz:2693799/5507,-7732579,-8350784/4419:-2693799/42583312553
+qdivz:-3649678/783,4922666,1776512/359:-1824839/1927223739
+qdivz:1703289/146,-1364856,-1170358/5:-567763/66422992
+qdivz:6835207/52,5452267,85397/24:6835207/283517884
+qdivz:-981009/94,-4341899,1154647/19:981009/408138506
+qdivz:868414,-9170184,=1:-434207/4585092
+qdivz:-5109118/5,8155944,7055834/7:-2554559/20389860
+qdivz:4096180/71083460296902382853,39235251,45336611/9448238468873105562:372380/253543400608863592157777373
+qdivz:723497/26326545620806342541,54557113,2864637/65009482842561827395:723497/1436300324333986781126044133
+qdivz:-63087064/6014746604181337631,-68334633,56994111/8777928731228646479:63087064/411015501784727972463474423
+qdivz:-15440050/5936703417482625609,25638172,511239/234669451493331560:-7720025/76103111665203681187573374
+qdivz:55799712/219797647434406031,-82812681,79904323/310979304902953074:-6199968/2022448051281770563297679
+qdivz:11215136/271404723528588829,58952266,-21266387/195173683249926450:5607568/7999961727556913625918257
+qdivz:-22341476/2415590020263023,76303502,87999410/29375584889000487:-11170738/92158988971159808003273
+qdivz:-9005355/4510812860318998,21169081,-4695729/14923894399821824:-9005355/95489762815934554500838
+qdivz:41169514/1040429180028139,-24136462,-77184226/2867050860263675:-20584757/12556139683720167952109
+qdivz:28884631/4498836022940958,-17445318,1608549/1242177333646205:-28884631/78483625050060307534644
+qdivz:-517692/132391467827,83742505,2257283/308472757896032:-73956/1583827593779983805
+qdivz:-87141668/980473328502441,-93910964,=1:21785417/23019298863988227665781
+qdivz:75617477/37806359301546,65166173,-65048788/54754409331605:75617477/2463695750744705803458
+qdivz:-24133097/22580980458390,10165227,24383811/20074325876549:-24133097/229540792242098404530
+qdivz:16320192/467694969529,70126387,=1:16320192/32797758431143861723
+qdivz:44162765/6257622442932,44975330,12453293/412188313732:8832553/56287726877254573512
+qdivz:15976849/142509128422,56335860,17374141/76416816576:2282407/1146910615357687560
+qdivz:94840195/85872967721,98955334,4372523/2906959178:5578835/499858129553104342
+qdivz:1591668/9284581411,-66619034,59299561/82774915363:-795834/309264922347588487
+qdivz:1206823/809723910,99568171,1851220/576842863:1206823/80622728733668610
+qdivz:-85914081/8902612534,-35845304,-66045896/1499799717:7810371/29010622970494576
+qdivz:13440820/2754320367,47651570,48865911/5397347182:1344082/13124768977052619
+qdivz:15805143/461814313,31959348,=1:5268381/4919761446849308
+qdivz:-4439951/41512358,63826,=1:-4439951/2649567761708
+qdivz:87711692/59173359,-37321151,18983077/41260334:-87711692/2208417866416209
+qdivz:-79532127/7010743,44205966,=1:-8836903/34435185188082
+qdivz:-31040649/5929246,53863539,27344212/5421485:-10346883/106456724387198
+qdivz:15254977/1604492,31565106,47169776/1230755:15254977/50645960056152
+qdivz:-1314702/219071,-5786594,-13876970/230949:657351/633837467087
+qdivz:8333867/53036,72209074,=1:8333867/3829680448664
+qdivz:93469648/41061,-48263567,-83507719/46190:-93469648/1981750324587
+qdivz:78818449/16510,17504351,-32862423/35033:78818449/288996835010
+qdivz:-32873138/4311,1836189,-5349604/6389:-32873138/7915810779
+qdivz:26267095/2366,-19100210,37380469/1095:-5253419/9038219372
+qdivz:17021179/187,-47068270,11903833/362:-17021179/8801766490
+qdivz:59271380/219,18844882,10502917/263:4233670/294787797
+qdivz:71210549/59,6207655,57674913/28:71210549/366251645
+qdivz:-88171581/4,-27356653,40019704/81:88171581/109426612
+qdivz:70970263/9,44199944,72907200:70970263/397799496
+qdivz:45786297/2,18148519,62016757/7:45786297/36297038
+qdivz:96846563/1680143679448519441,128223531,=1:96846563/215433955166221295447166171
+qdivz:641178113/23637084788031433889,-195838510,-844127047/52534148496309477764:-641178113/4629051465631741845985265390
+qdivz:432203304/1867790824623873113,-180265683,581867535/6107364102548849006:-11082136/8633297146203992431289261
+qdivz:791492251/9077194570872541382,410301713,-39018983/764723471732454519:791492251/3724388481663303633697987366
+qdivz:401598712/629101484430298745,-116768810,-611873995/55698849613345913:-200799356/36729715853079756199071725
+qdivz:94055155/646161833837700334,-56357955,=1:-18811031/7283271910828518545411394
+qdivz:-31209883/602537298237104,372029853,=1:-31209883/224161862490166960265712
+qdivz:223196803/16862631810833754,64519940,21514940/2113398483862313:223196803/1087975992677085158054760
+qdivz:496016327/1750744187829919,571978386,-693142337/5039438258199861:496016327/1001387834853837912130734
+qdivz:839316921/1836121482811279,660441273,801742057/6619092013304984:279772307/404216803163509573839389
+qdivz:-526011832/776825418638849,171589931,-366007747/149875306848853:-526011832/133295419983286213829419
+qdivz:-874798883/297936367252434,15988665,127117837/184563922509306:-124971269/680514966759448237230
+qdivz:200287712/43891754665843,496594818,=1:100143856/10898208959992477700787
+qdivz:-120118254/85593269819273,351399480,-442093373/20946701297219:-20019709/5012905084332037696340
+qdivz:943959960/9218804756549,151648398,=1:52442220/77667609600301992139
+qdivz:62828073/540741708646,-657515815,53734217/983237183903:-5711643/32322384114987930590
+qdivz:45950159/229199443824,6790963,402982057/868439427968:45950159/1556484942629362512
+qdivz:259555952/42104910479,-302245151,-940909904/528170775119:-259555952/12726005025566837329
+qdivz:869315042/36645934999,382102853,163056126/74033612173:869315042/14002516313970452147
+qdivz:-77018238/88942920247,19547868,-610583685/26308049452:-12836373/289774077420480566
+qdivz:22065750/1532507797,132662602,274310661/2637894122:11032875/101653235967653897
+qdivz:648770433/2675318534,168008014,=1:648770433/449474953714731476
+qdivz:166804597/152419962,935573693,-497815717/166801044:166804597/142600106735259666
+qdivz:933126893/254794607,178086796,-10735069/659294666:933126893/45375555198709172
+qdivz:51397159/9285767,107706490,=1:51397159/1000137370527830
+qdivz:178105895/27030313,-834305485,216521075/14478702:-35621179/4510307679433361
+qdivz:401130268/4003281,538052518,=1:200565134/1076987711155779
+qdivz:-25708379/923800,928600130,113823997/4498353:-25708379/857840800094000
+qdivz:332976289/259940,255080279,848673264/268067:1184969/235962874460
+qdivz:-936148364/84001,-905995411,-39958671/407233:936148364/76104520519411
+qdivz:854254667/15661,-901412190,834007367/56:-122036381/2016716615370
+qdivz:42260654/5561,616640749,207309077/42644:42260654/3429139205189
+qdivz:664619865/9433,509452304,203966830/4141:664619865/4805663583632
+qdivz:259028563/2828,364316648,406720073/2225:259028563/1030287480544
+qdivz:130594031/195,97865363,=1:130594031/19083745785
+qdivz:295389723/478,-625249910,939847596/815:-295389723/298869456980
+qdivz:665547887/87,961350652,72648508/67:665547887/83637506724
+qdivz:434992091/6,68620494,=1:434992091/411722964
+qdivz:222412585/2,301910131,=1:222412585/603820262
+qdivz:-448528340/9,676248718,364885727:-224264170/3043119231
+qdivz:-7851824870/97663123831315122169,4309784371,3802633873/30968200362702972301:-7851824870/420907004711239553899911820699
+qdivz:-6597972451/80277297254646055387,-4726423861,614506788/44782747244718572081:6597972451/379424533240948909290644389207
+qdivz:-631085275/2899211669922691298,6256200760,1109385858/1477376676238012019:-126217055/3627610050554242087958597296
+qdivz:8122235215/7961846503387897018,-3385709171,170279399/599714842989628708:-8122235215/26956496724614685504246152078
+qdivz:8261293608/498905904925989803,9279441956,-5669550521/863022032183383926:2065323402/1157392096566594213196593667
+qdivz:4361752127/48434501579131773,4643568393,2837826733/313554877060481877:4361752127/224908920663564889484850789
+qdivz:1238532920/10342162106427481,4398535564,97283990/2793043923274571:309633230/11372591958443607041358571
+qdivz:1061671387/8926232998705307,-2409354436,=1:-1061671387/21506459072200213677191852
+qdivz:-478800359/400345400504704,4108770541,=1:-478800359/1644927387818574327124864
+qdivz:2240956275/37562621401834,-2396455893,4846367786/7863206958381267:-746985425/30005721804984336769254
+qdivz:-259707383/982049805001181,4636408668,6879601421/49291522336164:-259707383/4553184228315185338636908
+qdivz:5932730501/332075016507041,-3894649593,2459475717/779834134547543:-5932730501/1293315827884615512284313
+qdivz:-2057182763/13014783789192,8587041446,-4768423874/14397276670449:-2057182763/111758487808520630851632
+qdivz:544766933/18794715195475,3843484670,1238159/14363532070842:544766933/72237199730824215868250
+qdivz:8675465767/2586185536443,5059401119,646332059/108654428878:8675465767/13084549997021329479717
+qdivz:3854967983/5468883986994,6390198126,-6884594048/8486977568151:3854967983/34947252205000467173244
+qdivz:541574464/220372973361,2389280993,-4542506150/573414247061:541574464/526532956622332627473
+qdivz:144295607/6358031172,-2226616241,1616092046/415267417411:-144295607/14156895468359464452
+qdivz:1715167848/17579438791,7716353084,2811755179/17556657680:428791962/33912289182480520361
+qdivz:-1808697444/20783950595,5667762702,=1:-301449574/19633083330425284615
+qdivz:5251262150/9823505053,218984165,-2695819927/4710996795:1050252430/430238410280897149
+qdivz:122042670/3353616721,1385474924,1555979149/4749223195:61021335/2323175935826302102
+qdivz:2041370077/380755116,8288872003,=1:2041370077/3156030421011417348
+qdivz:3260509647/206408810,9791591411,=1:3260509647/2021070731150730910
+qdivz:7724750931/66875293,8447158841,-620411053/9335500:7724750931/564906222509415413
+qdivz:706240133/12748079,-3365211444,-4450693274/12511769:-706240133/42899981339816076
+qdivz:-4328713944/3919369,-1733697840,45793219/349446:3403077/5341982365930
+qdivz:818576409/220484,9554360290,204076967/1272406:818576409/2106583574180360
+qdivz:2094971528/577573,5542056593,1522762903/828023:2094971528/3200942252588789
+qdivz:299769258/28325,3451090138,379284289/47694:149884629/48876064079425
+qdivz:2123785501/46271,2031913159,7477551790/28249:2123785501/94018653780089
+qdivz:6633067290/30347,4413188467,5089795320/58789:6633067290/133927030408049
+qdivz:-7112896220/5109,-9041858703,430997275/23:7112896220/46194856113627
+qdivz:563583963/22,342636729,1107784533/167:1479223/19784798
+qdivz:1874300309/184,5945511402,1330452647/672:1874300309/1093974097968
+qdivz:6102614776/341,4776190614,2538216797/925:3051307388/814340499687
+qdivz:283161881/17,-4413775423,9396385745/58:-283161881/75034182191
+qdivz:7062815342/5,5942475325,289745847/4:7062815342/29712376625
+qdivz:5072516583/5,3510162870,318579195:1690838861/5850271450
+qdivz:2105745668,3143294016,1921002976:526436417/785823504
+qdivz:-1047110342/1520484401571884685,33570074404,-12800824587/53544087850846460:-523555171/25521387245444791714979051370
+qdivz:29090953702/20807090234619537879,26907026532,343923157/1724556694370271427:14545476851/279928464498313005317916002814
+qdivz:20274428231/782012114750379463,-88508960784,2548101185/1234460670163112687:-20274428231/69215079597054243839785978992
+qdivz:364228775/25798969587651672,93590422630,4800580791/290037163980705493:72845755/482907293425367362341227472
+qdivz:30300488563/217177830796613151,808037800,26450907691/304742055273554844:30300488563/175487896605667537985107800
+qdivz:84660469437/541808431985810570,-91050654470,6869670021/226059831962560205:-84660469437/49332012329672534151943747900
+qdivz:13781377279/60189448291173846,-36341022321,81142451811/20267863492743986:-13781377279/2187346083838224044777416566
+qdivz:20924076749/75205484440042707,-68511555523,28223428025/76572972653264741:-20924076749/5152444722848098485121720761
+qdivz:46695010459/6765513820287504,19044605306,=1:46695010459/128846540399663729123896224
+qdivz:-66175030565/5858633997091474,93479386801,-6761739565/4747871813360411:-66175030565/547661513539602607025234674
+qdivz:29131927391/449117587317440,27430643163,35826296405/904412982359957:4161703913/1759940610847455863808960
+qdivz:12733873489/203020759589798,68338967211,-7646512609/133308860316557:12733873489/13874229032759519332113378
+qdivz:-645828418/378314206231,91802202116,11814523540/19896454006763:-322914209/17365038611886184292398
+qdivz:55466225485/59966137745571,70085230918,-14564033191/25111688968965:55466225485/4202740611158939466764178
+qdivz:-14856273101/1292859110750,39649293376,=1:-14856273101/51260950175961225392000
+qdivz:54049381867/5879084180264,10563421937,-8536204093/2085088741998:54049381867/62103246799270400051368
+qdivz:10813111460/44728598989,94458376818,34307963680/466563642229:5406555730/2112495428922087918501
+qdivz:93261299995/267442344697,9903554506,31033940419/872316913124:93261299995/2648629837919179554682
+qdivz:12549853509/27452668204,73694908624,84554555332/43906568651:12549853509/2023121874778770191296
+qdivz:8281869761/28644261980,6672638864,60920170655/80750564561:8281869761/191132815718345590720
+qdivz:43507585065/1174891541,-53678216040,32027177949/130065692:-2900505671/4204405464091101176
+qdivz:25929389985/1191490339,67589366380,-51298542/1154628703:5185877997/16106415412180280564
+qdivz:78073658759/979680027,6317031065,86759420379/440052299:78073658759/6188669164319038755
+qdivz:-1688695990/26584499,18370342534,=1:-844347995/244183176362390233
+qdivz:1093701401/17134573,60199324609,4846366/2474809:1093701401/1031489722063606957
+qdivz:-49418541321/28244834,85425839011,83976874051/40710896:-49418541321/2412838642176419174
+qdivz:79131936038/3214193,-5558256386,-26510849221/5257598:-39565968019/8932654384043249
+qdivz:-44020502387/1517047,10832005700,-20237312053/142503:-44020502387/16432661751167900
+qdivz:99090532609/635608,91162874201,92103313957/556384:99090532609/57943852145149208
+qdivz:-10413698662/166089,-12227395873,-37758281071/634722:10413698662/2030835953150697
+qdivz:2134574971/96453,42160589664,-2962999062/10723:2134574971/4066515354861792
+qdivz:37471609877/76548,-10791609390,96390037129/790:-37471609877/826076115585720
+qdivz:34436605878/9079,25235264504,-5473970461/203:17218302939/114555483215908
+qdivz:-14044198283/2389,54080143852,-29150502929/8884:-14044198283/129197463662428
+qdivz:-32522069000/223,48339047086,=1:-16261034500/5389803750089
+qdivz:-47657246803/22,33211359811,15968947072/113:-47657246803/730649915842
+qdivz:40172527838/11,-82213794272,61587574503/76:-20086263919/452175868496
+qdivz:27802957568/21,79643351356,9332219979/56:6950739392/418127594619
+qdivz:10869296351/9,8043862316,13139931706:10869296351/72394760844
+qdivz:6168104465/3,-35878945212,9249477620:-6168104465/107636835636
+qdivz:855395000587/50302555595400936176,-739889806971,934181630371/48600397687605686625:-855395000587/37218348149629194642613330882896
+qdivz:484488645113/10462406400933872953,705670704066,-83884715081/4591650339979326617:484488645113/7383013691171631206651704526898
+qdivz:-60021930656/539548570059923399,866917492648,964805949204/3786090076085699239:-7502741332/58468011689770319521503208819
+qdivz:-323220399515/1857859825012903162,-788928410025,301006918611/23405385204846061:64644079903/293143679559350883341190999810
+qdivz:392310421262/286746574017601209,468810964000,-451125775206/166219155256444865:196155210631/67214968894444487879427738000
+qdivz:36808331478/114061000248894023,792934455019,322932243230/14273224315648399:36808331478/90442897071278805484991451437
+qdivz:-854660221869/89384740128760649,-840396118326,47272992199/15238716217232049:284886740623/25039529547262898284245517858
+qdivz:364501470786/21056530096076939,437727978403,-169280538543/19694582326526369:364501470786/9217032351137685869618348417
+qdivz:71356988859/8140449733588631,579541019218,69993159032/6814665237998029:71356988859/4717724535496851778477310558
+qdivz:-237216301461/7153189855202122,-161521837361,-24951260167/8892014308929978:237216301461/1155396368404312289466080042
+qdivz:431477529919/178167681211025,-114268327380,=1:-431477529919/20358922925156879565364500
+qdivz:136650073403/64126482201233,196314646772,114459442486/14287429741873:136650073403/12588967702066001417869876
+qdivz:254431970614/7700634905305,510462127446,-344404274238/84068115219161:127215985307/1965441238223458525750515
+qdivz:557911675619/47397240043195,418224715021,-700096857791/79702988081428:557911675619/19822697209847158605332095
+qdivz:509038039199/6767048040929,-112750471412,-57732832309/349479521105:-509038039199/762987856682395820421748
+qdivz:314926419471/416369156102,370112646694,101848419292/3456057303355:314926419471/154103490366658460226788
+qdivz:669453679465/415999590924,504198456391,-678536387896/77061621151:669453679465/209746351603168253395284
+qdivz:996528817883/413322921728,812027139903,=1:996528817883/335629429987139374512384
+qdivz:492391623289/48007797318,7318358317,3301219779/801312566:492391623289/351338262783035593806
+qdivz:477172365974/23061409419,-801074911982,627397031659/99184274295:-238586182987/9236958260253145379229
+qdivz:156485412607/5990175067,451647154411,916340057749/8763032403:156485412607/2705445523434271270537
+qdivz:-4814205663/243854698,67090415688,2686305709/2020120843:-1604735221/5453437685430567408
+qdivz:-549975755753/904821260,98226499545,752428923516/928266565:-549975755753/88877425083696326700
+qdivz:-309048114689/24846497,-1027875635,-731863243448/852411331:309048114689/25539108881400595
+qdivz:735435298793/17969395,-793419545872,=1:-735435298793/14257269220494587440
+qdivz:112260296237/20255278,879986635350,=1:112260296237/17824373935298877300
+qdivz:849848647754/9226151,940056683244,3943593549/6913084:424924323877/4336552454084156922
+qdivz:156304200464/4695153,280896701707,=1:156304200464/1318852991709726171
+qdivz:12581766711/139577,982981763154,=1:1397974079/15244627283971762
+qdivz:863623603829/424182,672081287592,=1:863623603829/285084784733349744
+qdivz:190774034338/47111,-939969971749,-882099739304/68161:-190774034338/44282925339067139
+qdivz:-293504193833/44336,348399896607,119682154283/44562:-293504193833/15446657815967952
+qdivz:608003901167/1524,473035881782,-7627832953/121:608003901167/720906683835768
+qdivz:66826129837/54,-738128447998,=1:-66826129837/39858936191892
+qdivz:221009262571/863,-39203245082,38984729793/29:-221009262571/33832400505766
+qdivz:828342264708/529,709893608236,400041569779/479:207085566177/93883429689211
+qdivz:221541593/3,-88280231556,238738747697/64:-221541593/264840694668
+qdivz:11413495397/83,431669407366,283046372607/77:11413495397/35828560811378
+qdivz:148010319127/2,283123647274,766433621663/4:148010319127/566247294548
+qdivz:-219763168201/9,403340924550,-394706926259/3:-219763168201/3630068320950
+qdivz:377661739960/407441308456322857,3965410406437,409422859704/8533399553263788433:377661739960/1615672004565010305438863030509
+qdivz:-1577626903713/27731663323669186172,649610924029,=1:-1577626903713/18014791436549869335907349326988
+qdivz:-1441250962158/8452258866175538849,-2826627450251,8230910671546/264485663157889397:1441250962158/23891386927759171604534865301099
+qdivz:7298594401893/3589655286076871768,1676532872705,4840525305175/826954630150879953:7298594401893/6018175088787146414664952292440
+qdivz:9145310463313/352206858008877943,-9694904568093,-4656627107317/287736322428206292:-9145310463313/3414611876623953391939969272699
+qdivz:3287696310569/218686848623222483,7362954795926,-3636594668023/794551016990788636:3287696310569/1610181380876299151381760004258
+qdivz:599942736859/30109315615210643,190070517001,-686708523847/586022538036179:599942736859/5722893185529369294527641643
+qdivz:6159561616093/1221874427807450,3318286558379,=1:6159561616093/4054529489820493155396123550
+qdivz:-7739149193382/3880813118083787,6945256949005,4243108324360/3938879550941241:-7739149193382/26953244276161183291576281935
+qdivz:1077598865290/1420892515750957,-8741057903714,-2560579494365/3856299969810329:-538799432645/6210051877566485960454677149
+qdivz:9251474975963/380092713862583,-3533706170376,4397319568897/444497940948049:-9251474975963/1343135968291168939649441208
+qdivz:5170689991479/478812422664503,7425515194305,=1:1723563330493/1185142973239084926623751805
+qdivz:7874754009227/86289133604325,567464832332,=1:7874754009227/48966048732851832955035900
+qdivz:82573188125/1723837997186,4858404577211,905066106196/67917513655023:82573188125/8375102415898705337728246
+qdivz:-9462453261891/6333904291327,8882376900652,-1608766513594/2059986591551:-9462453261891/56260125168223520744245204
+qdivz:-8513062446331/9309761450169,55542992537,551347179830/367528742439:-8513062446331/517092010747987064388753
+qdivz:-2148550912058/152802731413,9178119603028,=1:-1074275456029/701220872288938832759282
+qdivz:9881319422543/919461731150,9752261044456,2668885280159/266136830885:9881319422543/8966830822562220870004400
+qdivz:174799529246/781938781,8700555467056,=1:87399764623/3401650867966327149368
+qdivz:-5466205515503/29452452729,-4883930408328,8925441835689/10852340635:5466205515503/143843729483006087927112
+qdivz:996316459693/238035368,996971641405,=1:996316459693/237314511547403212040
+qdivz:1902828237558/232472863,3969221099083,431690216313/4984136728:1902828237558/922736192783831684629
+qdivz:-700150402156/107303867,8389748159752,-2823896211587/556014406:-175037600539/225063105174380840246
+qdivz:3646364186929/738179758,4245401666232,6967936345729/416110377:3646364186929/3133869574591934531856
+qdivz:9885648196055/10155847,7815948425404,9809097272675/14454357:9885648196055/79377576368293937188
+qdivz:1619034630643/74258174,9375949496558,-4811471214059/75060117:1619034630643/696240889130616365092
+qdivz:1807183853299/633460,119735977641,=1:1807183853299/75847952396467860
+qdivz:-57391852197/471910,6490287173297,3578414422277/7633819:-57391852197/3062831419950587270
+qdivz:-8336245595520/207563,8055731289499,3690368841008/41405:-8336245595520/1672071753642280937
+qdivz:-8756280094194/474401,2163225064362,2304316378414/178391:-1459380015699/171039355626399527
+qdivz:-6768110876428/4537,3853268548159,7478518386005/7254:-6768110876428/17482279402997383
+qdivz:7491881449711/45820,9360962689034,=1:7491881449711/428919310411537880
+qdivz:4479515335651/4767,6272480778873,-2550653613043/2315:4479515335651/29900915872887591
+qdivz:7706167334141/6871,-8364277232473,-1312275143305/3942:-7706167334141/57470948864321983
+qdivz:-2426531262302/211,-896936798776,=1:1213265631151/94626832270868
+qdivz:-2687168859651/241,421602999976,4265602937489/57:-2687168859651/101606322994216
+qdivz:4672875535991/32,303500575463,7776212095088/97:4672875535991/9712018414816
+qdivz:712016736313/97,-6773597996516,5238170108147/45:-712016736313/657039005662052
+qdivz:547412039147/8,6440922645756,=1:547412039147/51527381166048
+qdivz:-1428482346861/7,-8578332426693,-208991442483:476160782287/20016108995617
+qdivz:25213882136563/37677676095840232484,64266404189577,-44312529469891/58632890416616303769:25213882136563/2421408760899231901491771289619268
+qdivz:-45348211232/48259765821376689,-86097912542683,25703493789011/20122118862740312269:45348211232/4155065097019252383615533716587
+qdivz:-7699657076461/331713197807190681,69957368331562,36084589185595/8895782428451727263:-7699657076461/23205782359437922808235364573722
+qdivz:4499486281079/570447738950937327,6819787346072,41829452180703/8951562452396016457:4499486281079/3890332271692985934718131629544
+qdivz:9448778776929/55266922938454378,-40211563540804,22791382037077/589181316944364437:-9448778776929/2222369383444376336380695439912
+qdivz:-80693445937604/625638820483329699,65119781059396,28243613851117/411802455862213751:-20173361484401/10185365753033296882775942450451
+qdivz:7104789360034/25829280707927279,61192880702082,50820501919963/43237529502234417:3552394680017/790284046490391045278259947439
+qdivz:8521395225131/866934246203151,-82917276854296,50387683303757/41145275653408716:-8521395225131/71883826906897082331043086696
+qdivz:3654753854813/686472765655654,-56741825130219,4118082438861/3391784320237708:-3654753854813/38951717625490926599463608226
+qdivz:-53486312991974/1510968952191653,-40818569959148,56568646790883/6563654620617722:26743156495987/30837795940567768880638295822
+qdivz:77025810489670/955683320748827,16606084180096,99547352892542/681947908769761:38512905244835/7935078836934353698524373696
+qdivz:74081757285323/779580189169978,71513450124198,62733533615096/994702038569703:74081757285323/55750468976020063538632927644
+qdivz:-90918473901171/23110032090851,57668788153374,33840460487482/35925709609791:-30306157967057/444242514954987040163393758
+qdivz:-12377636482606/6273569332391,52950805470840,6788467435942/28776860168659:-6188818241303/166095274663631704608989220
+qdivz:93826301723233/2510365316368,8687161712184,40792305870208/5978756664845:93826301723233/21807949459946763720227712
+qdivz:754174119367/993972659135,93465132406737,=1:754174119367/92901786194729238278592495
+qdivz:3107915597273/143157120432,-70507843259804,755175597775/219130414:-3107915597273/10093699808944340692715328
+qdivz:44648757800580/573796175549,60618257654342,5117941512382/33291591973:22324378900290/17391262205252667597041879
+qdivz:-66400850026133/11907331494,74065123644406,=1:-66400850026133/881917979378039620722564
+qdivz:62277709926279/87663640784,32094657146865,=1:20759236642093/937844831736137230580720
+qdivz:26142101996176/1749516045,84074622586348,20940287104039/705860031:6535525499044/36772475298033805988415
+qdivz:59312790288505/3662730144,48869114267557,77585738312243/4878987018:59312790288505/178994377938361505138208
+qdivz:73640138898581/622848187,-19896806552263,18788319190513/316012039:-73640138898581/12392689888166730297181
+qdivz:19740823110531/278732932,24473700094823,58579762311988/962128055:19740823110531/6821626184318692811036
+qdivz:-7512635132051/87400601,56390496123957,=1:-7512635132051/4928563251922012298157
+qdivz:-59462887076699/29087597,-98512108079751,-53172761880889/67978482:59462887076699/2865480499444240948347
+qdivz:17522488582105/961216,-76067863891111,-3856252477211/1860688:-17522488582105/73117647857958150976
+qdivz:36565698728205/302902,21351159032601,-36216528579083/54119:12188566242735/2155769591097636034
+qdivz:54644193228042/614773,89311395526262,63456896848754/648461:27322096614021/27453117280933334263
+qdivz:19396300373560/247,-57733371755730,-58481097237257/238727:-176330003396/129637662033321
+qdivz:26129074926522/54241,-57172817810638,=1:-13064537463261/1550555405433407879
+qdivz:-47857708640267/48873,-84095778752769,-78411459424021/96980:47857708640267/4110012994984079337
+qdivz:24471666012555/2128,10834057048867,19163873777357/2355:24471666012555/23054873399988976
+qdivz:63633303713482/2687,29541404498726,953013369111/994:31816651856741/39688876944038381
+qdivz:4028083282444/441,96229912034129,36156251433089/641:4028083282444/42437391207050889
+qdivz:5620157071221/38,1464098099632,45826452102283/555:802879581603/7947961112288
+qdivz:44121126176093/28,49295425845300,-98014359584905/87:44121126176093/1380271923668400
+qdivz:2550244740088/11,7860358429697,32007329912968/13:2550244740088/86463942726667
+qdivz:10610786242282/3,-19942871503520,30442870787715:-5305393121141/29914307255280
+qdivz:-10891422163510/3,65100387657340,=1:-155591745193/2790016613886
+qdivz:28206974750888/38115226610958658587,-233840177846781,184067617831263/10199552995144872193:-28206974750888/8912871369376932568520833775958447
+qdivz:239195932154190/21076639992981349247,-514159353179396,914824331702763/33476179921636595855:-119597966077095/5418375792993139989042719660257406
+qdivz:-66879959134324/1938245828723753153,209078692564075,380314134341760/3263898700497131471:-66879959134324/405245903737334354397466935778475
+qdivz:71631704547265/1127077312973478953,-677425993025946,-808670179854036/6156571467702669689:-71631704547265/763511467958073910363035213914538
+qdivz:369630784942559/118575247636594640,613604398763706,556292057837293/356846295264834699:52804397848937/10394041933472886416968552305120
+qdivz:-86151087673799/115845793068186375,862616462453012,956063729712120/826089658093596013:-86151087673799/99930488206542589968510496111500
+qdivz:305051097653790/20518755287717797,895836082087101,-207160117973632/3362842864667699:101683699217930/6127147115417699363488953945499
+qdivz:-963596685314854/20268707545342331,-188056921260034,-12535707088197/650540922052135:481798342657427/1905835369448549878334199349627
+qdivz:-361781987716599/9794167747947700,61965144850569,=1:-120593995905533/202299007730783467390975747100
+qdivz:189992621219183/1819811590183344,793680743322061,618571148115319/5988770433957028:189992621219183/1444349415602818312690629951984
+qdivz:856347688913222/833832195611433,218162022813457,-653168377938073/524530934347885:856347688913222/181910518481576385943015453881
+qdivz:49096910346166/27167376161979,245243955457352,15314702197043/62138236025303:24548455173083/3331317394680752204689209804
+qdivz:-18418259567905/83404618779589,692976050847437,=1:-18418259567905/57797403344315565768168563393
+qdivz:-505057419418589/56875557275862,337407904218594,63663406245825/3267267474824:-505057419418589/19190262581713202780407778028
+qdivz:107117033307349/8727332158297,-351480699835352,-603596441776797/4327920729574:-107117033307349/3067488814693802582700715544
+qdivz:929542050791479/3668117137877,663512077337021,67789990327315/790180646928:929542050791479/2433840022068296146453444417
+qdivz:198372512149532/147050745673,-256607148991758,-639475502955856/973546370361:-99186256074766/18867136302130312015581567
+qdivz:-186632417034836/209907050713,808174748926739,886289373295672/873782379281:-186632417034836/169641578007931045594714907
+qdivz:-433532847360621/40950919442,-576406278836993,=1:433532847360621/23604367090516689792517906
+qdivz:426046356532532/90956948929,290346527980677,-331137473378042/8913098829:426046356532532/26409034317250907387844933
+qdivz:98321029610961/463670608,840238741926244,-202415965355421/170277763:98321029610961/389594008334096646636352
+qdivz:-8445364920981/3222384187,208373591158613,326878150369073/994641488:-8445364920981/671459765137917540052631
+qdivz:-12366828657410/23205153,25335150548712,=1:-6183414328705/293953022380447956468
+qdivz:182273448529439/333188695,-870663173311865,-167558565067223/158996098:-182273448529439/290095126500339127366175
+qdivz:-841149634523738/46300587,-648674774105803,-8859347501816/2523457:841149634523738/30034022813191079006361
+qdivz:-556504745441829/86432147,-538986011588748,=1:185501581813943/15528572728194123560652
+qdivz:302832240895229/9849955,168669637931783,925930262366551/701582:302832240895229/1661388343494355619765
+qdivz:27790516823081/1265414,-488301813246538,-597901356054121/7828129:-27790516823081/617903950707554636732
+qdivz:-155301832641753/1177,299291205321873,288662739041159/190030:-17255759182417/39140638740427169
+qdivz:372814194432298/771897,-14946141179470,-1945868184959/21200:-186407097216149/5768440769004677295
+qdivz:24153012223489/97155,-97727981983126,=1:-24153012223489/9494762089570606530
+qdivz:488549717772225/7997,385195948307290,57330617868723/9730:97709943554445/616082399722679626
+qdivz:-511124198199268/703,508244053643154,-24599890934580/757:-255562099099634/178647784855568631
+qdivz:-571545380467859/5484,706501320657340,-7318997946516/1867:-571545380467859/3874453242484852560
+qdivz:-284559894164173/378,663811328424393,203252169231125/424:-284559894164173/250920682144420554
+qdivz:-109817805722539/89,-620669084280112,39821179505019/355:109817805722539/55239548500929968
+qdivz:11285503834151/3,347837157467787,135711185047364/3:11285503834151/1043511472403361
+qdivz:483084770349435/13,381226764584849,-76288343397587/2:483084770349435/4955947939603037
+qdivz:465649032901606,218384912976294,72781764311433:232824516450803/109192456488147
+qdivz:2587491587702,-476034210750545,547126738337031:-2587491587702/476034210750545
+qdivz:-8100465584109756/15951781239270673877,4434864932667510,-2144439357097081/43731124302263504971:-122734327031966/1071878715630681611032444680055095
+qdivz:2420885235857233/35605779901295929638,9928092538101335,169386594008780/70879024157212713427:2420885235857233/353497477751334607275098664273866730
+qdivz:-4826446325397187/4335807137383577415,623898962956291,3104677505409659/2952033752437342756:-4826446325397187/2705105576592098688280821859767765
+qdivz:3460717723437681/6443180553972666128,8557703279186741,4156537546937142/3658329170710024787:3460717723437681/55138827355124127379787243357408848
+qdivz:6418458390147775/525897417578055896,8516136495382838,=1:6418458390147775/4478614190664069842626272283112848
+qdivz:4636780176511991/360039743434849768,-1921496410524246,1079563866860541/62772477295468231:-4636780176511991/691815074656134293438079131474928
+qdivz:-1880397818415029/25639914407226400,-6097850633731512,4908502670581090/24912440236773367:1880397818415029/156348368316927228082170198316800
+qdivz:9061727133564523/34045084539204615,5247972528183639,6748794006344619/18625898906279159:9061727133564523/178667668381435363770511716293985
+qdivz:2823293208362365/2802436154127691,4344250613703671,=1:2823293208362365/12174484982434577158035769453661
+qdivz:-226020206421378/2415797606868827,-3145163610465586,3727841238983986/2416072176043039:113010103210689/3799039361686841134188549843811
+qdivz:7567999278230394/732026114358407,-3551640041571087,-7309583636430426/277839170663653:-2522666426076798/866631086410337974581762192803
+qdivz:5055638466899535/704743836609472,2779539095014541,4752310879883735/726255451787449:5055638466899535/1958863045826567351435978332352
+qdivz:9361673562558585/20268733803869,7535815261448418,-312199448698385/81273711157128:3120557854186195/50913811176477152039890776414
+qdivz:213432378367195/87716207315137,-9593838267023732,-844717112346841/14374978538996:-213432378367195/841535106378148359979581831284
+qdivz:1415632181545693/2202115097784,3788146011770250,=1:1415632181545693/8341933525129513693692126000
+qdivz:497714829654563/1407922386147,-4578675319921841,-2297925204832173/1152646493548:-497714829654563/6446419481816736986261136627
+qdivz:7238175376569958/872602199065,-1798229516982452,1067716420123708/311724963591:-3619087688284979/784569515471240189107903690
+qdivz:738345515106893/400467504556,-8952340232264677,-3533763215436655/727067491856:-738345515106893/3585121352751316634695368412
+qdivz:4439193856281818/48510248187,-5941306515090639,9229814236640615/58818462063:-4439193856281818/288214253602086958690421493
+qdivz:1236698199957439/43126617136,4908265726375467,-9469441985248292/19058730389:1236698199957439/211676896783145702292202512
+qdivz:-311681312393881/449133469,8687512018285914,-729773020888143/39573781:-311681312393881/3901852409751943988655666
+qdivz:-6619381459773073/8173378245,7168326441455265,579725052503743/3234923130:-6619381459773073/58589443389648729091709925
+qdivz:-81712138569107/178893283,-9704334752710585,-7534731886719068/64598471:749652647423/15926975259113666967895
+qdivz:-2039906652413491/230491475,2966890829958620,38485631968165/38014698:-2039906652413491/683843043561136512764500
+qdivz:1307529988460267/97135692,-255437889763972,9189367430908049/30495394:-1307529988460267/24812136185243136888624
+qdivz:-2353939854827795/25170878,-7155659041948110,478284130849579/21650202:470787970965559/36022844150894551828116
+qdivz:5285315302178007/3864043,6787737381344610,-6416436174036663/5502097:1761771767392669/8742703038074323619410
+qdivz:-1620957348585296/705477,-6328720613670438,-397716845432416/1806409:810478674292648/2232383416185189794463
+qdivz:244904073732822/142115,9255574655214839,-3718997235951973/328812:34986296247546/187907998875122406355
+qdivz:6808168673302291/647890,7830240386186476,203370328672627/153273:6808168673302291/5073134443806355935640
+qdivz:672164644892723/10287,-2016544002156618,820674735348423/173:-672164644892723/20744188150185129366
+qdivz:-4941575984804663/35536,5225959626506022,-1182801330040787/90307:-4941575984804663/185709701287517997792
+qdivz:2600309343681884/9179,3312191343161384,=1:650077335920471/7600651084719585934
+qdivz:5790050438041746/2783,6180418749108229,-3626128271180059/2055:5790050438041746/17200105378768201307
+qdivz:107486754622047/8,8496429460563751,7528748815319577/995:107486754622047/67971435684510008
+qdivz:257452794220597/45,9163478257322473,=1:257452794220597/412356521579511285
+qdivz:4203249688209209/58,2060439753326067,626942582428365/16:4203249688209209/119505505692911886
+qdivz:543611975572423/6,1815241525016751,1962341163379185/19:543611975572423/10891449150100506
+qdivz:-7648363691373965/3,4559746429342130,=1:-1529672738274793/2735847857605278
+qdivz:-918087881293513,5561326460996979,=1:-918087881293513/5561326460996979
+qdivz:51876939499714691/40566929845814543304,-89899615206821411,90157161726220241/15742168992505626198:-51876939499714691/3646951383260846475079804250453881944
+qdivz:-92711941104471994/57341166703993040251,88283676761336977,-83588601643014818/86753416972940797783:-2261266856206634/123470464058859999703545311456967347
+qdivz:79135269280147891/2531825814704286331,70208234934351669,3930634830491194/3988582117396219449:79135269280147891/177755021611614851116084128823736439
+qdivz:29633672003664449/2815846487521571106,99099377722862940,5605342417119218/208728995495935907:29633672003664449/279048634676497041224317165102211640
+qdivz:2100328802578405/93877410719555637,81107589989236009,=1:2100328802578405/7614170537892827983896229599332733
+qdivz:8852742285354040/39609437377376719,94466432126141813,-67648481041296353/37350723131289264:8852742285354040/3741762227564622406488872518651547
+qdivz:20443075139781274/87402553055221425,-87873934817191987,=1:-20443075139781274/7680406250030691855905267020721475
+qdivz:1452523479130/11854581599599,-35488163365355406,78636907153845391/29302687132551467:-726261739565/210348664217252759959311041097
+qdivz:92799074911223618/6644370845911803,-52469970294585343,-45890868424331740/1359965199072733:-92799074911223618/348629940911201190718038634503429
+qdivz:34907583570918158/2475636741287023,94165624835942786,=1:17453791785459079/116559940305054879266393616133039
+qdivz:15873033385646407/99383771605820,73196542989966161,3460464368471384/198333558453857:15873033385646407/7274548510850381916754430657020
+qdivz:1205053067450735/262488203376077,30733894353467375,53421057721886303/633789433238185:241010613490147/1613456942318361773929214997575
+qdivz:-373343591218193/282481077944,73439972957893897,12246923120614379/86081958852861:-373343591218193/20745402725324078148538907768
+qdivz:98454579819453042/381442416277,-37303102933686841,85678232948136701/93297430238089:-98454579819453042/14228985717655155931079110957
+qdivz:28585002988764732/467382454421,-37834555341081422,-25757017600863353/6081527848100:-14292501494382366/8841603668620894913382433331
+qdivz:-45530451111310855/1372526430242,-40793761192434411,=1:45530451111310855/55990515425596635347551857462
+qdivz:23497143673035545/674205230796,-82036200658508885,23227625077965886/378696171279:-4699428734607109/11061847119719389998528324492
+qdivz:-5439825078047807/781667528452,-36280770053733421,62043822362915397/125125654100:5439825078047807/28359499858237138428340794292
+qdivz:52872401646278523/59676713378,67021996329285655,=1:52872401646278523/3999652464964148140921992590
+qdivz:27899585299889689/9025464642,20767876354773754,31681740022949549/49333571558:27899585299889689/187439733729438364636606068
+qdivz:1612507427821399/412205953,7689706161876916,60532795827702091/8889697996:1612507427821399/3169742656746446428480948
+qdivz:-2370552431010137/60156297,-51229313115187306,69322269011837461/8761285893:215504766455467/280160524987563890033262
+qdivz:-72331493811733128/886163875,-64577202816965274,7822570842692148/107135921:12055248968622188/9537664047490477158046125
+qdivz:4366277947142681/145491389,-13081234312671287,-56811447013180333/377612058:-4366277947142681/1903206949985005846047643
+qdivz:8486006017858987/9980479,-24529516802858110,=1:-8486006017858987/244816327331072506834690
+qdivz:28765525203974723/18854856,63876884071748580,=1:28765525203974723/1204389450901513144104480
+qdivz:50689647321811649/4174791,-88774599859715468,38991799931837226/1986029:-50689647321811649/370615400522941398367188
+qdivz:4028476261308141/506452,20953755384460338,-14414987917829359/8085713:1342825420436047/3537357107323569033592
+qdivz:-15211724165753775/479404,50635361545852096,=1:-15211724165753775/24274794866527678230784
+qdivz:94548235714131649/113748,19684972847420899,15048888921861289/28846:94548235714131649/2239126291448432419452
+qdivz:43163174224614713/12275,-67469365909284359,8363004649561645/2984:-43163174224614713/828186466536465506725
+qdivz:487376363804060/24673,74326537358419014,=1:243688181902030/916929328122136166211
+qdivz:23590462962759737/3701,35930020296127129,-81369453202826375/8982:23590462962759737/132977005115966504429
+qdivz:1287959610890411/751,-2752233067297776,=1:-1287959610890411/2066927033540629776
+qdivz:47419841749950097/739,17294603489855144,13019548234372720/81:47419841749950097/12780711979002951416
+qdivz:41222280346047241/236,-20868388796109651,-65701770111449667/440:-41222280346047241/4924939755881877636
+qdivz:1277752625943784,37792680427691834,-6412847033615904/47:638876312971892/18896340213845917
+qdivz:67522291597229246/85,21305635915392026,=1:33761145798614623/905489526404161105
+qdivz:4778080537828640,39298543484658950,5712499781249450:477808053782864/3929854348465895
+qdivz:5230198800503153/5,64523362154424947,-8862961476704027/2:5230198800503153/322616810772124735
+qdivz:892228662088796613/55871131066606758934,-874654732190677980,-36329885559726251/4321287510517614884:-297409554029598871/16289316393417734432300732645294024440
+qdivz:19014600443315842/3635806154264505107,541063770937137802,551834048493969267/73475868368583023383:9507300221657921/983601494111403049141592316295877407
+qdivz:960011603483042729/5573258293787849080,883388531252731256,=1:960011603483042729/4923352458441350993032321575526844480
+qdivz:-8376282180171729/7720902655804022308,-800983354073748858,=1:930698020019081/687146056191424567616374972113502696
+qdivz:116917619245235244/358157856258765917,570339576544638471,=1:38972539748411748/68090533358253348864814413793930969
+qdivz:320704389821337359/41927154801173284,-360426920157069569,-15910915765693733/13475685473321241:-320704389821337359/15111675275935579272421848412194596
+qdivz:-138439708845709407/32918991643825253,-940108679873295360,=1:46146569615236469/10315809925678866587700717698575360
+qdivz:970565625200394526/38338183236067883,631903906064227282,146768067456204299/9085366117028492:485282812600197263/12113023869138686327460801246292003
+qdivz:-237868081084134539/1372485474016210,-358431791982152326,-311316021142488176/2766391185298279:237868081084134539/491942427921103914038343213204460
+qdivz:332386869754970911/2877063091007380,502102596500253116,-436556878102354567/7463983139447194:332386869754970911/1444580848289849529363513423996080
+qdivz:106788340885301441/156094902691284,997093725815999582,150197112369503143/3864734454843:106788340885301441/155641248105338263941318419043288
+qdivz:17951502946479831/18686629102921,-914598187042218818,-383890255715028479/297113456238268:-17951502946479831/17090757099461910397356724967378
+qdivz:61985927342201863/6333741907873,555288860578968755,-665022931937982622/73070869666115:61985927342201863/3517056327224061861672555508115
+qdivz:985136746217353770/810626219569,-532891374649286107,90081452985518108/33151508539021:-985136746217353770/431975720472878440142083227883
+qdivz:143995044786248406/2685894875017,382397533219560186,365144521255985214/1875114894173:23999174131041401/171179929115593285232696545527
+qdivz:-668702556701908142/4219524530635,393298966987097359,-770735308573122464/4820919926275:-668702556701908142/1659534639075462343835523092965
+qdivz:148895105999031617/190301395132,758758290981884265,977117467972369255/294292572918:148895105999031617/144392761341824589767658397980
+qdivz:-159087329306615872/225087429725,785549672595251591,503557620532730284/373822340619:-159087329306615872/176817356725780450857906942475
+qdivz:-264022644302396773/2278029929,-94916617158321237,547322042930742335/21894307611:264022644302396773/216222894646090709282302173
+qdivz:93285450160979197/42311784283,977744763769178683,521203752538227113/68917709707:93285450160979197/41370125528434282439178039289
+qdivz:535979926641145527/7557767498,-195852721847511858,=1:-178659975547048509/493403111857986544187330428
+qdivz:497372041980721506/7001070781,652079344505507428,-957979276256614831/9655170879:248686020990360753/2282626822855570473874630634
+qdivz:-308477546715083617/648505124,-322354321277070579,43631988559711523/304411310:308477546715083617/209048429091722494191146796
+qdivz:229255530959827383/245022904,-929912624059332484,-557747976237829033/297792845:-229255530959827383/227849891613277913531213536
+qdivz:85541435254879863/96620519,-637208165779243712,-502341106189163895/82331053:-85541435254879863/61567383688628566880926528
+qdivz:-781828043684967758/50968901,-514071001383910979,-568353562372526923/25358389:781828043684967758/26201633976507421681464079
+qdivz:-13517195129753927/89604,354643244723994523,-137336510066384067/3891763:-13517195129753927/31777453300248805238892
+qdivz:-421164540114456588/3586045,-739455098265925151,509210588483978045/6456831:421164540114456588/2651719257861029558117795
+qdivz:-879920640850630235/133271,18621800712996172,-357671116753856630/910903:-879920640850630235/2481746002821712838612
+qdivz:322932399357668253/730313,627619261687036063,=1:322932399357668253/458358505860444368277719
+qdivz:-364883615147378315/33847,666046695114786100,13578684277466669/25549:-72976723029475663/4508736497910033025340
+qdivz:795558880287747297/61163,-462149548616214218,-286678576882420657/73369:-795558880287747297/28266452842013510215534
+qdivz:423565867626533294/3487,663348607243920780,-268080787907842069/600:16290994908712819/88965253594598144610
+qdivz:463684384112493971/66,9600800466060656,494151647146512593/1842:463684384112493971/633652830760003296
+qdivz:272532100018311708/11,236412793340595928,-232492590540804763/131:68133025004577927/650135181686638802
+qdivz:888837359363262418/647,288183337717513478,506854295189807838/361:444418679681631209/93227309751615610133
+qdivz:65038385358943464/19,219207500423093598,-571150506348571411/29:833825453319788/53396698821009979
+qdivz:122838851344159513/4,178669373587933922,=1:122838851344159513/714677494351735688
+qdivz:75127173364928321/3,-719408551485655001,184094967898684200:-75127173364928321/2158225654456965003
+qdivz:332631009005835885/4,255241857170957110,-440453245937965789/8:66526201801167177/204193485736765688
+qdivz:8651470154378974507/17855010711510236057,7926925697505572502,2359552014591739654/44197656807230847567:8651470154378974507/141535343238307746317424286970948104614
+qdivz:-9258523409855044611/72817011870762460894,-9836632014308325438,-2001929228208721648/26641513880861526269:3086174469951681537/238758050051403796832749165221700140524
+qdivz:2243990531384570717/4903143680262418520,513680509693509864,=1:2243990531384570717/2518649344777710905795876032116281280
+qdivz:3229047086296059355/1050027622905630278,8584437716830130217,-3362919728113850665/830531783816835201:3229047086296059355/9013896729784577725673410081197910326
+qdivz:1683852085488062225/4857420952010518,7164575837264288367,7898318645722989656/613199579838648691:1683852085488062225/34801360784195853683892011169044106
+qdivz:2826288843276183739/128602532883722306,3829393882550729957,127913369503544038/812393212269404395:2826288843276183739/492469752705455283388475363583320842
+qdivz:3267515387857773576/19788818533922063,7234907474289428118,8550140884041497495/89127291303108631:544585897976295596/23861711853071649439652573975461239
+qdivz:3591918287029728077/26158481474501713,-158972065062790868,=1:-3591918287029728077/4158467818908295918993227426756884
+qdivz:4798456495725994078/330079170984695,2736684033993685237,416706803708991651/565680585712340:4798456495725994078/903322397187686493123625174447715
+qdivz:7907479278535852409/2240934380307407,8862559007732946109,=1:7907479278535852409/19860413177931857471235489184529363
+qdivz:-333158333301384053/63917873172107,-6335880101587543826,=1:333158333301384053/404975980766949041296129503261382
+qdivz:2512095977043224818/186022607546865,3143294313990366846,1041287894968201417/730622989945241:1256047988521612409/292361902287861129299814743618895
+qdivz:1274272592636105089/26697305210030,-2195064786710266047,681737259161578753/53927973677595:-1274272592636105089/58602314566593376440660512851410
+qdivz:435567843178733800/7824464301393,-1530121566691353530,108560750121051577/2239246150016:-43556784317873380/1197238157536802415656503446729
+qdivz:8594280929749775777/7218293710841,3358259648255124921,-1654228833035760850/3200131211923:781298266340888707/2203718590761007005154646088051
+qdivz:2666142904810159355/7661408856438,74495464765250039,8914192677969935341/9257821421719:380877557830022765/81534316216707374773732128726
+qdivz:-2813129058989480351/107454595872,6627104473551194269,=1:-2813129058989480351/712112833006966892878357457568
+qdivz:7810650428805644969/454117323713,-4146816455262026097,6439502069195252290/747129258447:-7810650428805644969/1883141190592620687327602938161
+qdivz:2811634895903387877/51784821665,6857012694304662549,-988798368309320691/15871152061:937211631967795959/118363059843069370425989774695
+qdivz:844641921898571653/10223671754,8695453332203823704,-9669505387765352006/55085569839:844641921898571653/88899460620677410973380456816
+qdivz:1280215145483357467/3963886285,-9844640072994781020,-4883072007726792453/4475614424:-1280215145483357467/39023033766105411361756310700
+qdivz:8508531253450917863/5170848284,6541528151885306706,195667348757972251/193073972:8508531253450917863/33825249618913829545533792504
+qdivz:5090255825205050242/938312789,-2249350715632037117,5726029167151411771/608233380:-5090255825205050242/2110594543423842645003789313
+qdivz:6901648669928190531/404204557,388389149829747057,3901523146891681931/452461991:2300549556642730177/52329554750179844865579583
+qdivz:9627420596709784057/83296898,-3895759694963765953,5505547607500595567/18124602:-9627420596709784057/324504697943907926282913794
+qdivz:1174645111081751713/56929752,2346454010752872977,=1:1174645111081751713/133583044911566391868111704
+qdivz:1162048514429174393/676516,-5892528680047690487,-2798438907700034207/778641:-1162048514429174393/3986389932511143377503292
+qdivz:2802096388147231635/3081196,-8573957939952598135,970876650595882421/4869143:-560419277629446327/5283608981750037112633892
+qdivz:4679180719452784893/441080,304160869162181754,2151119934944642187/178355:1559726906484261631/44719758723351709351440
+qdivz:8915672976425207388/574061,4193291428000099624,=1:2228918244106301847/601801267612291297563266
+qdivz:233328281895908391/72184,4033877823255275355,=1:77776093965302797/97060478931286265408440
+qdivz:670971715759982761/58495,-1227774851840231708,-617885163678792671/7645:-670971715759982761/71818689958394353759460
+qdivz:1582888827826888415/526,-4801669718395979914,-8104940476272206965/8931:-1582888827826888415/2525678271876285434764
+qdivz:8026229622881496370/1921,-5372178278550968118,9440287299726019407/6073:-4013114811440748185/5159977236548204877339
+qdivz:5824855751154958045/228,-4324004042888845516,-2405077946267326653/169:-5824855751154958045/985872921778656777648
+qdivz:2255437467774544874/267,3199447325094606021,2771405119280841611/270:2255437467774544874/854252435800259807607
+qdivz:7543826031595607035/52,-9104546088044346141,-5010810875416710359/35:-7543826031595607035/473436396578305999332
+qdivz:7512950202725008087/52,-8401436384345753975,3578777756405806355/83:-7512950202725008087/436874691985979206700
+qdivz:-1398241246515482350/9,9068233703219211833,-2193751108198388733/4:-1398241246515482350/81614103328972906497
+qdivz:1221529554903080379/7,2438945293435843068,1698434551175058380:407176518301026793/5690872351350300492
+qdivz:35763638816437199755/2954907322691529008,18266557204434993168,58451171309683368843/18764957235832345259:2103743459790423515/3175057861396980374605962360114930432
+qdivz:-24539890933020861364/63297755114471972871,42384166620484371822,18890782875418251817/33137608653031131951:-12269945466510430682/1341411299737198460228945187043730420481
+qdivz:-41296371891007796845/1613315363510257239,15249898379502770099,=1:-41296371891007796845/24602895347621994343929388600567496661
+qdivz:26968473073125515519/4145542541499550935,90024588359492067484,=1:3852639010446502217/53314394403608519170705602182959328220
+qdivz:-9108355348050007705/76661950335475401,57055375045772530625,-2298296977286102063/15036407448001952:-1821671069610001541/874795265626187255366630363241331125
+qdivz:28017281112559674142/994247002684615355,67802491332771845215,17786655481004019427/236849374499644614:28017281112559674142/67412423782158018128691815375872276325
+qdivz:-49891914618525842453/68768611655263204,-56174819664217997775,-258643868421169477/1911028715949526:49891914618525842453/3863064358293050425485529901511371100
+qdivz:15475896177646886296/49664524240516277,35025891777986572339,11898387681595445269/681838705009854:15475896177646886296/1739544251253513882654242570967461903
+qdivz:28737321045177790751/2199012471009842,24823078729899234245,-40602612518778238915/4253179813373998:28737321045177790751/54586259695907565418964937658439290
+qdivz:-82233023866669302835/5439768388360516,-73950538660865410929,81261743259100627124/9245809803784267:82233023866669302835/402273802509607867490064466938479364
+qdivz:10167079364078493161/151110174756962,88181742728859483214,16304278265161179899/143495911599289:10167079364078493161/13325158554131419669540551368635868
+qdivz:-6087130765566978973/5927625468935,65819308108627037451,40718993650318423604/883073647363335:-6087130765566978973/390152207092377590789503682084685
+qdivz:7330732280399983999/37205998622295,20406176085943153899,13830294786103284155/92667712731961:7330732280399983999/759232159339910159481881157578205
+qdivz:-48332340643030107345/92304258311717,35076831981288534479,-73321763690952610021/86494140631565:-48332340643030107345/3237740959957552893702829684190443
+qdivz:98273075027659873937/84269635133,52859353248248533455,=1:98273075027659873937/4454438411596262285555193874515
+qdivz:20915233355720477899/1963896569345,62221892038256747576,-76661712514256465617/9116980669558:20915233355720477899/122197360312087396058804044657720
+qdivz:1656128732718013893/12013991167,91363850016657817300,38483305820933684114/470970043279:1656128732718013893/1097644487083239819903699789100
+qdivz:11764945144680543887/509229952865,93152505052059419404,-49961035800951489551/291905091165:11764945144680543887/47436045756916892514278186392460
+qdivz:-7317867086622619121/13130133210,58387376454076686929,-27069412842327211975/63749547479:-7317867086622619121/766634030624444346933235812090
+qdivz:94954386229766199286/91332072561,-41015693032911100387,=1:-94954386229766199286/3746048252221538781607839181107
+qdivz:49271375056669735877/3964274332,27367616211878761468,=1:49271375056669735877/108492738476778047583543039376
+qdivz:19003279723108075157/3672679837,-87707256449781680395,22197086023892167841/2380460690:-19003279723108075157/322120672321701380638694695615
+qdivz:11453151955554782667/792819445,-44970402143698368284,43746116839109616727/406009345:-11453151955554782667/35653409268993750590326482380
+qdivz:66060084310215517861/632772858,5686208043365730020,66618392442628601603/239006406:66060084310215517861/3598078114783120924011797160
+qdivz:15607406135041638145/12850627,92675124740491579124,82466968677513464623/33726515:15607406135041638145/1190933460218529079963510748
+qdivz:-84968644713302015482/30765501,21907086830543047075,=1:-84968644713302015482/673982501792158945328959575
+qdivz:-75708685189598590459/7543159,87636428496926088857,99286949010117671967/464174:-6882607744508962769/60095955849494954499679933
+qdivz:19413781778784807559/7455,70419417237119401006,87759888274980374477/7600561:19413781778784807559/524976755502725134499730
+qdivz:-44073071620584783758/137977,97178052623075418323,2336605012039492891/4902:-44073071620584783758/13408336166774076993952571
+qdivz:25141254449395000414/853567,48818099403147552704,72006961628028408314/367953:12570627224697500207/20834759326623223559447584
+qdivz:48044965246872284768/97133,69155615859736994978,-45313300536339105253/86233:24022482623436142384/3358646217651916766599037
+qdivz:-4395289710243518173/8350,744289141150282917,-29095078709708260253/88548:-4395289710243518173/6214814328604862356950
+qdivz:-92303054169340161069/4319,6791173325830567613,=1:-92303054169340161069/29331077594262221520547
+qdivz:64997783212580413369/6291,44933069571459793043,-20474362763124554371/1858:64997783212580413369/282673940674053558033513
+qdivz:93945477444073241773/141,88011071920496381723,23904352473973528984/197:93945477444073241773/12409561140789989822943
+qdivz:-25808752242439690169/552,-34114701969246980307,41196336212393917073/475:25808752242439690169/18831315487024333129464
+qdivz:16573231794217629809/25,80794581544602285996,=1:16573231794217629809/2019864538615057149900
+qdivz:42187260212039274209/87,70929718370679041273,41380731918827034219/13:42187260212039274209/6170885498249076590751
+qdivz:-34161590626563013397/4,-31069588081719868852,=1:34161590626563013397/124278352326879475408
+qdivz:60823156242773368161/2,-90388088707709016642,-91947828450656458545/7:-20274385414257789387/60258725805139344428
diff --git a/polly/lib/External/isl/imath/tests/qmisc.tc b/polly/lib/External/isl/imath/tests/qmisc.tc
new file mode 100644 (file)
index 0000000..2005b0f
--- /dev/null
@@ -0,0 +1,49 @@
+## Miscellaneous rational arithmetic tests
+## Generated and verified by hand
+
+# Basic negation tests
+qneg:0,0:0
+qneg:0,=1:0
+qneg:1/37,15/16:-1/37
+qneg:65/18,=1:-65/18
+qneg:-6/7,=1:6/7
+
+# Basic absolute value tests
+qabs:0,0:0
+qabs:0,=1:0
+qabs:1/37,15/16:1/37
+qabs:-592384293849818/1000001,55:592384293849818/1000001
+
+# Reciprocal tests
+qrecip:0,0:$MP_UNDEF
+qrecip:1/2,5:2
+qrecip:-3/2,100/995:-2/3
+qrecip:655378011918000000,=1:1/655378011918000000
+
+# Reading decimal fractions
+qrdec:0,10:0
+qrdec:1.10000,10:11/10
+qrdec:1.01000,10:101/100
+qrdec:1001.001,10:1001001/1000
+qrdec:1001.001,2:73/8
+qrdec:12.05,10:241/20
+qrdec:-5.00138,10:-250069/50000
+qrdec:-00000.5,10:-1/2
+qrdec:.5,10:1/2
+qrdec:-.005,10:-1/200
+
+# Rational exponentiation
+qexpt:-5/8,0,0:1
+qexpt:-5/8,0,=1:1
+qexpt:13/8,0,0:1
+qexpt:13/8,0,=1:1
+qexpt:509252236125428/47889593208724507642867,0,0:1
+qexpt:509252236125428/47889593208724507642867,0,=1:1
+qexpt:-5/8,1,0:-5/8
+qexpt:-5/8,1,=1:-5/8
+qexpt:13/8,1,0:13/8
+qexpt:13/8,1,=1:13/8
+qexpt:509252236125428/47889593208724507642867,1,0:509252236125428/47889593208724507642867
+qexpt:509252236125428/47889593208724507642867,1,=1:509252236125428/47889593208724507642867
+qexpt:509252236125428/47889593208724507642867,4,15/39:67256115255216568118287656956157205834289880165948820377856/5259743820161714626344840164714583399959974116151536869550562774750827767486998189660536721
+qexpt:509252236125428/47889593208724507642867,4,=1:67256115255216568118287656956157205834289880165948820377856/5259743820161714626344840164714583399959974116151536869550562774750827767486998189660536721
diff --git a/polly/lib/External/isl/imath/tests/qmul.tc b/polly/lib/External/isl/imath/tests/qmul.tc
new file mode 100644 (file)
index 0000000..db1f390
--- /dev/null
@@ -0,0 +1,803 @@
+## Rational multiplication tests
+## Generated and verified in PLT Scheme (see imath-test.scm)
+
+qmul:-3/26206484091896184128,1/693472590887743985,-4/70335584174882085859:-3/18173478421265693438940076224084470080
+qmul:3/91130421678723294601,2/1511297448571716895,-9/67416878129472613559:6/137725173770319192750843847801453983895
+qmul:3/3660941890584665578,-9/8380105656182991401,5/2848423294177090248:-27/30679079844245810042603985831234694778
+qmul:7/2164077499217694058,0,-1/333401876099655555:0
+qmul:4/904017211204226053,=1,-1/248448496161174245:16/817247118153466254734904646723958809
+qmul:0,-4/100568637457389843,0:0
+qmul:2/73650052097202983,5/4552230994414799,0:10/335272049897152087881722802145417
+qmul:7/999642011115757,=1,7/12191208784714605:49/999284150387555241548053683049
+qmul:4/4748171647596839,7/4194009713619088,1/878273774653032:1/711209928998281855823737102244
+qmul:-1/3272725541181013,3/1299116858075758,9/9062356618866682:-3/4251652922403362359365945182854
+qmul:1/107669261142969,=1,2/427008086776155:1/11592669795072854172258134961
+qmul:9/886384410786908,=1,1/143876368001899:81/785677323686054067227784200464
+qmul:3/35807911942040,=1,-5/90295680789497:9/1282206557648890844319361600
+qmul:2/68986921725007,5/77598287457417,3/43453045339831:10/5353266982819419037696526919
+qmul:-1/1109481330540,-4/9404058215555,=2:1/2608406755367394881137425
+qmul:0,=1,5/4715212234981:0
+qmul:1/68986716212,-3/2931468080,=1:-3/202232356519496512960
+qmul:1/26808054670,=1,=1:1/718671795189708808900
+qmul:7/43068832781,0,7/19211808304:0
+qmul:1/9608906275,4/5041381803,=1:4/48442165241517513825
+qmul:1/1228681579,6/2225293505,2/749381381:6/2734177137461844395
+qmul:1/8574959114,=1,6/1956551185:1/73529923806771664996
+qmul:-5/861495024,=1,-2/67979545:25/742173676376760576
+qmul:-2/140727827,1/692019033,-7/753572629:-2/97386334756731291
+qmul:3/95516372,=1,0:9/9123377320042384
+qmul:3/21198931,1/3432139,1/3530668:3/72757677843409
+qmul:7/6222866,4/1833695,0:14/5705419134935
+qmul:6/615053,=1,0:36/378290192809
+qmul:5/568461,4/392783,-2/643261:20/223281816963
+qmul:-5/510613,=1,0:25/260725635769
+qmul:2/14663,-8/93277,=1:-16/1367720651
+qmul:9/49612,8/73143,1/20024:2/100799181
+qmul:3/697,0,=1:0
+qmul:-4/2403,0,1/2247:0
+qmul:3/196,9/422,3/424:27/82712
+qmul:-1/309,2/257,4/233:-2/79413
+qmul:5/67,9/11,7/8:45/737
+qmul:1,-1/22,=2:-1/22
+qmul:0,=1,3/8:0
+qmul:0,-4/7,=1:0
+qmul:-85/86153854226096021421,=1,-17/21068656717268700162:7225/7422486598011403290090823970405290859241
+qmul:-5/43607938850040716426,27/16056333585184134128,32/52338799857236448113:-135/700183613138564743562274537293596786528
+qmul:17/1822698577891414141,=1,-7/8417742332722538862:289/3322230105847383502431373884774767881
+qmul:16/4598825929956443605,49/4847943197216974161,27/3451375546922816345:112/3184978126045337954130178471819812915
+qmul:-13/308229631559916894,7/23027204844472228,=2:-91/7097666865066408240206510971019832
+qmul:9/407734736332167529,=1,=1:81/166247615211862175599509955321965841
+qmul:85/4942792842537911,76/69829540258955019,-91/17762034363033874:6460/345152951789675772143408751225309
+qmul:54/48159800199427181,=1,5/15794694767846184:2916/2319366355248746342818800521606761
+qmul:-1/11155623059888,5/2213190858263331,74/4478858739544117:-5/24689522974375729479887366928
+qmul:28/7444112023597965,94/2835981424363017,44/965216022716111:376/3015909059971602514096088922915
+qmul:61/275448071365986,=1,39/801040431549668:3721/75871640019241316559957752196
+qmul:-16/122979260248953,91/861294833601044,69/330950567465674:-364/26480350373125364764230176733
+qmul:-5/15361734038378,-4/21146843499433,-42/41820111648961:10/162426092794746228321619837
+qmul:31/27515949153680,42/8919478678031,-31/98260871319338:651/122713960891016949829402040
+qmul:-96/7797764223407,-71/8834811164017,1/1862795966742:6816/68891774415328515707545919
+qmul:15/5131534941574,57/7059500713061,=1:855/36226074579139089973698014
+qmul:99/412586992259,-70/740258455507,2/72307587241:-6930/305421009651925904920313
+qmul:79/741601059426,-1/218034913785,-91/880841444516:-79/161694923054812571587410
+qmul:-31/7229094496,1/4120337146,=1:-31/29786306583812948416
+qmul:55/83518896547,9/29598222046,-49/35480447526:495/2472010845035008675162
+qmul:-70/3176137243,=1,1/170734393:4900/10087847786371641049
+qmul:19/8816510816,16/688207893,1/526411545:19/379224520768191918
+qmul:-3/77923064,=1,29/420820637:9/6072003903148096
+qmul:7/886358404,71/63529999,3/267607006:497/56310348519761596
+qmul:1/2981721,46/37858403,83/6367099:46/112883195251563
+qmul:-31/938629,-15/8290882,1/1023462:465/7782062280778
+qmul:37/410302,4/1757463,=1:2/9744467349
+qmul:28/8167855,=1,81/7643948:784/66713855301025
+qmul:-97/992628,13/93468,-47/39726:-97/7136842608
+qmul:-23/674165,7/523911,47/942664:-161/353202459315
+qmul:-7/19181,54/85811,=1:-378/1645940791
+qmul:5/7653,=1,-76/63829:25/58568409
+qmul:11/4265,=1,57/520:121/18190225
+qmul:65/6957,41/389,96/2993:2665/2706273
+qmul:-23/297,-9/83,14/891:23/2739
+qmul:2/31,86/985,-4/905:172/30535
+qmul:-12/7,-10/3,62/67:40/7
+qmul:-28/23,16/87,4/15:-448/2001
+qmul:37/2,=1,-16:1369/4
+qmul:-20,=1,35/4:400
+qmul:437/75577860178450821941,=1,572/74570847326022239185:190969/5712012949153462506928348371418487007481
+qmul:-189/57565050795595180562,-59/2655741179562929534,963/98951958258639716842:11151/152877875901493900051494486844412518108
+qmul:392/9223441830913061231,10/126887593668291297,102/1854286196997300457:3920/1170340339264017235848151367305406607
+qmul:255/3855767718884073169,129/2905792024958436842,-235/3219625969384677757:32895/11204059087625523831085398908193292298
+qmul:-47/35122532617610421,-117/122052767037802280,319/272062018205952087:1833/1428934097118272207801649688519960
+qmul:979/892962159830670377,-375/273191235681889997,70/47294962936566903:-367125/243949435861310195658594938880518869
+qmul:117/20991277911775766,=1,-92/47578690454158995:13689/440633748369405163321411464886756
+qmul:-243/11407352500485733,587/76385498874294444,-614/81454021700493267:-47547/290452103861510956341405887722484
+qmul:174/900283464250993,229/9496538222605715,-274/3248450234623149:39846/8549576329439440824503236224995
+qmul:-690/8145214566421669,141/5752215623742809,71/3004747651790415:-97290/46853030487708234314403900528221
+qmul:226/102973529231733,30/68951726615689,=2:2260/2366734212079704520104819679
+qmul:-815/885459835828344,37/163413072330166,-43/147651688219350:-30155/144695712197674089868869025104
+qmul:75/6638760558632,-138/35179390065353,413/82329576156442:-5175/116773773621297956634138548
+qmul:147/95595835551176,6/10399082254439,189/19869218037638:441/497054478539251611118835132
+qmul:-610/7116766665669,370/6178271155283,-170/1991438380331:-225700/43969314209382356444079327
+qmul:-22/3906839603439,=1,495/2629172214638:484/15263395686999402780626721
+qmul:145/9760768489,529/803913134519,3/3085831861:76705/7846809991306273371791
+qmul:30/130533848429,-291/232962676405,413/647890196158:-1746/6081902938292888923549
+qmul:218/45496969487,53/7721267751,312/52099708697:11554/351294283268204113737
+qmul:277/88084217182,-643/95570881719,=2:-178111/8418286301611629495858
+qmul:97/9657661098,472/161930139,400/6505391099:22892/781933202007016311
+qmul:137/1394596885,923/2175332507,-63/538078336:126451/3033711938101440695
+qmul:-99/123912484,299/998630381,359/807136797:-29601/123742771107576404
+qmul:281/377026117,-970/10165277,80/672610947:-272570/3832574915539409
+qmul:641/45327247,95/3702049,-31/16613945:60895/167803689429103
+qmul:-737/25452329,363/67508236,825/73130323:-267531/1718241832881644
+qmul:51/7250464,112/8927185,903/6361594:357/4045389591490
+qmul:199/4639977,588/7971809,322/8874233:39004/12329670136131
+qmul:665/703012,329/294996,787/209117:218785/207385727952
+qmul:133/29650,307/137037,809/690522:40831/4063147050
+qmul:553/42863,161/16139,552/86389:89033/691765957
+qmul:-568/72299,-953/23177,798/52267:541304/1675673923
+qmul:-907/7588,47/7619,=2:-42629/57812972
+qmul:37/1428,-161/1853,-140/3279:-851/378012
+qmul:69/659,194/7,-183/238:13386/4613
+qmul:-365/824,264/503,-421/698:-12045/51809
+qmul:747/74,-15/94,12/19:-11205/6956
+qmul:12/5,113/37,=2:1356/185
+qmul:-807/7,943/8,199/3:-761001/56
+qmul:591/7,85,-156:50235/7
+qmul:853/18759654468263598130,-2841/40750915886836631585,=1:-2423373/764473101302328863323172599481304936050
+qmul:-4752/16314480916934323241,1675/15223840982975523171,=2:-2653200/82789687733065614038692540422933105737
+qmul:-877/6101604969629738233,=1,3917/3506403215407013175:769129/37229583205410318824680729796101962289
+qmul:3511/9447760616772726092,2633/1439700094583390479,-1093/3530171944589695778:9244463/13601941853568925322985028756947678068
+qmul:1947/430992381411198689,=1,6905/150990131770718358:3790809/185754432834496165241461379835318721
+qmul:8719/646714849991103264,=1,5786/734533820409647257:76020961/418240097199015197424619951911453696
+qmul:-901/11042787574357099,-1492/25943871895296763,2003/71983717831437714:1344292/286492666196095454208761540770537
+qmul:248/45424964911300681,-2828/10155871660092285,1922/24482631313347631:-100192/65904301971909291827634263335155
+qmul:2932/167088922177995,4285/8315956341564334,=1:1256362/138950418199124701072469163033
+qmul:63/96864941445455,1217/536600078187501,-1363/813397840648021:25557/17325911717752953043818085985
+qmul:2028/952222976621975,=1,-4447/132247057152414:4112784/906728597206814347382052900625
+qmul:-2672/564653311125411,=1,593/245849676591157:7139584/318833361764890193787369918921
+qmul:8811/12688709770015,-6995/78357482492503,2405/8730288903721:-12326589/198851070731280426018339509
+qmul:-6216/89020593811217,2073/8676827195515,-43/383215257478:-12885768/772416309342061967459091755
+qmul:649/679490122076,-1037/2294439110154,6125/672996983517:-673013/1559048711054490271159704
+qmul:4001/986338046878,5/3558981731,-2511/3763709597086:20005/3510359089429023585818
+qmul:-1523/69241899473,=1,7123/515464482213:2319529/4794440642629037677729
+qmul:-6869/800191115742,938/461384295473,-3029/66737130644:-3221561/184597807090188234817983
+qmul:3554/16260606585,-2909/10951382696,=1:-5169293/89038062790716326580
+qmul:-8706/24347671943,-2333/75528831647,6568/10275254341:20311098/1838951215179232380121
+qmul:8843/2387867375,3806/2482665293,-478/3437714583:33656458/5928275456199515875
+qmul:676/469237349,=1,=2:456976/220183689696547801
+qmul:4381/415783140,=1,-9189/160372247:19193161/172875619508259600
+qmul:5209/647900590,31/76532430,5022/774082651:161479/49585406551133700
+qmul:6785/98653728,1643/10927961,-3657/22982951:11147755/1078084092088608
+qmul:-131/3707540,-3070/95931603,8132/10434367:40217/35567025538662
+qmul:3495/4205702,1768/4495963,642/2009179:3089580/9454340290513
+qmul:-3081/1925708,-557/52210,=2:1716117/100541214680
+qmul:1824/515329,4783/215399,-80/428083:8724192/111001351271
+qmul:-1259/116291,686/450649,=2:-123382/7486631837
+qmul:2158/8127,4919/28127,=2:10615202/228588129
+qmul:-8479/13630,228/39107,-6607/63539:-966606/266514205
+qmul:-3929/4639,1292/907,4288/3241:-5076268/4207573
+qmul:-2277/9067,379/5790,-503/3539:-287661/17499310
+qmul:7172/525,4813/272,4472/631:8629709/35700
+qmul:759/64,=1,1976/105:576081/4096
+qmul:3255/4,-1567/13,4881/26:-5100585/52
+qmul:3089/89,=1,-8984/35:9541921/7921
+qmul:5031,-5481,=2:-27574911
+qmul:1479,6716/7,669/5:9932964/7
+qmul:-79907/42073633953804470386,9649/39994826473890828375,-32061/69201000109873943624:-771022643/1682727689108411078225149789999696002750
+qmul:7869/4137317017220625920,-46300/94718332275370703049,-79642/60022119059401889179:-6072245/6531329466094147648450013992237207168
+qmul:-29138/1677259660137772757,55969/6796400935123913154,-10129/967130263887253020:-815412361/5699664561302987764528483645927572789
+qmul:63296/9530224706297545807,2348/322614345457502213,958/9427355800897598701:148619008/3074587205685099009151203658171370891
+qmul:8775/40604046784024133,-33221/144310822954936081,=2:-291514275/5859603406703248409743984976442773
+qmul:21115/310091896403808544,11297/311633467720059450,=2:47707231/19327002597641657788985081219588160
+qmul:-7541/568197224156233,78686/80834506129161047,=2:-593371126/45929941998629309750410745855951
+qmul:-69371/45833711711077260,45306/56585412779622335,7626/54270702558063797:-174606807/144084416466306503713223267033450
+qmul:-47821/557744909539529,-35381/1596080991630467,27735/4832267108379043:1691954801/890206048294696559875897230043
+qmul:39463/2836203973039415,5893/5755385978253006,39369/9842567552327876:232555459/16323448577896515754725680231490
+qmul:59563/93078116326943,=1,39162/530318464795213:3547750969/8663535738971933065667725249
+qmul:-6422/219350698334991,12009/451668291281128,38643/184068500609632:-12853633/16512292518047925598650058308
+qmul:6353/29487362288887,18649/10109618056586,-739/5084432721670:118477097/298105970236825097644959782
+qmul:82991/13932554844361,44258/40391647302859,-4103/3232141273561:3673015678/562758841301169080175328099
+qmul:68609/2797606749368,71293/8880170450370,=2:4891341437/24843224787493384272866160
+qmul:69352/1282840784633,51360/5155457119681,=2:3561918720/6613630656553360226662073
+qmul:19996/284659901481,91975/649935845164,992/22386886571:459783025/46252668413338677571971
+qmul:95164/291066123381,=1,86173/926768430166:9056186896/84719488180043514871161
+qmul:58599/35278850458,=1,=2:3433842801/1244597289637926809764
+qmul:16793/50880968745,32965/31422146373,5133/4972604243:110716249/319757849501085622377
+qmul:10537/861910652,22310/9378414407,=1:117540235/4041677638131781682
+qmul:79317/9648480088,22265/3941357964,=2:588664335/12676037945111406944
+qmul:11221/182565205,56092/543156657,49073/666425232:629408332/99161506432319685
+qmul:85751/945688766,15325/126345977,14001/74129827:1314134075/119483971078194382
+qmul:-70533/6456184,-11237/1159737,36975/90043007:264193107/2495825154536
+qmul:56162/84955139,=1,=2:3154170244/7217375642509321
+qmul:559/4445450,87073/9891852,=1:48673807/43973733473400
+qmul:2247/126982,=1,=2:5049009/16124428324
+qmul:87205/903493,=1,4007/74486:7604712025/816299601049
+qmul:20400/957959,=1,-9955/111633:416160000/917685445681
+qmul:31836/73595,11609/39450,46021/33218:61597354/483887125
+qmul:84969/75326,-86068/92037,9321/65618:-1218851982/1155463177
+qmul:49337/4359,71033/6220,-25745/2781:3504555121/27112980
+qmul:15077/1290,20527/9232,-259/71:309485579/11909280
+qmul:52867/502,-63033/451,83228/635:-3332365611/226402
+qmul:1852/17,45130/359,67421/50:83580760/6103
+qmul:57233/78,37817/35,-23454:166490797/210
+qmul:9693/26,82259/68,46811/66:797336487/1768
+qmul:-53957/7,=1,57497/7:2911357849/49
+qmul:-95413/6,-29374,-4257:1401330731/3
+qmul:-198736/12940720433326325129,125852/5925853683093665567,12760/97357765177854120733:-25011323072/76684815841712259623316096046234133143
+qmul:921572/61142247716597287729,-236568/70364185507196351425,204596/87367262923771962827:-218014444896/4302224460657604084043267617199724163825
+qmul:-175852/3759159397994001893,12753/21663430571600165,=1:-2242640556/81436288626021332583545141049112345
+qmul:-268026/6357464651647716983,=1,8534/1795261387346998395:71837936676/40417356796950227447969273156066622289
+qmul:841695/829965893010784622,-533003/287367841069761182,-70387/77776025771352596:-448625960085/238505506836045568256258975978143204
+qmul:285995/137908752412413419,=1,=1:81793140025/19018823991948344014771004171269561
+qmul:523332/10397730659818265,-637807/84218842967037343,38109/5089543807331942:-333784812924/875684845652784039249421848469895
+qmul:331806/46798346659133905,390599/19460297756850316,-839360/33343052356070147:5891049627/41395898205229409605128422071090
+qmul:-618133/4917065118673735,=1,-92527/257257853329058:382088405689/24177529381277951659005378850225
+qmul:821668/9309756380607047,319410/1721325229930259,-409819/4033682794066002:262448975880/16025118542443120997155893935173
+qmul:-463245/974985643441198,-676781/102650194991381,67531/763750320751138:313515414345/100082466413036044472790314438
+qmul:3292/15168814078843,786853/187996862965898,126658/126696595422875:1295160038/1425844730867715885896148007
+qmul:-108514/9407475910099,31445/45805965278381,209927/522813819096:-487460390/61559787842171498837752817
+qmul:206519/25307336797263,439291/97571104143841,-52486/22231146494461:90721938029/2469264794249007720607107183
+qmul:755819/4678998804414,132779/513422592641,-154155/1796861274557:100356891001/2402303697126375154717374
+qmul:-610422/8953796367011,=1,34600/946679301111:372615018084/80170469381899382209074121
+qmul:-168796/96200349399,=1,459815/414314841334:28492089616/9254507224489679661201
+qmul:448040/938638294207,-940391/987312987781,877652/581123018277:-421332783640/926729778699174474084667
+qmul:367299/48916956722,-234746/31600745479,19962/10415742905:-43110985527/772906149489590079919
+qmul:540492/60952022291,=1,=2:292131602064/3715149021362560888681
+qmul:48241/1850039638,600695/993394588,=2:28978127495/1837819363974679144
+qmul:-73469/4702579939,910622/7776354127,71768/6903692213:-66902487718/36568926916190058253
+qmul:165889/228901970,3743/140713319,=2:620922527/32209555924338430
+qmul:208098/645461621,-637539/213089255,-987707/763332694:-18952941546/19648705135711765
+qmul:978743/66626510,16328/1482253,=1:7990457852/49378672163515
+qmul:336035/68124509,=1,245361/31402036:112919521225/4640948726491081
+qmul:191473/9297613,135059/7858162,-384667/8715020:25860151907/73062149167306
+qmul:-118451/7012982,-685529/5952631,=1:81201595579/41745694055642
+qmul:142154/901271,422448/305711,332653/165374:3532510176/16207556393
+qmul:52759/177236,850321/697129,72248/85023:44862085639/123556355444
+qmul:-88178/95391,=1,277011/11863:7775359684/9099442881
+qmul:-466226/55653,24107/11550,-273396/37003:-5619655091/321396075
+qmul:825492/3685,102991/306,60368/1041:14169707762/187935
+qmul:166834/1709,340151/1908,=2:28374375967/1630386
+qmul:-212681/290,424751/190,845448/971:-90336467431/55100
+qmul:134907/163,-69685/79,=2:-9400994295/12877
+qmul:-539594/3,15173/4,-877571/28:-4093629881/6
+qmul:247756/31,94120/29,-147220/11:23318794720/899
+qmul:910742/5,63428,2990:57766543576/5
+qmul:132140,=1,214219/9:17460979600
+qmul:-1882407/73787858412488449855,-434970/15504199196668297319,7152438/32357487418268793473:163758114558/228804331024555497710598988747312487749
+qmul:697417/2168456434664834658,1334383/40514117254978695797,1660012/19534585395934841435:132945912673/12550442608046308674759866845069218918
+qmul:767157/4500296443907797052,4954462/555593595680231401,3839270/8356753330266434437:1900425102267/1250167941448845883802900321752814926
+qmul:3855435/1910412651584231024,3929628/9286414633188139915,6450211/7279093857125478452:757521266409/887044200154977924360507801609786148
+qmul:-713297/2131510505574811,=1,8006203/547537770085302559:508792610209/4543337035375786395109517685721
+qmul:-3176335/541746203963633741,-438253/349884327285711674,2546202/81167937975645853:1392038342755/189548506133403938761872538263992434
+qmul:4172837/3155683016816501,1634359/1130730609779385,3449963/73677939584796131:6819913706483/3568227381875371425040637631885
+qmul:1250071/25258841326965282,-32307/1353739173264256,=1:-13462014599/11397960991859667942696774520064
+qmul:7965329/6993004096201475,2973773/6634186275128268,3335672/4941418095538311:2153370937847/4217535617903234884469745072300
+qmul:924761/7142709941575765,8302365/4849337439058259,=2:1535540671953/6927482147203397401610419498627
+qmul:6563249/71417076489085,=1,3793878/305677884396037:43076237436001/5100398814247817470124137225
+qmul:123256/2387254101849,6673623/563071687944596,-2966203/120995731224497:68547006374/112016266390064743737763167
+qmul:11601/9690796184885,-313729/29163002094366,=2:-1213190043/94204236478625099184285970
+qmul:-1548191/1118347883822,693213/16160970245026,=2:-1073226127683/18073586874035135921369372
+qmul:4730021/1257111596731,45335/50784818897,9472521/3164110107311:214435502035/63842184773302332225707
+qmul:8511317/4540489631064,-6359369/2005086337073,=1:-54126605478973/9104073722868052915635672
+qmul:-929873/867693641561,8138971/698148180183,9405551/179909067138:-7568209380683/605778736812172445385663
+qmul:9281874/795726121805,-9968150/721200783579,4661824/364533493543:-6168207487540/38258553504002986522673
+qmul:3865094/4084662077,4259784/19883113093,=2:16464465579696/81215798023679274161
+qmul:-416924/286477113,826597/6309334211,-9773164/19019652193:-344628127628/1807479849719412843
+qmul:-9662220/20572447,=1,1141747/1832358244:93358495328400/423225575567809
+qmul:616787/710447851,-5149637/86667498,5336551/335300034:-3176229156319/61572737705646798
+qmul:-9976984/843714569,=1,613447/59557955:99540209736256/711854273942855761
+qmul:-6026602/975541545,9908792/76315713,9315535/212827209:-59716345684784/74449148567796585
+qmul:317525/4130814,-794909/3724657,-7514646/67549867:-252403480225/15385865280798
+qmul:5284147/75357219,-2845520/19763971,1559210/15974883:-791376103760/78387257418771
+qmul:6632185/1141092,2427283/1559559,=2:16098189903355/1779600298428
+qmul:-1099211/2368184,=1,4294432/3557597:1208264822521/5608295457856
+qmul:-90319/172637,8164133/19492,-7639232/876753:-737376328427/3365040404
+qmul:-2193898/79229,542172/63719,=1:-1189470066456/5048392651
+qmul:-3656336/69523,1911911/39486,833550/557:-3495294509048/1372592589
+qmul:106251/11335,-7809497/82381,-4910754/43655:-829766865747/933788635
+qmul:656544/4345,-9528986/1963,2350355/5553:-6256198584384/8529235
+qmul:-2189554/2039,-5393104/7563,889038/2857:11808492435616/15420957
+qmul:3890213/508,186330/17,-1198413/262:362431694145/4318
+qmul:3102225/578,5898937/910,=1:522852280995/15028
+qmul:-1156863/5,-8420942/61,1460661/13:9741876224946/305
+qmul:-2254787/5,2862624/83,3361/52:-6454607381088/415
+qmul:-7630885/4,5547065/8,=1:-42329015102525/32
+qmul:3371673/8,1927246,=2:3249021651279/4
+qmul:-14442357/30313364574216985165,21011896/19717180229164582119,=1:-101153767759624/199231357554069726942322822323082421545
+qmul:73015500/34914714923282785961,10709547/16405893500986887200,19061786/4299472658767378545:7819629289785/5728070946486949421088979169452505992
+qmul:-5213601/648973976600394322,95110449/6292591997485345693,10223157/1491031081544864086:-495867932016849/4083728451731883302073525200284355146
+qmul:81716702/9420867468902388767,-3659716/561353788976535007,16436845/12448406189105001:-299059921776632/5288439649114135016294765892899066369
+qmul:-50829049/681481015656967334,78493193/406094838848924705,=2:-3989734353163457/276745923231817683251713267210586470
+qmul:-70639608/210570392897683795,=1,32857499/484390875545236076:4989954218393664/44339890365084922016231475805602025
+qmul:-42306075/32432310313264277,-86992166/48265729471703217,59197803/99727495871692084:1226765699736150/521789705240781269523990077359703
+qmul:98949619/2882304121717510,-30259679/61942044859153494,=2:-2994183708112301/178535811205149016934639997479940
+qmul:-33943246/547508652618667,-9155497/325768016112482,3909688/9222108480297609:155383643461631/89180403784000610709262450747
+qmul:-4005853/831711723057253,-65053249/3453104157068793,=2:260593752666397/2871987208371849027864998605629
+qmul:30466505/131811990296054,80480517/129751865511763,-66851989/905703806093822:2451960073583085/17102851637731408230589483202
+qmul:67778441/221052041028359,31145967/736730375785315,=2:2111025086697447/162855753254933795304810748085
+qmul:-27930623/83735524881404,=1,26062637/38713631506284:780119701168129/7011638127164228368265011216
+qmul:91874289/55178817284824,2081222/10998714287097,=1:31868465250193/101149341002618103726185988
+qmul:-81097913/23224035213,86134633/913902046268,-44110346/4612785602109:-6985338973320929/21224493303760787235084
+qmul:26946729/330400702820,-5376007/957000244373,72609687/3803755771964:-144865803731103/316193553339750950231860
+qmul:5847347/83932240013,4198391/162033797450,41563965/225583428284:24549449018677/13599859577791227366850
+qmul:19548965/189470438789,2465153/48226118390,-16293845/384490679461:9638237943329/1827484762488712445942
+qmul:-55395086/15848355167,30834213/24733216753,3746720/49399574807:-1708063880877318/391980803523938512751
+qmul:-58079954/9010951227,53522457/51897896711,=1:-1036193946842326/155883138682234904799
+qmul:15721758/4667399077,-40891342/1328104821,=2:-214294594406412/2066265071898216739
+qmul:70233722/7303211237,8646406/3990640707,33916940/2735563757:607269275303132/29144492054192024559
+qmul:6933207/288152,3665663/23826937,-56545561/920522000:25414800371241/6865779550424
+qmul:41800997/62123962,-38919041/683603632,-76160505/964998499:-1626854716083877/42468166057429984
+qmul:-30010802/20468051,19506739/20221851,38792870/36677751:-585412881794678/413901877582401
+qmul:11813175/26779288,=1,4038299/10717148:139551103580625/717130265786944
+qmul:-54308089/3363111,6223152/1333435,12297998/2068949:-112655830892176/1494829972095
+qmul:47572280/4867129,99908399/5832503,6381834/2396879:4752870331579720/28387544493887
+qmul:-62682614/784029,8201676/813035,86261045/879573:-171367496953688/212481006005
+qmul:-52450671/559382,31930301/348148,81333805/486957:-1674765712681971/194747724536
+qmul:53187047/34080,40744921/16199,37085536/50799:2167102028238287/552061920
+qmul:11558111/11033,48139409/27484,-90392545/80713:556400632696399/303230972
+qmul:-25583995/4897,-94434044/3561,2921273/9343:2416000109525780/17438217
+qmul:-5090656/611,=1,=2:25914778510336/373321
+qmul:-13641055/103,35989446/451,-35512409/41:-490934012305530/46453
+qmul:99505255/181,-312642,12835678/5:-31109521933710/181
+qmul:25097277/5,85216417/47,73513489/51:2138700022396509/235
+qmul:64784087/19,-41764336/27,-39313651/72:-2705664376921232/513
+qmul:22866666,9187561/2,-79296567/8:105044444370813
+qmul:32433429/4,-57952559/6,=2:-626533402564937/8
+qmul:142379769/6580458265088042332,=1,829632764/47313440042888292183:20271998620493361/43302430978565528007566299412223998224
+qmul:952160697/53449785406826630773,=1,123350541/21685565106900565733:906609992911525809/2856879560035817059690375116110870577529
+qmul:134379194/7288875631759851537,262306997/2039219084637508550,=1:17624301418710209/7431807146916983147195344504784070675
+qmul:893718997/892104296345812908,=1,287136425/3171192156119780019:798733645598686009/795850075558657977797692103339416464
+qmul:148747375/98802457575041086,24743438/63078605847781653,=2:1840260725487625/3116160639084092662997866715997579
+qmul:881257471/447180652093139622,=1,467458692/434203794165327853:776614730193315841/199970535606445577794662077186302884
+qmul:-328833244/8368942920923449,71377107/4810747268694941,=1:-23471165642145108/40260869298696343876296794571509
+qmul:158379101/1326421417689989,-189428893/41659788909099497,196884323/11300332885720816:-30001577776765193/55258436265473435094327901835533
+qmul:10782829/45891552641500,764396030/8166229459391987,-237359023/5307605981413862:824235167976887/37476094911825545799378366050
+qmul:-176383510/8720957474390283,=1,969790455/2816113324098863:31111142599920100/76055099270123743567802604820089
+qmul:153319337/75604684811316,-66073159/9855025487116,=2:-10130292931375583/745086095760891109449004656
+qmul:-152252295/92990423831326,58928296/433772431956189,=1:-213618293010460/960397197475024603484708967
+qmul:968728976/89630394861017,122952071/77095083081384,=1:14888404229613662/863757842303419891847500941
+qmul:421854586/98110047748469,777827572/98264750833133,=2:328130128365445192/9640759396230087578575223377
+qmul:321360259/1519003205844,=1,648154609/8326351267679:103272416064547081/2307370739364349435752336
+qmul:-623994359/2983440638275,548017609/4525469063166,313238822/1462111109367:-341959896648667631/13501468310305737332278650
+qmul:105901696/125767654005,11356251/3169320047,37580987/3123470749:400882080367232/132865982367402112745
+qmul:257717002/338572086809,=1,-516598417/866703725253:66418053119868004/114631057966201031802481
+qmul:-315718685/10965934391,730969133/99436604662,980080011/95127007262:-230780613446350105/1090415282787296730842
+qmul:357633989/52052235576,=1,499101847/17405036021:127902070088052121/2709435228459400051776
+qmul:83154971/2959266631,=1,=1:6914749202010841/8757258993350090161
+qmul:74008543/143708417,-38807917/3997329896,49374533/1136791926:-410302484862133/82064278797276376
+qmul:147247586/394684533,-46611929/47003797,417377757/202754149:-6863494024053394/18551671668171801
+qmul:190874443/241889832,65505550/154148559,=1:6251667684829325/18643484519776044
+qmul:-494401746/19681,407904654/21651245,69321355/12439911:-201668773139125884/426118152845
+qmul:365885228/56568973,4250982/8521637,960401966/74768881:1555371518293896/482060253368801
+qmul:255177714/7055753,814922797/4572404,187054293/4701449:103975068212473029/16130876620106
+qmul:-588905892/5841913,=1,832554893/1175043:346810149632315664/34127947499569
+qmul:135837085/706833,-289514879/255430,725428338/928723:-7865371445497543/36109270638
+qmul:122186761/430279,=1,619259689/728443:14929604563671121/185140017841
+qmul:775073757/30757,695907415/51279,944630725/67207:179793191556069385/525729401
+qmul:95477167/3960,-871735667/38397,-714770441/33262:-7566441078001399/13822920
+qmul:-884857813/4929,70752241/2056,154069499/3880:-62605673236108933/10134024
+qmul:229619449/1615,957611614/1161,10452182/285:219886251162680686/1875015
+qmul:111146789/136,146738413/445,169865033/157:16309503427905857/60520
+qmul:9871622/41,-808689707/803,=2:-7983079102794754/32923
+qmul:-288336467/9,=1,850175175/86:83137918202042089/81
+qmul:558230684/47,805462654/41,167574699/11:449633968278875336/1927
+qmul:339929608,29235627/2,=2:4969027612872108
+qmul:881780865/2,443292701/9,=1:130295673778655455/6
+qmul:2838001100/91389568002455572881,=1,1986643253/20570864960839080487:8054250243601210000/8352053139675451489580240654173902640161
+qmul:3251591241/344636720089928137,-1113406027/3139375771816261090,-3172679089/93012796738201713479:-3620341285069809507/1081944169128542879223598266129289330
+qmul:2151380941/4425085028680839366,6291439247/670381381077695674,-1225149433/257062097818706652:13535282487455191427/2966494612913295666228911591427102684
+qmul:6158301795/2455047697567864031,-5798372309/5521291989057645588,-157042968/9556961002892580965:-3967569622065888295/1506115020592873902921765927885671692
+qmul:-8451954373/975723814918920513,4784366210/605780426352481313,8465359637/69665667013568159:-40437244910642936330/591074388603853235233268628964873569
+qmul:5825412784/511571458045271039,1008046458/332866639017254645,1740022059/196312276491243337:5872286723299119072/170285071856685864496671466706726155
+qmul:1850720900/45716430562358967,-3131316310/52356049605863119,539696323/19977050509485334:-5795192539427879000/2393531706325862841899110744238073
+qmul:-999008939/40305492823224241,-149362865/49775456964489,4606037138/47949128805635417:149214837289650235/2006224323454918453607620977849
+qmul:-4057348745/579860156310338,1212653237/2742714067824482,-3833477943/1278732708982538:-4920157089262137565/1590390608083267111519706094916
+qmul:9177815341/2326648645173174,371635999/876014400872787,-2149851912/2031850250792911:487258081841437237/291168245563265658397194145134
+qmul:149460870/500654885667917,8207530879/259222934708685,=1:81780313715146982/8652081915938573470536383943
+qmul:1089507559/134057483313428,-7987532800/42390827366211,3382946045/262278399004573:-2175619340840108800/1420701908072059536662445327
+qmul:6048157042/13712987352923,=1,-2693371451/4466222589529:36580203604694189764/188046022141426146556643929
+qmul:2603227553/49609180587155,471640162/92076035059005,-663933503/13520440154956:175398094974254798/652545235855913432995725825
+qmul:4393500955/6416432605233,-3583476841/7979065549803,441355864/1454382446413:-2249144131879126165/7313876621863906114274157
+qmul:64145470/8127876011853,-4488303205/666124315584,=2:-143952159293615675/2707087922773595548308576
+qmul:2220237721/64548387245,-703263819/579214597702,5697314686/589964874375:-120108681442947423/2875951396186583316230
+qmul:7022991149/836362149630,-1984639629/975088070,-1171252556/150772930335:-663719359448649701/38834607347798472100
+qmul:7911754989/73811019085,=1,8326854813/74451049034:62595867005966390121/5448066538366234237225
+qmul:8670773721/75336074123,7789940197/98427175582,=2:67544808748309163037/7415116995363087664586
+qmul:3813777004/9138760931,3878060903/1782466818,-496564577/8664398681:7395029745986437306/8144769058571143779
+qmul:4360854339/9648497864,=1,=1:19017050565975126921/93093511031612562496
+qmul:-1306392307/687643073,-9598905761/422850143,4622499059/88598595:12539936641788380627/290769971751009439
+qmul:4779917420/76898307,1792785739/166010625,2225422443/217138286:1713873556834734676/2553187201302375
+qmul:-7341873007/81873962,1385231861/3699454,-4877758523/40734069:-10170196408712276027/302888956216748
+qmul:908541847/68126894,3798368094/17436611,175898188/3762149:1725488181854314809/593951074658117
+qmul:-7938465013/6277994,-362880881/3869862,=2:2880717177705116453/24294970416828
+qmul:6036183652/5477115,-1788527459/1739644,-2727500049/825193:-2698970052292225067/2382057561765
+qmul:1659028493/577907,1961575125/200776,=2:3254309023535036625/116029855832
+qmul:2324185733/425376,-6101126398/443667,=1:-7090075464730639867/94362646896
+qmul:158821375/2278,5716179055/50437,-700123827/1726:907851417261300625/114895486
+qmul:6937745972/64507,-657862356/10135,=2:-4564081910469430032/653778445
+qmul:-688655549/3844,5925620489/6516,-2612322997/6399:-4080711431017943461/25047504
+qmul:1356483025/6163,=1,2367819633/2590:1840046197113150625/37982569
+qmul:6911498420/997,-520233898/887,8567846181/167:-3595595764057441160/884339
+qmul:-5665580795/223,245568655/53,520214901/133:-1391289055621980725/11819
+qmul:6848382683/88,-3930604705/78,-4380032639/66:-26918285195440323515/6864
+qmul:7058656941/92,-2614182743/76,1606422009/16:-18452619163919369163/6992
+qmul:348409636/3,-58882183/4,8721866869/5:-5128779986478847/3
+qmul:-7530659939/2,=1,6943419397/7:56710839116859483721/4
+qmul:5479036571/2440360696983602620,49554857924/4707522136067292695,14037572034/1860137811841092895:67878219709076284651/2872013000259729052687425327777215225
+qmul:-90287321301/55986373996879974676,79056497918/57955348234225101999,68036645565/23598836282510831821:-1189633238075717258553/540784966893457334425356770707772829554
+qmul:-31154471814/4775267091317819455,20452466931/8265429859332817919,7980554951/34755849271476873:-637185804528606582834/39469635202867679038129686483630814145
+qmul:85271504414/7465316608452879443,=1,-10606469222/1904172971848733911:7271229465026821483396/55730952064442402518704478477891990249
+qmul:-16339852699/127321792148125915,3040615183/55882163298738283,-51110404691/61653999585316250:-49683204204562928917/7115017180309586101368162514903945
+qmul:-63804908144/277883532447300683,-720647040/27229766739402803,14615586307/46658500039754383:45980818191445493760/7566703769261267728805752794014449
+qmul:10341018519/94245221741052416,87590141171/60174320543406768,=2:301923757310378448583/1890380727576845520968582099050496
+qmul:94172173704/61262926143770059,=1,=1:8868398300136349079616/3753146119697024991735097864863481
+qmul:-27044253543/1053895278738638,=1,-26863808373/192367352651581:731391649698068052849/1110695258547591485248314095044
+qmul:13955551844/8914953109146301,65978266931/1477260665198022,38242091460/2633752121605511:460381562366420635382/6584854780113319521064766908311
+qmul:21380540693/46366763004112,4413417248/3293403036539,22792743143/98178838808334:5897577941628254554/9544027379514164158953023
+qmul:54517956885/536986169058356,53087744133/624679940801624,-12768510380/23381528319939:2894235345764805705705/335444488298664683363875570144
+qmul:15631958865/98900123425043,57461678219/38736535635779,10636904565/14357297124671:898238590233274461435/3831048155437119617055413497
+qmul:11306366194/20614966646301,=1,48649167285/72083597787241:127833916512826045636/424976849828102699236982601
+qmul:-38850808449/5270347545016,-80555988964/460100649873,=1:260805441388343496403/202074194209869310181914
+qmul:2473793897/257329894608,35125602539/6570210827640,-58955090604/1845404251483:86893501189425904483/1690711659828941653365120
+qmul:8389450307/94247305842,5879374061/445968667154,46708714783/778418252722:49324716521024286727/42031345369212137713668
+qmul:10005721251/317400686611,11885509039/202069710332,=2:118923090370474887789/64137064802662680764852
+qmul:53843304483/15517809130,-37493619897/27992722981,-69059984171/37850731407:-2018780392284038098251/434385732248122616530
+qmul:4936875434/5558111491,-78071231962/38058507841,11261412306/45256951175:-385427947175313421508/211533429761375700931
+qmul:-51013899132/7547986135,18679893598/8111901153,-1770753005/1840835446:-317644735934954852312/20409505810444837885
+qmul:25767898320/6199052159,24344608263/317305927,55665198980/5479278553:627309390361215818160/1966995991832846393
+qmul:-7303061735/68386022,=1,=1:53334710705221210225/4676648004984484
+qmul:20359304675/219624604,16344153007/211704953,-82591435031/427080722:332755590724330407725/46495616467463612
+qmul:2652747256/1352133,-25367065339/52123374,23447425715/95023951:-33646206485402479892/35238867028371
+qmul:48463976225/65809761,-35504206691/75941530,11794361717/16873414:-49162143684574569185/142791255407838
+qmul:82320116481/5180912,-76359077209/9271893,46566602503/1634915:-2095296043408850793843/16012287235472
+qmul:-730645673/7142476,-70390135745/551403,34012585939/9989481:165370572681565535/12663609948
+qmul:-51855352987/140641,=1,21714825731/757834:2688977633406369822169/19779890881
+qmul:-59100071699/229458,-12541528262/72971,17155877720/17761:370602609749617428569/8371889859
+qmul:19150460726/80285,98656519537/34995,-82017816286/22501:1889317802757170203862/2809573575
+qmul:56611908394/98549,76064158111/38373,31178576993/24120:4306137151046664083734/3781620777
+qmul:-96850333567/5969,-11666596495/4102,39126150628/3881:1129913762132343047665/24484838
+qmul:71357908657/3994,7273127113/380,-93120031916/8579:27315533693694953539/79880
+qmul:5232641313/278,-1351690114/51,-35248603917/754:-1178818255481679947/2363
+qmul:22060731824/219,89417675500/637,-9595385874/103:1972619359530955112000/139503
+qmul:37188356744/5,=1,=2:1382973877319010281536/25
+qmul:12414356869/26,=1,12979259021/2:154116256470887483161/676
+qmul:11782172818,32822292611/2,46218809976/5:193358961912883223899
+qmul:-13859731454,7084622496,13548345935:-98190965247527189184
+qmul:321169783966/82442472722749202597,728527457037/49184101549953208178,-116751888207/19107774656803205945:116990502994936318234371/2027429475212472071101744494655719619133
+qmul:554171781160/81669314174466653821,=1,-943011129301/98221859405082497556:307106363034046930945600/6669876877727739897311710883496653900041
+qmul:908239534764/8881960367460059525,321942265297/2978409748429418777,=2:292400693254215542284908/26454117343606783848277419057572700925
+qmul:-293031348403/5516820790390895330,=1,278931224397/2151761313912895609:85867371146880370650409/30435311633289223066668620559015808900
+qmul:766830499115/867319503385856977,853658890931/417340410748453263,960525534527/690526698684531078:654611673406576077026065/361967477793198051355224772486965951
+qmul:-197174946287/216799088567900459,769225126373/927398327060743836,=1:-151671922975207062127051/201059112046164919860050113345820724
+qmul:349764090584/42391126842026521,126613453358/49564405785108583,47812347985/3864181199117983:44284839369460570981072/2101091012486211034301711750729743
+qmul:794966910230/98579318608567187,107830796401/4405388705587841,856324471442/41561939350641701:85721915042543174082230/434280216802727167073601578773267
+qmul:-179910941947/302835045319248,=1,206545791527/3108222449901933:32367947032256804150809/91709064673510989994239285504
+qmul:390922759353/8379914783143840,539029053922/2783352468162407,377026177321/4659432906395457:105359362565312633416233/11662128247327024341591580811440
+qmul:-30764803124/12561782256971,-539449006376/482535642547081,580743800830/469238701287641:16596042476595060718624/6061507672904022859307951651
+qmul:-569617603186/169437350142461,73746787167/436340763191759,=1:-42007468148734603114062/73932422674350728263711178899
+qmul:869918621105/65172531895443,=1,489477033911/47131389526667:756758407345224551421025/4247458913662535154284166249
+qmul:-8609389849/44096958877799,224885883076/88640280149647,-627519969739/56922930432434:-1936130238937915295524/3908766788675566748905986953
+qmul:471174356951/3605083055021,-674320263703/7196435655733,32653595707/4448011615939:-317722416629289771049553/25943748239031977053085393
+qmul:-321789321980/1418987991609,661459092590/3534157194181,275403065624/8396219756123:-212850472922042142128200/5014926619001395811627229
+qmul:239520095411/796512451093,194140409620/80232450203,352671980162/687407449757:46500529435313022253820/63906145568388595421879
+qmul:2337932296/15976804799,891988698331/936480654559,185442793337/376858000885:2085409185495046197976/14961968615928892428641
+qmul:935302241221/78956895643,-101991808861/3724031317,979935584834/36290437707:-95393167413877147259281/294037952067632851831
+qmul:961545851/11884552,=1,185080005240/12501042413:924570423575314201/141242576240704
+qmul:58050869295/1757344829,=1,11607624876/16788707:3369903425905173797025/3088260848013039241
+qmul:363276341759/9253851473,=1,406409104036/7111288491:131969700481801767214081/85633767084344269729
+qmul:939766494010/411615661,=1,=2:883161063263847365880100/169427452380466921
+qmul:95392761314/73563601,412095417791/369293182,-720870043827/236439997:19655459913964986068687/13583268146334191
+qmul:-283241870542/75087435,=1,-46818914283/44014963:80225957228131087373764/5638122894879225
+qmul:443163826526/66515353,-29122331797/35808847,186565142908/1472243:-12905963996518321847222/2381838098727991
+qmul:-24774947444/1227689,-306928083461/7644000,333533328161/4876266:146233214169883088917/180470283000
+qmul:113920584697/1429782,163887873152/2653059,=2:9335101167111804177472/1896648001569
+qmul:90035464372/14941,-388195481621/80696,941463087781/51880:-1248262873387818796679/43059962
+qmul:67426970975/82846,-112582136156/206687,205395396001/267511:-291964324111311925850/658584277
+qmul:588160655449/37102,68128342139/34512,685450911404/43621:3082339259009843589647/98497248
+qmul:106389170475/11959,10438395803/2811,-17763245232/3457:370177423523630505475/11205583
+qmul:957920630589/1100,-65200663999/4804,-495801128911/3213:-62457061172743590465411/5284400
+qmul:86819672583/656,170251645086/1615,-548605083301/1646:7390596041541820438569/529720
+qmul:945486048523/580,28855850251/335,140898494269/717:940786338985841645837/6700
+qmul:-942729414451/606,-155199725039/485,483080000839/479:146311345908972673138589/293910
+qmul:581542707907/80,200631032151/4,19978821934/5:116675513727268918917957/320
+qmul:122743007281/50,559800662157/65,225369102329/50:68711616751045272165117/3250
+qmul:35327132396,=1,-649864145447/7:1248006283324512700816
+qmul:308054644516/9,-604402431775/8,119532524081/5:-46547244066263391973975/18
+qmul:3861743183656/92552781226942245973,=1,114427276291/73077495457803798401:14913060416513578545526336/8566017312842233033877184833269634716729
+qmul:5469306927311/39880346228597657723,5296888632971/77121945726781675037,-3329987784143/28763591448200709046:28970309693503183254970981/3075649897407170819117742626456739360751
+qmul:-4797915047085/1960347615737482622,7417719670675/7273127653602457926,=2:-11863196274329991106244125/4752619484897976601830464968970387324
+qmul:1723762402189/606999775863219192,-7434692936637/9420435145331634673,-763069528725/1760517742915668356:-4271881385331661962366131/1906067340583431653778258276488748072
+qmul:1247346376719/305242807686295279,-8174066739160/92487214707299057,864841572942/954533768467866835:-10195892530150517269616040/28231057092341186368611708660251903
+qmul:8115256720883/749493161740626651,7922190030123/83578659421247020,7349631862907/82560331952121241:21430201962022657324386203/20880544567891147401285999555443340
+qmul:1753584378376/56804157255787803,213889152627/40140349321665607,5387174104820/22251532318661783:41674741861198575821528/253348746130016489574409435021269
+qmul:3381018621303/55670925159235316,-1242546983419/8405146979568516,2994898998212/76089681788376449:-200051166132548046722617/22282014688187220091206580424336
+qmul:7888297086927/3953740879862848,2176178614605/2418237546542311,-2065888373875/9727383036996952:17166343426221456116768835/9561084644983571534390308961728
+qmul:1741311395143/229412472933092,2666488500577/3024227444254530,9874403395326/1841428086863885:4643186811072502030497511/693795496698556358912507906760
+qmul:6845501734987/168012430428203,3889846647591/491851863425965,-3888780746586/199780562527063:26627951974917556063966317/82637226984836948219538490895
+qmul:-1284195095943/549849541303853,161668973970/13553314165481,-1448576168827/183855043551637:-29659214791201502800530/1064611939576677294763556899
+qmul:-980146856483/7876738616913,817692682927/16494848113266,-6731998495411/30165003479004:-801458912740049493365741/129925607113876840407267858
+qmul:369161816291/12273827592821,4261359385017/20241923902166,1173948411280/40404643959651:1573131170441574491911947/248445884122187978887950286
+qmul:621724265513/2926458480357,5890921582229/3168077061735,=2:3662528893906004858368477/9271245983738877773839395
+qmul:4707387599849/1922231158856,-798328469963/4676681253515,5101926004665/1755468911768:-3758041540110251059835587/8989662425544269173378840
+qmul:9303566596976/14895662221,171128850459/80855092303,=2:1592108656909253425611984/1204390143793264984963
+qmul:-1614421541843/173435332903,8142990982280/901238217503,804529656112/153754860089:-1878031436689446098791720/22329507182505589485887
+qmul:-5960114035004/31883313095,1873973661895/29899945043,6761957056543/92101155065:-2233819344697646018194516/190661861865852447617
+qmul:258875168272/22951320927,3271990041276/1787602169,7831605696304/53881261029:282345657506544241865024/13675943690173430221
+qmul:-3741159259/841057,1140691661765/3674903711,117686209034/892146331:-4267509172076226032135/3090803490462527
+qmul:20024244473/524834174,-9933799893095/4311996268,1282763801711/933012946:-198916837605195544613935/2263082999606862632
+qmul:9690216301431/721938703,=1,6855538744648/1038547:93900291968519089052647761/521195490889322209
+qmul:9772645191158/606342281,4046423002077/832945094,-9924558382428/71076263:19772128146319455948017583/252524914121859707
+qmul:159522763697/46674038,=1,-924733338517/15943657:25447512137528901107809/2178465823225444
+qmul:9885845356901/75377901,=1,5061603222137/99444337:97729938420561060068323801/5681827959165801
+qmul:-3014509110363/533159,-6677531265927/3294029,=1:20129478835870717944501501/1756241207611
+qmul:278495797709/459094,3008292413757/8715826,=1:837796795511188800682713/4001383421644
+qmul:9263458041541/380854,-749140991886/18803,9474188106647/58449:-18166586768414575214493/18746591
+qmul:-6233175654833/507607,7036736213809/354450,815399146191/197662:-43861212857395998672188897/179921301150
+qmul:759911289647/22797,-4620304106965/4804,581754997430/2403:-3511021252485103785091355/109516788
+qmul:5617203937033/39335,3723507511221/6193,2744191857630/46241:20915701051602548624947293/243601655
+qmul:6420686828307/451,=1,-1838097053444/3113:41225219347195003296486249/203401
+qmul:-230435506159/3050,3395048403224/1759,-7515243692907/841:-391169848615613583728308/2682475
+qmul:9537534272745/521,8952214414132/843,5712074011478/809:28460683930581916956810780/146401
+qmul:-7519755017367/994,-1817484841018/15,5714574669259/496:325405732196037376760943/355
+qmul:-6778271913655/47,1098941771956/15,59404867523/3:-1489785229518322546491836/141
+qmul:-2383271627938/37,=1,-1307389832067/19:5679983652534244702131844/1369
+qmul:6051325942003/3,-2529633865827/2,819845568100:-5102546345349420428543827/2
+qmul:193126426699/2,9833682493639/8,3235704083583/5:1899143961289011867267661/16
+qmul:92112640764600/11163413455400457479,51791476178419/14329005607185776493,-13205225377669/4458612884103206586:1590216546630349267393055800/53320204665922099816203131218014747049
+qmul:22529406302098/17968547726331516709,90921027222753/2166236440992021142,=2:1024198381852757628328617897/19462061438241829125530785318127130839
+qmul:-53737977727933/7683225139372625170,82909671587883/8352188215577205409,=2:-4455398085219896100673435839/64171742466694571547497029664653544530
+qmul:9092501686631/9417724412639248549,-76436516279586/7751295678592549727,5796309029559/364193213335723936:-694999153192333594154414766/72999566541866165880702093299195096123
+qmul:3136955253055/79379115811095793,2712229195967/40950870811518088,74321528780980/800208315081442781:8508141623777819670429185/3250643916712716666840937120203784
+qmul:-15679427832242/304946032535805217,39088311244217/271842618581639769,-44522979753228/676520091746633939:-612882355237913950168644514/82897328010615208848930336644874873
+qmul:58297984629025/79211523461014146,62851948787804/71793418809815961,70122280069093/70263603402410591:1832070972167832036692205550/2843433039200075640773122338792153
+qmul:3395759457623/8856655409516280,80356132877828/35186041698707317,16595221216126/25184750109463717:68217524549473731850570711/77907661637580389256034066655190
+qmul:25595373885269/2107431405075994,56934769844557/4108548181624632,88071750654219/1721697405597152:1457266721243175200282130833/8658483467223618408882342284208
+qmul:5741950765088/69374989603141,-20852939430084/837468342763903,71732839501654/4900087435552233:-119736551514904546484107392/58099357572205493945030219323
+qmul:60636029091157/828828822290712,15933414624847/515795094226125,=1:966138992713689089520177979/427505840490766008807415251000
+qmul:68154525908584/447018537159783,-53054791972077/814484661933752,-70920570409331/22166122764311:-150663508084810679482608707/15170405921529425529107695659
+qmul:3803110014020/54088464597551,8401206536763/81355553929736,20928341840506/38139684449589:7987678177453412143854315/1100099249635669192942919134
+qmul:-23763903446216/81519641545907,=1,88937586611085/34349668275946:564723107001076681204718656/6645451957773166616788452649
+qmul:46601565963875/3780648692562,-40570846513055/430918579048,82143257528821/7547555659366:-1890664979988380613845888125/1629151762478496046640976
+qmul:-14254006674106/532459447725,51813993717043/1845962555644,5112664309595/4080729032211:-369278506127408636439494279/491450101449616910854950
+qmul:18869803536517/528732466966,25637726635604/291934133291,-45103838882314/248345183985:241889432368388223683175634/77177527243265749182553
+qmul:14394788665063/18929691934,7293379245648/106206553763,-1412717946745/2868209191:1418738552638642755032376/27168342487910789833
+qmul:19814466847315/45927017182,31387249087211/83776988054,866410007468/44667970667:621921606466960354656188465/3847627169812266743828
+qmul:-84789189148688/68506660259,-2668232889482/7021853339,31544016021473/26570873119:226237303159039621969299616/481043721083397754801
+qmul:47144909009231/2853410746,-18254711672997/1611442139,47906136756089/4532570474:-860616720813190565726435307/4598106315979825694
+qmul:-88984055558977/5497567684,-29028728538235/9008297936,22366306780529/477338571:2583093993052764435041985595/49523727620797500224
+qmul:-22301781837379/314747366,-55932418652881/999474189,6168064682011/82717920:1247392598433499880191838899/314581868372736174
+qmul:-69455755003925/425627363,69330030826593/45004450,36456142539195/445137553:-192614785420256450548375101/766205015070614
+qmul:43441277702263/29813565,11503955305028/11366299,=2:977977528532569481665124/663150477585
+qmul:-63910040173409/12354709,-70800414587599/73292555,34497242288193/35625551:4524857340587464687180954991/905508188891495
+qmul:-7828296754760/3568223,-2036289302690/840627,7170972735213/4627145:15940676940000630338304400/2999544595821
+qmul:21326380201837/9337727,-17663536047163/4880532,26768558322470/1065127:-376699285450651185091238431/45573075430764
+qmul:73980502263403/962358,-21947232844793/591723,21986948107511/9185:-1623667309149641199103010579/569449362834
+qmul:11206027962511/331874,-1256483151365/547727,36460011888012/776539:-14080185328620131358477515/181776350398
+qmul:24401059998574/37451,=1,-59473261910475/49718:595411729054008176882033476/1402577401
+qmul:-60818257728179/86203,31465212303166/90637,6184562112579/9476:-1913659391325818531369114714/7813181311
+qmul:71004965949889/9037,7059443197743/235,3055009450153/4139:501255523880917233655900527/2123695
+qmul:39294675031972/2789,59869119724423/5716,9542643866131/1571:588134401005356710838563039/3985481
+qmul:-41787574848379/366,64572657701526/571,-32471089957981/546:-449722461143545734347821059/34831
+qmul:56523234971544/89,91170129020768/233,58883776410491/503:5153230625026852353065025792/20737
+qmul:22661601391845/32,=1,9300929081980/9:513548177642871241232504025/1024
+qmul:31371000692905/28,78617790969393/17,23430144401503/6:2466318774975488254647256665/476
+qmul:-97166077882733/5,557907250924,-67696293193377/8:-54209659394622846477895292/5
+qmul:49131886852510/3,44123944198873/3,=1:2167892633865493233459221230/9
+qmul:11078630778023/19971767689676985138,5498810148139/653213547400621899,-28047430739573/8529087351247312093:5538117031788903405049927/1185984474585002385862227360780030642
+qmul:225961652216941/7065181247481573942,-551303465095893/52284679786625043776,12334914241622/807684136438179561:-41524480615330881905534707771/123133579719680720019267336626376961664
+qmul:-140752952779551/667166575947606995,=1,=2:19811393716162513576803761601/445111240061654052498343266972930025
+qmul:97203673992431/3238422544888880032,=1,810591359275652/4195094984894633475:9448554237626806783045289761/10487380579244570205870590527288321024
+qmul:-167516702376095/716105586249718324,97868227848619/242920547738562082,=2:-16394562796592961287264362805/173956761250425686574425765286990568
+qmul:-709927885497849/861328058843025997,496445275118167/289296738986245691,-290819441307632/13291786866431071:-352440344430038207159099322783/249179398620640561552626620942228927
+qmul:425323787423127/77722671910833479,317441925005700/19142048058380233,=2:135015601830312569987786823900/1487771120942893870562005728220607
+qmul:268865886927957/35135976545503325,123771762953727/25295982530865037,276904755282677/20891637935797169:33278004823190660692373645739/888799048899935778999904809748025
+qmul:-28086740887571/7601230497184463,100947908107803/430543690291880,118463785601217/2540243084118529:-2835297738166190579370816513/3272661829016980468206671060440
+qmul:-103171508624837/2023211396120145,142320636082678/1434318582636373,-735609507967093/4547494153253362:-14683434733096301226416273486/2901929702056803783817555034085
+qmul:-220041868728731/487356763210567,11401923921896/63654265331715,-621742292531267/238183796053545:-2508900646876817363255193976/31022336716611231326648232405
+qmul:500876116381607/333341742549014,=1,236931212585485/143461697112113:250876883961521120142447902449/111116717325613130586192372196
+qmul:27571394309122/1874139359093,126354562695342/663284435945,=1:3483771470829951376257509724/1243087467678324311797885
+qmul:1227588316119/3212397849532,273285780765847/3937050058645,177000179976745/33792263075573:30498402857237483359526163/1149761012899184771436740
+qmul:935605828517486/1504497672649,142177975023733/2313039446120,394962145699157/847510134854:66511271059509072349527747619/1739981231716436016585940
+qmul:848730874297608/1142939979439,56376353318381/3143925208632,-237516636617763/1280813501326:1993681318400848339723780527/149721575554650494388227
+qmul:57281039318273/114674810495,6245708686714/18061176617,39223096410155/17868534091:384275708758478900851262/2224663808669387965
+qmul:-154031591323851/83034647227,983277618862577/807648489169,313967727668057/230581524944:-151455816346529785816271424027/67062807381567445384363
+qmul:-926888573138874/48704635267,6005840682571/273079429,81726441309104/13903294547:-5566745100767635280134365054/13300233988365622543
+qmul:169804184361113/49086554885,384285590061633/44857652581,=1:65253301182144623556398477529/2201907625429518408185
+qmul:-225793750988921/2498217360,=1,171352487415765/2208376327:50982817985646863065464744241/6241089977805369600
+qmul:-929534096793899/9204730148,8408973696/70382485,=1:-1954106942368753656070176/161962945392664445
+qmul:-27418637405473/910326852,=1,81707725335094/491085905:751781677172803165010353729/828694977472229904
+qmul:-223297515785450/193612253,-474964608127809/679335356,=2:53029208540474751774311289525/65763824408858534
+qmul:3933126433661/878772,9000930134181/1427513,476332935917525/79251326:11800598746094380908355547/418152818012
+qmul:703078612387607/27834381,373006385325321/46624543,=2:87417603935414581043747898949/432588431270961
+qmul:28193205330738/1040371,26659473685633/1938099,=1:250538671876152577201295718/672113998243
+qmul:449065926671750/1450887,=1,153785599009868/2460537:201660206497557548032248062500/2105073086769
+qmul:108938909775878/133591,917154127926373/709564,=1:49956885396372608707157715247/47395682162
+qmul:987814971089463/782828,=1,930147796775719/981962:975778417108476622509149628369/612819677584
+qmul:175113052851196/12305,-227591234473631/6533,64742021370129/15710:-39854195870849886350828812676/80388565
+qmul:-161174581471221/66310,=1,=1:25977245712423255688851230841/4397016100
+qmul:-1469325465654/4457,=1,582669979881900/2099:2158917324019343933647716/19864849
+qmul:102435434692175/7466,-187593100206263/1358,174025094651948/1265:-19216180764881294058412092025/10138828
+qmul:489625099725000/347,-332985825161621/684,=2:-13586518154314174697304518750/19779
+qmul:-832879871119661/546,=1,817644952915049/828:693688879716303117501780754921/298116
+qmul:810059612480081/97,-378237813607713/41,=1:-306395176716377100781960464753/3977
+qmul:-534858850780477/21,-597970346506983/25,=1:106609910777842848826760190297/175
+qmul:950469485177429/4,=1,423712356772633/4:903392242253446925539611050041/16
+qmul:463433346779246,599836163536496/3,225455874511593/2:277984080786941465486776362016/3
+qmul:2132350013169985/49772441764072596049,-6499905025666569/10288915167781867756,-272858606518027/93421129408183888508:-13860072567083760096603328731465/512104431003906236530336497276926096044
+qmul:2042725727410133/27578306884656676115,=1,-7376907052537410/47153921627935428199:4172728397423256990351591077689/760563010624301820302156974840011493225
+qmul:1904035906025563/789989122373815219,700724530060177/1554126856272208244,-1373172495932670/1505401488389199241:1334204665467465969877290304651/1227743311244058254809898816344465436
+qmul:6705450642041083/4046641113087645351,236666376333371/9320552548004534960,-6289242797407739/4040540787026624125:1586954705134139142713085880793/37716931137448960379165612296160970960
+qmul:-5772878945452494/146823071716041731,=1,-1872446183124785/135874056483712011:33326131318848699195882410820036/21557014388133933331867562533476361
+qmul:3589764099796053/928994578492406984,1705996612666706/892580995601505897,4870605263289071/654751374199986585:1020687565754102262148510551903/138200484296525657161313541766664108
+qmul:2824552679707636/22642111815107669,8553369491681540/46601368890320207,-8526667827191440/6342142386526223:24159442718258634195461218239440/1055153405151710120834997591367483
+qmul:35430767900375/179014168662113,8330204183383419/90063013345106792,735637729618171/16696810462910716:295145530984190781866218882125/16122555461179081195997749371496
+qmul:-749012909078762/116545251178673,2437513877538073/992308910607094,-4884979809735527/4653837505135631:-912864680167322642003505352813/57824445616769571297747653131
+qmul:4715463621576807/1060495506862783,-1063435887535687/201313562930691,8544123110589389/5820955775073193:-1671531080517925550574808003803/71164042986178638246892124351
+qmul:8571923230143950/770828515798001,731727930435031/3506899807300,-1965908269773871/252650249852419:125446312900823969405125054249/54064367470267094252504146
+qmul:9586220341682297/144114066713962,8236658921505002/167483669474359,492069171252854/82950316475131:39479213650415110088905890174797/12068376358063466929473150179
+qmul:7229812835375017/5756294662713,905126544819761/4153935003623,-5202620176105898/3258193118931:6543895511376548680891107310937/23911273890611781218009199
+qmul:9842204333944723/52899600131954,1723939662409201/39238775342850,4378255309793533/73130188348848:16967366416823040750958140596323/2075715525304341221590428900
+qmul:-4908316732166843/1357513064850,1991070604269898/8806978369757,4254810663841145/2351480888682:-4886402580931743595080769296007/5977794099398240809870725
+qmul:274318025224231/1931992361708,-3590098558074758/5846677514951,57908255856314/1134380359933:-492414373405713403344305530549/5647868150127621484948154
+qmul:735894125946707/55761889279,3377584488978728/61428633213,=1:2485544585328156063980584648696/3425376643783608023427
+qmul:-1690249237930933/34238968152,3446531515472379/225376230292,-428431726758614/563113867237:-66959738707265887616299668961/88697121507880524832
+qmul:-1626151698227417/13809511809,3803324818338850/20014571999,8945616470363923/70396608712:-6184783112252203187079466250450/276391468372271236191
+qmul:2032027608247493/71600869449,1568676792624142/1225766355,6648151008356102/92054212485:3187594551029383836749262776006/87765936759331588395
+qmul:8570254081381348/584635199,833484957898327/779308020,=2:1785794465549524494136774551199/113902724838748995
+qmul:-51136063956207/124926985,237718332836713/43997825,=1:-12155979871501058567713827591/5496515623807625
+qmul:7279740565485383/495827506,380399580451240/42684993,-8253225185096257/179789767:1384605128452256161054382112460/10582196811408729
+qmul:-3582542718233341/437814906,8075748423185005/259890457,473970333141547/96599174:-28931713707765825242358002251705/113783916001752042
+qmul:-4332079095957017/44663887,=1,-2662542824998505/6313513:18766909293627765704435111538289/1994862801948769
+qmul:3371800081330173/11806858,=1,9890158011622886/66900743:11369035788458161257397040209929/139401895832164
+qmul:-3682944955162964/2466265,-355431368138229/155860,-9055791203817172/8090387:327258541047840188915493337689/96098015725
+qmul:7504952243792624/7720459,=1,6076575545940466/7559395:56324308181607941582939516805376/59605487170681
+qmul:-538608400556109/199304,-938340266223845/397242,-646694290244130/361681:168465983322739554802492073035/26390639856
+qmul:-727793735158436/238619,=1,972430738127054/625301:529683720935867681422021966096/56939027161
+qmul:6931913813817249/19931,=1,=2:48051429122190398233188769928001/397244761
+qmul:6291923102424872/90007,5686581845796881/19366,5042254583042820/677:17889767844699633282716137212116/871537781
+qmul:-5554695053757275/6432,6945167426101948/8185,5702999642802475/2694:-1928914357464231764593229833585/2632296
+qmul:2346204224991933/394,1993188578793011/992,5657592821492399/465:4676427464769828756406351780263/390848
+qmul:10931191773819/59,9918357253026368/565,-1883501998767878/147:108419465214079847823899059392/33335
+qmul:5137390097848632/355,2441231132619748/159,3483872315060623/865:4180518882426831300124305994912/18815
+qmul:998295698183777/66,-66459889053732/5,-7667707076954093/93:-11057770224018624245927284294/55
+qmul:1731949876588457/12,7146744265770853/16,277946983627531/22:12377802849111091588166946843821/192
+qmul:4833330269678962/7,=1,=2:23361081495794907533662545397444/49
+qmul:4819457078692447/9,=1,-8437238110144547/7:23227166533358735275059214847809/81
+qmul:41244630307260683/19566167985724232189,-19443176533044379/82985325719207603055,-72237473765794569/82811331956111155429:-801926628104221886667557960850857/1623704823372057546563828915880965737395
+qmul:-37802618179190435/86632766813453833079,18052713986379148/47810592068654841423,7865481647337074/9519629220475921943:-682439853925221807159327605049380/4141963873896940191789582700970256831417
+qmul:19604614792857791/565916848676700071,25954734261578645/2626241461504040026,=2:508832567249237638495290647473195/1486234291758457454242685700381041846
+qmul:-50232902667050876/443948998116187511,-43501226416110749/2403446154007360893,1072605872716961/3220822759958359344:2185192872457833663604613633466124/1067007512097771979528373151836407323
+qmul:-14994187874938337/764476959662103704,-33213154437024890/559246869916170493,-82827329689594088/466257548265395579:249002138774046516984579242103965/213765673407031013718036719955403036
+qmul:5736891872168725/77162101379651687,62325478498146677/137153821651647001,-18320014200167058/208017523087093295:357554531025044304704709142076825/10583077090891052476054011258140687
+qmul:88925222453111571/10971132513398300,-1434252874823377/1536739410012178,-23821379824785146/29460096443622911:-127541255947683583837180699995267/16859771705805127088751164497400
+qmul:24175746316538219/53267154590314585,45382600351882515/10887587811518971,=1:219431646658389958690970919068157/115990164614361176557282717098407
+qmul:6404581190281274/1974919158789793,70447714998202471/6402341997956028,49530122164311697/8312624539331270:225594055187891770083262445914027/6322053936443940716188054611102
+qmul:92136543904285079/3155539462802804,15181471002529652/4087143424836463,25144211605663718/418936831080179:15204002929958740164475777811549/140186330078331141119949106981
+qmul:-97970673283608013/593909853478849,56972616762762010/241259986786383,19037324141894916/620131018874825:-5581645622976766094030156047986130/143286683402609773344371713167
+qmul:73158390938899175/379989099030207,71464686184078751/642455545049147,12129094284454088/244856744399541:5228241450180579956236327448930425/244126103730185933897852583429
+qmul:1586267657723262/7744841531795,15363089519026552/9850991413231,-22902559865915557/6801969550956:24369972026739044413538846052624/76294367426547369870179645
+qmul:18929755299266541/13128569349373,=1,-44651987164496438/25396774874437:358335635690109691215372562104681/172359333161296196535493129
+qmul:80561540824410061/2163952339904,=1,2086973582459110/2490108327963:6490161860003088890959828678023721/4682689729375996750729216
+qmul:78697609896523577/5434699087585,65526206295867334/2106565485155,456371042378372/32324922977:5156755821071294622615308595133718/11448549520109931362300675
+qmul:-47473161024846652/621907871141,-96761692332772358/887316304237,-65934541786023949/449412506848:4593583401150371824007100974445416/551828993796732548324417
+qmul:-14783030669421870/467861289269,=1,-23413922007662121/167402876249:218537995773067621857840034296900/218894185996450894554361
+qmul:63487097677098051/89903303933,-44532336344734228/31521473625,40321416288169527/20383337494:-942409595769175172584041963929876/944628207908139422375
+qmul:74416958364864933/47087590129,-26664478457249131/9883383278,9944734731289232/14129955379:-1984289383173946522947645546623223/465384700882276462862
+qmul:10292005168487623/3482492353,-13044085486904942/9174614883,-10587235554824230/4781845077:-618662650918986430811618914898/147237447796163547
+qmul:-6144278338130361/94748822,=1,4769179777732015/4767529558:37752156296417990780857029990321/8977339270387684
+qmul:42358656711205552/153537321,1887261908080343/399926027,=2:79941879288510016603861603664336/61403570783753667
+qmul:-46666950687843206/336186639,38668781410567001/444012970,=1:-53075121036644655437487007224859/4390330236961995
+qmul:37185667641742945/20035026,-22282077470907101/78670922,-91228561955942315/41271552:-828573927200719662619441817152445/1576173967713972
+qmul:42236447866339404/44996449,16229676747835589/11939847,15179360621924853/92208979:228494631949166233448275154749652/179083572201101
+qmul:14470604449517903/1841454,-26915603513076747/6747551,-30708091604466747/2448316:-43276116884198675180320043277949/1380589419906
+qmul:9101509000956136/4152121,20427468979289790/3465161,-3271799016139078/320637:185920792781758275773092222651440/14387767756481
+qmul:3901016944389149/228999,-12417812802023553/360344,12000955177317426/2675:-16147366050982125724725565208799/27506138552
+qmul:8669125566587600/469719,45940493589390645/423401,-42531240992326551/367483:132754635839146726987952004334000/66293164773
+qmul:5938430877112711/95612,6188074245922706/6253,=2:18373725585926676351062678057983/298930918
+qmul:21515481020492051/20064,43874545790741615/95584,=1:943981957243410623387527502402365/1917797376
+qmul:96468586146884551/4608,-79928708129965834/6685,-48993051068173945/9779:-3855304732922400319985402586215267/15402240
+qmul:-75478054000012419/5456,26589933777011524/3359,-72036212797226203/9505:-501739114369507496870468176529139/4581676
+qmul:-72899856135461282/473,5291266619094049/285,55496817136408/17:-35066597755120434743929959646438/12255
+qmul:41749939409527385/879,1093119177525389/32,-62509807806005818/473:45637659429077399966594328277765/28128
+qmul:32236549357972163/25,=1,-8149826384158677/14:1039195114508975474515043482898569/625
+qmul:24629347956178358/19,54301261705267425/23,24457116479256857/3:1337404668998534392792361387388150/437
+qmul:2790015469580797/2,17009277246386333/5,38190184436799791/6:47456146643806530617054620047401/10
+qmul:24781556873646101,42986775647721679/2,81575207729973183/7:1065279225528679999746318391523579/2
+qmul:515152885774965653/15080197507802975795,=1,-424832628935135224/94106513082678027465:265382495722274809438289573329716409/227412356874347082213525456257355882025
+qmul:846127691843273154/45393076460118791167,107731662129978485/4427725736529596013,856145822802565237/90388573766016577258:30384914205492685300912483332697230/66996030967574580526139479740140939057
+qmul:678813466845095843/4312328116586154098,456413709574125389/4100698962952630264,=2:309819772511642767874990940604657927/17683559435596311365398737033122421872
+qmul:189404516219742695/1881568644309026479,-990060962742696423/9938184412328540522,684558164600705533/1843391051573289937:-187522017676333112700620971556879985/18699376171598111009073165236722482038
+qmul:192924629174279610/915194634829559941,-505412960023216745/330833788805155829,115339652249094077/577677115897920453:-97506607892354095477504410264069450/302777308534814344556633116001046089
+qmul:530864983303082949/770272174330693891,=1,=1:281817630497382538228809007974536601/593319222548134880807536517544719881
+qmul:175427266863787420/37379184998319363,-737495252249552281/10171255350907481,433186573015158365/49314816010026687:-129376776427158427582783706960105020/380193235426716462103801903854603
+qmul:463395468161836969/36199229685681434,-381172902361185896/73861948752008031,951086817685754053/44721463664985715:-88316897770133955247493298327094612/1336872823952984931159738037798227
+qmul:388421361132459241/3796589587440279,-520242627647240191/4183488460948680,=2:-202073349549868206476119002444555031/15882988730014316745493183881720
+qmul:255643017739843159/5399110517536783,649866517463532383/2945752280295836,613430013767040536/234544931788503:166133837652459903075867976537517897/15904442118603209765181251735588
+qmul:155181948901437661/35620018080307,17101221587255570/264465563715517,-129836961434774282/466340126852825:2653800894505656514308728430021770/9420268161165298444608023719
+qmul:-839143559403582175/463688071748743,=1,-142780189059606272/172165382315553:704161913288513246519800221977730625/215006627882067436250122080049
+qmul:346621266229749718/59475689434557,=1,178397168700747228/42081103836349:120146302202715032285390908921079524/3537357633715875158385786249
+qmul:-375320695921875535/16168337083266,911110281599467718/34637020854445,777071986002999094/76066266020689:-34195854495148821384333396824647913/56002302873478088643121737
+qmul:-379308371310412479/968244496075,364865258770202694/8926182578765,249116584254479273/678952630517:-138396447051877776676786583577018426/8642727152849761420847375
+qmul:-10969933869374653/142543298333,=1,395828837569758458/4480744606673:120339449098453146428785278870409/20318591899650640578889
+qmul:357124791031669775/761802845389,917629329624700777/456858033563,774468512475077245/2887603961:327708182586752487826277715049915175/348035749907116661791007
+qmul:64954492028958167/95392360685,985096782515221787/715883047223,-29344192999567326/73661198051:63986461107637310581155676549984429/68289773848973303627755
+qmul:23618182683258131/18112927883,442655807275151908/16356517261,=2:10454725722029641395907751401163948/296264417565537688463
+qmul:732585647194345626/45048543997,=1,16467867097466398/1145670835:536681730475158241367430266345331876/2029371316249644736009
+qmul:157646812856286773/2982936935,123752181092126225/1627719293,-433800406988365539/1824179539:3901827386637546694386616182784385/971076799780357391
+qmul:18335836145139783/1476948589,=1,100294147058610519/4053918910:336202887141414537392732609287089/2181377134549090921
+qmul:-500900480985214557/585315200,=1,822543455056953279/726431948:250901291851219289979222443324706249/342593883351040000
+qmul:5430413424253854/29413111,737754500982617905/865566667,-431507384954955136/126635381:4006311945939711393067198205655870/25459008454371037
+qmul:69732083733340845/57018307,-850680479702859385/88346816,101371097024811051/77572577:-59319722440958347782449205312080325/5037385877160512
+qmul:935028252174165503/84545212,137808471873317260/91516351,=2:32213703647625121220176793216620445/1934317324190353
+qmul:350565565504682243/9619524,=1,=1:122896215717617656580228756399511049/92535241986576
+qmul:-470988077361736572/2840381,624215376275621564/9300947,748400046271858043/8643413:-293997999931687952811725899730638608/26418233140807
+qmul:238657877711036557/147228,760003504393876182/402581,40545524725498725/11806:30230137235265489411523617722264229/9878532578
+qmul:129309397398813154/103143,99499262875055329/104050,2865516124888405/1398:6433094861999752891251268341498833/5366014575
+qmul:576594622826994119/24550,764054211007945383/64450,196951790705325699/2321:440549549615502846208286120014202577/1582247500
+qmul:34307832224344795/5419,755936660033161242/53857,=2:25934548104649265347571596038435390/291851083
+qmul:-28093068552310343/6519,963611383601696677/3318,306035391422838526/3427:-27070800657309083458092703055830211/21630042
+qmul:144703609571824207/1943,353612545017871990/3809,419690158507626277/2547:51169011653965259593108361509261930/7400887
+qmul:533530159200500829/854,84950875994057867/97,561763750303203654/161:45323854393331697896795654407471743/82838
+qmul:786023983959036523/653,=1,35801962841884787/949:617833703358835705221613270447929529/426409
+qmul:977510365280960078/55,232111556352335897/28,846828806350115358/59:113445726117952006128263047051659983/770
+qmul:575356062531111409/48,127909051677869039/2,331562163778887361/52:73593248335467179491251257420765951/96
+qmul:223865459457586997/2,-255265991273068741/5,785308709687044221/4:-57145238420241926425388851168760777/10
+qmul:-89489266878597587/4,408356339430510509/2,320811062710131617/2:-36543509440864137915495881385541783/8
+qmul:6960121193016437767/41673724634003604035,=1,6854483270886536984/32457251506686121265:48443287021476560949924862262183946289/1736699324870758821080322609369068281225
+qmul:252294933101143378/671664801173160007,101031884553475048/1683990887624654527,6217560315186323017/75520308794957242947:25489832554501428241776271993432144/1131077404713826819460225518267901689
+qmul:95022283125541691/1892238412758904932,6220850886629533101/1296487687523964914,-3552806481592836635/292967787422034901:197039818077029516749136819680004597/817754601333936827050096136476518616
+qmul:-9650628580381886023/7106748638657239958,4387498480617035975/5131806125901481009,=2:-42342118233424867760904547954540677425/36470456199103234725545247832492957622
+qmul:933857454927346529/770907817024018505,2627554012834724721/741765905423985850,939220528406657553/251830131719517146:2453760903109972444306223754689843409/571833134893249499170644981258154250
+qmul:5863194086945812212/700078829279068399,9185022137361371361/111682660170098792,=2:13463391871060894578417924384075215133/19546666495663701071851276388818502
+qmul:-1393200667079143151/45785790746761243,-6119736754307708291/97236710970831949,=1:8526021328450249564289054954738564941/4452059701413814892014912979352607
+qmul:3607026924237321910/1072023164691893,248422707771439167/17526050077246094,942295846706978669/71124490430949583:448033697761760632546411047280624485/9394165834178976731308723857971
+qmul:2219105460493025188/4992146804272097,-654894851214548365/261880809182257,=1:-1453280740378971565345857635989217620/1307347444659395118592692582929
+qmul:5112830206310124118/4808519639244359,3895059152513717718/2399893258942939,2005821980379451972/672164805197423:19914776090336848562178934098195722724/11539933867717270078741058631101
+qmul:4465488275906636401/885680900323781,-1104529468377254183/50717559226303,-1531096850412298649/70636195562356:-4932263391432018452889201367737315383/44919573517776726756551611643
+qmul:5805379505512562993/802580360628120,7576393837591505509/381671212464334,827391747551350507/404055288015098:43983841510445403745585851020069028437/306321819340996990853337472080
+qmul:1568069089872115495/10344068691049,6482258105462122875/51585142886372,983293776583976867/13619011887634:10164628567748134676970172369881448125/533600261454209647780484228
+qmul:5123357244469621862/61996475985149,784192904118738215/19232930497666,7315968239528825344/72839297342337:105728957799431815835771283411022535/31378260887436578268293743
+qmul:310186678678899798/454385367511,496289849974746528/1664255858611,4370884482132758378/6990813743219:153942500225716088309659706960401344/756213509947294088987221
+qmul:6896960984221904702/8037366999007,=1,1507716158461831143/4162951083794:47568070817879184399769535232769708804/64599268276726789138986049
+qmul:4124205900530951507/699562645532,2446863765306479999/780453290054,2180063751257648537/428993105150:593609998745433301395350821902024029/32116233429666446066984
+qmul:1901990540997243863/309938083197,1828919653744696177/128932373995,=1:3478587881666366604445148811312811751/39961052858049029262015
+qmul:9909007556102284175/35699264171,=1,2257564478754303350/23996542561:98188430746892162461878914652455430625/1274437462350844317241
+qmul:7540576467990933273/59047654891,-667411621026349909/24648144492,49933771491922816/70442999897:-1677556121324992297591622679189540719/485138376555706170124
+qmul:7181294574913207518/3819238427,-5066099946607930227/3123415729,-1161733643221201723/183317684:-5197308008934802800386778397102263798/1704152767956145469
+qmul:-8059696125757072209/4595320696,6578165258606498110/3168033531,=1:-8836335508230093636747850255982004165/2426355008437709596
+qmul:1945331074426594741/151710177,23896636516777288/9647063,-8779812176082283037/763148559:46486869590364160149493061329042408/1463557635260151
+qmul:-3667612169703754992/456403523,-7174409726077474195/172294113,3512697218966135831/927221535:21444948999024227916663287692324720/64087726296137
+qmul:2801308578321040429/7008589,40646058755682747/3928091,2242284013880005543/86049101:113862153067235113557787361284778463/27530375373599
+qmul:7755272402005383603/37065862,7920705443805205865/32575293,-9791686678342842374/5250627:20475742777585438947450807922570143865/402477104982522
+qmul:-1833317998287765958/869351,2549513447231770664/4194999,=1:-4674068889686691615296143605162256112/3646926575649
+qmul:-9862573495076415071/3231099,-1012500145079952918/2881015,=2:3328619031542189525129501104301875726/3102948228495
+qmul:1848318375383620325/62739,2496061735601929291/71058,-3577860376337084987/826120:4613516772004977608237698310240439575/4458107862
+qmul:3935629218278546095/380289,272948451544220369/89992,728063154313892053/11066:1074223900981319628581080745604409055/34222967688
+qmul:1383092141504746774/6843,9725813952719193095/86512,9563731803386892083/450:6725848423871567383357583818792162765/296000808
+qmul:4310844810185467807/68701,5335008431625026234/79247,4165066621321185249/74158:22998393409766456521092748601937448838/5444348147
+qmul:-1231083168271826293/1767,2942557339085135869/5628,9747542072617181491/4658:-3622532811822443740742409486671603617/9944676
+qmul:2563045864459171017/1901,=1,=1:6569204103321259248191885398852814289/3613801
+qmul:3519211776742706458/741,3845395982348454948/319,-5561268787397081165/773:4510920942439923739354839714733884728/78793
+qmul:8737995292054242122/619,5446863961283262201/940,7037490695241026988/493:23797335825076532425122443838432315261/290930
+qmul:-6758789406646036953/11,3116671878311801932/31,40838395516557640/7:-21064928875125413266537275696088793196/341
+qmul:-2984260832879482631/3,-2187683625033562767/25,4114578793904862147/65:2176206185639821933770592463208266659/25
+qmul:228695312943600692,-8259900599013409474/7,1324126718913604639/5:-269857221767772356131493369277965144
+qmul:2275696080893255434/7,-1435737280894850537/2,294080994708276309/2:-1633650851662375193596252292396534029/7
+qmul:-84829337473700364773/56707961321161574960,-29927022646809239114/25185347367370413937,=1:1269344751844627231939227965424189665561/714104852184429966256312155357027108760
+qmul:17614709128893699831/24236675989376645657,4599289230585863713/53851416063001125139,55430594239089793855/41774891940497902166:81015141996423294341239778695297132503/1305179322688071182919814999640717871323
+qmul:67846551326033993002/4393005431010178629,-25740230532097127103/7368476450475338660,11432245987550154811/3453986965906439686:-41580615998568452669495076840090631743/770708501552589672691163995377845170
+qmul:78323538212378809869/7187022102980425966,=1,-32829495858735303110/2068874202909402271:6134576638105963615443551925372851797161/51653286708729184578994636138807033156
+qmul:12686256534955947787/123247933988654253,81930708153077686114/345994724232647617,16126072813581949987/95957301898986922:1039393981720550346819611040155758929718/42643134932647985540794888997365101
+qmul:90635825716321359861/838907685684947420,6188791645900690243/226601399055279660,-65993207203297829068/942167862280779399:186975413670826858643911432008098178741/63365885084811963416497113498492400
+qmul:4256124534146569459/8100972293435918,-36362420289668860861/78362919838311158,46047806868639334273/57305818998350828:-154762989115808645716121851999543044199/634815842442898538160822217373044
+qmul:60947370495538663/3595354440833372,20498068986391916397/59798876860276456,=1:73488435585690517250320078551597483/12646950439790760312580408864096
+qmul:57111050113208289287/8750146592672703,95339879919848747558/9349828098304853,63474468255902925315/5956909304899564:5444960659889742520776395286830698811146/81812366476457707866224945527659
+qmul:31476714111665882746/1411948296801679,=1,91546635306734179873/2545140299680338:990783531267546121976022657443420500516/1993597992841162212620657219041
+qmul:28478043672580107559/271169292774531,=1,-12639098468391030777/83575724512750:810998971417379900383655158076008938481/73532785343839310404002269961
+qmul:97963124075098523020/223158531052969,=1,=2:9596773678553147851290017119785469920400/49799729981718929459883714961
+qmul:38023234767709122291/95410827766256,=1,-80027616607132061503/68758430907707:1445766382200323790987914636817593088681/9103226055042166894572257536
+qmul:-6852061478866431364/19230239212017,31234498342946092331/39453881908226,=1:-107010351453709150647505423887409134742/379353793468927863275175921
+qmul:33119990811859699401/1776514189342,65254455762623773903/8901520474749,11459125607986399870/8150100596607:720408991763668201816403420648589510701/5271225810036644905308386
+qmul:27841303391142022233/8340519171100,=1,61584898160284417471/4425828128209:775138174517616267035460754520666306289/69564260043486631075210000
+qmul:-78679695834397046203/681862256264,22320479732932316543/573216980545,=1:-1756168556264938480239345612201392236229/390855023683251092383880
+qmul:25675370768619544394/174778199339,=1,-39853005701576084539/982343364060:659224664106082973870755584440136827236/30547418964183220036921
+qmul:-24756905032793568159/99453729989,14882817849764444595/70923843844,10502311373057494209/91914989726:-52636072589569046967201515845844521515/1007662973634739405388
+qmul:95117421914973587797/80826708744,-23193036682039936606/20563195751,-4893123371481302110/94686383639:-1103030927787525886919861317615127598491/831027716905967673372
+qmul:-80983109490183607947/8058699274,-15405016985195778462/2629510637,2177028333237582055/2780215797:623773088605123959908040865328237318757/10595217730683588769
+qmul:42899406282841568991/1560723895,-22471941706408087493/1005041792,22818416959151070688/2105105663:-964032957227532597560482503451723729563/1568592740248019840
+qmul:-10792553451566883852/995956003,86483521167692451511/50100662,91257203536302258983/95707725:-466689012441018414437879124662439450186/24949027536586993
+qmul:66678150407960284786/528696663,496074447844907103/89728426,17869991738879780164/44060669:5512887774491427594627575949932372493/7906519900407073
+qmul:96591001707842941940/16266781,=1,26004126355523142571/17591389:9329821610924518126580594334274210963600/264608164101961
+qmul:-19258452690165788842/64571275,55666814298088453153/92756359,54411077014502701176/23247995:-1072056709571980969162640959031807118826/5989396364987725
+qmul:-4640013132163513704/239663,-52209871104438592227/332773,=2:242254487553159440830522450019582378808/79753375499
+qmul:-56411630621727285797/272706,15691212266654685658/1914927,15271170464235431859/4561235:-442583435196820139258606231600281499713/261106041231
+qmul:62583023330306722367/644511,42379004056489714974/217085,=2:884068733194153019519400490169326874486/46637890145
+qmul:53067206328944584675/275618,=1,37102608540172266636/214843:2816128387558776183269875887008244855625/75965281924
+qmul:50636929045250773605/38387,30182307121185668404/29215,16057737093809242633/17297:305667868823489166641648659224001135284/224295241
+qmul:-26760988055984279099/53119,44684512572473420625/89488,=2:-108709246112676414811336722275383910625/432137552
+qmul:-17331655588145624486/2353,24408931125891445861/334,55315381482361596884/2933:-16271045674950697968739133244742498171/30227
+qmul:-9697670177570290081/926,-1158917529680599882/175,-11682447562930993064/1259:5619399982923492491507494162417185221/81025
+qmul:-24744828849467423601/305,706079506961442174/13,-12411541580915002667/54:-17471816553877228863576699595124348574/3965
+qmul:74993389160967099973/124,-20280570219362183984/677,28316389090053904551/13:-380227173716737042352800246412036858108/20987
+qmul:43291079967737078989/47,-41261412311052788301/4,81583584176718755579/67:-1786251099939557456367856008793532107689/188
+qmul:-63431471455230924013/94,=1,69816003657973600474/97:4023551570975775516902820423729780024169/8836
+qmul:10484919345725066249/3,=1,-37631393326791641801/9:109933533686359751306619094875438930001/9
+qmul:76285024187842291525,15471681970508023553/4,14287488305535091904/5:1180257633346808064019424884594192288325/4
diff --git a/polly/lib/External/isl/imath/tests/qmulz.tc b/polly/lib/External/isl/imath/tests/qmulz.tc
new file mode 100644 (file)
index 0000000..233b125
--- /dev/null
@@ -0,0 +1,800 @@
+qmulz:4/21116887005095188595,0,1/17609283250378275381:0
+qmulz:8/84271584737450207059,1,=1:8/84271584737450207059
+qmulz:-5/7724990270619098661,3,-1/8550465692384773913:-5/2574996756873032887
+qmulz:2/8610596429506001887,7,=1:14/8610596429506001887
+qmulz:0,0,-1/273384650324881125:0
+qmulz:1/140233715878844976,0,0:0
+qmulz:0,4,=1:0
+qmulz:-9/45090872528594267,8,=1:-72/45090872528594267
+qmulz:1/8811965128522223,2,2/1793564191974955:2/8811965128522223
+qmulz:-1/3188926048219934,8,-1/5467596237009668:-4/1594463024109967
+qmulz:6/640657208066881,5,1/137611762075086:30/640657208066881
+qmulz:3/82322597857883,-7,7/654813178322036:-21/82322597857883
+qmulz:2/3688100583837,-5,2/10618253469093:-10/3688100583837
+qmulz:-7/83059280440216,9,1/11745563556453:-63/83059280440216
+qmulz:9/6593641787929,5,=1:45/6593641787929
+qmulz:3/6450530990042,8,-3/716358093439:12/3225265495021
+qmulz:-9/518988418619,-6,7/365408602532:54/518988418619
+qmulz:-1/122175964907,-8,2/24455846617:8/122175964907
+qmulz:3/5927038874,3,-8/86686893619:9/5927038874
+qmulz:1/7836708131,5,=1:5/7836708131
+qmulz:5/498008886,-4,2/1679653213:-10/249004443
+qmulz:1/7271098513,6,0:6/7271098513
+qmulz:6/363428537,-7,2/874745017:-42/363428537
+qmulz:5/766453791,-5,=1:-25/766453791
+qmulz:-4/90120677,4,=1:-16/90120677
+qmulz:2/53848349,-1,9/89746135:-2/53848349
+qmulz:-1/58093,9,7/9595979:-9/58093
+qmulz:9/2605786,-7,-5/2800212:-63/2605786
+qmulz:-7/355662,7,-1/161621:-49/355662
+qmulz:-1/55532,-8,3/126767:2/13883
+qmulz:7/6254,8,=1:28/3127
+qmulz:7/22045,2,=1:14/22045
+qmulz:0,2,2/2115:0
+qmulz:-6/3715,8,-4/2861:-48/3715
+qmulz:1/93,5,1/5:5/93
+qmulz:2/267,5,8/311:10/267
+qmulz:1/11,4,3:4/11
+qmulz:7/89,4,0:28/89
+qmulz:1,-1,0:-1
+qmulz:1/2,2,-3/4:1
+qmulz:40/4765370066151782869,-24,3/17739079731156497618:-960/4765370066151782869
+qmulz:10/7947188161398728933,31,-29/17781982876586594643:310/7947188161398728933
+qmulz:8/970140630929619417,53,13/8387936313655403107:424/970140630929619417
+qmulz:3/1360678434809756573,41,-31/7551541168373851760:123/1360678434809756573
+qmulz:86/511769393768474807,-69,-1/14040574288485846:-5934/511769393768474807
+qmulz:56/95496257521849925,9,4/211197580286155545:504/95496257521849925
+qmulz:3/12596246629196159,46,37/18952775459563721:138/12596246629196159
+qmulz:77/94995682269709624,37,=1:2849/94995682269709624
+qmulz:13/113349891854596,-40,60/1320165562768511:-130/28337472963649
+qmulz:-41/8305688624807961,27,-89/2632217443748796:-123/922854291645329
+qmulz:50/294091273453599,83,31/297861651301595:4150/294091273453599
+qmulz:27/300155905937375,-31,=1:-27/9682448578625
+qmulz:-31/21736762942232,-27,80/61942176807321:837/21736762942232
+qmulz:59/71835777121419,67,=1:3953/71835777121419
+qmulz:9/1200430381838,-23,19/83497011269:-207/1200430381838
+qmulz:56/4578602367429,97,-20/776186296021:5432/4578602367429
+qmulz:31/25481124930,-86,=1:-1333/12740562465
+qmulz:45/421348839203,-96,89/480034443271:-4320/421348839203
+qmulz:43/18027020463,18,50/87497424067:258/6009006821
+qmulz:-23/3151206468,59,57/92709199715:-1357/3151206468
+qmulz:-33/718223267,-66,-76/2839068079:2178/718223267
+qmulz:98/8237370817,72,79/3563183593:7056/8237370817
+qmulz:37/508616845,22,72/569831387:74/46237895
+qmulz:41/364836167,-39,17/275414470:-1599/364836167
+qmulz:61/59566303,79,-1/1125330:4819/59566303
+qmulz:-97/83330456,63,73/93898689:-6111/83330456
+qmulz:-1/164718,22,-65/5152738:-11/82359
+qmulz:0,24,1/452605:0
+qmulz:-1/74711,-40,56/389891:40/74711
+qmulz:49/301825,39,54/550045:1911/301825
+qmulz:1/29,75,-29/23058:75/29
+qmulz:29/24685,14,=1:406/24685
+qmulz:8/4141,88,-12/2819:704/4141
+qmulz:26/3215,-38,11/500:-988/3215
+qmulz:-1/11,11,1/2:-1
+qmulz:58/779,41,-35/237:58/19
+qmulz:43/87,-51,=1:-731/29
+qmulz:-93/46,10,4/85:-465/23
+qmulz:76/3,36,0:912
+qmulz:73/4,-77,=1:-5621/4
+qmulz:432/74155281191151829175,472,=1:203904/74155281191151829175
+qmulz:43/114735919860201111,635,=1:27305/114735919860201111
+qmulz:301/3325247703900970462,388,=1:58394/1662623851950485231
+qmulz:47/344661002338469478,-106,860/1407842422947199591:-2491/172330501169234739
+qmulz:805/331439221582368712,128,=1:12880/41429902697796089
+qmulz:2/38222077254594263,-769,366/33431432349396613:-1538/38222077254594263
+qmulz:262/61689298838409327,985,63/11550912720533723:258070/61689298838409327
+qmulz:29/21271356349676377,424,920/27960990422138801:232/401346346220309
+qmulz:205/2415752549117554,210,=1:21525/1207876274558777
+qmulz:634/9928964068012837,847,95/1012378898508494:536998/9928964068012837
+qmulz:760/992730779954457,-482,=1:-366320/992730779954457
+qmulz:13/176143690239813,-422,349/7765280463032:-5486/176143690239813
+qmulz:-408/41555001527117,-384,-66/88241293613239:156672/41555001527117
+qmulz:27/282651453443,321,23/49707873373983:8667/282651453443
+qmulz:337/906250195499,80,-199/1511077632489:26960/906250195499
+qmulz:149/1870083861838,-448,281/4154228004961:-33376/935041930919
+qmulz:662/109646911569,763,126/297204337159:505106/109646911569
+qmulz:-887/964555633809,146,-947/9332491491:-129502/964555633809
+qmulz:188/73532880181,760,163/15869550943:142880/73532880181
+qmulz:-221/8950730813,505,=1:-111605/8950730813
+qmulz:22/13208815,793,=1:17446/13208815
+qmulz:193/637058385,-354,482/2363181035:-22774/212352795
+qmulz:921/151700978,356,-124/176851221:163938/75850489
+qmulz:-304/528635925,-222,259/831832289:22496/176211975
+qmulz:-4/3008665,170,37/7388125:-136/601733
+qmulz:52/12087973,-255,-249/6720565:-13260/12087973
+qmulz:-91/601229,444,125/4420518:-40404/601229
+qmulz:224/1546297,-262,-392/1085417:-58688/1546297
+qmulz:-184/301489,348,643/741106:-64032/301489
+qmulz:245/409686,380,356/35003:46550/204843
+qmulz:31/27883,-943,151/26608:-29233/27883
+qmulz:53/4847,612,=1:32436/4847
+qmulz:-105/3832,445,249/1553:-46725/3832
+qmulz:-930/539,770,=1:-9300/7
+qmulz:951/374,362,106/887:172131/187
+qmulz:-963/277,320,383/272:-308160/277
+qmulz:487/53,717,11/2:349179/53
+qmulz:104/5,428,263/20:44512/5
+qmulz:728/5,676,=1:492128/5
+qmulz:-100,626,218/3:-62600
+qmulz:8051/79574306408456131157,752,-197/7460413732106301606:6054352/79574306408456131157
+qmulz:-3008/38400803020121033225,9712,=1:-29213696/38400803020121033225
+qmulz:119/587342139200366012,-7227,=1:-860013/587342139200366012
+qmulz:3185/2510393047749702379,3840,-1461/382245232883802373:12230400/2510393047749702379
+qmulz:-8497/801072423164046277,7259,-2828/415904520883959335:-61679723/801072423164046277
+qmulz:2322/194611268129140181,600,-887/21344410544427618:1393200/194611268129140181
+qmulz:311/62962162974221664,-8282,579/2914497438443599:-1287851/31481081487110832
+qmulz:5073/93332615871851278,6836,=1:17339514/46666307935925639
+qmulz:2466/5537476809280789,8950,48/94598016177721:22070700/5537476809280789
+qmulz:231/1712288358365785,70,-6151/1963648192541132:3234/342457671673157
+qmulz:3639/430934070927460,5689,7044/387572482090793:20702271/430934070927460
+qmulz:1017/411489477643922,6940,7618/907239626952957:3528990/205744738821961
+qmulz:9453/75593644627417,-2623,-2593/2251196683387:-24795219/75593644627417
+qmulz:216/48287649084937,1544,=1:333504/48287649084937
+qmulz:-9415/2492316493411,3873,8599/637176704155:-36464295/2492316493411
+qmulz:4082/7751065050029,-283,128/8321097090765:-1155206/7751065050029
+qmulz:-487/249512316942,-9582,9041/750949778159:777739/41585386157
+qmulz:649/133850377085,-5935,=1:-770363/26770075417
+qmulz:6342/41044749355,-8924,-9491/43668795550:-56596008/41044749355
+qmulz:7139/68729276289,6836,-9917/81477149162:48802204/68729276289
+qmulz:143/2037944234,2833,4555/3599790156:405119/2037944234
+qmulz:-9325/7317954198,-9218,5503/6043847166:42978925/3658977099
+qmulz:7044/653529617,7307,4797/199351315:51470508/653529617
+qmulz:-673/115994640,-7148,559/911781164:1202651/28998660
+qmulz:3076/13783363,-9612,-2927/62873576:-29566512/13783363
+qmulz:-4161/34536929,3313,98/1321839:-13785393/34536929
+qmulz:738/526535,-118,=1:-87084/526535
+qmulz:2233/2825257,7157,765/8600573:15981581/2825257
+qmulz:107/83440,3370,401/179110:36059/8344
+qmulz:-1667/14564,-6138,913/586918:465093/662
+qmulz:-7994/44789,404,=1:-3229576/44789
+qmulz:-5363/98880,145,=1:-155527/19776
+qmulz:842/29,-8855,8672/6371:-7455910/29
+qmulz:2310/1103,2603,=1:6012930/1103
+qmulz:762/293,2709,=1:2064258/293
+qmulz:5789/529,7420,-6538/957:42954380/529
+qmulz:539/41,3855,-7655/53:2077845/41
+qmulz:-579/13,7973,=1:-4616367/13
+qmulz:883,5006,1627:4420298
+qmulz:3573/2,3540,4139/9:6324210
+qmulz:98250/53192196970205269513,57716,80717/96027247156109827970:5670597000/53192196970205269513
+qmulz:-6945/12166748375847716977,80289,23625/38713117494337198876:-557607105/12166748375847716977
+qmulz:-58986/296440433764715149,-18018,-97378/3396272899236095159:11679228/3257587184227639
+qmulz:-6149/262153684309837118,56309,89961/7445277782705094481:-346244041/262153684309837118
+qmulz:-15446/149480531273251391,31846,4749/106265662702068574:-491893316/149480531273251391
+qmulz:2451/55473133472349607,90444,20837/279735266283810098:221678244/55473133472349607
+qmulz:28710/35478143894265917,69724,=1:2001776040/35478143894265917
+qmulz:96358/34167706730231777,49135,-2041/69865271163769782:4734550330/34167706730231777
+qmulz:7283/1176116854930460,77815,62454/5465876769829379:113345329/235223370986092
+qmulz:99551/5426188854503002,-89899,=1:-8949535349/5426188854503002
+qmulz:7860/83586510191743,23843,-4213/144664072126997:187405980/83586510191743
+qmulz:-3898/13601562574049,-61855,4031/27837453043985:241110790/13601562574049
+qmulz:-6928/5371829731249,37664,4835/26749096759358:-260936192/5371829731249
+qmulz:76651/81457027187160,-85014,=1:-1086068019/13576171197860
+qmulz:14709/484402153529,30047,10715/9214198729207:441961323/484402153529
+qmulz:30365/5730836776783,61734,30655/2550068903118:1874552910/5730836776783
+qmulz:13241/55328034593,-80183,11617/428864198314:-1061703103/55328034593
+qmulz:35410/387788826057,45514,15158/46042980249:1611650740/387788826057
+qmulz:-41739/96062733370,-76701,=1:3201423039/96062733370
+qmulz:71383/88228655146,74491,74665/42443189917:5317391053/88228655146
+qmulz:-3181/8533129823,78945,19451/1917063317:-251124045/8533129823
+qmulz:-35563/2781995353,34546,99624/7403972285:-1228559398/2781995353
+qmulz:-46639/190543771,20318,=1:-947611202/190543771
+qmulz:57710/227557263,65393,41129/661804772:3773830030/227557263
+qmulz:-41473/34008654,19343,68754/48463157:-802212239/34008654
+qmulz:86172/41261945,23098,-67843/42705974:1990400856/41261945
+qmulz:-23642/477003,-74773,75259/5922193:1767783266/477003
+qmulz:-2299/7593,-55092,47078/3719425:42218836/2531
+qmulz:89923/436747,27372,38454/602545:2461372356/436747
+qmulz:35133/245788,37530,-26959/814296:659270745/122894
+qmulz:54300/83317,6506,=1:353275800/83317
+qmulz:-2710/16637,92724,49071/5768:-251282040/16637
+qmulz:-23308/1133,56278,=1:-1311727624/1133
+qmulz:12925/464,48445,5188/4977:626151625/464
+qmulz:-15500/139,75561,45107/89:-1171195500/139
+qmulz:68128/739,-47269,46324/271:-3220342432/739
+qmulz:-98213/47,41522,-7190:-4078000186/47
+qmulz:95819/64,12916,907/10:309399551/16
+qmulz:-1123,10413,63874/9:-11693799
+qmulz:30369/4,-41524,7423/2:-315260589
+qmulz:-269467/4029498660068277497,646984,265727/52332437650027766625:-174340837528/4029498660068277497
+qmulz:-206269/81809654998485085274,50405,=1:-10396988945/81809654998485085274
+qmulz:119347/1701867915016265609,618013,703201/8136517399464628384:73757997511/1701867915016265609
+qmulz:199044/306712361923985717,233710,201675/571526199709385944:46518573240/306712361923985717
+qmulz:267977/894840013682442654,-489375,=1:-43713748125/298280004560814218
+qmulz:12471/7140902397278600,350289,253704/144540771450708869:4368454119/7140902397278600
+qmulz:832882/5818152789924367,-80256,108955/22849940119123234:-66843777792/5818152789924367
+qmulz:494497/18234011706116519,-14822,68902/17499952371352627:-7329434534/18234011706116519
+qmulz:232520/1052550357505571,557021,32429/440602163340406:129518522920/1052550357505571
+qmulz:526093/2240655675408643,11119,-126354/4970690629417277:5849628067/2240655675408643
+qmulz:54605/174895846259434,-184199,544176/97043233594967:-10058186395/174895846259434
+qmulz:764692/11187705426133,576048,-646413/892215624306868:440499297216/11187705426133
+qmulz:593840/66545119469401,569003,81868/70640307758063:337896741520/66545119469401
+qmulz:109999/9745609238872,665854,=1:36621637073/4872804619436
+qmulz:-133443/8282237150,-495649,404461/485555508119:6012808137/752930650
+qmulz:224276/6824310584317,712269,=1:159744842244/6824310584317
+qmulz:787126/341737321975,925666,71517/134877228043:104087967988/48819617425
+qmulz:19969/20124955446,-804254,68212/739707535809:-8030074063/10062477723
+qmulz:-484342/14331066017,154663,640199/41001808194:-74909786746/14331066017
+qmulz:234567/15529177385,951383,104501/13280956901:223163056161/15529177385
+qmulz:447401/2005170496,-162639,25513/657762574:-72764851239/2005170496
+qmulz:88392/370535737,889107,=1:78589945944/370535737
+qmulz:69608/19589055,197889,391089/111921502:4591552504/6529685
+qmulz:-742188/976205903,-835265,198303/463857278:619923659820/976205903
+qmulz:30951/7100042,826901,37665/16004119:25593412851/7100042
+qmulz:-8717/23405419,749796,584744/90701721:-6535971732/23405419
+qmulz:375053/1615401,682230,-413113/4604306:85290802730/538467
+qmulz:-682135/9626652,-686085,=1:156000863825/3208884
+qmulz:459639/139961,-545993,55641/809527:-250959676527/139961
+qmulz:137069/131640,556346,=1:38128894937/65820
+qmulz:653137/44831,-33774,=1:-22059049038/44831
+qmulz:377111/93851,119783,=1:45171486913/93851
+qmulz:61290/967,223671,-198269/2596:13708795590/967
+qmulz:108931/3561,890354,99191/837:96987151574/3561
+qmulz:-566567/566,72845,=1:-41271573115/566
+qmulz:-856110/823,-344105,71629/306:294591731550/823
+qmulz:103589/16,-597818,73435/68:-30963684401/8
+qmulz:531370/87,698278,92947/30:371043980860/87
+qmulz:93564,802315,-69936:75067800660
+qmulz:254421/2,-51596,=1:-6563552958
+qmulz:5908447/27508951891576930555,-8046857,=1:-47544428101079/27508951891576930555
+qmulz:3067750/30055512795875714167,9308933,292151/5218560370048727971:28557479210750/30055512795875714167
+qmulz:5909595/1610510865059257451,1081732,8279906/1034011738653690921:6392598018540/1610510865059257451
+qmulz:7300703/4024857129457733561,-6809974,=1:-49717597611722/4024857129457733561
+qmulz:-411181/366261858643871279,-3873525,5670428/945102376345780573:1592719883025/366261858643871279
+qmulz:1840028/328098015717866549,7760,-1208094/324612123643160461:14278617280/328098015717866549
+qmulz:5902528/35455662246885099,9372866,-2383248/38025857091093589:55323604005248/35455662246885099
+qmulz:412808/8383418920359061,7136425,8412475/90427613237122747:2945973331400/8383418920359061
+qmulz:4721348/1016481387773127,-4909375,446916/600970820960263:-23178867837500/1016481387773127
+qmulz:346575/543489633400996,2082315,=1:721678321125/543489633400996
+qmulz:-54603/142207419353230,9721544,-9944420/520274639700813:-37916104788/10157672810945
+qmulz:9128453/94269601342538,-1680681,9401887/439581199104749:-15342017516493/94269601342538
+qmulz:327135/14576866729679,-981216,=1:-320990096160/14576866729679
+qmulz:-2772009/35771247225944,7269361,3999881/49166513232805:-20150734116249/35771247225944
+qmulz:7777936/4972983657531,932701,-1921805/2675875584873:7254488685136/4972983657531
+qmulz:-4107413/8839115797940,-7894930,-67679/4109002145737:3242773811609/883911579794
+qmulz:6418119/522734321117,-4364508,=1:-28011931720452/522734321117
+qmulz:-9554439/610908255599,9002767,5125943/687195405407:-86016388132713/610908255599
+qmulz:1541453/67134868472,9336624,124122/1242309641:1798995884334/8391858559
+qmulz:-4420171/60924329483,4658729,597333/76303665689:-20592378822659/60924329483
+qmulz:2321560/479530207,3712372,-8303185/3259591614:8618494340320/479530207
+qmulz:6497537/8003497458,685910,622458/2979408511:2228362801835/4001748729
+qmulz:8707355/324035343,-5890611,=1:-17097213714635/108011781
+qmulz:-6368331/430504267,6080736,2843024/389993407:-38724139571616/430504267
+qmulz:7148576/43643579,9752788,1882739/80695462:69718546229888/43643579
+qmulz:-78515/22600098,-9269764,=1:363907760230/11300049
+qmulz:6642519/3513320,6950670,4303599/4263095:4616995753773/351332
+qmulz:8291036/3791843,-6165764,187574/1468847:-4647324662864/344713
+qmulz:3378069/104710,4099164,-3130847/477201:6923629417158/52355
+qmulz:-1837947/540683,-7963396,4977946/317377:14636299788012/540683
+qmulz:-2439283/46175,3316377,4423369/90864:-8089582037691/46175
+qmulz:24851/4671,-9457747,=1:-235034470697/4671
+qmulz:-3996265/3851,5644784,2130071/6485:-22558052731760/3851
+qmulz:-8787752/5255,-8904351,=1:78249228308952/5255
+qmulz:1051819/121,7786465,-1689328/223:8189951829835/121
+qmulz:2910419/264,-4517287,4103/10:-13147197913253/264
+qmulz:1470867/8,9831206,3981716/39:7230198237801/4
+qmulz:4240055/91,-8952034,=1:-417111170570
+qmulz:327409/4,1172921,-3686633/6:384024891689/4
+qmulz:463486,9343153,-1978362/7:4330420611358
+qmulz:29585813/42067907033671980893,71292790,-70324603/70286665753964458740:2109255153188270/42067907033671980893
+qmulz:-65065601/40632930795671537185,4699856,7303041/5446641871295709464:-305798955253456/40632930795671537185
+qmulz:22287116/6961884952768846975,-61223561,47414597/4915453243825873928:-194928086562868/994554993252692425
+qmulz:13726613/4388684468226482322,5689324,=1:39047574389806/2194342234113241161
+qmulz:86674641/912048412696230206,9154212,418913/1017052367067494:396719019368946/456024206348115103
+qmulz:39606657/62493216618497137,-64895609,-93307621/528183512506792540:-2570298126469113/62493216618497137
+qmulz:-61860905/97141961244876374,29603964,95495204/34743879357106645:-915664002313710/48570980622438187
+qmulz:23026739/8268491868362646,49125662,=1:565601898538109/4134245934181323
+qmulz:74731767/2153002560742688,79046765,=1:5907304424083755/2153002560742688
+qmulz:-33040734/8080107924352231,16695468,87206576/5598768033775299:-551630517193512/8080107924352231
+qmulz:-85831719/652429006985885,-12207796,-56798629/203624822018813:1047816115881324/652429006985885
+qmulz:13811539/218314616664013,-33361377,41774225/444858687471486:-460771959529203/218314616664013
+qmulz:46578727/4151263590571,94131401,=1:4384520829306527/4151263590571
+qmulz:5864747/4619802266479,-14340682,9374233/85220400863050:-84104471737454/4619802266479
+qmulz:-20695/10292597787,19239092,=1:-398153008940/10292597787
+qmulz:-79354991/1226479246337,-85100492,-31036795/9391557241804:6753148776755572/1226479246337
+qmulz:13497139/220655551780,25874045,16158669/209860028875:69845116371451/44131110356
+qmulz:-14641436/673965441365,35697635,=1:-104532927640772/134793088273
+qmulz:42076810/47634122699,92555216,-99965382/7603386991:3894428238140960/47634122699
+qmulz:-2547044/961062465,-61423853,-64578371/3954121219:156449256240532/961062465
+qmulz:12398632/375040743,76607359,19460171/1399871191:949826452732888/375040743
+qmulz:99063929/927095607,-33074282,-31824927/5567689051:-3276468323773978/927095607
+qmulz:13710043/915838933,-63538218,-80907032/55218445:-871111700923374/915838933
+qmulz:-14266908/173792753,79812889,39774414/947866123:-1138683144577212/173792753
+qmulz:46031321/23827793,47288874,-29016530/26535747:94642145166198/1035991
+qmulz:90667631/37118866,68275195,25790129/31607133:6190350186713045/37118866
+qmulz:133784/168291,-36246595,-13384939/1286209:-4849214465480/168291
+qmulz:20243420/9836407,-29971865,=1:-86676150196900/1405201
+qmulz:55262636/961595,-79684445,-18606712/267721:-880714495779404/192319
+qmulz:18521596/447339,13342158,98234108/465429:82372686748056/149113
+qmulz:-52333722/83537,75454299,80265841/5748:-3948804307570878/83537
+qmulz:27849895/19463,2814646,51492641/14404:78387595562170/19463
+qmulz:2229413/2657,47131782,=1:105076207503966/2657
+qmulz:37693829/4546,76862997,85444575/4597:2897260665345513/4546
+qmulz:47895391/838,51616823,67901608/79:2472207919762793/838
+qmulz:94793222/407,45108781,26019479/298:4276006691482382/407
+qmulz:-28219652,28509688,-69052146/5:-804533473988576
+qmulz:89329658/41,24254853,43325377/63:2166677723330274/41
+qmulz:-28028843/2,57869496,97143787/2:-811007508936564
+qmulz:17180663,49123793,31747639/3:843979332814759
+qmulz:-440812167/25592398472985127969,-67895040,305636107/90241943612023813864:29928959710951680/25592398472985127969
+qmulz:469436899/89801410067219467595,339956414,=1:159588084783320186/89801410067219467595
+qmulz:624505646/8457866426911473529,55679196,735790506/1487411086627672243:34771972266740616/8457866426911473529
+qmulz:-530285107/6030437060176995577,933495870,999692847/7638706602391224839:-495018957307008090/6030437060176995577
+qmulz:811800624/481147127809268303,96179572,377106279/130131554630880295:78078636565652928/481147127809268303
+qmulz:-249975856/304587360170486515,826091985,851744230/630784049926628227:-41300610217022832/60917472034097303
+qmulz:-268512055/31691499965821404,202698168,125655067/11939065745546055:-4535575136201270/2640958330485117
+qmulz:52009618/27516701583858369,702923265,-368845548/80831610779378597:12186256831987590/9172233861286123
+qmulz:375702102/3296151167632583,-434951925,-521756507/7691136311577133:-163412352491446350/3296151167632583
+qmulz:-384209743/6191488089335748,227570856,78931552/6926107452102541:-7286245008170834/515957340777979
+qmulz:113980250/183755547250927,437813246,556573714/9774511713479:49902063232391500/183755547250927
+qmulz:-472996853/423024426303975,-368827764,986763127/429084644953681:58151457223675564/141008142101325
+qmulz:-23658043/2283802118115,740396103,17376279/1797109931431:-5838774280602143/761267372705
+qmulz:4078811/40918803323,-845485209,=1:-3448574370806499/40918803323
+qmulz:154841851/4593031526275,12617826,-972933704/2547790338703:1953767533435926/4593031526275
+qmulz:735542560/7626156428987,778206922,-293104268/2631653460189:572404311617600320/7626156428987
+qmulz:-457656798/567001008887,493454600,-366343915/981801223003:-225832852194370800/567001008887
+qmulz:-945200662/928772265773,975297818,34885945/9938748237:-83804740292795956/84433842343
+qmulz:104875267/28207551782,954147586,=1:50033241419577731/14103775891
+qmulz:609918635/17074425662,-224065632,-400611797/35807663040:-9761557458560880/1219601833
+qmulz:-864006772/2174255357,384303177,=1:-332040547429114644/2174255357
+qmulz:-109536551/482079758,63549943,-10441546/8480554803:-6961041572466593/482079758
+qmulz:512697337/200332783,429480437,6412690/26797243:220193476343496269/200332783
+qmulz:-789241399/555269030,318371906,755945889/20176822:-125636144246868247/277634515
+qmulz:-462528503/5399724,117919312,195760496/23231881:-13635260713537484/1349931
+qmulz:-768369531/84617918,630525111,869606481/10643699:-484476283822792941/84617918
+qmulz:881987483/8541727,899430760,=1:793286672145177080/8541727
+qmulz:435026027/9075006,667517326,-976648275/5125397:145193705141721901/4537503
+qmulz:-382388178/685121,90758124,-658289938/398425:-34704833675058072/685121
+qmulz:215727059/244359,-726765650,401344067/859586:-156783016256723350/244359
+qmulz:300168110/44829,-382517050,-848645422/63521:-114819419941275500/44829
+qmulz:240997441/17745,-160000865,=1:-7711959804557293/3549
+qmulz:497024455/1871,-967339431,891801689/2782:-480791353492785105/1871
+qmulz:159802693/5520,17435365,=1:557243656087589/1104
+qmulz:-503495399/548,350245727,=1:-176347112063910073/548
+qmulz:-10883201/487,215755629,756773575/299:-2348111877288429/487
+qmulz:366108695/3,980458645,-27946686:358954435022418275/3
+qmulz:890190708/5,-785135991,-213354065/14:-698920763704571628/5
+qmulz:10221149,961494206,348141954:9827575542162694
+qmulz:-44158489/8,918744696,-871474083/8:-5071297194015543
+qmulz:-2894598477/3168041449931268761,-3793825512,=1:10981601549038945224/3168041449931268761
+qmulz:-165305510/4444729020519250969,9650534485,2185861399/5133889833495479703:-1595286524815512350/4444729020519250969
+qmulz:-6642522053/7993901796893679282,2810456878,=1:-252277321501628791/108025699958022693
+qmulz:4075114142/2324601722262376857,7319061324,224603716/1867619918809913859:9942003435865881336/774867240754125619
+qmulz:174975715/284043772444194,6235601626,2532940399/455179300056502113:545539426482256295/142021886222097
+qmulz:9511153214/515183582083251763,8998409775,1916260097/49971689447357059:85585254052380266850/515183582083251763
+qmulz:9561479651/87091900188234189,-9070226563,-31724150/149115720086953:-86724786712084169513/87091900188234189
+qmulz:257684521/4786959313773388,7785131961,6853032479/92097657977675380:2006108000292075681/4786959313773388
+qmulz:-4787662186/3232352240839707,-4724762630,=1:22620567381476909180/3232352240839707
+qmulz:4815469783/4351554535472742,-3809867113,7127662378/9454193567725933:-1411253843068995883/334734964267134
+qmulz:-3134766359/276266993500284,-5054392552,-1084728996/261757765208747:3961084934297439542/69066748375071
+qmulz:887520891/240452975602433,8724686676,990724100/235457211073037:7743341692379348316/240452975602433
+qmulz:7273936918/90562759963967,3897937854,=1:1667844356487076116/5327221174351
+qmulz:-119387249/2501098635936,9536603772,7558585050/14605366326499:-94879074095175269/208424886328
+qmulz:1526390275/2230210659804,4788548573,9380637171/7768045927396:7309193973192327575/2230210659804
+qmulz:3728595181/1876804971571,9224083630,=1:34392873771958987030/1876804971571
+qmulz:4093958623/457077991802,1483219640,9490772153/415966894045:3036119917490477860/228538995901
+qmulz:2144803614/309751929683,2542484861,3609691879/286244057812:779018674059012522/44250275669
+qmulz:3560518143/86265554695,4399548470,-9491920365/12079543438:3132934429688578242/17253110939
+qmulz:-2249859505/6734537978,1110886234,=1:-1249668976269277085/3367268989
+qmulz:3262790941/1025060151,5749937770,122130955/253972334:18760844867269741570/1025060151
+qmulz:-4710833503/6631683846,-3411512444,=1:8035533558548305666/3315841923
+qmulz:-9032027690/956483333,9063301527,=1:-81859990354683282630/956483333
+qmulz:-266187969/112068472,6338182319,-7905751808/945700693:-1687147878646320111/112068472
+qmulz:4156902964/946699,6705660672,=1:27874780723015031808/946699
+qmulz:2651274071/91222015,-5032057829,-2464896493/13519125:-13341364445800251859/91222015
+qmulz:318661412/1743,370464187,-232620732/1501523:118052640924852044/1743
+qmulz:899914724/512321,5465209352,=1:4918222365607298848/512321
+qmulz:3131360803/353764,-2320875649,=1:-7267499035915786147/353764
+qmulz:6443807425/863022,84008208,110674088/12311:90222119078557400/143837
+qmulz:-3068580532/73491,8795547050,=1:-26989844445920030600/73491
+qmulz:696531051/11483,376305292,=1:262108320533621892/11483
+qmulz:9419114609/574,7568524581,1555156138/2439:71288800449472703829/574
+qmulz:6076760418/5639,3137249772,1485476093/6609:19064315235869124696/5639
+qmulz:3390029532/479,4688058595,=1:15892657084796427540/479
+qmulz:1638519591/92,3009448307,2877648480/173:4931040009121282437/92
+qmulz:516117057/8,8303497266,-9173174800/47:2142788285867733081/4
+qmulz:927642007/6,-2879248175,-3421337621/43:-2670911555708087225/6
+qmulz:2611149335/3,7293202790,1060208041/2:19043641615128644650/3
+qmulz:-4787695612/3,-5387504428,-8004477624:25793731309566169936/3
+qmulz:1237812305/631690268983111653,77842709902,51259842584/29388862631694313447:96354664171240944110/631690268983111653
+qmulz:5976818503/79879634485079515072,-2490419914,82254088463/65538055479070681595:-7442393911117434371/39939817242539757536
+qmulz:-17969301863/1215487409718772165,14907617468,39498072491/8401888749150831870:-267879478340623742884/1215487409718772165
+qmulz:62921948190/5765043819856032331,-39453740869,-1868833945/7119552876031525503:-2482506238860903577110/5765043819856032331
+qmulz:-15610313710/78152311777353923,92919343081,-49673392741/841288090131527967:-1450500095221527940510/78152311777353923
+qmulz:44648474983/288454490007214845,47861920531,11617817909/33454275945577992:2136961761466687575973/288454490007214845
+qmulz:-13826523213/28036931389675264,-88421093554,=1:611278151271612834501/14018465694837632
+qmulz:40547667371/53177876256600915,49909556335,9076503202/2880089154076223:404743217781153169057/10635575251320183
+qmulz:76668523587/5077067067443611,85512171223,-39577211701/3956684840165784:6556091916386158136901/5077067067443611
+qmulz:-80228153797/602596042922155,22421445270,24751353255/2432806998119141:-359766231894515638038/120519208584431
+qmulz:47062274633/166002450060687,86101072410,82448790716/626049533394637:1350704105318413058510/55334150020229
+qmulz:8841820465/21786582003342,53402955559,268303508/5469783598063:472179345353051714935/21786582003342
+qmulz:23713841211/21537439736900,-82708390631,-1600362701/2915831487207:-1961333642240894094141/21537439736900
+qmulz:56721050875/77459601877944,59578456497,32477270555/35734686972211:1126450887340103761625/25819867292648
+qmulz:8928356444/2663712341261,-3648881786,-28952940554/2770799359187:-32578517207427328984/2663712341261
+qmulz:18227203995/5958086852101,483256270,-90041196376/5523075085255:8808410615152798650/5958086852101
+qmulz:59211032239/570207052514,26723970763,-9542991461/881963470657:1582353894402086428357/570207052514
+qmulz:1776113132/40223369371,41111960068,44832213814/478452935141:73019492159034412976/40223369371
+qmulz:-15285833580/2156369081,34934254636,-90933367585/31370134781:-533999202607239476880/2156369081
+qmulz:91516992782/93740428151,-65378876169,-67776976360/2244262427:-5983278138453644812158/93740428151
+qmulz:72779505484/1621504307,-52125941410,5672754165/602683781:-3793700238707757692440/1621504307
+qmulz:11740145697/1515672656,87909174824,-48408939345/3034260044:129008315067100541541/189459082
+qmulz:79961831072/773650431,-41330850050,-74967019083/977759203:-3304890449760262753600/773650431
+qmulz:6884563893/49029205,40219988393,-23059747673/353633216:276897079867326893949/49029205
+qmulz:30501090798/47322791,28853148760,=1:880052510136961110480/47322791
+qmulz:-18451888579/10709259,11599135921,=1:-214025963626968546259/10709259
+qmulz:8926155052/4290885,75202195645,=1:134253291715621829708/858177
+qmulz:88656392423/4830649,47619732899,36734598432/8696993:4221793726972187424277/4830649
+qmulz:34368523182/239537,-72478917605,-71850709745/331701:-2490993359913710419110/239537
+qmulz:-7591160179/904815,-41442417941,84402195575/876773:314596032795194371439/904815
+qmulz:78012684294/13529,-92124971658,32782603063/49402:-7186916329549251739452/13529
+qmulz:-77476701398/48451,84100140997,84733570363/49436:-6515801511554267013806/48451
+qmulz:9785922698/313,99923625908,60518701590/3703:977844878839558059784/313
+qmulz:13272361617/790,77228020379,-14315026641/2773:1024998213435133392843/790
+qmulz:1977713551/2,92621074895,=1:183177954928027402145/2
+qmulz:-8125102987/193,40843068681,=1:-331854139338239250147/193
+qmulz:87788302687/10,73718602709,708527495/34:6471631008280390179083/10
+qmulz:-17073092947/16,82903130217,60258726452/11:-1415412847792085279499/16
+qmulz:-6943963154/5,67700561949,=1:-470110207678950427146/5
+qmulz:-86521942923/5,52316853740,74747686643/9:-905311166640643816404
+qmulz:-745167514955/75202612388076732241,992589631308,139312742559/34578187132141654765:-739645548931882026211140/75202612388076732241
+qmulz:27932224059/2111108032966941227,-779689866177,8856089863/3931386633265401342:-21778472038587689752443/2111108032966941227
+qmulz:140525061611/3407680707744152962,127477722944,169676929421/277484368047590363:8956907435367794151392/1703840353872076481
+qmulz:341584864563/1420632012141667135,55437156492,=1:18936493592077656192996/1420632012141667135
+qmulz:-999027740190/525162199932669211,400522397538,500019558441/907820980265694569:-400132985707868959652220/525162199932669211
+qmulz:-339453308372/462366486602163829,952918460297,-90778090002/71370169251458863:-323471323956568979706484/462366486602163829
+qmulz:-271650817828/7565295758442605,768776296466,16994985550/10329125142493:-208838709661769886195848/7565295758442605
+qmulz:225422010721/10111430949630829,746974776114,-168224996466/53086145704663327:24054936569926668959742/1444490135661547
+qmulz:349236361403/2805449982440828,193882264108,-1449692674/936603179147519:16927684114413345855881/701362495610207
+qmulz:-197651146031/4351789591405316,-808105729932,58049683298/4854765675888749:39930755908819394924973/1087947397851329
+qmulz:271384975109/452447489612746,354118404591,-732534914633/555297542185947:96102414415567326325419/452447489612746
+qmulz:88111433664/28798189724783,207968836059,-261683363229/138358019377265:18324432302591869690176/28798189724783
+qmulz:67604819101/43380824369659,884187650678,50163356115/7011438059051:59775346175424370000478/43380824369659
+qmulz:979853557479/27364774048301,185814534089,376723696931/23421481855538:182071032258409566401631/27364774048301
+qmulz:-129581462881/1185999957929,-649615443760,=1:84178119512510783072560/1185999957929
+qmulz:631378962263/4697504353981,356337990468,353616095948/3759830408947:224984310636568625709084/4697504353981
+qmulz:419208380799/252872515073,306292997739,313894879763/25683953874:128400591632237958013461/252872515073
+qmulz:59754817607/502657252480,-190176172167,111686020133/78750756618:-11363942481036514944369/502657252480
+qmulz:639847514587/81987662799,449279495706,76285885523/11877258141:95823456227461612954474/27329220933
+qmulz:699678831667/15232840363,-328557525533,412748319154/35151716111:-229884745600329961453511/15232840363
+qmulz:887054398617/2906111779,840756960767,-7837140210/882145159:745797160216227848059239/2906111779
+qmulz:-455315204427/506702237,-175722319764,101353072197/4927140688:80009043945732322395228/506702237
+qmulz:18629315637/336690086,163583642465,-428561144079/630858776:70870960663503295935/7830002
+qmulz:26610877449/497721338,494401478093,656965629789/571606768:13156457144137281224757/497721338
+qmulz:308447566844/63211619,626332529102,389974552910/53161277:193190744636760720294088/63211619
+qmulz:432089290445/43417161,381832677443,-993787713167/43836749:164985810665060426932135/43417161
+qmulz:259672928141/1911242,33898844506,477785491015/5001727:4401306106734735321673/955621
+qmulz:72860807605/947904,836184405122,132459766271/26668:30462535531947709276405/473952
+qmulz:8111715299/126471,73018318330,-966100886117/960478:592303809904713130670/126471
+qmulz:59136150795/124661,-183025911988,998950795145/902212:-10823447930714766230460/124661
+qmulz:-52072229129/344,24297646661,-819340099671/44129:-1265232624227073788269/344
+qmulz:462624622089/91900,463652425988,182901467689/69000:53624257088336635612233/22975
+qmulz:-12928412440/521,528884765734,937253218809/8798:-6837640384641931330960/521
+qmulz:27765652319/2634,-126780088278,=1:-586688642016512569447/439
+qmulz:-967104161735/274,750172960968,-709612304/49:-362747696286610257079740/137
+qmulz:66752761957/243,243055541185,151935508582/7:16224628683052114699045/243
+qmulz:751278773537/66,713221018437,659908640320/37:178609270664053141567223/22
+qmulz:-586344498928,-568318448089,521816699255/14:333230395676283284148592
+qmulz:161194888214,484546649439,184699645268:78106442990787850811946
+qmulz:793578182621/4,-808113765664,=1:-160325363376662447831336
+qmulz:561935468909/32803049500299178880,2101294187063,-3358814917919/26371576797557955745:1180791734323002866524267/32803049500299178880
+qmulz:-5868873358301/6442991402115355335,2339686618745,-1536954575653/43556673213605193423:-88589190087263739148079/41567686465260357
+qmulz:-7979894125724/9674261753856826205,-1852913383532,3286095553311/7067777496639467900:14786052624722387839177168/9674261753856826205
+qmulz:515507640950/169593134508951507,130457186386,9764491091569/7319120645126181160:67251676398821316106700/169593134508951507
+qmulz:-9365485392019/329669514832033195,2420807490629,=1:-22672037190376071733889951/329669514832033195
+qmulz:1709304465717/260423845962574106,2761288775682,-9625873444279/32296180368255957:2359941617703735036146997/130211922981287053
+qmulz:215090735926/98137745784701417,1193894989684,=1:256795751949495738187384/98137745784701417
+qmulz:2462657897367/2405626367061101,-6540272761466,956548940780/2817455913381063:-16106454366958522300460022/2405626367061101
+qmulz:242208253035/596343213619654,5151615220303,=1:1247763722818106293369605/596343213619654
+qmulz:228002384282/59111672575229,4689640217907,8887530790232/4265423449943033:1069249151107554031737774/59111672575229
+qmulz:1065463662219/36125337508585,-1135495312868,5987819337289/651384630027642:-1209828994480848476134092/36125337508585
+qmulz:6023110141478/670453839669919,5713937267309,1998947610187/134406089553918:34415673502497927694342702/670453839669919
+qmulz:-9838734646098/73658633070811,3898971866431,=1:-38360949586416063311336238/73658633070811
+qmulz:-2320378876107/3544145932211,-9742994143220,8635863424885/42773859269883:22607437799961906994044540/3544145932211
+qmulz:1282067863135/7152781512234,-430962905775,4287050590505/9492196607247:-184174563899134867034875/2384260504078
+qmulz:2972203649953/4110957928466,-1076925462656,6468360579859/5380802762138:-1600420895416743198827584/2055478964233
+qmulz:7745401204821/811506016039,-7138418453884,52955801256/2587064107:-55289914893229593626974764/811506016039
+qmulz:-4394166471713/351201211519,1682246763941,2661332639201/255305706936:-7392072327257235964900933/351201211519
+qmulz:242477453617/2530363014,7850634381002,-728870121674/37749087679:951800916991718980492117/1265181507
+qmulz:-4495597725068/18530739005,-295776565976,2058781523476/32738808743:1329692457130130811086368/18530739005
+qmulz:-627713346013/6292366913,8991851477846,-476950295807/2244817575:-5644305178010651601927998/6292366913
+qmulz:-4583081886485/1415176577,769919000693,-869103658209/9579044:-3528601826136720462334105/1415176577
+qmulz:-1182275059809/252123671,-904658392050,-8972966355829/539780886:1069555054567627520118450/252123671
+qmulz:4559690190362/241596515,1670678554004,7140063697224/280561433:7617776613940209657309448/241596515
+qmulz:1432554287/2209567,7757230863986,=1:11112654329451858207982/2209567
+qmulz:1106108950528/6849831,-6298163069823,=1:-2322151514472041772238848/2283277
+qmulz:5088803191704/8136929,-8625507078,-35324495791/106583:-43893507948591842880912/8136929
+qmulz:7539081819837/6889238,7284561918683,9960043148827/9194287:54918908326619940050314671/6889238
+qmulz:391441941525/125384,7929833985877,3351067478098/711859:3104069611402622309842425/125384
+qmulz:9009538508471/742821,-4924002212923,9527002197826/376781:-44362987553126188781170733/742821
+qmulz:-9259291631862/58961,4703549016027,9448940593567/14975:-43551532044151545221852274/58961
+qmulz:3476127453492/36715,3322870685572,308545119513/7234:11550722014520612585417424/36715
+qmulz:-646877695651/729,2845152282117,=1:-613488517344009605324389/243
+qmulz:-2520612775732/3305,5509026264687,4380524270328/7049:-13886121984613190802175884/3305
+qmulz:1963077614302/267,-825362596397,=1:-1620250836669127260869894/267
+qmulz:7889439316771/713,5863316933906,=1:46258283145047187204337526/713
+qmulz:8748734240327/23,6371236745698,-7157017762004/53:55740257070317659715363246/23
+qmulz:-1296384169421/6,2899800596916,464588384950:-626542598053244779017606
+qmulz:-5167288008794/7,-3300699869865,1931056190640:17055666858181330775592810/7
+qmulz:6696697914261/4,4069021265747,5631057961007/6:27249006223411589102117967/4
+qmulz:23865486379535/26918789012953275954,94873123748548,=1:1132096621302455418116582590/13459394506476637977
+qmulz:3092832570307/2006024783468333419,-69091492632924,9214275673435/28417924226192114256:-213688418746233489772987668/2006024783468333419
+qmulz:99742200190859/1397162492835988177,13135144429552,=1:1310128205228222025079865168/1397162492835988177
+qmulz:16157052816541/834217349232726593,19133269076621,18278786726642/1173386622722504913:309137239024056146385187961/834217349232726593
+qmulz:-15154486378645/471850975689269841,83584432024123,14569830702843/38977738569109946:-1266679136576350929552053335/471850975689269841
+qmulz:-70285613046769/438550102087486245,58305445024728,=1:-1366011315842564998875167944/146183367362495415
+qmulz:5620626946546/16483309748982467,18213910616022,=1:102373596810393507725160012/16483309748982467
+qmulz:-87110361266406/28658861993511733,50462053430058,8350373847003/21134055318706744:-191120334979871062479392676/1246037477978771
+qmulz:42263850161473/2487221560052869,70196784710879,=1:2966786390837768841769764767/2487221560052869
+qmulz:2305968062717/1295096854935771,89753857010368,-1448986636213/88097527127243:206969527771576926343249856/1295096854935771
+qmulz:54792800436741/962961846570596,81148189103692,=1:1111584132840379068733886943/240740461642649
+qmulz:118089073191/117603203952236,-88682518170219,8843505968368/446344763404861:-10472436378965178887498829/117603203952236
+qmulz:4370360581061/33937836375304,24828310773456,=1:13563583837330531311889602/4242229546913
+qmulz:44999946775270/77691532844719,19675574610517,90987690124989/70801686470002:885399810246118760377514590/77691532844719
+qmulz:7388469159437/80827214538,12962289697895,-39739510822103/1124530750930:95771477668585155318285115/80827214538
+qmulz:-4438357163019/354300196838,2800216938058,48604674898545/5905387400293:-6214181452518427865638551/177150098419
+qmulz:-1115976535244/90660833629,-84198411580247,81927230020875/605448344659:93963451628372333929725268/90660833629
+qmulz:-14354364205035/137076592739,-60231717901669,29779963372229/288489332426:864588015455483313484703415/137076592739
+qmulz:28410403793917/8317372959,94611442054559,=1:2687949272294801418906317603/8317372959
+qmulz:-26238968575867/81875709363,-41798837075253,94070973760679/3467355102:365586124175115989639573117/27291903121
+qmulz:49964458440323/3849731307,3475521417184,-94000433574238/5577825597:173652545407342463250710432/3849731307
+qmulz:63054816328381/8314862510,31407375891502,=1:990193159097540038129659131/4157431255
+qmulz:15690728254037/869383378,22615130488585,1475502145196/107482041:354847866925974243808667645/869383378
+qmulz:74263848858589/607431119,87079437180738,43892391010643/973943857:6466854161481322249396658682/607431119
+qmulz:23023853281324/23656491,66652947880105,-31945062874493/5458316:1534607692759273053987659020/23656491
+qmulz:3506276105087/11638761,41170764577395,440230047929/1761776:48118689355294122721569455/3879587
+qmulz:-93363094505152/3545929,76526518299725,24762745460028/9476321:-7144752560167469121292683200/3545929
+qmulz:-2458728669037/893246,74281956367289,10383331533388/299139:-182639175712408990493930693/893246
+qmulz:-5121601980421/33999,20660659077801,8112621331106/52165:-35271890816556237705911407/11333
+qmulz:25877846847031/404920,75489603155313,-38374243475879/901678:1953508388996337946045925703/404920
+qmulz:66471726351654/51695,28218300697455,-2687434510961/88806:375143832413983194158568114/10339
+qmulz:-3436425362877/67400,87107727529435,8150807016773/30347:-59867840836945902514756899/13480
+qmulz:64658311574074/1471,54380155658036,79155462122195/5662:3516129047983934816427358664/1471
+qmulz:9680963797950/229,-14929130816650,28202159724489/2789:-144528374970848369095867500/229
+qmulz:816481395175/17,-99383084980450,71300027130653/105:-81144439881633403599328750/17
+qmulz:638399693884/125,-59707159904100,34949260444218/785:-1524681304218419151860976/5
+qmulz:38337688583813/25,46682828260030,66019999840333/85:357942346408931005122578878/5
+qmulz:-4362866892015/19,43253153678106,=1:-188707752157445489971723590/19
+qmulz:80038414225429,58791342870753,-71193599831017/3:4705565853558550737752978037
+qmulz:-8931381288/7,27056505490713,37222461138097/2:-241651966858423345978344/7
+qmulz:-103292201629591/24903444183827008678,811061948698381,=1:-83776374339042161969543392171/24903444183827008678
+qmulz:-108233246344215/10921524390718392772,336628265620018,=1:-18217184999638624584411247935/5460762195359196386
+qmulz:-242546210473995/3227191274694658997,117559616638474,-200514522282738/1463600762469566069:-28513639520437479372093483630/3227191274694658997
+qmulz:346557608752347/7091232122596884343,-890608472719639,764299440148772/741441034955506561:-308647142640297959088714242733/7091232122596884343
+qmulz:752322662466430/796990587047794081,213680028681761,572521425296816/937517719580878925:160756328093765562145815783230/796990587047794081
+qmulz:34927180981080/55520878875379453,-865283782342577,989438973302993/881309897241401311:-30221923265872621723515443160/55520878875379453
+qmulz:274082612801409/53154246781994009,971799838064389,448110955601401/45559104250121531:266353438736673897727411924101/53154246781994009
+qmulz:-124555667888037/14097174308038652,829678276357628,125094809716795/35133120466800502:-25835282960979923394918724059/3524293577009663
+qmulz:505323718065074/2128598622243549,-277690520595781,914993855209755/9726536089876778:-140323606338886062971007852794/2128598622243549
+qmulz:-902895852073028/9135983164951921,833620594767907,842531169585879/9544376880879779:-752672577218593777816474712396/9135983164951921
+qmulz:811564634419288/453082972179167,60327882243393,51265177937813/73949934423745:48959975698149096053229764184/453082972179167
+qmulz:250179460716837/290886574637551,340496244659932,9798345091684/451481890082625:85185166865129977930011675084/290886574637551
+qmulz:-582653512523981/99348978999674,379317852190649,460594514303380/74887958609607:-221010878941933880917996453669/99348978999674
+qmulz:863679006697/1635434858422,924063163904185,-729545153826413/62812666295337:798093955526053605281326945/1635434858422
+qmulz:304709172702197/5457282848355,882318039223156,=1:268850399791912468175214473732/5457282848355
+qmulz:463908939133169/6691921051406,-552915136065320,-601471563981221/8781918044231:-128251137101367195825081299540/3345960525703
+qmulz:-752373946530613/846634747661,284479627123896,50536119796472/513050133075:-214035059766762852800707828248/846634747661
+qmulz:328225703018604/433509767335,197654409561196,-3782967558290/93869557971:64875257532950641256264490384/433509767335
+qmulz:184785598182871/11617410807,895346115182373,=1:55149022491561504431189910961/3872470269
+qmulz:192803285928028/90953336419,332075196148197,=1:64025188992566808558163965516/90953336419
+qmulz:-399599786249880/7362537623,-981001390019795,957969995178032/4517518129:392007945762745245102016374600/7362537623
+qmulz:82589051366095/1626512642,398617970248743,137619262887145/9949579469:32921480020321964131106568585/1626512642
+qmulz:-907650909511793/772837941,990867777654644,=1:-899362039594166707200599216692/772837941
+qmulz:-358503288380739/383532866,697173774576334,-51289684132425/110529764:-124969545379213895872305415413/191766433
+qmulz:275838241610846/67525047,469977259127432,28053789338265/5265202:129637700754795766556067327472/67525047
+qmulz:53930640918734/7001103,693055155395270,=1:37376908722499699209717988180/7001103
+qmulz:-681238687980343/5030205,-582879269862290,-990800444969909/4579368:79415981810385344493567393094/1006041
+qmulz:520602003913013/4593382,308897366106910,-466584092376547/2221166:80406293899354484531049109915/2296691
+qmulz:-405474039012091/243080,-154710965359365,-172296604865771/908379:12546256000744284661479016443/48616
+qmulz:588023971610839/411117,884974921870604,55791283769330/230429:520386468334344508549001876756/411117
+qmulz:540840030461611/7002,-380104715492010,-205957826883233/40847:-11420880328072259499071234895/389
+qmulz:-753807927054263/53929,915393419376816,35196013565764/3461:-690030815899551293936076166608/53929
+qmulz:237522311694659/6300,580421631136666,118641235907757/8270:68931543792582787509445633447/3150
+qmulz:-703556714392601/3647,26296886058971,559465758581845/6674:-18501350754406230744932073571/3647
+qmulz:240687231749867/206,-784485320110706,=1:-94407800022927047065270388051/103
+qmulz:-93887798635737/127,-575220251243142,-652322307871805/572:54006163119914161845877365654/127
+qmulz:-396521866192559/70,394474102270905,182300183108827/15:-31283521439418725353582639179/14
+qmulz:58431834428363/5,-485860188905084,792920518125413/98:-28389702113435038144004497492/5
+qmulz:94346378811421/7,897687299600400,=1:84693546022300913680256168400/7
+qmulz:606162442576909/6,95792984784316,-12377831317439/2:29033054819296832459303479622/3
+qmulz:-3880722889823905/5802853163792252251,6995189470105129,723671795237053/94804862094718615043:-27146391895292126926964647308745/5802853163792252251
+qmulz:-711255950576391/38557928701418837140,-8914163822970630,5504820920293812/83891195583846813871:634025206350065106283436439633/3855792870141883714
+qmulz:471011076275411/1268773388114902240,4280756402169772,-3446853649893419/6906782713522266814:504070920064710111468162769073/317193347028725560
+qmulz:7695205331550676/3582847162742099607,-144661167043645,1213893998753526/600058503660029491:-1113197383902599946494421254020/3582847162742099607
+qmulz:-3199289405937703/365472303862404370,5173907772378010,=1:-1655282832346770788786622711103/36547230386240437
+qmulz:2758027287264869/155052934325555752,-7564742138218573,-6257710286765285/771615064482957592:-20863765238329215589609266211937/155052934325555752
+qmulz:3955143821106077/91399737124804255,-7263645778507290,7804375725987635/91077647617338438:-5745752743913269680040361560266/18279947424960851
+qmulz:6713507007062553/74150811777510379,6266298995262737,528130351899129/2709757324123282:42068842213045420456548828987561/74150811777510379
+qmulz:-6877567017527963/1489247567416462,-4521311499760591,-115573898280262/923926913012529:31095622846723329241375147906133/1489247567416462
+qmulz:-1586799572294172/4730804077270513,2121219051102928,6786948620547679/9912102833874252:-3365949483032375529047866535616/4730804077270513
+qmulz:-9501087403079799/923245070947319,5606803416408299,1323793614080105/21826353763174:-53270729311181670439383462851901/923245070947319
+qmulz:1083936794899597/58977209646283,-8747830330029136,-4634270584400088/47878110359797:-9482095170257265523833204658192/58977209646283
+qmulz:-3719900694014304/36234265212301,-1494306375099641,-1975217081214247/65326075776641:5558671321803153433440279264864/36234265212301
+qmulz:1103608308470404/8630287542765,4527264291311725,-6050102349432119/65604233367649:999265297306599031900300137380/1726057508553
+qmulz:185603093644419/1285147223476,7441353681336558,961853358112541/9035783508083:690569132079175618373558684901/642573611738
+qmulz:7656576001713938/5697164099281,387954634853982,4891764604516329/9388026384014:2970404146976692276584364201116/5697164099281
+qmulz:-8608538284429615/24304320924,-9300930568944394,1012277413814075/307338098963:40033708441789768251278470914155/12152160462
+qmulz:-2298250489792159/192401665676,4151647369458953,4637677731066783/854611972340:-9541525600303367226221251749527/192401665676
+qmulz:-4958597485118384/18914385675,-8391716685524037,=1:13870381750888490254448674198736/6304795225
+qmulz:-8775066120996947/26819677230,8537625341965974,-8617075263155655/41305030346:-12486371148675098768666305313563/4469946205
+qmulz:8632423322860386/9616021081,5042628174507057,-6506115385718735/7975459194:43530101062127611384934782744002/9616021081
+qmulz:-3848534615760728/9274753529,2104642248786963,5619621461116310/5343995473:-8099788548249129154859453789064/9274753529
+qmulz:271301194709322/33552569,1917863106025352,-3970383512818995/409886044:520318551953609085962402731344/33552569
+qmulz:225678582778501/66976167,5457450818595612,-1586701099858817/141482387:410543255441342622436562179204/22325389
+qmulz:-5691916212714825/75531979,-3677441922214847,186124889390004/78334747:20931691298371858008446792006775/75531979
+qmulz:9683640970785183/21432671,6061708788245552,3666308965635053/8459353:4515339351909479419918957481232/1648667
+qmulz:8423905758112927/2462761,-1402202086438487,4991587911230636/4020141:-11812018229987130827123385021449/2462761
+qmulz:110629337771891/244490,5329540769616160,1715961548659264/49589:58960356597093007948570735856/24449
+qmulz:2768082072858327/11996,8431038603161226,=1:11668903406493550143637918814451/5998
+qmulz:-5632710453612631/282213,8269803080914635,-1089107539381719/990995:-5175711807020645232938163194965/31357
+qmulz:513164615298521/2937,-761654779947971,6308090089559589/34312:-390854282142280204811013250891/2937
+qmulz:2399352646293603/26699,5936082314225321,246326307317325/1064:14242754809253178957252862921563/26699
+qmulz:1917463706144480/173,2784408494403777,-5268002443544296/9923:5339002231099637846089019700960/173
+qmulz:-299651250103083/304,8512720924447435,1696619119714772/2041:-2550847466789346268098564942105/304
+qmulz:567861836090453/137,1194683804539166,398775012895933/117:678415338793138672840757182198/137
+qmulz:5855010424286591/141,-3387352251576542,-6842084179082795/92:-19832982743711308513005380748322/141
+qmulz:1839091525348225/37,4835017725039396,3258229037788442/47:8892040123028407522020743672100/37
+qmulz:689624656142569/50,-1436205069429607,1650564655275659/9:-990442427155607164133701640383/50
+qmulz:887987723713419,-3871030680937173,=1:-3437427722790206595690596024487
+qmulz:-6321481694612935/6,9155176113205281,-2076666497659035/2:-19291426070194927792191164303245/2
+qmulz:47535841066367704/25874740830854221899,20217596491741418,386741628388289/10612132664990412300:961060453575373318717870874364272/25874740830854221899
+qmulz:80223166731461168/79315578551274076339,19941312492318563,-6517563635718293/15173501904275140121:1599755236915441531514785120061584/79315578551274076339
+qmulz:-94966952144940093/814524592733157116,-8833229520058195,55047972140476464/8182255352181738995:838864885116638749899220148712135/814524592733157116
+qmulz:19023061829222254/8275414709591200245,42825769994498364,40342865387732273/6423424085911584926:271559090163131188965234998464152/2758471569863733415
+qmulz:-45164511230863025/205230894764003516,95431251431037353,9088808827059225/537242774047899907:-4310105827032399655884245201572825/205230894764003516
+qmulz:78978348840218612/30892480489678495,22023635711834354,=1:1739390383979149957558284891796648/30892480489678495
+qmulz:-148958689172671/102037781856410,18768909665863199,97201659871254553/14233090955064268:-2795792181027256577300375434529/102037781856410
+qmulz:-13899781468245877/210298830514748,-40323281693369663,=1:560484803620357867773725936629451/210298830514748
+qmulz:88175738959378971/4244405961829309,49633440309199351,91798871890211817/4618870882937021:4376465276359879854575633196247821/4244405961829309
+qmulz:-196047733461491/273753721482047,-28937490043883541,-8575700230869559/2512020324451605:5673129335167829946904412219631/273753721482047
+qmulz:-19132451907214205/25824658302078,18312961377925295,-48090033092819861/431889830006992:-350371852841826885918246052815475/25824658302078
+qmulz:69382145113501751/380297809139977,2745327554581026,12801801952051298/753948686518799:190476714776035644694264522376526/380297809139977
+qmulz:1915274245412291/3788421267711,48395753953886595,6801592121612027/29575658734452:30897047045063015615882544379715/1262807089237
+qmulz:-41044766089612839/3600558205679,20994850850464225,-35435905322101302/25097049433951:-861728742243613295588013670184775/3600558205679
+qmulz:42597494937030563/139066009314,65616555969864940,11098362865249168/1843997772651:1397550455355852172511957881080610/69533004657
+qmulz:74024369507729486/8798209628891,-48540197369243101,=1:-3593157506038970019752620879776086/8798209628891
+qmulz:-78176595124115512/936929521175,19202167121582858,-99925056698963177/191994309327:-1501160044569585652613332671093296/936929521175
+qmulz:82802252720820771/664875719702,97327360089498817,-27164056917268865/462863761311:8058924666781006338043050273527907/664875719702
+qmulz:-79012216554892489/70097745469,18109121557124146,-26372881204544091/13780169332:-1430841834090364897003709055939394/70097745469
+qmulz:-70054799672271272/45482963493,7787932643225419,22281182451081849/9895333688:-545582061182298824047255613862968/45482963493
+qmulz:38317664305319638/2445394649,31654407463814347,-43227662278819145/8020766369:1212922958982242534681702525246386/2445394649
+qmulz:91685907685022135/618530726,-65256514026907419,84454182812530114/7990613223:-5983102720917385677413600610719565/618530726
+qmulz:-9319036791983210/326561129,48383470752719549,-21563116260711314/160888617:-450887344068437052714708646772290/326561129
+qmulz:-10319092612953469/85265494,-55462305741126344,942196671950729/100675391:286160334735311815060828261043668/42632747
+qmulz:24190194708441624/10753379,88757165826516370,33675430745281060/75133189:2147053123112872034250339425384880/10753379
+qmulz:-11468596832661746/1766525,56376469108104767,96014028182502185/4186386:-34029420792098057856142633744378/92975
+qmulz:-40039747951909081/6069939,-55718774097961657,-38493857988408833/3718928:2230965671071745008018063888107217/6069939
+qmulz:-37290139983929779/799087,11981560139468355,-11746974507966646/3218933:-446794054826648164153652712643545/799087
+qmulz:41894225992589221/366814,74540431481275887,-66854308231170017/431055:3122813682061684114056083763414027/366814
+qmulz:4577566343641272/36389,56889856836673491,=1:260417093950126892755280695920552/36389
+qmulz:88284563154658136/23691,63742381682886541,-30323740102908723/9056:5627468321311120786042358530547576/23691
+qmulz:-35239011702626416/1503,-96377199381969204,-61186369864860723/42751:1132079085629190722429226942964288/501
+qmulz:6204324005181542/3263,9242869672214658,5888893248603815/2661:57345758184085853188298483442636/3263
+qmulz:13023563233102553/2092,-18292948555955590,78624947167647851/9735:-119119686119189830929040691810635/1046
+qmulz:8668988413765031/12,87487198824736036,24608302652702701/174:189606378241098583267909375589279/3
+qmulz:-88604450607713147/253,-57197213811690954,-65274907046510203/195:220344682872903450186081523772706/11
+qmulz:33666476522294146/13,67039261791546104,=1:2256975733177017899095506408307184/13
+qmulz:-19043783688556820/29,-46927274804274505,15813572639616397/59:893672870466066256149790569874100/29
+qmulz:-94396743394101937/7,29360199416108739,=1:-2771507210282078156031800042527443/7
+qmulz:32378539760159572,74380454651945304,-15922753341092935/8:2408330508326757024819007256049888
+qmulz:-515970186826451384/25959078573251600323,-481657180143660888,855482564716356613/45268895425503079014:248520745225026458245551027714268992/25959078573251600323
+qmulz:-130967478747895251/18589421418033360838,147641505075499109,-55563959724327169/34005532994986142887:-19336235678282698393435282075831359/18589421418033360838
+qmulz:-860266011517441547/2553655932637699066,-299807248907353740,=1:128956993120773018576083159450917890/1276827966318849533
+qmulz:145239559532108435/807509961508023596,576064609905367511,401973572562411248/7006133492934535601:83667370204691447066198253378055285/807509961508023596
+qmulz:-203788329869580393/934147712305627115,977955003052547263,34371785465644891/24153024504080070:-199295816759679001811043775610614359/934147712305627115
+qmulz:-305697857540446967/103403955365462673,-568720855877228261,=1:173856747180237996116028815024134387/103403955365462673
+qmulz:226166409746766031/13002990761630932,789981405518661663,-113466700430225377/10401766053678468:178667258252859769569650633510369553/13002990761630932
+qmulz:3220063708444885/86759191901981914,-436274250898667434,=1:-702415441123888629947969466687545/43379595950990957
+qmulz:-67396315446702174/385366352018695,935081661792652149,-625977217802097815/9842734508647274:-63021058646604060109741387184071926/385366352018695
+qmulz:24319453787590069/147313838530763,247065078929176318,=1:6008487769545396355634476406785942/147313838530763
+qmulz:100629482109427385/145102206127588,493200833830327566,587248475105746167/360845897573321:24815272242141808191386545620397455/72551103063794
+qmulz:68125647111849775/751431108442761,573247979073143838,74386340727896222/930067472967985:4339209947768671307372114758104050/83492345382529
+qmulz:315260234123867071/28724643212088,340944306756538261,-53419962261027213/66345800395925:107486181971265805844870978489503531/28724643212088
+qmulz:-236430702618704929/20104762237425,598324387971999776,114120042986736600/9261982109063:-141462255442126511362707327398095904/20104762237425
+qmulz:40711881042093025/722627757269,-916183636373594020,59862621134038918/36564773153:-37299559216753971995016222423710500/722627757269
+qmulz:-520309382707815761/931737166517,259750055972789770,-130681632611383930/845007490973:-135150391281522837582794926345564970/931737166517
+qmulz:-744723510370875375/104328014528,392776247476475915,645297290772722121/747416253776:-292509705810980823923192458654093125/104328014528
+qmulz:150326873930054465/220440980183,184204467758877126,446972731209163483/312751250617:27690881802141504054899212422667590/220440980183
+qmulz:115421167528373279/5250405410,771027268136349173,=1:88992867484509542530759922626948267/5250405410
+qmulz:84701761403492795/44355610023,965802039756702720,=1:27268377978159632125207673492300800/14785203341
+qmulz:894229992015313913/3163831833,-785572023936143576,681929403708376856/586412675:-702482064691871660107123412278372888/3163831833
+qmulz:74634858785325581/142443768,427912086580428045,263236478364528529/7486986306:10645719384821420242829855889439715/47481256
+qmulz:-332428641831574483/344279073,908684289900488822,-638499266082892652/390482433:-302072684345308192917372015601929026/344279073
+qmulz:415890959805425615/192542692,57300089077177939,200778229355831075/85157704:23830589043243917548894324983507485/192542692
+qmulz:806988421881608649/16389833,666714975759989998,994687425328887678/8586277:538031266133389292509645688390292702/16389833
+qmulz:99978136901356657/62362649,-421321213914285499,477860583712193259/43057685:-42122910004168208858812125922216843/62362649
+qmulz:134226773204000444/2213319,457929073299284411,=1:61466341865261143971298267726278484/2213319
+qmulz:203692403587646607/2530234,198709333320751525,654497348349770852/9852495:40475581719402713398336251356325675/2530234
+qmulz:1932413671793631/11008,605844360169614539,271988563133914698/256283:1170741924570827879369734025201109/11008
+qmulz:78300870419392545/300541,9938443225300603,474105168486707610/456971:778188755154752224021438282204635/300541
+qmulz:731791251673481239/82178,-375066073302435963,897701210637687185/8253:-16145298308367486968573476887023421/4834
+qmulz:-244865844794445459/20764,633837473482998794,-572503688932727221/18042:-77602574203395710948196720797888223/10382
+qmulz:-871079916851090199/6190,-933271236207286315,165562923533871377/1253:162590766166991424800556971016665337/1238
+qmulz:278477012608289079/6904,166601452640247459,=1:46394674827457467509510753167200261/6904
+qmulz:50351542334760530/697,74118063280217581,=1:3731958801024335445119077930877930/697
+qmulz:716113366657554965/773,292433182475186613,55790708408336567/73:209415310824688987980879304679683545/773
+qmulz:266171451721629402,838958222079312932,186531239281784779/61:223306727904647880295582119690026664
+qmulz:-191048663820313019/17,-335221912735777740,-104282880591219422/9:64043698511459908763402007212397060/17
+qmulz:918486165864351700,-754751323324354742,107963234237522909/3:-693228649141232227471800102650761400
+qmulz:-263050925547501061/9,429366864986261421,-369906620681745801/4:-37648450411354997741362101140289227/3
+qmulz:-8908762588791502798/9682457258957956871,6517968147068840217,=1:-58067030783541555611439264126370427166/9682457258957956871
+qmulz:7658247927733463351/71097873025711495885,2645904249530727710,-526743598589435636/3308522377463446025:4052598147189972001038980978729031242/14219574605142299177
+qmulz:35178382688557660/101323881670407613,7331418798392863213,232580837460702659/1407098737763013928:257907456139949700482063020643361580/101323881670407613
+qmulz:1263699762126537691/454699906557876874,-4542833552105116827,-2210388710075629538/661648401890741827:-5740777679175690401542804846573826457/454699906557876874
+qmulz:-1832647602190411445/226947754154888126,5643404261053171972,-1097284930177831457/619682865758859799:-5171185643605123184522851420511009770/113473877077444063
+qmulz:1823011844211832737/592442421313405007,-1035458481118632295,-6389536796987914382/963103956263803057:-1887653075268861046971124680746441415/592442421313405007
+qmulz:3241180647893831993/47706456259746618,401191978478284716,8203697741103525736/82629569130745973:216722612789009192825658264487286498/7951076043291103
+qmulz:669385746027781985/4358673572763459,-3232260578078726488,3369728187950184564/4211286946970669:-2163629158413418191796114556108718680/4358673572763459
+qmulz:-8416424642111725238/6365835551441079,4033684793967464839,623945245518632503/408732809111644:-4849886299779875487264451230199129526/909405078777297
+qmulz:1670670426691770676/933711771783465,4268278044364566390,-4259333158202693983/1474131926823072:475392393441177774546174414803811976/62247451452231
+qmulz:-2026621003312993155/235607922312922,-6449641809771356053,4984273563952773559/458950128766224:13070979555528254543461227718656817215/235607922312922
+qmulz:2110680248476630645/95785011231043,4324730695176379682,-1722968689643087720/615704293887179:9128123658289392651639137372596554890/95785011231043
+qmulz:-641839465597711103/9456066925611,1548277416348552437,-2507922761391944404/21340298450009:-993745549506159751964209714572608011/9456066925611
+qmulz:2741589907602153339/57948673895524,1590482362679123180,-2499147223466166660/93552475783027:1090112598435077963801396817107324505/14487168473881
+qmulz:1105127694202188183/6381230280571,6999165228541352101,-1962335544251498845/1250684067374:7734971330358035931095740815664422483/6381230280571
+qmulz:3388900892142215022/3450834628513,-921940083605878001,6734092499539471533/5162430112340:-3124363571833628263304768671241531022/3450834628513
+qmulz:-386348847054518292/323004206381,514411028349585069,3189676746121428640/214488726717:-198742107714991314988148399870582148/323004206381
+qmulz:2621996699851800211/639729174738,901100719762883014,9556760707097111231/962924737943:1181341556726180554328723203646757977/319864587369
+qmulz:-2049289271073576417/18016913114,7508216114633285941,-9469235071531039565/67942461077:-530569197538611262694579912395698393/621272866
+qmulz:1639764361637752909/49863322429,-3667535081176061352,=1:-6013893321168728538238660340400472968/49863322429
+qmulz:4212865081507184639/8422182797,5317645517552525584,826928849605057287/795440204:3200360445247176534048939736551329168/1203168971
+qmulz:4093224907870688472/8446810835,-4394239498678494479,221730631562040646/480114129:-17986610567140020861411212830180946088/8446810835
+qmulz:8729905651613329077/131452699,-9507557452223167406,=1:-83000079535201453087454918169138464262/131452699
+qmulz:4738064793602310889/451996055,4531489655540363995,=1:4294098319897772319607429689642408311/90399211
+qmulz:7744273453919740331/974912,4029995544880393387,5229428187412633641/38528578:31209387517632050003517673680169591097/974912
+qmulz:-8068802747587440815/29032004,-9849867648134802759,8503993416585326183/5318819:79476639142642740206984820735611208585/29032004
+qmulz:2861631232576326878/6980153,2635765392614151917,=1:7542588569248461690745630176942325126/6980153
+qmulz:-1779740841595132817/3012373,9922862571979507578,971621845586608480/521437:-17660123784887653006801622709167987226/3012373
+qmulz:4023122851061736595/781603,3458044068302173434,3738807635979349585/665988:13912136111164966581427463952914617230/781603
+qmulz:586647455438577923/33279,4526301832916840671,3608109198062688989/33159:2655343452827635863034403318209106333/33279
+qmulz:9196111739041159411/1211,3157226438241334248,-5764176110323692119/75991:29034207111522241973647178465501807928/1211
+qmulz:-128347641900306833/12774,-7554445682363002392,5759447892271827483/18544:161599214865874288341552651985490756/2129
+qmulz:836992725257147861/4133,-8611487193024899504,7678442646525158846/9511:-7207752134206937140419355427193560944/4133
+qmulz:8699549138022640117/5811,-6972026102209810211,549233631824230415/177:-60653483667750701802929732179724834687/5811
+qmulz:3156470757655913741/841,-6926959212561953600,-840701905979711979/41:-21864744193927041320056800380044417600/841
+qmulz:509258565369492935/912,8179603403105663140,-6092933483503672408/101:1041383273589253055649823422179978975/228
+qmulz:4260013411623757232/75,-7652070371810821485,=1:-2173194827373526007681124278141981968/5
+qmulz:-5571230682641213483/85,5687608093861986954,1592299486970268628/23:-31686976723362408587412758204074900782/85
+qmulz:1224310285715487476/7,7384878353077411745,1489674084056377327/2:9041382526430324573993691487042805620/7
+qmulz:532608537074668190,5378987672829123810,1299009834218541099:2864894755368193556998428824178603900
+qmulz:-16831183915817756170/2753858239387681579,59557538310440342273,14474171978684251754/88138472845001942881:-1002423880876383309855786104105657574410/2753858239387681579
+qmulz:-76852233908089385223/89591433315005827168,-16827322555441357812,-13261671210390977146/47829058560152879137:323304332269411910681014536231862103019/22397858328751456792
+qmulz:69150327729675178449/8650125162732904421,14293920797793407650,50884780102476306733/6026568253305189080:988429307709434226307578722449551734850/8650125162732904421
+qmulz:30499040613205460343/8988598618848438770,30570026052354339437,51811261931566266659/3748183226209013484:932356466117503990794086213419264446891/8988598618848438770
+qmulz:43819658523452866810/102194429295876731,70504335913014047202,=1:3089475924131090053789938711687559165620/102194429295876731
+qmulz:69656424488183436907/30102774811906661,984948427407800828,-39906369295800321023/155750850550041643:68607985758486503850804077075560358996/30102774811906661
+qmulz:33641878290673988917/12925928405761371,-5396171272119458800,19436319690765846760/70381750662978231:-181537337172274262921911758331238119600/12925928405761371
+qmulz:42954819767647340359/97571649192732270,38715654116595663589,=1:1663023944764940538514016228488546488451/97571649192732270
+qmulz:-99002754944524890631/7986465915924126,-97203975364529818705,12484199575939692941/2326957254470028:9623461352648180166996658939078383052855/7986465915924126
+qmulz:88352255172275736854/7933296505985257,42489727492090669013,98815810269903702196/2382358470880605:3754063245581654384182755776192399905102/7933296505985257
+qmulz:61590480972201025960/675375171340791,-75994828859228936809,-11049721719852020118/20660972971879:-4680558060840013232552967100229808561640/675375171340791
+qmulz:-27522646268475576522/580129834806571,5567162029085222334,74438237038085866509/799763096356799:-153223031245801313480018162391200442348/580129834806571
+qmulz:24148248964829892922/23286035365313,49985702383172830448,7055168644844378885/36672697526553:1207067185830748414507857319763501289056/23286035365313
+qmulz:52980189869726618341/71466611837586,38839808746354627533,32063023501001399398/95171990625945:22126241310599319846248909165943025621/768458191802
+qmulz:-80505026028619928191/8017291718590,-1533155918930949021,-3916532593760914985/326976214133:123426757159468755445689924468501751011/8017291718590
+qmulz:17292391457368334407/1571629061585,-63370707239731364623,43143296273586046143/3465594785525:-1095831076519720312454034284738713483561/1571629061585
+qmulz:-45604879788200428008/529616356051,53301018012216428706,-91229775748273485595/717004201262:-2430786519035835963440363052798417597648/529616356051
+qmulz:-50447424829663619798/988121155093,6780140438275382263,16659035028087001517/899562317168:-342040625094459896541992348672744842874/988121155093
+qmulz:3593845345146253521/41915442602,-63858823181329772213,3118916835826556491/676191095:-229498734436739670514786299133279211973/41915442602
+qmulz:16886813553311884569/11104775518,-56529259575299150290,73272925971647951646/32053123633:-477299533377423659452543589452131437505/5552387759
+qmulz:-36701646710377438096/4191403967,41311697381328283293,85676309288704030215/204223664:-1516207322295535412352618149227058530128/4191403967
+qmulz:-31991568945242380121/3326501360,49756427012706630969,=1:-1591786165245924544503303159456768567249/3326501360
+qmulz:25027541823211097487/727783012,72744111549984214188,27646550684503944351/772714058:455151573552390843680552331807189136389/181945753
+qmulz:-10660456145991522967/70536419,85257294987559072920,-49523716090045547608/476186017:-908881654340736383544975893469407753640/70536419
+qmulz:33128477737669316703/79965173,30163481878837698924,41486580218368730746/24538333:999270237913666562482186749103918327572/79965173
+qmulz:-88082268340996623207/91130108,-98498682060501497133,55248370490574572505/10033543:8675987344487603057841057039320991765531/91130108
+qmulz:-44828402098358201492/3408511,-69899774554986777317,53529539851460359205/7667246:3133495200335534468175721510741221156964/3408511
+qmulz:97775247222108446692/6123089,-93552521078990120186,-42751923423887600316/1557173:-9147120876749770652720919372526854124712/6123089
+qmulz:36516268542348216758/743177,-24090657731418051536,13560217582155473423/145359:-879700927082258851088293609160542840288/743177
+qmulz:13823011732367751421/140456,92159940210798638916,-70795417829842533145/263179:318481983697045021949324000379556224909/35114
+qmulz:21697263555618348560/7063,34463551544345103980,99869086375772085/122:747764760920293478397871020089083268800/7063
+qmulz:-40668672455972057307/50141,18865137997582967131,=1:-26455866140014285075027032694601012973/1729
+qmulz:-15581921553193083728/2673,-55246769898174604433,-17101679935689176965/8667:860850834620665736463709777467848966224/2673
+qmulz:5779320031390413993/7,19217000507739754005,25876817036248520828/8953:111061195977620116757818678920929791965/7
+qmulz:2423549793740192960/491,98696549719389277261,-8414536430516573180/273:239196002715294582270898075501080282560/491
+qmulz:27706287293558914219/676,32022217504768731686,-38742274862382707994/961:443608378981976875151437105221950621617/338
+qmulz:64017926203955613359/38,64555971256483309833,70053608548103954878/35:4132739403922228262726093720335950859047/38
+qmulz:53804889371534152691/9,-61739634189995994475,-2917407728537843404/21:-3321894187431722069404444190953042382225/9
+qmulz:-63773122944071670311,68924540068336860054,-11050684739856731468:-4395533167641640581052894142988833656794
+qmulz:91952574331161593349/4,-53703503362679036569,87690617237600059250:-4938175384800530690367847777470278179581/4
diff --git a/polly/lib/External/isl/imath/tests/qsub.tc b/polly/lib/External/isl/imath/tests/qsub.tc
new file mode 100644 (file)
index 0000000..10d94ea
--- /dev/null
@@ -0,0 +1,803 @@
+## Rational subtraction tests
+## Generated and verified in PLT Scheme (see imath-test.scm)
+
+qsub:1/6908363373906559980,-3/3282386453454754261,=2:24007476575174434201/22675918354053873847004295306757074780
+qsub:1/38717857456042735841,4/21180041959354743117,=1:-133691387864816200247/820045845495301036647051443116443956397
+qsub:5/43729125372682174,-9/5619593033754393704,0:14245763648563054043/122869944158248625198135913829316248
+qsub:-2/2974810045372038215,=1,-4/6399510259263906921:0
+qsub:5/554668526872261904,=1,-1/110568531382495635:0
+qsub:3/342789991526278043,-4/498606462885016907,-3/85472740226188603:2866979354760162893/170917305187302413099656668837873001
+qsub:1/3516821512087322,0,4/43427709377638547:1/3516821512087322
+qsub:-8/99244619430310225,9/68745482383862908,2/20174595569499161:-1443165433943695289/6822619236739570045025636310634300
+qsub:1/4158186027003720,3/1924897427288305,2/873983495405445:-2109932130744571/1600816317113127793988749498920
+qsub:7/3877179943979588,0,-3/8937193062762751:7/3877179943979588
+qsub:3/6941436021947,0,-5/715763583943883:3/6941436021947
+qsub:3/164894601106681,5/983718669019872,=2:2126683001526211/162209897529226945840780964832
+qsub:3/97536769945753,-8/56666447486451,-3/355123038725:950293502025377/5527062252129064526472492603
+qsub:0,1/69397821325107,7/899954591994:-1/69397821325107
+qsub:0,1/881101320631,1/1676161462807:-1/881101320631
+qsub:9/5714833944922,-5/2130613532867,=1:47749691520413/12176102541138516914751374
+qsub:1/416320154010,9/647850043316,8/147151224525:-1549515671387/134856514904351145548580
+qsub:1/437091275186,9/260061434048,2/56787440467:-1836880021313/56835291917370078966464
+qsub:1/40450640622,7/70939336904,8/60816634845:-106107573725/1434770811533343057144
+qsub:0,1/44837423526,-1/89874392823:-1/44837423526
+qsub:1/320712007,1/384804019,1/5470204:64092012/123411269235156133
+qsub:-5/9120926808,1/893326726,=2:-6793780219/4073983841738135304
+qsub:3/355507838,=1,-1/715596526:0
+qsub:4/397576755,2/95841397,-3/206755309:-411787922/38104311613926735
+qsub:0,-6/63950497,-1/12602985:6/63950497
+qsub:5/57474807,-3/9692846,8/51541573:220888651/557094453130722
+qsub:-5/7525009,-7/6073612,-1/1008717:22307003/45703984962508
+qsub:3/1999328,6/812029,-6/2808949:-9559881/1623512316512
+qsub:0,7/738513,=2:-7/738513
+qsub:7/320723,=1,9/571685:0
+qsub:7/14415,=1,-5/47022:0
+qsub:-1/22106,3/90671,=1:-22427/286339018
+qsub:3/1135,-9/8459,=2:35592/9600965
+qsub:5/6528,1/1065,=2:-401/2317440
+qsub:3/100,5/979,5/637:2437/97900
+qsub:1/117,=1,-6/601:0
+qsub:5/76,3/55,7/20:47/4180
+qsub:2/5,7/12,8/11:-11/60
+qsub:1/3,=1,=1:0
+qsub:-2,0,1/3:-2
+qsub:-27/133467566250814981,83/42563959651039965219,91/6397136498252123976:-1160304718576896704336/5680908104622192257664942460644145839
+qsub:45/40427972021325393238,64/9751620923778714977,-18/31750379913563777419:-2148567267794782993267/394238257869097174193626565778845125526
+qsub:2/843174797904089739,59/3829064789486601609,=1:-14029727832456030461/1076190310012343744009826655225930017
+qsub:21/135302160124707707,=1,-91/6243239679870796216:0
+qsub:33/269586386932708513,71/663560078654965882,82/347777995721589109:2756849123391569683/178886764117376127330118719865953466
+qsub:-49/381369757179978313,-79/502081482360917424,66/15964802517749773:5526218181533332951/191478693012546642471803143103825712
+qsub:50/84007949326343527,-55/90680207033049248,=2:9154447564601356385/7617858237334741132727849157017696
+qsub:7/63509973628647649,31/6358426332168578,-2/8606093719923861:-1924300198162897073/403823488675725185285863631373122
+qsub:-61/3288737806026908,52/891085361745265,=1:-225370572979860381/2930546117568816471902431590620
+qsub:-68/686724622342265,-2/87939998369281,-97/6330897213879162:-4606470644426578/60390562168923894678643961465
+qsub:53/74615069808694,19/206431401793345,8/335314245039321:9523177968682099/15402893455516996957672341430
+qsub:-41/794425111656850,40/355792921374903,84/720131909879285:-46364514242645023/282650831289974168794338035550
+qsub:-19/9948614096197,=1,-17/6019916154851:0
+qsub:26/86905243242955,5/1105886678309,85/28690254896344:-405773162578741/96107350777587172015563095
+qsub:29/1328659476658,-75/8718935424058,23/3978732114658:88124647011758/2896124044385949895659541
+qsub:89/3664660122749,39/3752130456923,31/2507346317004:191017865878936/13750282860837702636841327
+qsub:-1/111730970852,-4/53644158721,5/525620687366:393279724687/5993713934436112600292
+qsub:9/134376727834,-63/680315135834,-13/19845761250:12619870308/79081766305636815401
+qsub:53/83663624339,-83/23745430735,39/22448823287:8202588649092/1986628796780784659165
+qsub:94/82386633297,59/60658096185,-7/3139891864:280349892289/1665805442295916557315
+qsub:-56/4452532283,=1,-33/2287829573:0
+qsub:5/4288753327,-1/207457757,-40/1852400711:5326042112/889735145545707539
+qsub:31/984155769,43/889343448,-34/317681033:-4916350393/291750828323850504
+qsub:91/918406649,64/20465291,4/3347977:-56915684055/18795459328119859
+qsub:41/61159865,47/95152545,=2:205348138/1163903361321285
+qsub:76/19895571,=1,=1:0
+qsub:1/1255098,=1,83/1479054:0
+qsub:91/7916464,-7/427858,=1:47175163/1693561227056
+qsub:25/630098,19/359620,-70/654341:-1490681/113297921380
+qsub:1/23261,6/84073,16/99379:-55493/1955622053
+qsub:87/25076,=1,7/10664:0
+qsub:88/76661,-54/49307,=1:8478710/3779923927
+qsub:86/1213,99/1546,=1:12869/1875298
+qsub:40/4409,47/6632,=1:58057/29240488
+qsub:47/221,-20/453,32/67:25711/100113
+qsub:88/281,27/221,3/160:11861/62101
+qsub:11/76,=1,0:0
+qsub:12/11,34/37,-91/30:70/407
+qsub:-21/2,9,-75/4:-39/2
+qsub:-78/7,19,=2:-211/7
+qsub:716/63229225130372968755,323/1041977709013285590,-85/5331036743812256792:-87453260788697584113/292815302862361288266503618244274402
+qsub:28/28432306149803878485,51/36062569591582234426,-327/8530238148665402747:-440295665075695238807/1025342019176473906318007480837287724610
+qsub:35/2651717833003975527,94/1600682896707796861,=2:-193237574917600809403/4244559382184525484529422270531420747
+qsub:386/5424883893029166991,-201/2832569452810712705,43/716839232710423233:2183773471283797669321/15366360400439276458941965547170320655
+qsub:971/506137779607436980,-690/134579589961574473,267/104999489601941375:479911849781820329483/68115814843630618803212580924211540
+qsub:846/926665120742753771,-693/971167451265042566,=1:1463786592444954374139/899947003487953107927067006372016386
+qsub:-160/248883036705679,=1,950/1477253685625391:0
+qsub:306/15329555212551109,173/93038341559131937,683/17162719883913218:25817719465323030865/1426236393814901458412317286668133
+qsub:-625/3476582462880142,-872/8679903101365753,437/9209000641481251:-2393359530722111801/30176398901707132402666142576926
+qsub:4/92742256929161,-206/1677519242207209,-29/1920847318304748:25814981896236002/155576920564392438731996521649
+qsub:105/440859258236711,23/114084068799213,859/777590483782957:1839064284473012/50295017947446948173484508443
+qsub:234/109710309040703,435/19164872307439,=2:-43239404312765079/2102584063574743486180689617
+qsub:40/98720052152257,200/37673731641681,195/18309401204:-18237061164784160/3719152752436883045979424017
+qsub:101/8139505456847,-896/64811418546951,=1:13838950162576963/527532894928902528173923497
+qsub:339/2503418324141,=1,203/710577119901:0
+qsub:-210/2286964112149,579/5338514331377,-895/8857700286753:-2445240230523441/12208990688052313177599173
+qsub:223/305810995184,29/35011322751,41/153998316063:-1060993886863/10706847453191530631184
+qsub:212/157864593381,817/922433484280,301/424913103878:6052775079553/13238144265171023231880
+qsub:39/74199525578,=1,86/3093865155:0
+qsub:-285/57499506881,767/82446691329,5/8259783887:-67599428806492/4740644095387518534849
+qsub:419/3764128897,129/517942151,-247/7249378910:-268554866444/1949601017553437447
+qsub:245/1908967167,757/2819581996,-985/2094042342:-754290556399/5382489455028325332
+qsub:-295/48205876,431/527424726,140/594985499:-88183513363/12712485470444988
+qsub:961/845688743,-405/870406786,187/421915568:1178964862261/736093220751009998
+qsub:407/45012097,=1,=2:0
+qsub:-58/619321,49/12338458,193/39820887:-745977293/7641466147018
+qsub:575/7245689,-62/7853229,=2:4964839393/56902054979781
+qsub:95/498463,=1,31/397052:0
+qsub:194/160465,199/12089,-11/7277:-29587269/1939861385
+qsub:266/45609,908/59061,-571/590454:-8567582/897904383
+qsub:131/55938,=1,55/8836:0
+qsub:199/46692,=1,964/70603:0
+qsub:382/8669,-217/474,467/5123:2062241/4109106
+qsub:147/745,528/8207,-88/5227:813069/6114215
+qsub:396/775,=1,-877/724:0
+qsub:6/551,=1,-435/346:0
+qsub:55/24,277/11,54/5:-6043/264
+qsub:10,-123/13,556/9:253/13
+qsub:108,-709/4,-92:1141/4
+qsub:181/9,=1,-941:0
+qsub:5864/87029719866427538623,7169/77056696318482378212,9879/50543130835616368106:-172055594510838358553119/6706222694429899607884755085022523682076
+qsub:5653/86895502758062177839,5653/8154794595245621549,-1891/10149086543140986167:-445121223244401992707370/708614976242596448503974984564128652611
+qsub:661/363701500997277796,479/2983031197662645683,=2:1797570602677312732179/1084932924111611507079868138271154668
+qsub:-667/1895442338469738028,=1,-1283/8749436718472928966:0
+qsub:-9697/818740708549198026,3503/102582377391327177,-1163/20328789690713125:-1287596671870513440149/27996122783345481707441743709517534
+qsub:5593/36797958092515142,-896/400288681159053633,1503/320767765005962056:2271785564173480536601/14729806114199011085303985442610886
+qsub:6797/6164537725975597,-25/1227246984675396,-8333/22072906026109818:8495711197988056537/7565410336121273997822462311412
+qsub:5972/68776879303523725,3471/59251132058857634,=2:115123212592966940773/4075107958209196684815674316366650
+qsub:-6611/9413167004921254,=1,-6256/7532100811974283:0
+qsub:1837/782359177742283,274/89188711189557,2191/8972155631565142:-16842250748723111/23259202250051923207502312877
+qsub:553/12771753856843,7076/381142689332759,4681/186762282268761:120398976909994659/4867860612493178112476219837
+qsub:3079/80223061021791,-3585/408207816163306,=2:1544471539729939909/32747680545640939721680601046
+qsub:-9557/15580233019419,6164/45700338424117,-8859/38230373237191:-532794690650984885/712021921714050551118928023
+qsub:-6948/27781302080773,=1,=1:0
+qsub:965/554586285674,=1,1991/3124819638593:0
+qsub:745/38448222313,1985/5666404010804,403/1187780069839:4145151266757675/217863161122667045869652
+qsub:-859/409102304936,=1,4163/697719670590:0
+qsub:958/328712574179,-6903/92390217229,942/905293648915:2357612727663019/30369826134301586329991
+qsub:151/12267425536,=1,=1:0
+qsub:8671/21057436708,2207/65025757482,2889/90207961763:36954612879419/97805412326212317804
+qsub:-563/827856356,2261/803220213,9777/7547919848:-2323996200835/664950958599723828
+qsub:75/325694386,7497/1661300549,1948/1110250407:-2317133270667/541076262268017914
+qsub:3501/918304436,961/56965645,=2:-683053839851/52311804503101220
+qsub:1123/310344294,2131/431751558,2307/53942272:-4902408080/3721989790303057
+qsub:1405/9784159,2196/25867783,=1:14858221951/253094501849497
+qsub:794/7899253,-2407/48403717,=1:57446053269/382353206723401
+qsub:1229/5474993,4511/2921328,-7447/1108510:-21107381311/15994250350704
+qsub:-7372/331741,-1691/1178944,5486/4648811:-8130201137/391104061504
+qsub:5538/47579,1604/905061,-3007/385287:4935911102/43061897319
+qsub:6299/305054,917/272126,5357/926074:358596789/20753281201
+qsub:-4585/61734,=1,3775/46277:0
+qsub:419/11735,-8692/17091,1813/23231:109161749/200562885
+qsub:-1997/1968,4543/2391,=2:-1523939/522832
+qsub:2071/1736,755/3768,4076/8723:405803/408828
+qsub:838/393,-953/227,-1542/517:564755/89211
+qsub:30/29,5248/27,=2:-151382/783
+qsub:391/83,-375/8,1924/15:34253/664
+qsub:3263/21,607/4,-2267/41:305/84
+qsub:9453,3109/2,6826/5:15797/2
+qsub:-3878,309,8605/9:-4187
+qsub:11222/48066783055662674131,=1,=1:0
+qsub:44095/11229138978726519749,=1,=1:0
+qsub:32172/9931355060831305057,-22127/1443489042124973960,7360/8565719299009119553:266191022894258949237359/14335802203762393030456814478941315720
+qsub:64044/4464944802393435647,12647/913738015734848205,80458/8255357897052863503:2051280563852837813411/4079789804104601810582916593980963635
+qsub:41455/753918793466056957,=1,38552/179247636782332451:0
+qsub:70832/329222465952924851,20242/279519391122527087,98212/275893153651362115:13134796356171733792442/92024063227018458748454302122939037
+qsub:16550/9390796490643017,=1,=1:0
+qsub:-52475/54547572128706592,17578/797685580288227,7736/4761258128626551:-1000695773704029186001/43511811726801235561284074892384
+qsub:-20996/6762826792669,-44673/3665405594824492,-89646/5844908573159699:-76656740107626131795/24788503162677927378327249148
+qsub:45185/5494693252958359,32663/2723960065506187,40281/8753885671043431:-56391030161481820422/14967324993264855317568567867133
+qsub:12788/20397625645595,85276/411854703134143,=2:3527370019125661464/8400858054907910680262050085
+qsub:5182/89854258440697,64615/978522088368546,=2:-735231447219831283/87924376618197880146621116562
+qsub:14899/24106539570023,26806/37583148137177,60169/20330813693322:-86248575618236415/905999647734893551001045071
+qsub:77/5504614030045,39585/32999174301133,41462/80693310429705:-215359209958144084/181647717837917119539540985
+qsub:82526/6888246953501,26067/1462753317193,18855/1955140329926:-58840753082241049/10075806080878164174842693
+qsub:48233/7425592622352,-67581/3978085226579,41398/5449697074565:693703959744755419/29539640309572506699893808
+qsub:5505/559716521882,37907/205803582655,=2:-20084225472465199/115191665474511303156710
+qsub:21476/65447686805,89325/499062486437,-40113/803762193086:4871751334864387/32662485308453336363785
+qsub:21526/16385258133,59161/53875727711,=1:190360658300573/882767705647956223563
+qsub:-19280/22598967893,14123/12257869757,=2:-555496952467799/277015205075018712001
+qsub:10456/7458705583,-25903/4591932494,70435/2217009577:241216096873713/34249872529756914002
+qsub:19521/861174313,=1,-5154/2978985245:0
+qsub:682/74110691,2034/18404407,13571/194261092:-138189339920/1363963320215237
+qsub:17065/678911302,47417/43292069,6893/55518891:-31453158049449/29391474931063838
+qsub:66870/71491241,=1,54717/26772383:0
+qsub:61950/53770049,38657/31651038,=2:-117806980093/1701877864160862
+qsub:125/24174,61922/4089943,14863/1071502:-985659553/98870282082
+qsub:10528/5066181,69178/5064619,8499/4855615:-297147960386/25658276550039
+qsub:73667/793622,-17081/241311,14485/728923:31332514819/191509718442
+qsub:-88059/511891,4080/46861,49511/313693:-6215048079/23987724151
+qsub:96249/64877,25429/18718,15172/33979:151831549/1214367686
+qsub:-54470/35523,46889/71763,-69316/98395:-1858189519/849745683
+qsub:44983/9496,84144/9341,30612/1481:-378845221/88702136
+qsub:43297/8081,24282/8963,-12747/9001:191848169/72430003
+qsub:-14149/568,-11037/95,10139/463:4924861/53960
+qsub:32022/65,=1,=2:0
+qsub:-5464/11,57106/13,-42349/21:-699198/143
+qsub:9122/11,30683,21590/69:-328391/11
+qsub:80394,-42819/2,78542:203607/2
+qsub:78738,81991/5,-92741/4:311699/5
+qsub:519349/84038265230060350539,362530/8834704951888139441,101653/2801162463496519815:-25878097111795625550359761/742453277976103030839734354712971508699
+qsub:-45313/4045263795932519300,=1,-897976/3871830745560558349:0
+qsub:-219497/3880705578320077638,=1,1955/195812018697132227:0
+qsub:-694177/1567385155785412134,749667/2535436916491658333,-965299/416081746175083596:-2935058919961612464886319/3974006186339362871680339779520412622
+qsub:26135/62576945582816088,732203/950441429248291026,=2:-1165513362953922339853/3304206755429125252534073692157016
+qsub:344416/442049470250620209,200643/69700793670676003,61742/228330350355985637:-64688063306615644345139/30811198918170109145079107043144627
+qsub:497397/42178943629236355,-221769/8144580724357867,=2:13405072168265547184194/343529811256455471792784946654785
+qsub:48033/18607268489677754,110044/5810062497436207,44420/6136363607606977:-1768543521738745430345/108109392831603170896668602039078
+qsub:556572/2349911949088169,-916879/8313100022391424,574574/9350618406931231:6781423623630450943079/19535053076582732528599605462656
+qsub:284777/1927882721172702,160787/3581064945969006,754048/423838688960001:19717401473028344033/191774256464747287423446257617
+qsub:892952/185949909151557,=1,175057/59061216301442:0
+qsub:-661714/491200735750687,450275/303031578402964,15122/4784925303203:-421695649161479509221/148849334267227909475125836268
+qsub:187069/55339769759630,621163/52226505565130,637525/3333974030852:-1230252861681887286/144510139666216453870485095
+qsub:219295/84834684101354,903655/27591730927967,=2:-70610557827760525605/2340735777083639503901167318
+qsub:-81292/3037742698087,279570/7725479008867,-183321/5178790607504:-1477281365692998754/23468017448410123176937429
+qsub:17070/729776002573,=1,494590/5887202393519:0
+qsub:480492/747354949451,=1,=2:0
+qsub:-199046/37296461289,419244/37303053961,-158450/158465916423:-23061341295366722/1391271908017914615729
+qsub:189316/25281354931,=1,=2:0
+qsub:-322219/71926874588,364328/31410801333,564494/88472961545:-36326131359614791/2259280768187274225804
+qsub:865470/7987112681,-75379/665073758,-53389/213996667:1177661952117359/5312019046322125198
+qsub:508019/5416093157,978840/4026946153,=1:-3255723468096973/21810315502870775021
+qsub:-355411/591634303,88/18167855,-400943/223386928:-6509119332069/10748726229930065
+qsub:-448810/805205621,80689/395020417,609682/664304967:-22023668155149/28915696379833087
+qsub:-295343/11433941,-409495/43207522,-681896/44977613:-8078897500251/494032257304202
+qsub:24193/2785136,19643/9724857,=2:180565038953/27085049325552
+qsub:260123/1810064,259343/3327309,989234/353681:396082171055/6022642237776
+qsub:81657/9557416,=1,74075/783308:0
+qsub:-379579/856742,338617/650312,4129/163380:-268476092231/278574801752
+qsub:625321/775536,-97485/252179,=2:233295951419/195573892944
+qsub:947687/23575,-30577/320,-279954/24839:204822523/1508800
+qsub:259621/46980,191999/83022,85242/3763:2089023607/650062260
+qsub:-109983/2035,269459/7712,=2:-1396537961/15693920
+qsub:495239/4609,169141/85,150340/2337:-737475554/391765
+qsub:181604/763,478129/150,491042/65:-337571827/114450
+qsub:88196/477,143431/288,-238297/503:-4779571/15264
+qsub:-570,200993/64,457558/27:-237473/64
+qsub:404456/75,=1,-923061/28:0
+qsub:-139593/4,318475/9,155531/3:-2530237/36
+qsub:-14344,290960/3,=2:-333992/3
+qsub:3264013/82557280791246853782,1806333/5633889739728044851,-2296597/13263726327210302219:-130736851332456348274354343/465118617189652853731071620663934976482
+qsub:-2980063/1992165262437351098,7376362/30250769500070022259,7703450/29762987155235234457:-104844131048250074763167793/60264532160038812168147102169858090382
+qsub:4464355/431626495996272004,3629338/7179109931450482327,3949813/156748150199903165:30483576874294500186500733/3098694064084008191204928519686873308
+qsub:-3555443/3617243579662686774,303530/2167413807252149777,2777975/533604037161157073:-8804058192833020476098431/7840063678755098878650516823284949398
+qsub:-5552437/989682869077264596,=1,326173/620111908036849741:0
+qsub:4895607/926011931053273421,-1175537/233388199725215284,5091515/239597642395083213:2231138191686733898359465/216120257512593662347946882140166564
+qsub:-2773250/45398131003067227,=1,2736089/95411568076119212:0
+qsub:4006296/68939728562838647,2292964/17013091088520595,5733592/97158552976704111:-89916836988785049713588/1172877881657458911248848921434965
+qsub:515144/49193197792111,=1,1856594/2763661324543529:0
+qsub:8325234/9817785169298149,775935/6180815223492473,=2:43838769910997775719367/60681916035376625680601994332477
+qsub:8627988/156641134252337,=1,3184877/121316717056413:0
+qsub:-3680933/800181047302935,-234725/6902800483321,1839349/73481955705762:162413750236709199382/5523490120067003681501847135
+qsub:1566629/16292772606875,7730144/88872981722417,=1:13285512072409282293/1447987282098298252715816875
+qsub:-7275809/32705732310204,529237/33225169211346,1246554/16046220459869:-14391614934727197959/60369638343750779183798588
+qsub:672357/665582539507,3252537/4040790284267,=1:552021796858428060/2689479459017642288036369
+qsub:-9287113/8904358895491,-1605430/1566913557651,9964765/2264645576736:-256778369548735433/13952360675535131712451641
+qsub:-7651618/4395153917,-1710285/172432083914,2275814/176521974301:-1311867471236936507/757865549031089791138
+qsub:1899605/130650302531,-4840329/426407852458,-3076004/154973753433:206056705252578827/7958616417890244567314
+qsub:2052129/29055355967,2964502/48925195457,=2:14266151553094519/1421538969758186241919
+qsub:2602385/95672384206,3573881/34551770887,7452346/64314906595:-252004705858757991/3305650299298749410722
+qsub:4133338/19957331,8985416/288073487,-848120/288429411:1011380169324910/5749177932383197
+qsub:-1320449/3975283846,-7547086/2795237793,1985723/1567287621:26310840111643699/11111863644241591878
+qsub:3012/50622749,=1,-3880764/539469199:0
+qsub:3415313/456078745,973889/57988958,2014841/282103745:-246119630775451/26447531188497710
+qsub:2670463/29405389,-1058573/52085339,8775931/27268718:170219721491854/1531589654491871
+qsub:8583563/83502235,=1,=1:0
+qsub:-2291635/5535573,5441924/9510935,4978191/9285940:-51919759091177/52648474990755
+qsub:-4162723/8479109,344312/1648925,7433795/4104773:-9783477000783/13981414807825
+qsub:8751329/789348,=1,=2:0
+qsub:8924261/337441,670861/129305,9868269/414227:927575561904/43632808505
+qsub:2681459/27003,=1,4549337/93154:0
+qsub:8680180/14441,4554745/21934,4059413/27440:124615995575/316748894
+qsub:-4518181/5562,-2276489/226,3678862/4781:2910180728/314253
+qsub:210295/1363,9437631/8144,1068488/1033:-11150848573/11100272
+qsub:5745218/207,-7575883/59,=1:1907175643/12213
+qsub:379339/704,=1,-7001184/173:0
+qsub:6487539/2,639662/15,=1:96033761/30
+qsub:402577,2061668/19,=2:5587295/19
+qsub:-3105019/2,3111189,867043/4:-9327397/2
+qsub:1261450/7,4029231,=1:-26943167/7
+qsub:56324553/19397300916635452498,-35924092/46902696457421385061,84175915/39224029534660703473:3338603835139839372201484549/909785716986214223068528185651632332378
+qsub:71555823/5836071212068629344,=1,=2:0
+qsub:77442257/5545018942084673068,42879535/9528293896880000587,=1:500124750930929791835741479/52834570143949387832940624231543090916
+qsub:1882546/587096528196767501,600949/3758491116151436011,-57408520/7215298889224654953:6722717345223102023805557/2206597085550901708728088609445878511
+qsub:18533295/259544696596588724,29260803/65551904123652131,8066314/468460265894896593:-6379593459872191703783727/17013649067101965587047139053170844
+qsub:32814976/324705085482999809,15878615/126957830524485142,48012589/448457761496522203:-20198956719461136022407/841303126799778581810770681823222
+qsub:73425587/76876862799514627,=1,=2:0
+qsub:42901263/91461268846245118,59358212/33469972365725591,25272929/7921365826117970:-3993073298899687352887583/3061206140818023006999579911414738
+qsub:-63644711/8497399665364222,7797817/1098486658784562,56710153/9438426287422742:-34043508375517625313739/2333570041690749863451890185191
+qsub:25665970/5646791945789527,18692206/1353307528791823,8000643/4532947645247332:-70817047855093605963252/7641846053757994531550156637721
+qsub:-29275899/499819621292276,8512344/446435883937597,42654021/421680780818527:-17324448402522389929647/223137414440972214604482100772
+qsub:10506641/183030842318251,56266904/341432867278395,19138129/13903991433546:-6711266271665423143709/62492745293100236702806487145
+qsub:40020635/13147436598409,=1,95925753/47588135567153:0
+qsub:64062683/28830327884364,35024477/22435119389260,-3892716/40203147434419:53435848201618925869/80851481014652251447941330
+qsub:687674/747723187903,75114792/959745497435,-6008972/779187819521:-55505079707707644986/717623962917648709528805
+qsub:11227721/638144654215,83818613/2696629423889,5802172/903741356827:-23211396997849476826/1720839651253640565542135
+qsub:68154693/605106523822,7149707/547148784630,-89487120/164245654829:8241105773166237109/82770824770222860613965
+qsub:5295524/207408901727,=1,-20716229/60404143771:0
+qsub:-49715976/27289320239,1751391/3004904467,-59390244/46731089623:-197186028226367241/82001800287564607613
+qsub:78299509/99826075029,4177685/5327015769,=1:20274296809852/177258358612286710767
+qsub:-1671167/695155932,-66109555/7854377639,8291158/4963791901:32830472604295547/5460017207919004548
+qsub:35734579/4659787581,=1,97009779/704152619:0
+qsub:30397277/925127047,-10856719/255060817,82870995/232582799:17796998694774102/235963660436617399
+qsub:5543155/496322152,-87192627/129840895,=1:43995360477497029/64442912424006040
+qsub:4832663/6516999,1014585/45500272,66517292/12541481:213275431553921/296525227123728
+qsub:-61572274/59677033,88452583/75989018,9276799/22909073:-9957404351913171/4534799134823594
+qsub:10222701/4964078,=1,44891997/7795153:0
+qsub:-12931066/33763,=1,-11768212/629261:0
+qsub:40097296/352421,81636923/466815,-2827835/59378:-10052546808343/164515409115
+qsub:-58131798/713399,-10445579/899533,=1:-44839605037313/641725942667
+qsub:82683100/20953,11064248/17087,1257553/185:1180976941356/358023911
+qsub:-80145609/17039,35705967/4424,=1:-962958145929/75380536
+qsub:24043257/7198,56987892/9335,-75350352/8581:-185755042521/67193330
+qsub:14613190/1321,24976151/4199,-77272282/6003:28367289339/5546879
+qsub:-95371537/443,32446316/271,28275075/223:-40219404515/120053
+qsub:94947713/221,57161945/491,2069553/455:33986537238/108511
+qsub:-18909223/59,-948326/3,-48280688/79:-776435/177
+qsub:88798812/19,23507525/86,=2:7190054857/1634
+qsub:-47127907/7,27516609/8,38296261/5:-569639519/56
+qsub:31326068/9,51645326/9,=1:-6773086/3
+qsub:898471353/97040476457400255673,774658681/12204618595061363031,=2:-64207747314147492788222196370/1184342003445601583509560261503270224863
+qsub:249093288/12417260530710049873,-801966629/44332144897015616603,=2:21001068305718331000060348781/550483793071430964691988116237976841419
+qsub:-134206127/1610240404875467236,97309922/1581131192036203833,53593907/846433764211142925:-368889861761752296658200383/2546001330825606997121589113609115588
+qsub:421338764/3148326051373083753,429845640/199253189241064703,=1:-1269341134003247764575839828/627314006506815051070753494111070359
+qsub:52740675/795085501889262583,149708345/329574924655249317,2466699/30866271646478867:-101648930631943883299486160/262040244379634804277810209144405811
+qsub:-191594029/598205858083829268,446816852/164644010257658459,56048321/893326266268239982:-298833267632957457898965647/98491011434545366397536822011978012
+qsub:-575491297/25955098472036838,-138975931/6423674226330072,-340643144/90343407636590953:-4979702092675981002067/9262616505371226069222196177352
+qsub:-473218836/46012936562560027,926673527/60598178499774699,=1:-71315169705438365692335593/2788300143116822172490338163356873
+qsub:-16401255/53884896854597,845057173/2931801378584781,=2:-93621040622862865174436/157979814883206214102194088257
+qsub:-78818865/905572899138638,481887257/926039606509552,=1:-254686715554792714417223/419298185592029277399259635088
+qsub:116637517/435071997593711,431546961/511014413627938,-757699852/228015168261633:-128150546020991644612325/222328061736285879181642697918
+qsub:-108955903/383831042493702,422517039/842122710676085,337667995/131589026243929:-253929395929242726868133/323232837946423896536774516670
+qsub:-838736295/92052976509482,-126995685/98224611661102,=1:-1039620824328469286940/132968645145476678498140723
+qsub:692740952/65411481215877,935265461/38090055601935,-384913949/18100942097057:-11596852584880885994059/830508985505893916304640665
+qsub:-860091341/514295231452,256640967/7499412024638,-53504958/4042771540931:-3291084285252876276821/1928455921482556068257188
+qsub:563680440/4169101815059,=1,-402824439/859095166759:0
+qsub:987037827/249183535720,-9882433/691842226,729392866/51288203029:1572707021916944831/86197846017537656360
+qsub:427594973/45174550465,-168845346/330313786895,27534398/79447419565:5954721095702106589/596871073414937326247
+qsub:242570638/16753352417,33473267/19130627213,798544080/26148870871:4079739009798235555/320502139657639523821
+qsub:-376284203/51060506886,29964175/4314022267,946743721/88569137724:-3153284394383157251/220276163670510830562
+qsub:74562538/3217746607,101790049/9743999086,-125780219/323630553:399002717325726525/31353719997587601202
+qsub:42296349/1360874,206369290/316181321,=1:13092472899137569/430282939034554
+qsub:140753986/202352937,938572056/619643731,-19975553/199697682:-102705487079566706/125386728861487947
+qsub:285566114/446058601,342294325/851420566,454403609/475658768:90453534672561199/379783466532588166
+qsub:-161678013/7988168,=1,=2:0
+qsub:4509787/2436277,-428747855/91437693,820266458/82427847:1456913057137226/222767548388961
+qsub:234853231/269701,164588489/2987771,26310281/83858:657297992766312/805804826471
+qsub:-31992898/7754101,-108145397/2546307,471535535/4631202:757106590895411/19744321655007
+qsub:-668796933/155882,935009291/130380,48837623/940728:-2840839785661/247852380
+qsub:456817877/484064,62463895/102249,201875360/879883:2353235462299/7070722848
+qsub:174324995/23089,=1,-75895555/10708:0
+qsub:-40050163/4536,-337645492/6227,218198970/84373:1282167586711/28245672
+qsub:-486371763/6677,832463275/2822,668314177/8066:-6930898402361/18842494
+qsub:323293648/4923,451897472/6255,1266843/26:-7499610608/1140495
+qsub:-867092722/717,317941119/130,-414616612/433:-340685836183/93210
+qsub:817008963/673,332237585/116,450682823/188:-128822854997/78068
+qsub:364631942/71,-521194704/91,393312056/29:70186330706/6461
+qsub:-366929570/43,-318888401/38,12434704/63:-231122417/1634
+qsub:-960895081/4,-86364312,369915274/3:-615437833/4
+qsub:-88689682,-50232394/7,220772295/2:-570595380/7
+qsub:5045827429/82586019977510276867,=1,=1:0
+qsub:1503080467/4197901399132742687,-5426267647/98427189918387234069,3137956632/34196804706756691007:170722923135437211172114777712/413187638271101955385621594687817003403
+qsub:1357458555/213194631658339198,5860802023/9743688404730714679,5343163284/4333989766915232599:1711023093391439556544861613/296757437205742197184000936677098206
+qsub:-4868419043/1874304123005359675,-6816693713/4442416679029074571,5495574701/476000389079390237:-1264426975083621632892461754/1189491413944567430701990198321617775
+qsub:-1647705544/574150473752043335,=1,1879152786/115463808794482409:0
+qsub:-6055562447/487155696631523136,2938185647/317996041759500124,-4728956063/923230126390049652:-839249691117625070582468105/38728395812354051261713195025217216
+qsub:1426529236/11670702563243101,9841949531/91619079682399779,1403083816/16150846549726251:15834830123605943657503213/1069259028091357016655804645674679
+qsub:6837809671/96275996695534461,3411015807/98409047856427193,96187735/946145664954649:344503392583431867018558476/9474429166236077065902521068997973
+qsub:-1004764769/8655312988255579,2879315998/2504870158905897,-1660768037/5076443781115095:-27438186441369551619395635/21680435220272026384233246249363
+qsub:-1613849677/5578341227875998,-681199447/9468113018720909,=2:-11480148177455803120623287/52816365202520317549788821842182
+qsub:7085065306/241255838198475,9871968965/122428691848806,9976645636/596673705145837:-504751623414488774067913/9845545557175498481373256950
+qsub:277829246/34194391207887,945644619/248861822737406,507960871/53401800544381:36805350523599913065823/8509678523390688833157121122
+qsub:8778198607/68845960402604,6712013093/80288466242958,-1204808691/92342273421469:121346557454831419932667/2763768283874247206479931316
+qsub:576607227/41894800028798,=1,=2:0
+qsub:-8197300862/1066469371293,2407397879/7628604144700,=1:-65101379433675314418947/8135672666041382998097100
+qsub:433828061/8105976668621,12288275/146073601224,-3529694919/6043133675158:-36237643265303572111/1184069203423191947992104
+qsub:2306893742/244897997045,=1,9806514683/82914371649:0
+qsub:-6917120851/658194979071,-9884712310/347680431211,2627577543/430392157826:4101120451789026783449/228841514144320400184981
+qsub:4348960295/47252752559,7472787551/90699413377,-104990832/2615837561:41338366482986273206/4285796937549835581743
+qsub:92405095/21190566348,1628334368/828240675,-4846323983/71007937340:-11476264601192136313/5850296325233268300
+qsub:8741146531/1488923836,4234232059/588146433,=1:-1163374887262484401/875705243152076988
+qsub:-7225160297/450834154,-10918713/11024261,3391394031/6088513222:-74729524142841715/4970113381410194
+qsub:2938592113/331333420,3934937063/187151085,=1:-13705735495420961/1127443800904740
+qsub:-2273685624/814502443,3041871576/168756109,=1:-2861310168939737184/137452263051674287
+qsub:3296666020/58254199,2646013137/43895953,=2:-9431079168795203/2557123581356647
+qsub:531031879/25049980,=1,=2:0
+qsub:5011008152/8879109,=1,8455979085/128459:0
+qsub:6770210010/3190157,-4380377540/4239579,3903233564/5705791:42676932255859570/13524922623903
+qsub:7663675612/749679,8111469146/393203,=1:-3067617836238898/294776031837
+qsub:4928169857/385836,=1,959097302/535523:0
+qsub:-1033483668/35795,-5074071593/2166,2441844767/6292:179387867046547/77531970
+qsub:-7344953203/83791,4312882738/17085,2299543269/590:-486869282973013/1431569235
+qsub:1418881373/3187,-364599262/733,=2:2202017894403/2336071
+qsub:-9933599930/2319,-676583006/3991,152888566/817:-38076001329716/9255129
+qsub:3939072211/317,-1768855994/157,3228818149/267:1179161687225/49769
+qsub:1276721019/328,1232959715/379,-1601655315/2:79466479681/124312
+qsub:3256070519/2,1845522973/18,5526750176/99:13729555849/9
+qsub:5966979829/5,27542839/7,-425197375/6:41631144608/35
+qsub:3307015390,1197592867/2,1660312324:5416437913/2
+qsub:5489019241/5,-3873449097/4,-9097250437/8:41323322449/20
+qsub:-36147389137/7366455075149766236,36459659324/31660854497077511625,17927437097/85118037223370314774:-21090084632556843838855432867/3481018840202610972909309235691380500
+qsub:-43262536631/6771439507252414257,9845873437/16005003509293583369,35333513871/31102122701082443005:-759087786974806113821731281148/108376913076544103155525491523953691833
+qsub:1879439977/100949624469036789,38241797291/3160034691975528111,7272414554/1249028818965241647:692866817752736748847051616/106334771821352635019895345254225193
+qsub:-23480972450/1429132014458260453,=1,17730739651/3229879048891135949:0
+qsub:87672655831/185695396976817387,=1,=2:0
+qsub:19335279285/86985857831839459,35182894985/296532209461553487,7819401698/300283568935056049:2673118785659508665734403680/25794108614783931312606692925643533
+qsub:105573770/9591706978551267,-91012289917/82779886875572184,-95699623013/92086977963850524:293900867022815896407896173/264666806209370051637912001052376
+qsub:81888799513/62677875753838689,42525624315/5887466452325273,7440075611/13710507286638085:-2183298237216013854166130986/369013890803736912387239799887097
+qsub:45845595582/1944435405423019,3957631182/8503827262812577,=2:382167667398204481110256356/16535142811414295102976398509963
+qsub:70073122775/9889502421893828,49758775289/4581689842004485,97971868835/5554125313499619:-171036213915285631762370417/45310632788869704568457369818580
+qsub:35007906083/96744217462517,41582054123/195125002566641,4259598485/79647205603988:2808094477684438458969612/18877215680681304677212095397
+qsub:53616094879/804153146230066,-40630189441/409120361012696,=1:27304165381945598904758445/164497712747569959659181458968
+qsub:49936923088/1008159757073,=1,=2:0
+qsub:-54774651067/87557778501674,14552025462/34442391625465,32721932085/17018898896738:-3160713005350324584244543/3015699297010375993083528410
+qsub:36944437609/1522384186532,-31109095589/1913990492988,-90340980434/4550319003301:7379456095901269524565/182114303731094876877351
+qsub:37427798265/3644867199671,17190258551/4857734158151,15531453562/538438754347:119158084549871401271294/17705795897765998009168321
+qsub:-1297758412/359023140343,-13169443469/334495854946,62942721054/868305110777:4294040141274688464115/120091752274429528686478
+qsub:64548705326/965177946721,99400187824/233208667431,-40288901926/927917471935:-80885551634177312487598/225087862788593125943751
+qsub:22792905511/831110170,=1,2899870693/1104812470:0
+qsub:-4225625539/18480348712,12201952952/28791900419,=1:-347160135247248998665/532084359824298910328
+qsub:-2659312874/1644066659,16956954950/4918000213,27389168623/355474397:-40956865552225654212/8085520179148198367
+qsub:47019333517/2453731385,25608075613/4795411666,-79908243099/4320471629:162641721633895395317/11766652108859337410
+qsub:79879022561/451475806,-74196589329/217100545,-15269666465/326484577:50839744301821669919/98015643536914270
+qsub:-96216336903/275984570,5409672454/132808555,14083109727/56233823:-2854267759507727989/7330622388799270
+qsub:63979921573/4858216,31476961600/87404319,9515612291/12422366:5439199596284968187/424629061034904
+qsub:82582224886/74464385,=1,10918064727/56241685:0
+qsub:-46341807304/5147537,9784020329/2675947,44710947790/4319699:-174371826881996561/13774536192539
+qsub:-18674665469/1251399,-11269265668/7443487,57599246809/9830290:-124902281860180871/9314772188313
+qsub:58536600266/32903,83073082013/333030,-39859237469/373423:16761090369112241/10957686090
+qsub:35519852107/330820,53390770345/780257,35509809151/171706:10051878599918599/258124620740
+qsub:-63435900802/6951,=1,62381742036/76259:0
+qsub:-81473653859/71229,11757463559/6248,38764522219/56443:-1346519761155043/445038792
+qsub:44117486351/5857,-2571472421/106,=1:19737567523003/620842
+qsub:32241620201/9076,32252415098/1479,=2:-245037563152169/13423404
+qsub:-3547397518/617,24052413914/841,76689146655/466:-17823700697576/518897
+qsub:-7334508913/948,39473373047/321,1323910388:-13258378336543/101436
+qsub:-3196198423/2,-20901693416/31,16678712262:-57278764281/62
+qsub:-62722671643/56,=1,=2:0
+qsub:-24012149879/4,-24290006742/7,57308122924/5:-70925022185/28
+qsub:6872078720/7,-32246825481/8,58358089888:280704408127/56
+qsub:-959881635801/62932017065985873602,-493229779705/99840110881639578512,-80856942953/6609275501579816959:-32397372018886953016823147330351/3141569780936631939917776357106693620112
+qsub:-332008736903/30374537863168416351,682789260493/54319888411218401110,959961568525/17615592824200222523:-38774085785529920230015532683373/1649941507269636595870960818509000549610
+qsub:113948825097/9684396113323745389,=1,10627090663/610867879165779530:0
+qsub:163071738121/654459680340198322,272886493781/4350646667188036069,-795490699161/9312605941419401831:530874306479618083947510650867/2847322827081031281338460249149276218
+qsub:76846819557/104316101165717458,371275948758/843864366174376699,-256575092889/873170706343972834:26118233246947241582284285179/88028640591990321004129490292711142
+qsub:389764163769/207967463890639277,143006030005/867552974642992847,452774579891/377044461928347543:28036405300529641258282732178/16402071993389391564815603942568329
+qsub:580979558458/78741205846222619,33032926279/1750557646838547,12997506366/8714829535529515:-1584014239122301048375024175/137841020015393107847327312494593
+qsub:224741963637/14683522164236398,-960061639375/75273715504183749,=2:31014248993459091498049306363/1105283269990107068967870865896102
+qsub:807804997047/7249998154317344,9105704912/112491433689913,26073756553/3602151159257410:24854798453934594011093183/815562686628381139953493751072
+qsub:191337323199/6659274625984151,83413589251/1210878215905176,-306099086431/1081677916528086:-323787801810171460500982877/8063570578334296950020294865576
+qsub:-331867978975/508606776667332,85749318495/2137585782677,377450159524/218818801378045:-44322080754745095885121415/1087190614777265014877407764
+qsub:262259669890/904860545418883,782901326213/392394092067508,308978360414/335667028727945:-605507375993851106638145959/355061932167352680139373953564
+qsub:815877865693/66519087957156,-546996067745/51276831144013,29432156288/2425613695755:216679532121401094151189/9448443326960766943517748
+qsub:-562619974684/10325037296475,556872690819/57561686137409,595241901749/85716594322193:-38135085699491971638916781/594326556216735906721333275
+qsub:569774646278/5879076793409,-721915496161/392079169147,-50551273318/7061973297467:4467593410196183185587715/2305063544511209685752123
+qsub:-558695968419/8022121294387,-777164712527/4870971993346,733030717073/7075271044115:3513117174644727699545975/39075528152183639071148902
+qsub:230578421654/363657556093,=1,36043149487/191906623355:0
+qsub:-442745155107/891737442305,209381515609/66199123967,267993885312/121209167453:-216022678603831030588214/59032237489164205223935
+qsub:191691349919/14156267513,63217315803/9723609341,-128345831172/10660892885:969010566700217585440/137650015023101638933
+qsub:4645100745/1355591564,-122150924616/84421443943,321940027501/7149085070:557732875097854576959/114440997229829696852
+qsub:444175516387/7975146669,-45314342690/1470525299,290828709372/1185708607:1014559863205550574323/11727654940000079031
+qsub:789307912523/3728805469,=1,424506863658/9402774203:0
+qsub:-502776486811/539515375,235504157527/997755438,=2:-628706087676449005843/538304399290859250
+qsub:5577709792/27083659,72210181067/64923595,840185174073/737144356:-1593590948783541913/1758368508034105
+qsub:185204908129/17512100,=1,397024789371/90565963:0
+qsub:-59165606754/7623599,=1,410439347980/15967881:0
+qsub:821602843151/5722683,192153300265/868108,739244189764/864319:-386392423858282687/4967906893764
+qsub:-321094052171/8002674,=1,63324198409/402344:0
+qsub:-787087016971/706048,314711556301/97333,461259945208/201559:-298811005526046791/68721769984
+qsub:264872646016/44135,-306557419723/722285,-978795728169/729376:40968690169428233/6375609695
+qsub:165112253012/26681,68785586791/12017,-119718397615/15426:148885703274533/320625577
+qsub:17528604773/6611,-99181928610/39343,-52006507697/18356:1345319627624849/260096573
+qsub:871912524148/5723,182323508186/1091,203321662049/9639:-92180873503010/6243793
+qsub:3526953029/731,=1,-108468202939/365:0
+qsub:313486413069/844,-262666586523/625,-366626397895/982:417619607193537/527500
+qsub:-428607477029/682,=1,=2:0
+qsub:90255143123/14,=1,347531313509/64:0
+qsub:32303888109/19,818375118441/16,4032541865:-15032265040635/304
+qsub:292300807915/3,141298658917/2,331142787887/2:160705639079/6
+qsub:-319866639686/9,263653231334,940025135092/3:-2692745721692/9
+qsub:8034198041699/17592454670005017397,=1,=1:0
+qsub:640259140119/57494394354649546144,-8575402433581/98527174739603547922,8981144595803/52261736819163067566:278060246721630225656578041972191/2832380119564115796138164460514727156384
+qsub:1236159983468/2961715085662590789,914344518503/2225413786553289931,-5038738670790/9117790154416123369:42939515651941188118242991841/6591041583476387621705131100927045559
+qsub:544927281821/225573104564678752,1983999095212/528108855513999917,=2:-159755912219641308519411726567/119127154086392326185226159659663584
+qsub:236180252739/93711559633857505,=1,-875119448860/197150931692089343:0
+qsub:3448258604904/101878636218756661,-9369719313239/333311169679336117,-325685803073/239541171961239254:2103917334342722557318697252747/33957287403409359538552421651625337
+qsub:-7939222138274/86505941453702773,-7521663898635/32404928066636033,=2:393398694553935776247333587813/2803218810143866461870349953819509
+qsub:31222491771/28663266692274319,3403082415831/7352452962268472,-4014317624213/42643848690867324:-97313896958642034025767600177/210745320099903543783491148970568
+qsub:-294177603665/4628696580309847,=1,=2:0
+qsub:-9743813636414/8886484266786635,-857487733127/2872659401368146,=1:-20370606598428196700274910799/25527842574094742730786067528710
+qsub:-255869133971/251203098733934,=1,51860449406/2731920492095:0
+qsub:-2551627469690/620119144262383,795142214972/32216229353871,3950813535806/548061345549077:-575286725704502987095668266/19977900578283148512980734593
+qsub:195247370817/63337336480054,1748779495123/30608951696454,-5591675662514/14668720736915:-26196679492456802179448431/484672368225006676058382129
+qsub:-5602181260057/40083459443536,117096388229/5768970730471,2776946949919/9603782260822:-37012448044623646265634591/231240304305780581099185456
+qsub:1645392691271/1862974141789,-9156882237455/3971219830691,81994652595/616265197207:23593250912635096190105256/7398279855937023607846199
+qsub:-5034167196133/6608304488230,=1,=1:0
+qsub:-2111179317912/94974899629,-2734989223771/337151252491,341842794161/202199642400:-452031424253078525037833/32020906365124361225839
+qsub:-3760876499263/10213162407,9612839350222/220968981509,-431780312153/723158370431:-929214539099496136632221/2256792095060796932163
+qsub:3321533964667/20955327844,-462499260819/4621872673,-7406461174035/83827773626:2276684609255051253557/8804805192358146092
+qsub:532057790509/3873792604,5011839386945/38790613612,6678622123429/35927572362:76501363831601540858/9391674507174207853
+qsub:556360173467/244347911,=1,3477739385301/4086080128:0
+qsub:377956900679/9728280520,=1,1041480439146/9369959143:0
+qsub:1811463975309/425739298,=1,7893909438664/413369383:0
+qsub:-8501443522317/437865641,543359387910/555098507,-9540116747492/861158281:-4957057013263567681029/243058563585697987
+qsub:8568564545305/64448189,=1,8670374182673/15999622:0
+qsub:2886469384143/37100146,706817551959/70885648,2821141489561/36201922:89193109177047996825/1314933945052304
+qsub:-5397172720924/583973,=1,5493925869599/2184027:0
+qsub:632128111787/9181877,8269779184000/4428251,-5293123430135/8227357:-533816593733572799/296785810271
+qsub:7690264089163/217441,-454719683537/54069,3844686753380/33269:514679591744923064/11756817429
+qsub:194395407442/487085,7382213747658/754049,=1:-3449181920691764272/367285957165
+qsub:-6820161889575/40973,1260560268388/12497,3951119679544/19667:-136880499010680299/512039581
+qsub:7733127302799/541,-6375441080647/51092,=2:398550053779236535/27640772
+qsub:8552562777105/6802,4122196848132/6401,6588275470270/5237:26705771375255241/43539602
+qsub:892706337045/1181,7525927198633/6084,3376981309819/6148:-3456894667003793/7185204
+qsub:-6525943779397/22,1169543393537/155,=1:-1037251240464349/3410
+qsub:5679159008921/101,2475493569771/410,-6099782991203/439:2078430343110739/41410
+qsub:3105196603053/35,-1561253366581/11,1543062844359/70:88801030463918/385
+qsub:4851198644302/41,5582000284949/83,1538859614246/61:173787475794157/3403
+qsub:7388598539023,1819068317039/2,-1736481275601/2:12958128761007/2
+qsub:-3766516642396/3,-2830365650207/3,2537215743415/9:-936150992189/3
+qsub:-3499529401917/34680274552088347393,49898319429097/81175729919276761270,=2:-2014564271063470770932585857648711/2815196600566690542230200403343687869110
+qsub:85499989069177/86185277165079792548,-54755717014977/95062349548332003740,=2:802935405911321108881332428232086/512060933986668223303815291051772508095
+qsub:10480741720249/6956596051054816346,=1,59792433694419/619860836842181132:0
+qsub:5440922563791/8096299805235361768,21427106892442/4734770642360508925,=2:-147718760937640942166837597622781/38334122629577497138638724698967779400
+qsub:36141945949905/51170764877853868,68289830259221/944862420318148725,=2:30654723677491802840116592104297/48349332752019923728004548840518300
+qsub:-65660705848034/432686937944828595,-14162742932711/370354589759953089,=2:-6063236635081033520164429735327/53415864465682424679265419115259985
+qsub:-10234488359092/9219723369459949,11490568299383/78007645593504592,=1:-904308201825094205011706861931/719208913074983700054297291585808
+qsub:8824638624671/49117783640687736,71425056890483/80617302142742478,31478624534929/82599814978820418:-466136988760823218273617123625/659957200723862808591316843474968
+qsub:2271907634573/5997198598392443,=1,=1:0
+qsub:87118386941689/6769664747763328,-92703763358616/5951838412401733,72544030367331/9826030071433516:1146087960619838557486271181085/40291950684819664403468341047424
+qsub:-38735368831/390121272239902,18518285294580/100122679213001,-3887528092655/74244322705899:-7228255307730681475045702991/39059986994643540045829365902
+qsub:33507643620217/383472784483096,94120308754159/452308027073903,8479974951625/419952955125076:-271906502553380052184822069/2252569072546560464977223944
+qsub:10914633574213/46775840995232,=1,=1:0
+qsub:16227980458171/44733418409925,=1,14382677933809/3568384653206:0
+qsub:19887329250905/3446066449222,-41404484338255/2669125822468,50077337796229/2478834856350:97882194184456020343960575/4598992472779525554359948
+qsub:-23925661872806/841256858717,91800998586059/100553852929,76785865874845/4626636784081:-79634037182778870157375077/84591618446941749632093
+qsub:29336106782491/175641800187,14997313674741/788809675295,41848999082110/169597375583:20506449693715551470283278/138547951373736740280165
+qsub:-6749631331552/100780901939,22080836367893/122987967423,28833497035036/165078850509:-3055450043045906849075023/12394838284534289533197
+qsub:25051511362687/10396488145,38509696040707/88706839049,-60514064785671/63433114810:1821874788029306610246148/922239600553351574105
+qsub:48606586904983/42071764992,29823112345620/42059865901,-21691164849293/4231585639:789675553193949088149643/1769532793781906337792
+qsub:-77589654827242/9817530799,8253947272810/520292243,=1:-1178666768036851921932/49592088544983419
+qsub:-13743493332261/1526967682,37506929991611/658645334,86046505206712/7222464595:-16580989426095086858969/251432534729523947
+qsub:-51679389983753/476057441,=1,66423598858706/714202649:0
+qsub:-27413822608864/942542701,-17319180355605/124314974,69101034128319/135803866:12916118386616536859569/117172171368704774
+qsub:16033466371942/6275041,3173224097293/838266,29304504765697/93980195:-6471801590959231441/5260153518906
+qsub:-14788927543191/5343139,16116445186754/71171839,-4194013841977/34472148:-1138667576905362979055/380281028662621
+qsub:-11863377566581/698789,=1,-4578191177718/4105669:0
+qsub:11442715386293/9531887,=1,35378701532975/8123906:0
+qsub:-15768066912479/362615,92363606714861/652333,67857319926071/827985:-3979859967466135002/21504157345
+qsub:-846557698591/239267,-53144962049294/166663,=2:1796392255561165095/5696708003
+qsub:27268730445959/36577,-13465608951811/44542,=1:1707135370154296725/1629212734
+qsub:-9770756513988/9073,7801336502379/467,4503088681454/9263:-75344469378117063/4237091
+qsub:-7026119147779/830,7101024857299/2048,=1:-10141671323104781/849920
+qsub:21638871622139/2468,-42476176597401/7406,-16930478429705/1639:132544343537973551/9139004
+qsub:24211191920307/215,-80284684935585/301,32429769785659/56:13276785305118/35
+qsub:28102057542845/404,10141824152597/778,49924151629427/38:8883051905342111/157156
+qsub:69683068555423/53,19160487574994/75,34686281737182/41:4210724300182043/3975
+qsub:4481580939807,28880719200344/47,12531106213795/71:181753584970585/47
+qsub:-4015047513343,-99632851064851/5,84319873837035/7:79557613498136/5
+qsub:54919395403009,=1,-97138101140295:0
+qsub:210307390461968/47213629337306710429,115035466737199/13799438784982683745,53333082063959/13664786811438045265:-2529117926464810402732988541238211/651521587857026504089626304754000276605
+qsub:-297705233604298/34583872960377931369,77978617195104/5299999273198438663,74378398780959/5075493209379777979:-4274640112431569633737006160990950/183294501554390171572563143412570119647
+qsub:504589485072677/8294597886664545269,246812476335976/1300669888373460411,681100309448968/2603298518001254955:-1390905895394928956894286988007297/10788533707350714724434632367288845559
+qsub:-78507045905186/4052782705070927105,-26333160825061/378849069158294234,245855933356429/7915638278155738995:76980257498111295165827733680881/1535392955316954446563765566755812570
+qsub:158467575315099/42867668947782517,394831131302747/679471751533163594,-48561231318802/281924646264500261:90748750733599226955741824631607/29127370104093594835779192094086098
+qsub:113675246712051/200230549051637699,388686281013415/708939569436428256,=1:2762013003465965719694013380971/141951359232687658393740425918422944
+qsub:73765282645495/1035056942801718,922427291192222/42055305183418997,-56658710176289/49777804321460907:2147456701619161856688029631119/43529635611742911300567485436846
+qsub:11558926182346/2193559666056113,-471907499361325/65178860043302296,906292398921179/61879479804047118:1788554888598395874379208496141/142973718470504311324402957735448
+qsub:272316495707495/5727398323662772,165581996805511/2159650095677579,=2:-360245704923343561937821381887/12369176337681911126512437388988
+qsub:-342373342517849/1018510666353060,=1,349084421810221/2519615499139835:0
+qsub:107181823655878/330213883798891,603343425900400/335568866158937,=2:-163265492894049375913454174714/110809498576332828976950338867
+qsub:186420967060580/27505382732689,107841057765734/938888436801099,150317703871619/56186192325509:172062280782312586790437698694/25824485797510315886178425211
+qsub:277369102524627/35009202732584,-58922735852011/29409493631158,-114354072702623/27524533096262:5110061429589788410990577245/514801462397924199102126136
+qsub:-208415718182346/82232835696833,-149287320962885/17528744477017,144393102539827/5550994994610:8623053867348966063892901323/1441438364550307853348187161
+qsub:885772499510025/2385708677677,1981679910892/945475145135,-927158264975185/51617668049:832748171571039374752920491/2255628258276490509651395
+qsub:199709343421874/120107420805,250421330523511/911998437151,-85756219123893/3387032230561:152057148961466103844594619/109537780064397502326555
+qsub:229005499534863/114476975336,=1,7933977177406/971528526457:0
+qsub:913313238746453/105012167131,998890143666531/308838539768,-340536941048242/129794732609:177170708293018948806450343/32431804354611205965608
+qsub:202747896046111/4130383286,-326610886734874/924106823,400325691919789/22798999151:1536388861680468580631317/3816915376197760378
+qsub:311867860118047/14615054044,78891545894795/49519747784,=2:3572653392028586160839217/180933447527102309624
+qsub:-187714403734023/740833429,506207386211644/6706938891,-756195691891397/5384742450:-1634004388516894022835769/4968724536712987239
+qsub:509320078163086/994171477,-149792211533821/1161942848,919509848550973/7287718870:740719966348074014332545/1155170437385746496
+qsub:744782913412383/35221159,-843622816486697/241699112,=2:209726742160051637325719/8512922853910808
+qsub:110124296861427/126487978,781814771935103/735468241,103648920994391/217349966:-17897246768566789251827/93027890687306698
+qsub:55559598357120/4133243,136581368630879/43479449,-46084945523102/26713943:1851176737404882616283/179711128223107
+qsub:245122390741101/24043876,-76258811060014/21938089,448115170340604/6879827:7211074221005454870253/527476691592964
+qsub:100716567078550/981447,=1,-106552246729921/451809:0
+qsub:-896329574019135/7303813,-344467277086635/1213327,261333607789282/121043:1428383703404051827110/8861913515851
+qsub:76900938369059/75326,993229733624034/890555,-908067780499933/8580:-6331507745706647339/67081945930
+qsub:995595550040069/769920,-34334285476045/592726,=2:308275010533383252247/228175800960
+qsub:10750797928613/490,364135307090702/81553,469882435848719/39098:698333522997732009/39960970
+qsub:318012047587094/63457,344774587461563/88455,=2:6251394672767996479/5613088935
+qsub:-161244027390189/3742,967621707258700/3013,=2:-4106668683088694857/11274646
+qsub:707755729590189/3985,-311896862542891/2746,890911807982825/5104:3186406230688079629/10942810
+qsub:-62494041004924/7,-6009036767325/88,277826134449449/209:-5457412351062037/616
+qsub:313000944443410/187,-424215294038191/492,-69562914630308/101:233324724651299437/92004
+qsub:-214477481502137/44,812058199759953/13,-233671238320360/3:-38518768048965713/572
+qsub:54243114068304/29,862438291931992/63,26733981451778:-21593394279724616/1827
+qsub:266687619713649/8,-362755079043871/2,389177566612001/4:1717707935889133/8
+qsub:653323126774499/9,703678334484790/3,-319996079506951/4:-1457711876679871/9
+qsub:2559305963434670/8990269372406324049,=1,4982250095086138/44081334052072166999:0
+qsub:-1992239658448600/48178503938440461483,=1,-140689209800518/56784446808413335831:0
+qsub:939937733606495/990699059564945896,1384063287837877/148639317667949967,1401228942153371/4899174789530501904:-1231478494265723021017590198267127/147256832228013279266729677589985432
+qsub:2427308943763117/3926876732707845738,-3053828283650605/3709355702828503657,-6851889315460370/7456794982130606687:20995759505827045845208479606590359/14566182602774409222023359782524863866
+qsub:1132187368153827/166386612794510246,3559319078115267/192456340011573829,-9701789017274666/34504738221262233:-374326408180256253543105561132099/32022158525354344242032513725951934
+qsub:1011380512372054/229809286711122957,=1,785057330967873/261864117017722910:0
+qsub:-6373636813888041/82626527312705989,2824358117452821/9660944401937999,8376921479245765/84777299790282297:-294942254029695997688528161214928/798250286493264100581508493976011
+qsub:-9564803757424938/80601591821040757,-5966553227630720/32402706800195057,3062333169701829/13649400405257704:170988156078760300221549229123574/2611709747406183624616884346938149
+qsub:-6645498550927964/1641651956201489,-2448344965334987/7285796471405420,97763428336761/717874275284599:-44398419591282543726427305969237/11960742029768613657228526670380
+qsub:9428078639060/796311207574343,487570664734529/270542984787885,=2:-385707284276751727768550801347/215436410917207812839223234555
+qsub:-8945032146859492/173832543857525,=1,3904355716222363/11348996463718:0
+qsub:-314682518932207/411979868553284,2079866721697896/66512597834021,4675528081388171/426553668427461:-877793570440583492839563904811/27401851312797413669226474964
+qsub:-8416034028506899/32609965027765,-2867068576526460/10471107007973,=2:5369813117494012224678656173/341462433331984537021370345
+qsub:2553878719400981/21754385300349,84746758238377/1863679896278,-358102168359771/6286290072209:2915998795206632613088155145/40543210540146072197201022
+qsub:4236427671394109/2859515833221,=1,=2:0
+qsub:5583901594900219/6147672416839,1662784468995713/977705344691,6565243303664406/3132796116919:-4762843781630684936693623878/6010612179352927527651749
+qsub:5880633088314980/144288094133,445227880160405/385441741948,=1:129552963472585426795492775/3271450255587089340652
+qsub:7123796066897691/646623152591,1738054940928918/811478311493,-465948486952257/36744411995:4656939438506791528261936125/524720664036825168028363
+qsub:-2868399842871272/39606511493,-7967653324405171/45882725248,-4382209264799369/87703483877:183960951073424117991854847/1817254684865073275264
+qsub:2456186256319560/3308343473,=1,3527461933566325/44562489087:0
+qsub:674305784927060/4912146059,-9009832420557345/1095083558,555087666246961/159683002:44996033995029100460532835/5379210383705397922
+qsub:9556395264243127/5642678959,2704206989021393/1653137405,3456993987111567/2767730221:539062590553413975895548/9328123651529361395
+qsub:1913172323114056/317852309,1923331312586217/68059942,5111100924241691/235015288:-481124901330381924280301/21633009715106078
+qsub:7396974207537751/994805053,=1,=1:0
+qsub:284214608834666/15371405,8605121290252485/36320753,7299109191726065/1345108:-17421416545731139652561/79757286323995
+qsub:7309254006136367/43026806,=1,=2:0
+qsub:3445238551293254/7474347,=1,-935490243888754/754065:0
+qsub:-4928287873457776/7482701,5635600141645415/1697376,-9526446027760/22031:-50534668372988554461691/12700957092576
+qsub:-8478337945368580/589969,6645220551921478/525883,=1:-8379087917520827410322/310254667627
+qsub:1719300936213092/194297,902706986884743/48626,2385654314953825/180074:-91790532106447099079/9447885922
+qsub:-2129417266022053/3839,6573034386134051/14296,9786617326073399/94956:-55676028243419891477/54882344
+qsub:-2187293709879460/39491,3573469347555406/99807,4017132988613391/36830:-21142770665073517798/231851661
+qsub:4464053162985503/909,4551500989123885/3361,84727686825382/35:10866368281680664118/3055149
+qsub:2535331877045977/3627,6763176539554039/4483,3870940332291032/173:-13164148504165384562/16259841
+qsub:2507736196654456/51,3033138651383092/821,=2:1904161346232770684/41871
+qsub:684175263169205/133,=1,2378871296865361/491:0
+qsub:-646739283957087/8,=1,1100407856892355/16:0
+qsub:4793571136533963/92,-5722502959595165/61,4757322618112904/15:818878111611326923/5612
+qsub:-7552421230993378,4948198001592823/4,5729503250754923/5:-35157882925566335/4
+qsub:-2755491483441304,=1,-7933615614234907/9:0
+qsub:321721693263421/1424970458268329442,4783029016817033/9976530684162778611,-1284537047056835/71620015235724957994:-400667633933462179077276150388595/1579584611215498321716283384428796118
+qsub:-47606652409415837/99944870827944430499,23322967894703462/17256392723432667009,17445922268336980/1262651123373099837:-3152530103785264263460897588705709071/1724687941699758103837340929139210707491
+qsub:-35800247390542268/3022381832969706807,27658822050080425/3538855927509428196,7414524545924163/4386817849214572582:-70095812989943154324914458022980501/3565257954933885823399042050112976724
+qsub:11270912894283697/4254771338147418239,21165198074272866/1790561357737218389,=2:-69871817037702583386330221699898841/7618429144094642739542804241664796971
+qsub:-22475320938058069/200115960226568483,15533995839026021/419448235219902685,-7677187468882297/691145254573545404:-12535834196951596319645500834511408/83938286356370387266153122748076855
+qsub:6144083459003009/341129592319435505,=1,28739569462221666/606069168271474349:0
+qsub:22546360696472435/24894286772021269,84274062567114482/52430302346827669,-1685672888973312/2330511345390725:-915830172852329009982850908113643/1305214982165707736650909145691961
+qsub:4376832304770209/939333180215946,3715739686394692/26867721681796733,88210818404099477/4648321047973775:114105194635987182911079063768565/25237742452519050348798217304418
+qsub:9647062281850006/4819913902499121,26298077512843496/1999760481189285,=2:-35820885167446167638178828727102/3212891114984188905357249039495
+qsub:-59102942672072861/9022665222289159,37341501938137229/6463207427444592,843867142853825/330321510152954:-718914448947247239109480525418123/58315356880045303166891874778128
+qsub:-48186053317977182/524586203313577,=1,-88203767474302754/222044585954625:0
+qsub:2980158547616795/16459590834659,=1,55614737163455091/802181444522069:0
+qsub:27674141753240653/30123979153216,-69911536707649590/61364291872711,15121999849118525/43270921417874:3804217786223168944052276101723/1848536649125408180638288576
+qsub:-8139585494164199/22694171735055,16416172833245775/23356807697711,-82721251840807344/24795330336689:-562666178636295181890388591114/530063405074508024821959105
+qsub:40963317287207743/9100834089657,-89978521261181858/4614790398485,=2:1007916716937791923695301312061/41998441775154099246969645
+qsub:-22418658716107103/2534171344870,-19948846211000086/637313996471,34428844071591534/7978524432977:36266069449253256094105625307/1615062867541388503953770
+qsub:8499094378194009/144881993257,18142016047956879/328774983548,51933573865337015/728907876721:165838167635160267022399029/47633574949471621935836
+qsub:10952289218891361/410721990889,11230753555935868/494713123343,3356713875262630/76566376963:805523747555915071545833171/203189558938352379221927
+qsub:-48383763418441148/36254620229,7147640525044487/65513778698,-83702869612157193/80045858746:-3428938161941039381724192827/2375177166462740081842
+qsub:-35618330302934381/40720985765,-70406046479991145/43883735712,=1:1303938222964954498988736653/1786988977243374139680
+qsub:19345365507179985/787013497,20346629715849781/1124536845,=1:5741504087980952707553168/885025674888796965
+qsub:25916947948395837/4727212922,65968479175889910/4243635367,38561855794849199/1001864541:-201864970286444028592649841/20060567943138612374
+qsub:-83872784258426507/338189336,72676607354297993/258443836,-31045469397994216/211178075:-11563714420907729197990875/21850737322533224
+qsub:29002323373127602/104867985,31657958092331122/399470525,25010437022653087/448628233:1653133413945169069200376/8378333804728425
+qsub:17927870354086417/3556758,1245879275137696/8208269,-3178672357614557/3197484:142725491384586358632605/29194826431902
+qsub:-62585597691019581/32367872,61984767454961662/87347591,-3097688625515242/23912601:-7473016208537687574702635/2827255644996352
+qsub:-64134232347614188/1287231,5681700507230407/3441090,-22197438767027251/8198005:-1333364483126750936947/25903378490
+qsub:80521535865700778/4914387,29629877920205801/5735623,-31675469441529533/5832635:316228486243991867655707/28187071108101
+qsub:-12089212581249183/367213,39065393509910584/485831,61520933914433223/513745:-20218634584515667108465/178403459003
+qsub:35626200118349978/22677,3226283532016027/401890,70294093126508565/985048:14244651133908145214141/9113659530
+qsub:-42445465189342283/64064,52962797531106583/66292,30509808145126571/40195:-1551700859841172689487/1061732672
+qsub:94842682855165703/29546,-21781294090030679/19071,-98420376085320606/98821:2452294919914911563647/563471766
+qsub:21298039427969457/4529,41390344046065517/4944,-47466303948648638/1437:-82159361252749731085/22391376
+qsub:91816424325919179/1700,99837657326420362/9975,=2:5969158521569033561/135660
+qsub:84285557657486063/501,22158640591353121/907,1409871428669941/18:65345521859071945520/454407
+qsub:-74339750859264619/932,17864819649304693/421,6794209676711141/199:-47947047024902378475/392372
+qsub:-78194010431589383/58,62126554703583997/90,93510406253215651/10:-2660200277912729074/1305
+qsub:71106157246341874/49,-1886317442316576/19,=1:1443446542354007830/931
+qsub:-39663070419423940/7,33868806617110099/6,-19327938437654750:-475060068836314333/42
+qsub:52313046276155719/7,90139156444699943/4,49168703277366491/5:-421721910008276725/28
+qsub:31764659627457502/35459829258840257855,125864014273474351/30437232401502771513,-438810788001077539/21929003917091975594:-3496288128734077196451731372945036579/1079299064068928704074589544922068484615
+qsub:40163813719117127/12253004736518941871,-39840230360733540/9868332108049144213,=1:884512383820142074541633838441289391/120916720061468118490436389825843042523
+qsub:616147121341955963/2895479716224140287,529082239113522161/2438652913112833925,=2:-29377919201006207047359381264955432/7061070044829121412952661959332836475
+qsub:150980224993479452/371034742997570395,=1,97628589854512901/1461818398649717323:0
+qsub:828501131055695330/861555563679753833,-968363844399576751/400987885360876602,4318808141772773/272140134925135118:1166518174369888540148356746507605243/345473343600842551070257384449515466
+qsub:997737191667232852/878873090216825721,-215309181373978527/178339642478000642,44112408043295555/167730641087926307:367165539635142230228004432374783951/156737912692804302819698495840112882
+qsub:-874288368924506038/33067894686016771,172933382638695999/15746943377378890,=1:-19485912325748182437244211303337049/520718265229834381226960561364190
+qsub:113445092902670316/24432013651972039,789628644660942395/81838347379866874,-253719530063131225/7192012672525274:-10008058904834319340307600738181221/1999475620439737613479475390336086
+qsub:469761512155527237/7409272817081662,644368433953482322/2796535736601265,-743279324916258749/3941987500967613:-3460596665454235362140115831224359/20720296215197195433635837502430
+qsub:8261654401496347/568538524395616,-778532546601001661/1096269337597285,-306562427101658699/2779592495957628:451682743636680727605399921736071/623271351537719810570227502560
+qsub:461974279165354118/107945644045613,=1,-4203580865175374/431296441354377:0
+qsub:999567545272721386/528172429856767,-306849659405574946/410631585483429,58620020684173871/34198792094556:572523536122080656350523300672176/216884282280719425778922014043
+qsub:838953299025019215/26401444256374,855300290662954227/88914568043701,-233880940259636371/26804240414928:52014007245249037196988469721817/2347473011785344971879800174
+qsub:-84648269690239765/7748568048141,86620759660993385/4650491023414,740584294215236889/18424376078527:-1064842868956861583564451404995/36034646152192259510173374
+qsub:144119271324804795/7593869059598,-862271465889805512/4817698847465,30615084012712336/133690674221:7242299853153814002244162498851/36584974216225407996219070
+qsub:-514146414782774671/7780370709815,270344156048491787/2722967818331,219882280138478/11635197457:-3503381894653098523553024083506/21185699057511364438618765
+qsub:27542214966861168/383672867,287936038111037884/394023185191,231925740783907885/236839247989:10741798023203186757550669660/151176005126702912597
+qsub:-202417103371781662/185891935843,-75016780652064931/26395556610,539072986943728448/794028543247:8602102465239973123041336013/4906721115886394572230
+qsub:146159764562795268/26252940211,5977449519968967/15598248256,=2:2122910667826975950339620571/409499878861103022016
+qsub:92905251016109811/18087473051,861913285707088178/49029015865,575397421398561364/35847357407:-11034780301515165605154539563/886811003175238954115
+qsub:43007028131858062/2453663475,=1,=1:0
+qsub:-99491213767410734/5448033345,607696219524202834/7914352487,932551377887323725/7825731284:-4098157802713052856358895188/43117656253259679015
+qsub:-693848599167966481/337019784,451296938813827771/190206672,138269118881809795/286360117:-11836276239937430206424279/2670975479699952
+qsub:885539919667431975/906601532,=1,679476927167924457/542648272:0
+qsub:-4563620543259161/50948374,877797754583710364/85678397,871721618807362291/51516582:-45113371989553804002793053/4365175014076478
+qsub:267267974303681854/59860387,643485159739694623/65130620,-346322759520229537/79392976:-21111941818232071960829621/3898744118749940
+qsub:-292697070229916239/6469138,451527711321523043/1713209,-690729392819742293/7199521:-3422446330354619505247885/11082985443842
+qsub:109167064549424855/933921,-974615071639008317/9073576,-141072367242930847/2470173:1900749139206286464552437/8474003171496
+qsub:-442186452566118477/433250,243224124572764479/694402,188939975597921698/84623:-103108002251492003298126/75212416625
+qsub:504154364259376845/839918,-816470041468996533/562156,932823927594899937/948502:484590642542575439841057/236082471604
+qsub:58385990303797466/4715,23346464312197309/7769,-83189886883209658/1309:343522179438192201419/36630835
+qsub:-31667255028373761/6166,=1,=2:0
+qsub:264267843061809424/1507,=1,780372905769447077/8088:0
+qsub:942357538510813910/7893,-485153351303873623/1639,-20022501530390273/127:5373839407460698504829/12936627
+qsub:-42475017998288473/153,147697152269679268/85,=2:-1541649460418555777/765
+qsub:75774035481832811/18,340160682114414248/343,=1:19867601892209197709/6174
+qsub:74102130227248217,144497961842228027/6,-998137158213905035/43:300114819521261275/6
+qsub:821735055204387778/45,=1,=2:0
+qsub:-57815587457821904,51008807915322849,-147281045102225347/3:-108824395373144753
+qsub:454222567912329981,22540753838160371,18269107333524567:431681814074169610
+qsub:3210043239752875243/72149763518252375009,3261470914498557412/93230677190142956657,-4064987413615246181/33645849737189283754:63960149849071755625510420647536825943/6726571311915340136410812262723596984913
+qsub:9804073501780182793/38766744515505567422,=1,=2:0
+qsub:257063569033647893/47627381308050634,=1,=2:0
+qsub:1552551009049725266/1621244061592046727,8268958120903544781/425547204494853721,213262382085564484/2263543462839420049:-12745315507331426593439792125381167001/689915878214377929840178814861821167
+qsub:2934623879325117949/357068238595800494,9728045374534083071/521016049535609725,-804894226755345532/55644798067314489:-1944589886386070523678697500282383049/186038283087822502456659294746204150
+qsub:-3413740827484155595/35201790823660144,=1,=2:0
+qsub:5742873913112182553/61766168241911339,3984407637182474330/61987278332263327,448424158078834703/1851056518481567:109883531216609955256617440787705961/3828716662328761978044444335164853
+qsub:-5538305489874918085/47200167153328601,2292592129732611685/3752960621013977,-7047966941457980339/13001528931023405:-128995774148430971478100961252376730/177140368631719625362323294856177
+qsub:2647084994940083287/8257587043096855,8517457859612680059/8568918876347054,4335833152174662442/3522517188924281:-47650993081224012631875300587027947/70758593486671494919389915915170
+qsub:-2174815554300743477/1055854216058324,1106694427573230889/1439497035446960,1663682898924590039/6228481982913678:-1074787130075326655568302535462489/379974753470032846369692123760
+qsub:-673256166894368145/58357219332101,=1,-9850462360230406692/697272419401589:0
+qsub:-7350812074670262181/353785488987714,-9161255025310493969/644044224968076,1118265777181240006/160586465643975:-82951609813686583656885009057605/12658527836669113872289234348
+qsub:7934622905365481543/24281747034726,=1,=1:0
+qsub:-4406459203030692110/40412972154809,-328394051086803323/17512120371320,3271184521881465212/24850026200233:-63895064332408368266126902654893/707716832937818605603677880
+qsub:460352415792245815/1067976849408,-3006172239763431339/8488209165760,=2:111220155509497494992102376433/141643920030694887966720
+qsub:-8685801779232576472/5545683151339,-9379688590927802729/4661614228739,-1045039004738707304/2306882972179:11526923821437860566165526575323/25851835486360019500131521
+qsub:-1099655652591638878/2758191281,1569957311481795188/313204152767,4679104365556960009/172279461301:-348746959573478031289777831254/863876963334931424527
+qsub:7376706437670791929/273943068790,6472278838608399241/616870830740,-2499089563512667949/302238168048:277743910121812542672687030907/16898748841995226660460
+qsub:6865154371318865863/58818463172,7515040679922839317/98572518047,3436930220114417551/26193376471:234692409694146480303501596037/5797884022518774865084
+qsub:1254860182105767734/5016375113,=1,2599681765080769493/46385850085:0
+qsub:4216394462161257127/7652601313,154087255858661733/228011378,=1:-31111774998800660662723489/249268595808819902
+qsub:-8218805797153900006/3225230965,162240217381132332/3267619919,470501772660009028/17345893:-27379195706038716372068879894/10538828944609591835
+qsub:2993035686422028942/288390385,572871629063315065/300592553,-6417147951768049106/301422311:734473568540558494144018901/86688002087802905
+qsub:-413167836327757837/385147459,=1,4223408874712268336/273008947:0
+qsub:3297442160967679169/69599199,9036377343550866545/45162311,=1:-480004516594753739709297896/3143260670588889
+qsub:368876976532110737/16510688,6518851187565474853/50791699,-1104665290033392205/7386446:-88894829716274002481356701/838605895178912
+qsub:-2062139936169240279/2037445,=1,252666902590280893/289459:0
+qsub:7094134562467803247/3012150,=1,9333233846214751643/9878490:0
+qsub:6076762026375939088/714143,-1173122156103211995/424924,=2:3419939003221785664774597/303456500132
+qsub:-5491034419852196360/519619,715863173404931/44,-3750063252517296119/253359:-613581620774993481129/22863236
+qsub:-5533397069224776206/61493,=1,1084791347634995311/940:0
+qsub:2610588148432509992/29651,=1,-1360998239306614670/89179:0
+qsub:3100610288438845270/1619,9307237399334731519/4955,9392825838002497590/8501:295106629691547983589/8022145
+qsub:3368071818378567709/3813,-3776828995456884473/1454,=2:19298225383599537944435/5544102
+qsub:1898435934717526073/873,4308565906715352586/295,=1:-3201339435820832616043/257535
+qsub:1300690053258900179/243,4943814111367222345/439,=2:-630343895681577851254/106677
+qsub:251833946462887840,-869006720570670337/8,-725021352968265541/99:2883678292273773057/8
+qsub:626008792964496823,3012267373701938935/3,-1881182483045937043/16:-1134240994808448466/3
+qsub:8909701403779037643/2,4263103087268485691/6,-4865092756990722784/5:11233000562034313619/3
+qsub:1563790691172262117/4,4953143499970208620,6661387731632814693/7:-18248783308708572363/4
+qsub:-5421505027803143917/29277316475549977927,-24881453522128465658/13193126736034804489,=2:656935586207185980835950093591652887553/386259346752930686132136354247710514303
+qsub:43002545629357992251/65752963968398524190,31308403854434073804/48746580693008293241,1726565764440537923/12956415087885593469:37606709977597341370212061004874356731/3205232163890005466586601709015151999790
+qsub:-59751660477015957831/4286192839388269021,11974517458086843067/1241046631081301617,=2:-125479687920496057578907990371068840134/5319365183487609778049805813238306957
+qsub:-49461165347668030699/208457055709777407,52105901053159218571/6869817428870197111,-36441364311401291685/8657876687713166642:-350651018476287040134985140793799735986/1432061914485994468255463550024471177
+qsub:-7581437680655861221/49307213191711325,-32918301279907528476/380204896359543505,-62274249636519514774/637143890847264601:-251878005702543064394570301716545781/3749368776266504127275465347738825
+qsub:88463778015782255603/611086942952818386,28997739596524666645/367897090074176869,-81867305184567355447/440111079789875727:14825426466392080175430281904511312037/224817108094666407622918422599113434
+qsub:27845231969167468634/7852896265044091,=1,16619399537337723559/18069459979251540:0
+qsub:-37414950961700930/7204075375675961,-11821234740040951665/4482466888001314,-23524535630982071810/37803027645100347:84993354822012222699375201588403045/32292029330133121955123006212754
+qsub:61321523796737027359/5452182446309742,=1,48591916429664483052/1740855337030687:0
+qsub:5363425484789562617/1756465539350314,-40936806728242699939/5412202567319265,-3599607803259833000/278745158021617:100932035487606021271304492855347351/9506347301479586913476715999210
+qsub:33564895484794792189/136772489172128,4571443108763064643/186748602496254,=2:2821474835811978960085724681544851/12771035606414468103340604256
+qsub:-94258077286598647991/474232208430175,98462449436025151993/228502005075011,=1:-68232224497993790090895883442041676/108363010497445522187430856925
+qsub:34061962820425097482/24899834941843,1855142409964422527/902056706202,14293533188899209595/42267239349684:-15466917813159310212214440113897/22461063092612364807410286
+qsub:-73929207028429916638/21372812626357,-66185303844781311744/59463089468249,-6818430024504790355/20557416897032:-2981492954155214407839662609790254/1270893469389188176252038893
+qsub:57077240876377553179/935097318175,=1,42604601978623894017/8385603091453:0
+qsub:7077386151750173156/1231852917417,40471318485412028642/1706097941603,38461201962265231448/5304200381911:-37779997802536821420601638448646/2101661726762794047599451
+qsub:-37489576712437584437/499625554669,60955914069456492767/885230799387,50229679483949978567/539847952020:-63642060339139483486584581919242/442283929153812140187903
+qsub:3147094074418762156/310106471081,=1,-3700969786876628910/15570398827:0
+qsub:12329606272247487589/40674617665,-77828250896400397795/50092227757,-22437013421232931285/13509778618:343931981299121509240432077868/185225655636734138855
+qsub:49832350382626108453/8964749413,=1,2620089939108140247/2413101797:0
+qsub:50952962315511975411/6309290837,-16012147625149581763/1214855186,49964518797252328078/9043690267:162925766803109858544836037077/7664874693311730682
+qsub:348630015993655559/4656837405,26166625137687604221/1177967663,47073618836385117951/1978562296:-121443043818605211479526497888/5485603874938834515
+qsub:17078935151701402183/29370735,-53438577236731723122/493863599,27771088952431040471/715856601:10004194671903945161352471287/14505136892375265
+qsub:-82659381362807119713/632881567,29388144547912909553/176840848,11667678020670746965/17707269:-33216770068059835487916346175/111919312991848816
+qsub:21029165726302721351/47748016,59722770221895701365/6011409,7537524523228744530/7443449:-2725228872009811783253348281/287032853114544
+qsub:-1377712971222794171/46200083,67781278282353575281/46204616,=1:-3195157381284400868447041659/2134657094183128
+qsub:99498503205328073847/8536940,67748617769009531540/8445211,-11519205096064985138/4045881:261919968776203677676409117/72096259594340
+qsub:4104972121385207947/636151,13294784517447053191/977547,13689829596826434020/1075639:-4444687283214714461541832/621867501597
+qsub:82730974983634629799/122118,-16204666767231941581/177953,=2:16701106687543563518610005/21731264454
+qsub:-10650367180325946520/50547,1632386827276484871/118112,-75101239763743917691/649672:-1340448425361002676144677/5970207264
+qsub:77412383597894642193/47240,80267467079572070186/72803,-25049349718395484959/22130:1844018618238539039990339/3439213720
+qsub:35230904033764128322/11419,95208581964982041789/24788,1540889192878250023/4339:-213883148269184722342855/283054172
+qsub:-83663795012357893939/1322,-18656774262532233660/4619,54887210177965383636/8713:-361778813587013499205721/6106318
+qsub:39695783291112421139/8771,=1,27510059665458841174/5277:0
+qsub:19248997287659952171/173,73630829417088216857/778,-16684093916667265360/351:2237586400643181272777/134594
+qsub:88156024379250020383/629,-6327178680410193049/304,=1:30779226801270017624253/191216
+qsub:-11930537715494417409/2,80328608387065532851/43,41042034234564284791/75:-673670338540391014289/86
+qsub:36406323599126203370/21,48085922416521160270/63,=1:61133048380857449840/63
+qsub:-13809041632683030117/5,28242141662062188361/7,=2:-237873999739092152624/35
+qsub:7450923073218275163/2,73871343095222710643/8,-1203953812110244763/4:-44067650802349609991/8
diff --git a/polly/lib/External/isl/imath/tests/qsubz.tc b/polly/lib/External/isl/imath/tests/qsubz.tc
new file mode 100644 (file)
index 0000000..7af689d
--- /dev/null
@@ -0,0 +1,800 @@
+qsubz:1/89666066690010668869,8,0:-717328533520085350951/89666066690010668869
+qsubz:-7/92370362169890168582,0,3/10759595446182824504:-7/92370362169890168582
+qsubz:0,-6,=1:6
+qsubz:6/6514124205427226147,7,1/7791165451225637150:-45598869437990583023/6514124205427226147
+qsubz:8/927453510429432507,1,-7/939604332333807555:-927453510429432499/927453510429432507
+qsubz:6/791634116823984509,1,3/166448493180216857:-791634116823984503/791634116823984509
+qsubz:9/28379125138664429,2,2/1928364957970427:-56758250277328849/28379125138664429
+qsubz:1/4792771676887137,4,1/7102881482139131:-19171086707548547/4792771676887137
+qsubz:1/6412666850016412,5,2/3998647479596483:-32063334250082059/6412666850016412
+qsubz:1/2202724091118898,7,8/2921444666229659:-15419068637832285/2202724091118898
+qsubz:0,-5,=1:5
+qsubz:1/52166421933102,8,-4/458542817737975:-417331375464815/52166421933102
+qsubz:3/70257684761911,9,2/38216141537789:-632319162857196/70257684761911
+qsubz:0,8,5/16844906665344:-8
+qsubz:1/888589420311,-7,=1:6220125942178/888589420311
+qsubz:-3/9029660826470,1,2/1660505018071:-9029660826473/9029660826470
+qsubz:4/175194964803,2,0:-350389929602/175194964803
+qsubz:0,3,1/28737296870:-3
+qsubz:-1/7337600358,1,4/48392570781:-7337600359/7337600358
+qsubz:1/627219895,8,7/75038497999:-5017759159/627219895
+qsubz:5/6927289812,4,-1/1790030470:-27709159243/6927289812
+qsubz:-4/2649530011,3,-8/6194440675:-7948590037/2649530011
+qsubz:6/83079221,8,=1:-664633762/83079221
+qsubz:-6/331542793,3,2/296815681:-994628385/331542793
+qsubz:8/66065289,2,-1/4328527:-132130570/66065289
+qsubz:1/2350655,7,=1:-16454584/2350655
+qsubz:2/3582747,9,1/2075528:-32244721/3582747
+qsubz:-1/1935616,2,8/4881029:-3871233/1935616
+qsubz:-8/465389,-4,1/262387:1861548/465389
+qsubz:2/240549,5,1/4804:-1202743/240549
+qsubz:3/48194,9,0:-433743/48194
+qsubz:4/27421,0,5/29029:4/27421
+qsubz:4/373,8,3/1025:-2980/373
+qsubz:3/1183,0,-1/3894:3/1183
+qsubz:1/106,3,9/871:-317/106
+qsubz:1/371,2,=1:-741/371
+qsubz:-3/56,5,0:-283/56
+qsubz:-5/91,4,-1/34:-369/91
+qsubz:8,4,9/4:4
+qsubz:4/7,9,=1:-59/7
+qsubz:67/67063488163100893306,-90,=1:6035713934679080397607/67063488163100893306
+qsubz:93/14983550478036855485,-67,69/28718649239616874679:1003897882028469317588/14983550478036855485
+qsubz:-8/1154267369681644285,87,7/1422761935805056072:-100421261162303052803/1154267369681644285
+qsubz:37/9228347282193695562,-68,32/723121468170916937:627527615189171298253/9228347282193695562
+qsubz:70/67740456883245887,-44,=1:2980580102862819098/67740456883245887
+qsubz:-4/290534225323804529,3,14/82856366067157729:-871602675971413591/290534225323804529
+qsubz:46/92984464090082831,31,37/3777138432527707:-2882518386792567715/92984464090082831
+qsubz:-1/30135296523120697,19,39/50227831157182621:-572570633939293244/30135296523120697
+qsubz:5/1204201678805616,27,-95/8641770984922113:-32513445327751627/1204201678805616
+qsubz:13/221269253819147,-51,85/902323678584334:11284731944776510/221269253819147
+qsubz:16/197386558463723,66,11/188936591024340:-13027512858605702/197386558463723
+qsubz:-33/364958822489692,-68,29/670095439482948:24817199929299023/364958822489692
+qsubz:2/69405413649461,25,14/58807481541667:-1735135341236523/69405413649461
+qsubz:4/151019996133,86,-7/15591256924134:-12987719667434/151019996133
+qsubz:-20/2213441952101,68,-5/766058099692:-150514052742888/2213441952101
+qsubz:47/3397682774754,62,-27/825236302529:-210656332034701/3397682774754
+qsubz:-8/300999779133,-8,52/319011801871:2407998233056/300999779133
+qsubz:78/930349215041,-94,-16/849840150359:87452826213932/930349215041
+qsubz:-62/78781195345,97,63/94454224597:-7641775948527/78781195345
+qsubz:84/67865566651,10,40/38840532741:-678655666426/67865566651
+qsubz:97/9037713489,26,=1:-234980550617/9037713489
+qsubz:55/8758626548,-31,-23/3424652585:271517423043/8758626548
+qsubz:96/712280131,76,-47/143760491:-54133289860/712280131
+qsubz:-34/979750323,86,18/751431151:-84258527812/979750323
+qsubz:0,40,49/28166996:-40
+qsubz:11/655774,-79,-5/2552876:51806157/655774
+qsubz:38/4762681,-34,-38/4640209:161931192/4762681
+qsubz:10/759353,91,-79/8482283:-69101113/759353
+qsubz:52/658491,60,-10/24871:-39509408/658491
+qsubz:47/356452,48,-52/327287:-17109649/356452
+qsubz:-23/1045,-17,40/36411:17742/1045
+qsubz:29/57207,74,-19/15711:-4233289/57207
+qsubz:71/6841,24,27/3695:-164113/6841
+qsubz:41/2,-28,-8/503:97/2
+qsubz:1/992,69,-79/335:-68447/992
+qsubz:-80/873,58,55/97:-50714/873
+qsubz:-80/59,25,-24/29:-1555/59
+qsubz:31/53,4,83/16:-181/53
+qsubz:52/5,87,55/4:-383/5
+qsubz:64/3,-44,86/7:196/3
+qsubz:217/14857025609834400288,407,-29/32222540400290548019:-6046809423202600916999/14857025609834400288
+qsubz:-2/3173544479029088453,617,=1:-1958076943560947575503/3173544479029088453
+qsubz:599/8002882171639730594,194,994/7112031035139432061:-1552559141298107734637/8002882171639730594
+qsubz:226/1547262749305138445,841,=1:-1301247972165621432019/1547262749305138445
+qsubz:-21/33650083175862080,-295,-192/250269714000112853:9926774536879313579/33650083175862080
+qsubz:371/195117884451651598,98,-31/6936245079767325:-19121552676261856233/195117884451651598
+qsubz:490/84964164487466941,-621,85/1727659786593371:52762746146716970851/84964164487466941
+qsubz:73/2114768125726396,264,371/90346751835547482:-558298785191768471/2114768125726396
+qsubz:-67/754047118019190,473,=1:-356664286823076937/754047118019190
+qsubz:428/1757703052948383,545,-929/6392239532410133:-957948163856868307/1757703052948383
+qsubz:-187/146639276395956,379,49/117345807572527:-55576285754067511/146639276395956
+qsubz:574/304011640895343,117,31/939392861513114:-35569361984754557/304011640895343
+qsubz:281/28071632904233,839,-779/61474591794274:-23552100006651206/28071632904233
+qsubz:-451/21089251676176,966,-402/36593676777599:-20372217119186467/21089251676176
+qsubz:447/699261969911,217,305/9706389468401:-151739847470240/699261969911
+qsubz:921/4456064406581,-752,-25/13909101793:3350960433749833/4456064406581
+qsubz:57/94353144617,914,944/766019154987:-86238774179881/94353144617
+qsubz:317/388136152543,159,423/224732026858:-61713648254020/388136152543
+qsubz:545/36819534187,-885,=1:32585287756040/36819534187
+qsubz:260/75651626533,-80,142/23885409609:6052130122900/75651626533
+qsubz:308/2920452939,386,176/748052249:-1127294834146/2920452939
+qsubz:956/2320741999,604,=1:-1401728166440/2320741999
+qsubz:229/136668710,-720,=1:98401471429/136668710
+qsubz:697/821017209,-389,877/710813436:319375694998/821017209
+qsubz:70/9998911,-414,409/41910723:4139549224/9998911
+qsubz:-137/4902402,-780,0:3823873423/4902402
+qsubz:98/339603,579,751/7297217:-196630039/339603
+qsubz:843/8995763,-683,=1:6144106972/8995763
+qsubz:-68/25519,874,97/240532:-22303674/25519
+qsubz:-407/183461,-958,53/66366:175755231/183461
+qsubz:353/72580,466,747/59113:-33821927/72580
+qsubz:83/41954,447,884/15765:-18753355/41954
+qsubz:-931/5272,773,5/391:-4076187/5272
+qsubz:81/167,110,19/123:-18289/167
+qsubz:456/823,345,870/7:-283479/823
+qsubz:688/747,879,678/181:-655925/747
+qsubz:-849/62,395,=1:-25339/62
+qsubz:-433/39,676,=1:-26797/39
+qsubz:220,191,-109/5:29
+qsubz:32/3,-877,655/2:2663/3
+qsubz:4482/942383524654707545,4232,9844/42644717112858614311:-3988167076338722325958/942383524654707545
+qsubz:1875/2912377751134048423,-2847,=1:8291539457478635862156/2912377751134048423
+qsubz:3804/6718901259124469983,-7372,7774/3759543365401515053:49531740082265592718480/6718901259124469983
+qsubz:9425/3546445994609032698,-6247,9653/7954521365876236362:22154648128322627273831/3546445994609032698
+qsubz:-5435/351267797941464751,7271,4323/405081904237732000:-2554068158832390209956/351267797941464751
+qsubz:4747/334289067072715219,-9265,1271/365223131014466030:3097188206428706508782/334289067072715219
+qsubz:593/11020543433206946,-9783,1692/92769627960132841:107813976407063553311/11020543433206946
+qsubz:58/71759187206685567,2562,=1:-183847037623528422596/71759187206685567
+qsubz:8176/5868555722851603,4639,749/1128170091785729:-27224229998308578141/5868555722851603
+qsubz:1048/2494671804723743,258,-9823/9523787627049892:-643625325618724646/2494671804723743
+qsubz:4016/437682693132675,-5554,9263/342594970246293:2430889677658880966/437682693132675
+qsubz:-449/124840348021110,-2661,=1:332200166084173261/124840348021110
+qsubz:3767/38680047773174,-361,3480/41604972731513:13963497246119581/38680047773174
+qsubz:8637/56843071105219,5929,9928/45360343092035:-337022568582834814/56843071105219
+qsubz:42/1232757862481,3179,4357/5496968152610:-3918937244827057/1232757862481
+qsubz:546/1614496289405,1603,2191/3651782433017:-2588037551915669/1614496289405
+qsubz:809/91979873066,4972,-4804/368689337963:-457323928883343/91979873066
+qsubz:-3210/152298659683,-4089,541/44970493080:622749219440577/152298659683
+qsubz:7246/21217273455,2308,=1:-48969467126894/21217273455
+qsubz:2397/86866068995,7381,-2866/3975744919:-641158455249698/86866068995
+qsubz:3087/4683188920,6673,9169/306325723:-31250919660073/4683188920
+qsubz:990/4768458857,4306,4877/2755124455:-20532983837252/4768458857
+qsubz:-3658/338788855,2880,5674/71884221:-975711906058/338788855
+qsubz:-9886/839837613,-2330,4083/690099413:1956821628404/839837613
+qsubz:7337/91119486,5300,9061/80090081:-482933268463/91119486
+qsubz:6273/50364475,-837,-1696/28323419:42155071848/50364475
+qsubz:648/537779,-5873,8567/8273739:3158376715/537779
+qsubz:3179/1733392,4267,1178/6835527:-7396380485/1733392
+qsubz:2567/620512,4677,7019/800989:-2902132057/620512
+qsubz:8643/360838,5106,-8302/971695:-1842430185/360838
+qsubz:-2586/31991,-5074,2570/21109:162319748/31991
+qsubz:2023/2705,2980,317/96960:-8058877/2705
+qsubz:-1301/5346,4188,-7061/2853:-22390349/5346
+qsubz:-6732/8017,9992,31/59:-80112596/8017
+qsubz:-3890/853,2695,962/263:-2302725/853
+qsubz:2329/43,7457,=1:-318322/43
+qsubz:1601/82,2574,301/13:-209467/82
+qsubz:-1347/20,4147,-355:-84287/20
+qsubz:1381,-456,5461/3:1837
+qsubz:1267,3358,=1:-2091
+qsubz:12513/10252103968497865097,4751,58924/7482016308047316835:-48707745954333357063334/10252103968497865097
+qsubz:-8397/12043175373779318638,32237,-75596/84316290023168074765:-388235844524523894941603/12043175373779318638
+qsubz:2207/1864898564933133421,-268,=1:499792815402079759035/1864898564933133421
+qsubz:93903/5738092942308156928,-98800,=1:566923582700045904580303/5738092942308156928
+qsubz:-22733/84967665346179535,83373,37597/787951056254403061:-7084009162907026394288/84967665346179535
+qsubz:-86661/144430519608110792,44749,-90279/140207959688288608:-6463121321943349917869/144430519608110792
+qsubz:483/360261339188405,529,=1:-190578248430665762/360261339188405
+qsubz:-38143/29201842630357283,93563,=1:-2732212002024118507472/29201842630357283
+qsubz:62857/8632026056772207,-87080,-91675/4159937477960427:751676829023723848417/8632026056772207
+qsubz:23972/3672679577284837,52253,85704/3937432008899357:-191908525951864563789/3672679577284837
+qsubz:-14599/133661353793289,51189,99045/961552885468912:-6841991039324685220/133661353793289
+qsubz:62703/884965957527142,86064,=1:-76163710168615886385/884965957527142
+qsubz:64258/63053331939447,29993,33125/6340027354888:-1891158584859769613/63053331939447
+qsubz:20336/70880915457155,41846,79118/19214581682805:-2966082788220087794/70880915457155
+qsubz:36038/5027873766967,8156,18212/2385080863253:-41007338443346814/5027873766967
+qsubz:5053/326394695366,-96066,48835/616131440759:31355432805035209/326394695366
+qsubz:-42352/85957538425,63707,=1:-5476096900483827/85957538425
+qsubz:98097/378312685672,74927,-87935/235046263733:-28345834599247847/378312685672
+qsubz:547/343462127,45098,71335/96241407069:-15489455002899/343462127
+qsubz:-60477/84209971088,13484,11423/1932234184:-1135487250211069/84209971088
+qsubz:78087/178203607,2768,99674/645255053:-493267506089/178203607
+qsubz:5795/9287277564,55525,94160/3355805697:-515676086735305/9287277564
+qsubz:18925/113809474,-82623,=1:9403280189227/113809474
+qsubz:24851/454133872,99932,41237/85240886:-45382506071853/454133872
+qsubz:32911/22337158,43967,9767/5792458:-982097792875/22337158
+qsubz:4426/88473719,34001,302/1024805:-3008194915293/88473719
+qsubz:19589/4824560,27427,-56021/4154865:-132323187531/4824560
+qsubz:54075/7773166,56830,-399/153359:-441748969705/7773166
+qsubz:18078/738403,66012,86419/302521:-48743440758/738403
+qsubz:2510/112811,-47375,17956/599429:5344423635/112811
+qsubz:-69109/5420,2635,=1:-14350809/5420
+qsubz:696/5261,-27292,12449/12093:143583908/5261
+qsubz:6568/1031,5374,=1:-5534026/1031
+qsubz:307/167,87414,=1:-14597831/167
+qsubz:14308/171,-77499,92955/236:13266637/171
+qsubz:-3325/3,-32369,-9967/90:93782/3
+qsubz:62901/65,-51444,-55475/13:3406761/65
+qsubz:94982/85,74494,1763/15:-6237008/85
+qsubz:-15489,36907,29337/5:-52396
+qsubz:-44489/6,51924,=1:-356033/6
+qsubz:866110/92140247631008473461,992450,-12311/75887274686890544356:-91444588761394359485503340/92140247631008473461
+qsubz:286002/21377811703132112171,-707482,=1:15124416979355312983249424/21377811703132112171
+qsubz:205249/6361297615099533875,893207,=1:-5681955558890209353681876/6361297615099533875
+qsubz:602071/8282499324515240138,143540,=1:-1188869953040917568806449/8282499324515240138
+qsubz:-157822/195585936483662037,948292,47401/94049003322925483:-185472578879964840548626/195585936483662037
+qsubz:-485225/770852827673995413,462391,451203/793998272131521284:-356435409841006413497708/770852827673995413
+qsubz:832061/32966123055937780,297720,-38054/4240951695865905:-9814674156213795029539/32966123055937780
+qsubz:378475/97089199745880654,-144939,804700/47910921928599697:14072011521968196488581/97089199745880654
+qsubz:168809/1173744791921052,993504,123481/4027191055766810:-1166120145752732677399/1173744791921052
+qsubz:984079/7930167991939240,207285,19678/312910315596939:-1643804872209124379321/7930167991939240
+qsubz:268867/66218854685878,-341636,=1:22622744639464885275/66218854685878
+qsubz:-265818/703448681374513,-608432,516434/935917451239689:428000688106057427798/703448681374513
+qsubz:30312/17555819170721,-807531,837647/26238515163476:14176868210751530163/17555819170721
+qsubz:273401/67808858597950,255506,47585/13599555299396:-17325570224927539299/67808858597950
+qsubz:861384/410255576291,400497,402375/1586446068433:-164306127536955243/410255576291
+qsubz:76471/2810776113738,700348,=1:-1968521429704104353/2810776113738
+qsubz:46697/205225703,-877191,-693829/982561781845:180022139686970/205225703
+qsubz:694597/894706887191,189537,-5500/6992098541:-169580059276825970/894706887191
+qsubz:190839/96993581741,-48652,-262577/87880831891:4718931739053971/96993581741
+qsubz:926735/37595457632,309200,228538/46784730005:-11624515498887665/37595457632
+qsubz:-289777/2914954976,-922880,-785617/9421248912:2690153647961103/2914954976
+qsubz:146291/1692030840,816085,-21414/520023815:-1380840987915109/1692030840
+qsubz:149175/195113702,21897,=1:-4272404583519/195113702
+qsubz:-798035/275024051,342,=1:-94059023477/275024051
+qsubz:84407/78878758,-202254,414137/15080286:15953544404939/78878758
+qsubz:99099/5326786,776103,-250532/35421237:-4134134495859/5326786
+qsubz:820103/1983152,83528,386969/1852538:-165647900153/1983152
+qsubz:-277421/4047779,-724923,-962247/9651313:2934327818596/4047779
+qsubz:300716/83775,791615,597967/22363:-66317245909/83775
+qsubz:913987/585082,571734,-207060/17131:-334510358201/585082
+qsubz:286582/40727,479108,247602/7559:-19512344934/40727
+qsubz:969635/90993,547019,-27576/16163:-49773930232/90993
+qsubz:484543/4803,-13377,17384/831:64734274/4803
+qsubz:3392/77,159299,=1:-12262631/77
+qsubz:272609/60,-479733,5158/5:29056589/60
+qsubz:-63573/145,944778,245967/77:-137056383/145
+qsubz:684504/71,664239,-229408/35:-46476465/71
+qsubz:-86273,-276646,-115497/7:190373
+qsubz:355634/9,348514,373603/7:-2780992/9
+qsubz:-35219/3,752707,462886/5:-2293340/3
+qsubz:6360943/76846663141823723315,-4919575,2604527/5657014356260399834:378052922825937443633752068/76846663141823723315
+qsubz:183663/3383815743880203737,3975537,7064811/78463982107211848135:-13452484690978273523798106/3383815743880203737
+qsubz:4452901/2427919735747339403,2077568,=1:-5044168349557128424359003/2427919735747339403
+qsubz:8188529/976933204663543185,-1819612,=1:1777639382404239150132749/976933204663543185
+qsubz:5989009/760314382917671424,-4531658,4299344/201823238781745367:3445484755863929055930001/760314382917671424
+qsubz:893159/325858362948738303,4913385,=1:-1601067592636886545992496/325858362948738303
+qsubz:-1545535/21298499245651851,4547022,64678/4463799054157215:-96844744636962372383257/21298499245651851
+qsubz:297441/54069528036684176,-4566133,1740182/82453971200884283:246888656262728826908849/54069528036684176
+qsubz:6314549/8139443267727551,7518036,2558291/3365437156048481:-61192627506733360295287/8139443267727551
+qsubz:-372197/9493061230738691,8349035,2681821/7376683826021902:-79257900472580407385382/9493061230738691
+qsubz:2058974/610730967434339,-3873084,=1:2365412338274461490450/610730967434339
+qsubz:1047887/255819069867599,4832574,-2588613/40555255514690:-1236264585746341321939/255819069867599
+qsubz:2862299/15444378077100,3725846,-3488340/75081425094083:-57543374281047864301/15444378077100
+qsubz:189642/13804468201471,-9916920,=1:136897806796531978962/13804468201471
+qsubz:9152299/2631833515647,7403594,-1874909/1403676750221:-19485026825433883019/2631833515647
+qsubz:9157819/3680087499503,6393090,2353381/629919919878:-23527130592188476451/3680087499503
+qsubz:-9202064/585608331143,7948050,3400424/545300178161:-4654444296350323214/585608331143
+qsubz:4941532/944567169683,3506737,-5183542/977397734325:-3312348642907712839/944567169683
+qsubz:-1132569/74601321698,9858377,-2217591/82351435039:-735447953998296715/74601321698
+qsubz:-6722621/70207951128,-2574827,4755161/88553923140:180773328172332235/70207951128
+qsubz:-131623/1102596343,4262329,6139281/2146761991:-4699628368194470/1102596343
+qsubz:-1537871/2076518121,-611135,3524466/1036431631:1269032900339464/2076518121
+qsubz:1873496/94557071,9574995,=1:-905383480166149/94557071
+qsubz:6133681/175761766,-4032589,-1323487/51867812:708774970325855/175761766
+qsubz:33618/108073,9301994,=1:-1005294363944/108073
+qsubz:99693/1649666,4815171,3560665/23554903:-7943423783193/1649666
+qsubz:-1476863/6094467,1954168,6826155/1513109:-11909613865319/6094467
+qsubz:9947161/5499663,-7436262,=1:40896944926867/5499663
+qsubz:-3188500/101159,-1362013,1715658/206461:137776684567/101159
+qsubz:1661723/438801,3554863,397247/83229:-1559875777540/438801
+qsubz:6730319/39072,-7285917,-785583/26039:284682079343/39072
+qsubz:881050/8251,9977014,5611562/26365:-82319461464/8251
+qsubz:-697786/267,9879500,=1:-2638524286/267
+qsubz:1563831/1594,3690522,330707/648:-5881128237/1594
+qsubz:2617466/799,4838440,1742596/21:-3863296094/799
+qsubz:-5575739/795,5654259,241335/887:-4500711644/795
+qsubz:3099833/23,1330008,2467779/32:-27490351/23
+qsubz:-119153/20,-5081644,-9942949/35:101513727/20
+qsubz:4981844/3,7468100,=1:-17422456/3
+qsubz:4124549/2,8822966,-327579:-13521383/2
+qsubz:1379187/4947079973483919932,39455371,85787924/46398781838625356921:-195188875720478223449975585/4947079973483919932
+qsubz:10309279/3518090035798479574,41783212,55881853/31567898190111952667:-146997101800855461307802409/3518090035798479574
+qsubz:7964765/7203559539360591689,17787685,-3457138/299200161568971109:-128134647964891306369585200/7203559539360591689
+qsubz:3870874/16190098037406359,32189441,=1:-521150205559307782184445/16190098037406359
+qsubz:57899009/680974553755525868,95258028,91102702/899472329944903875:-64868293108931388230769295/680974553755525868
+qsubz:36574505/725775689525814263,59424702,7088419/54125181064287425:-43129004068916033849550121/725775689525814263
+qsubz:-1339365/1352359843453361,37294708,32650165/49041162900322251:-50435865472518811452953/1352359843453361
+qsubz:64855889/55163734975059261,-50495551,10273592/5300232731771161:2785523192783588706703700/55163734975059261
+qsubz:87062294/350231041000041,87531372,18935971/2964729931492256:-30656203535721753723958/350231041000041
+qsubz:28654577/4766700414359347,-75710062,18946345/966631458761659:360887183906571880304091/4766700414359347
+qsubz:98899630/25197967410013,-94124519,=1:2371746562245248308377/25197967410013
+qsubz:-60951681/826245104735740,90114845,-46517310/138373690437397:-74456949545270037011981/826245104735740
+qsubz:3673134/7692444132233,98053795,-43749749/38563121801152:-754273339990923801101/7692444132233
+qsubz:-16042613/18604599439295,32614949,=1:-606788061878051063568/18604599439295
+qsubz:-18542903/4333580495789,95232673,8705127/3818163979847:-412698454274670256900/4333580495789
+qsubz:93847183/260167494778,70420110,50108689/4318919693752:-18321023600597338397/260167494778
+qsubz:63160383/511521681755,93405210,-8686231/33289600401:-47778790103815783167/511521681755
+qsubz:10995233/136483986795,-35714136,1540987/281295347273:4874407666229829353/136483986795
+qsubz:11840157/22134680227,-12663935,50115473/42408027975:280312151652353402/22134680227
+qsubz:2165532/84739740289,74114119,81643079/62400874960:-6280411195805874859/84739740289
+qsubz:9910853/253156711,83607638,59919120/1185300817:-21165834640647765/253156711
+qsubz:58968716/943992033,-17638483,-40257956/5469268719:16650587485174655/943992033
+qsubz:85910396/690654879,-56543102,-38201318/528835655:39051769356005054/690654879
+qsubz:4001435/163786307,-76984433,46803523/742917958:12608995981560366/163786307
+qsubz:90944610/52515871,87539015,32701282/49688015:-4597187528262455/52515871
+qsubz:46996626/49950215,-40784808,14253005/11778372:2037209975330346/49950215
+qsubz:16216866/657419,8499426,=1:-5587667924628/657419
+qsubz:26087801/6436061,-9418424,-60061709/1990672:60617577475665/6436061
+qsubz:48316307/459047,-25148975,-96687866/162915:11544609843132/459047
+qsubz:82175177/512872,74792479,9314575/111969:-38358886114511/512872
+qsubz:93244651/92781,94189756,-7781135/31498:-8738926506785/92781
+qsubz:65538455/49692,48926272,-470122/28003:-2431178769769/49692
+qsubz:-12968804/1131,-21968160,-33199358/3561:24833020156/1131
+qsubz:-10642810/4567,43054752,29068797/4090:-196641695194/4567
+qsubz:-16504669/331,19366230,-37110959/378:-6426726799/331
+qsubz:120055/122,35383126,21063457/242:-4316621317/122
+qsubz:-6229424/5,84957981,45357911/68:-431019329/5
+qsubz:13067352,40056104,=1:-26988752
+qsubz:-9746025,-39734152,-1201754/9:29988127
+qsubz:26013/7,93156445,90743757/8:-652069102/7
+qsubz:865257379/90357408174523899396,294967632,443698369/37895023238390231028:-26652510722896757331379092893/90357408174523899396
+qsubz:344980185/77047998342627739241,546105928,895790581/53691868371888449511:-42076368635443183496403340463/77047998342627739241
+qsubz:-701770897/9142934914307305747,-480401371,=1:4392278467796997195473208240/9142934914307305747
+qsubz:171005591/1827355652621001622,996389504,-95300137/8222844065780808107:-1820757992346636105956769897/1827355652621001622
+qsubz:-913921523/880602809205096206,-38929444,=1:34281377747192476352167941/880602809205096206
+qsubz:298448428/179100960271183235,-314975674,481319159/261547773510673260:56412445675463162520073818/179100960271183235
+qsubz:48498841/75668495862610916,840770177,14203580/1565428657566429:-63619814659731147478953291/75668495862610916
+qsubz:425310066/60222413302772033,-201447801,=1:12131672730756573677459499/60222413302772033
+qsubz:-940057/1889686623104801,252375598,-199312501/752380091448134:-476910791538674769986055/1889686623104801
+qsubz:-138260663/718501375621144,583863337,699241429/9216930315103608:-419506610809251721858191/718501375621144
+qsubz:-341109904/135846371828305,-320703571,357847807/48145438729245:43566416552730871267251/135846371828305
+qsubz:763032333/814687008627806,672611909,-202445947/307017891884461:-547968184110647301109321/814687008627806
+qsubz:624917837/39308871863154,192138767,126397892/82282223854417:-7552758171946777373281/39308871863154
+qsubz:330847639/89408290233165,395051236,734130441/60162275528191:-35320855565258230594301/89408290233165
+qsubz:241863323/8941917277532,727547638,36393496/593234672785:-6505670794459555206093/8941917277532
+qsubz:-844311241/3424218332208,394767882,35903300/424665745313:-1351771418512168854697/3424218332208
+qsubz:-38997799/537796116092,500842415,30021710/666347170909:-269351105561176639979/537796116092
+qsubz:152248609/304406597856,-602339321,39788505/63196175173:183356063460655344385/304406597856
+qsubz:-585718840/1597344893,-966455736,981830119/83198283632:1543763133624437408/1597344893
+qsubz:781348015/38619662873,624508546,-83818298/66343651279:-24118309507046064643/38619662873
+qsubz:26891135/250398333,-399834495,887194659/4297219804:100117891050787970/250398333
+qsubz:366957713/4214088144,750168389,303961849/7723958136:-3161275713721522303/4214088144
+qsubz:-382233523/802407598,539224619,643293638/180492853:-432677931696488685/802407598
+qsubz:504657599/972138678,943952223,=1:-917652465657723595/972138678
+qsubz:-408988345/21433274,760561192,417030670/7339543:-16301316830890953/21433274
+qsubz:410157974/58771605,-898139207,117071195/99665253:52785083118975209/58771605
+qsubz:-181359243/8378299,999308019,-685030111/5629257:-8372501557638924/8378299
+qsubz:367963568/2283391,533036363,91720099/586329:-1217130065983365/2283391
+qsubz:44939447/196951,46409799,-103285387/76069:-9140411383402/196951
+qsubz:814899293/55934,-36864186,292213674/137551:2062776279017/55934
+qsubz:151776179/86747,-807563906,322468120/95761:70053897929961/86747
+qsubz:-425405259/29272,662984675,715664474/9319:-19407312811859/29272
+qsubz:24777055/3654,967458144,-290540261/2806:-3535067281121/3654
+qsubz:366485985/1627,409846678,116744107/387:-666454059121/1627
+qsubz:87840767/198,-135713419,331986209/900:26959097729/198
+qsubz:606872603/617,110773818,-2999504/3:-67740573103/617
+qsubz:-126522338/7,345173453,=1:-2542736509/7
+qsubz:-107170432/13,706985358,-54309695/7:-9297980086/13
+qsubz:813855667/3,475384819,895215002:-612298790/3
+qsubz:464635413/2,211174932,343207577/7:42285549/2
+qsubz:-1073292494/4835121375628045513,2251773912,5366939142/90030076701246336647:-10887600174992785502795349350/4835121375628045513
+qsubz:9937723759/16929248820944777341,3536220517,5346758168/36993790254509343525:-59865557018022980947303181538/16929248820944777341
+qsubz:1854788341/3248262723951959327,-8297282960,=1:26951754949049775984384956261/3248262723951959327
+qsubz:-906823037/71927651067601606,2683555089,2600732775/4128402288016064626:-193021814062278573712695971/71927651067601606
+qsubz:6194391639/613753365565872866,-6823117729,-5801950686/463111032618663091:4187711469825925275559032953/613753365565872866
+qsubz:7222246398/974438771703442207,-2981326784,144559659/180449736371193901:2905120409447533563947418686/974438771703442207
+qsubz:598767509/618842078099439,467678172,4281762740/40185499542661501:-289418931842226266977999/618842078099439
+qsubz:9493241893/56354383572502234,5379218555,=1:-303142545768791195418509977/56354383572502234
+qsubz:7562126681/5274644967533227,5051748469,-1293127915/1893065732128434:-26646179639254526641752782/5274644967533227
+qsubz:7565520398/6835621275673391,7146311176,-1198943513/715334747317684:-48849476717248123463597418/6835621275673391
+qsubz:8495334411/471195956506405,6785264959,2168272913/863558614872658:-3197189412505389410227984/471195956506405
+qsubz:329831990/194008083833657,4410191432,4944067900/100050586251673:-855612789061931484794834/194008083833657
+qsubz:3921639067/5566583240720,-1672367274,6936260591/2578150592889:9309371639780913836347/5566583240720
+qsubz:2380554367/10517458627732,-7041942370,3279856951/33783400334050:74063337535350408359207/10517458627732
+qsubz:3445818365/3619763010066,895311547,-53891527/6375878985703:-3240815620312121213737/3619763010066
+qsubz:9680947669/4195349234903,9847517105,1869006639/80865949846:-41313773352146274568146/4195349234903
+qsubz:-6058980583/155496366963,4042446763,9119016077/744819499043:-628585785293898471352/155496366963
+qsubz:-1977545176/405611601655,-4869751414,5820473357/314742970445:1975227670692263444994/405611601655
+qsubz:-2162676941/6345800531,1286256621,-697595567/9987397219:-8162327950706742692/6345800531
+qsubz:3392475437/45282237869,6472179727,-5979122928/2366853503:-293074781925541006326/45282237869
+qsubz:4416785424/2111265383,-3271176628,821511083/7068316944:6906321980791853948/2111265383
+qsubz:4093300065/635906036,5062025739,285565567/61253547:-3218972717724160539/635906036
+qsubz:7916328811/940173619,5412477560,6775158536/668079907:-5088668607425160829/940173619
+qsubz:3127361256/855850901,-4692272984,2575948861/541199820:4015886064221719840/855850901
+qsubz:283244715/13702009,963515826,-1674038966/12371545:-13202102236249719/13702009
+qsubz:540577841/30024966,5801262858,9382566733/31524563:-174182719527934987/30024966
+qsubz:7954787149/971554,327753005,4739437825/5416433:-318421788232621/971554
+qsubz:1560609006/1064401,1688715477,-368001807/3080264:-1797468881825271/1064401
+qsubz:-4972657594/362819,8090532645,-203495293/57308:-2935403936383849/362819
+qsubz:1444526623/179543,2853408565,726160202/41635:-512308089459172/179543
+qsubz:4218657381/36913,7674015126,1050342199/14146:-283266701688657/36913
+qsubz:9320467151/38863,-4055403274,308167507/16643:157614457904613/38863
+qsubz:7827452709/3047,-9072276043,5468639/133:27651052555730/3047
+qsubz:778524864/3065,1683932125,1339853306/655:-5160473438261/3065
+qsubz:3472788866/281,6153287472,-7044029756/603:-1725600990766/281
+qsubz:-5843681042/587,6535907369,6873433701/140:-3842421306645/587
+qsubz:1706274151/40,475391167,=1:-17309372529/40
+qsubz:-7106248861/76,-7953014416,1126059826/93:597322846755/76
+qsubz:8857605738,-2247650088,7100250512/3:11105255826
+qsubz:1839886389/7,1649369168,688187521:-9705697787/7
+qsubz:21420789821/10134187221769337622,-67300091654,97875160505/23312037706226247093:682031728863872046028891196609/10134187221769337622
+qsubz:19184556071/53765794610868208511,60577023217,74452356089/4734788160637873210:-3256971788423016947478859443816/53765794610868208511
+qsubz:-7679928117/2767247253219016337,55513625448,18687044299/6286371666239502248:-153619927537207285250890872093/2767247253219016337
+qsubz:38618312951/8137064142866736162,91272025410,=1:-742686325210532613183211563469/8137064142866736162
+qsubz:-70329305757/733471856768781955,17530726893,-36062653409/460161038303613091:-12858294804715129971700921572/733471856768781955
+qsubz:-92664480037/251152784368324677,58676410442,-81532606580/860207074670537961:-14736743859246940544233557271/251152784368324677
+qsubz:38165401669/68739156230002569,44174230933,-23746763849/25990052797565342:-3036499361443699108023865208/68739156230002569
+qsubz:9045716812/13158209333079373,-79399582136,-87223831269/2510586287796491:1044756322704517467366597540/13158209333079373
+qsubz:52939174938/4974456626264035,87493688728,43147212680/2387939387259719:-435233559649282454892122542/4974456626264035
+qsubz:81367771694/850281974804851,92502648537,-69900752953/1391561070523707:-78653334672719339847881293/850281974804851
+qsubz:-85053146313/639164379192017,54673455287,13200170243/100963367078830:-34945325106797939689990192/639164379192017
+qsubz:20156443510/20773119248737,37480014907,20271435745/312278412786689:-778576819107531244478949/20773119248737
+qsubz:-10838886733/6871945259460,92773868860,6711171275/80361105218191:-637536948314251553302333/6871945259460
+qsubz:97173191102/49466168642747,17726036129,12845931025/12225527003766:-876839092524443042615261/49466168642747
+qsubz:95109045/199572919304,-36806647761,19117093237/4980142825265:7345610143456900387389/199572919304
+qsubz:-19508332357/8876460386507,29224737608,43187977743/4349125197230:-259412225683492846987613/8876460386507
+qsubz:12109709171/148689816535,84702134869,23340728701/21524306891:-12594344893782326549744/148689816535
+qsubz:70406287853/869355596938,33776459373,55742597576/52660518145:-29363754000596113912021/869355596938
+qsubz:585222646/31985233215,-81118619,8164685068/93850613725:2594597947378952731/31985233215
+qsubz:46451898407/8549297194,35096580302,=1:-300051095448432374181/8549297194
+qsubz:60939385/27011903,-54212225249,34047977198/2734124659:1464375369901078232/27011903
+qsubz:27241414109/5032121410,-80524782294,=1:405210481044467728649/5032121410
+qsubz:-1517062448/92397599,82706710904,32781270955/804186901:-7641901510233781944/92397599
+qsubz:-72090700936/254068779,44740138239,=1:-11367072366764641117/254068779
+qsubz:-32335979955/7707637,-5502717532,2999795591/1166575:42412916914211929/7707637
+qsubz:-24159394717/30439725,42916822470,3512473831/6138983:-1306376298020015467/30439725
+qsubz:-83277071349/5625575,91497956206,=1:-514728698260639799/5625575
+qsubz:38672562477/8826391,24030139693,-6160335294/93847:-212099370042475486/8826391
+qsubz:-3384269055/64964,9103457689,30554917387/326314:-591400409577251/64964
+qsubz:-59571884431/32240,-81755116216,408787901/1755:2635725374919409/32240
+qsubz:48229096314/54161,27903967566,=1:-1511258558245812/54161
+qsubz:20045879099/62217,-64596206712,-66029045734/75381:4019002238879603/62217
+qsubz:23489616563/872,29670916860,-5971297606/557:-25849549885357/872
+qsubz:83219508219/5974,15772230677,582785677/54:-94140086556179/5974
+qsubz:6729510238/31,24272198233,=1:-745708634985/31
+qsubz:16173563552/113,27486903185,=1:-3089846496353/113
+qsubz:-47472904273/69,7141425373,6439404343/56:-540231255010/69
+qsubz:51824444351/61,-52527701227,=1:3256014219198/61
+qsubz:-28091556651/2,5950022569,-3627844227:-39991601789/2
+qsubz:54841455404,-4522114796,-49302775324/7:59363570200
+qsubz:582044754139/56293289312589333700,543100653961,-293376120510/22101874091130677947:-30572922239283039282121211031561/56293289312589333700
+qsubz:863378183609/36104436361383843452,7988014019,=1:-288402743802827490871299169979/36104436361383843452
+qsubz:310042961637/3290967571160173688,-218205349633,481594120353/6095463672099458281:718106729495870507345090018141/3290967571160173688
+qsubz:332189704537/4416708145100434021,836207829003,9340261402/4185349277685404729:-3693285929354301043761262006526/4416708145100434021
+qsubz:-249460520992/202110419372893751,428458525044,-44611263972/42616655580362771:-86595932180534340237045121036/202110419372893751
+qsubz:122311231452/75027142810316983,377180651007,-741450514659/647861091739096129:-28298786568390519041656920429/75027142810316983
+qsubz:13278459816/99368908017329513,705837543053,20559860194/117508700464855:-70138305890811416988946563373/99368908017329513
+qsubz:973128819452/9328598030058051,-470123313629,-372304176079/29720264187522870:4385591417403853652478296531/9328598030058051
+qsubz:-43724262678/1538974313385071,155441438418,321158859675/1414718865236666:-239220380960929390691320356/1538974313385071
+qsubz:297720090859/6268772602498826,-683800722712,195404651967/567524423173634:4286591236105882613651626971/6268772602498826
+qsubz:-478151981509/569806807788948,393132978368,429377458060/939853885300617:-224009847440432106145458373/569806807788948
+qsubz:646410569317/333338235834566,-549506177325,=1:183171419729712340170985267/333338235834566
+qsubz:51236525512/4913829572565,518862556472,849462110245/92311588868614:-2549602174088739697865168/4913829572565
+qsubz:170018414037/33080905332140,27360261367,430903523746/37958380653475:-905102216144164327021343/33080905332140
+qsubz:389185485712/9793322203883,-659024335733,59021105873/481883158776:6454037660033622853736951/9793322203883
+qsubz:909632962214/4281741824583,12584416260,=1:-53883221437494739957366/4281741824583
+qsubz:-433649087373/555105608969,522178231717,636663919751/434542406633:-289864065308054524557146/555105608969
+qsubz:226289850773/240939721173,-779455912091,325469197331/306494129848:187801890126078229253516/240939721173
+qsubz:-28728778059/3012978130,-106991553027,613396487281/79642465446:322363209336357521451/3012978130
+qsubz:78754526716/14242413985,431207764296,152553713159/10855948650:-6141439492571179552844/14242413985
+qsubz:387141036389/5539390134,145933365862,=1:-808381846690234169119/5539390134
+qsubz:205234713289/2404538676,831396150355,445862618338/245594955:-1999124198400873916691/2404538676
+qsubz:406556133145/882230806,-177285397339,-907530046754/970980799:156406639392972358379/882230806
+qsubz:-437068913804/579574371,60088259224,=1:-34825615481303661908/579574371
+qsubz:30508378793/3569747,-780792504756,198433507438/97598395:2787231731983595525/3569747
+qsubz:196609293534/8130889,426393278342,-296591563367/98318012:-3466956219935612504/8130889
+qsubz:-103665512384/3219407,343041471685,327414529149/276949:-1104390218898503179/3219407
+qsubz:15404741180/341451,869230362129,339893658990/5534429:-296799560974567999/341451
+qsubz:-209751243565/196919,-569752205869,-11109223799/401194:112194824876274046/196919
+qsubz:-83409156386/117227,525814065374,791933892737/764822:-61639688850754284/117227
+qsubz:-104685303052/62283,-731959248807,114243681256/7429:45588513208143329/62283
+qsubz:895224938428/69119,-716278812153,-90243582193/10681:49509370442141635/69119
+qsubz:42133988649/3631,-445162819995,-954951120397/5875:1616428333390494/3631
+qsubz:112664025666/277,503116531409,247371933467/111:-139250615174627/277
+qsubz:284809115647/66,672615493530,554002682515/271:-44107813457333/66
+qsubz:5127131051/6,-212712172623,=1:1281400166789/6
+qsubz:171390839296/35,-82337476599,417661388196/89:3053202520261/35
+qsubz:191091147431/39,-920358211719,-25819031162/73:36085061404472/39
+qsubz:807118523227/5,346448150075,80611631468:-925122227148/5
+qsubz:418694152501/6,739403431228,-129305925739/8:-4017726434867/6
+qsubz:126259912535/19744860018986912314,1555457055296,-3487093339153/28692815598057427812:-30712281822365105276971541402409/19744860018986912314
+qsubz:-968360818288/10957042492839702615,-2258597022367,3154775409189/49421866618340899520:24747543548276443243508422571417/10957042492839702615
+qsubz:1890330468609/2410198493801717930,9205721307529,=1:-22187615629764777182735712826361/2410198493801717930
+qsubz:1034477250607/615640323458489068,9353407953800,1425836114708/170749360405788367:-5758335098116636371727071807793/615640323458489068
+qsubz:262340294343/741793310935990,-2150652932535,=1:1595339959499334241513728993/741793310935990
+qsubz:5309424088963/684908358112044502,3522078056131,-8179152756076/644669401491648789:-2412300698567144519392901852799/684908358112044502
+qsubz:3588674603747/1545966035679074,3212946088828,=1:-4967105527796005520630181525/1545966035679074
+qsubz:-4534453995828/32270512908519613,6589946455938,-9801838977275/38162912829764278:-212660952172800308629967307822/32270512908519613
+qsubz:2685068067884/3336975215402057,-7595365246836,-8811372244318/6683370423107785:25345545580617861619855209536/3336975215402057
+qsubz:543922202681/1166407376560219,-6302819775757,4908003544930/9587540580797447:7351655479572590719509013464/1166407376560219
+qsubz:1156846910145/409653034339684,9351664480220,1708516236439/66993814409903:-3830937730448765627932140335/409653034339684
+qsubz:9324441180811/420640541106436,1370697368460,-1313111911158/152906436709229:-576570882762172957528227749/420640541106436
+qsubz:-3788617052905/39205078029262,1228798560487,=1:-48175143446141445080023499/39205078029262
+qsubz:-7794396369241/56330672452520,-7704693024950,871554050776/21153823483007:434010539135666159654004759/56330672452520
+qsubz:4137136201806/8737070701967,-9979643114697,6058666158875/9867656564998:87192847473509993220710805/8737070701967
+qsubz:2641531019871/5593201879555,-4265291606149,1130816894271/2795283200510:23856637028365393126403566/5593201879555
+qsubz:8014147074772/512942258297,-8116516720099,876859202116/274307119021:4163304415920954656486175/512942258297
+qsubz:7059941701479/197648480521,8708557606758,=1:-1721233178498254999259439/197648480521
+qsubz:3755712200003/217202180,2401179822277,3189798795928/5096167231:-521541488214864763857/217202180
+qsubz:5560957786655/41651212441,8862436005090,=1:-369131204787209989538035/41651212441
+qsubz:-9615360976410/8344722377,6598017106271,700561666213/7396251362:-55058621000143761702577/8344722377
+qsubz:-1589748773573/2251431553,1769925300090,9628158560519/9021450241:-3984865668665368513343/2251431553
+qsubz:4945046252645/140767167,-3087509026163,3397834417837/518301300:434619903644940642866/140767167
+qsubz:1602058825487/99985791,6831864885925,3194690165276/457014865:-683089413022277066188/99985791
+qsubz:4764685272484/38991805,2571787873727,410456342572/677513:-100278646509042534751/38991805
+qsubz:4983758675551/20456287,-100153673261,=1:2048777268089917458/20456287
+qsubz:5694289753177/6317218,3418777293359,4923010338011/2845899:-21597155761309002085/6317218
+qsubz:329203322035/1858873,-4317791382401,5975893406151/9192155:8026226149581216108/1858873
+qsubz:4335665925075/55982,1656849962526,181594437680/67803:-92749438936205457/55982
+qsubz:9709390247427/166663,5132356269680,-3016218694867/745383:-855364183583430413/166663
+qsubz:-4359941557652/86109,1888975613916,3532475125997/7807:-162662161080250496/86109
+qsubz:75022830289/2220,1146635653662,6798944526217/46106:-2545456128299351/2220
+qsubz:4100868613295/1849,7054226490020,=1:-13039163911433685/1849
+qsubz:8649747700020/5381,3828262903125,2064106492493/761:-20591232934015605/5381
+qsubz:8502529839374/915,3194584992739,=1:-2914542738516811/915
+qsubz:9574702992505/246,5116051092239,5492259470317/599:-1248973865698289/246
+qsubz:-2543724436678/17,5669830231740,2153080048221/11:-98930838376258/17
+qsubz:1139363340091/4,4576282403250,1187287585095/19:-17165766272909/4
+qsubz:801445681414,5625028722145,=1:-4823583040731
+qsubz:287567579499,-5591174678442,-4382414917357/2:5878742257941
+qsubz:-715733231768/486064740545382237,89623634634077,58742041670676/35324168704538737315:-43562888715146770490499323922017/486064740545382237
+qsubz:-75727619487742/10388202751580825775,96108515478673,48660513204241/1818946673143737333:-998394744945899243492150360684317/10388202751580825775
+qsubz:-96029325769707/9893650986371005511,-74226005177085,-46687636878977/2387058458323178030:734366189334646371739993740145728/9893650986371005511
+qsubz:35783358055412/1552476032897596751,43490497059466,-1079321111837/5800379511336485288:-67517954343624372543080377339554/1552476032897596751
+qsubz:57789813906856/971696921385158133,2391642623404,863087819839/4775785527716489:-2323951774215189888927692837876/971696921385158133
+qsubz:-77070689378461/283257676299534021,-94811904810524,3607206487153/28906915118888592:26856199842161639591718807458543/283257676299534021
+qsubz:34509538492008/72304248340579153,-41953401106124,=1:3033409132309117863454513524980/72304248340579153
+qsubz:1340089579409/19730355565997710,37067446196524,342940118101/16746159833490834:-731353893380907947460704380631/19730355565997710
+qsubz:3919216713549/2250316629207754,-29394351385551,2872931002859/32162204014599:66146597727681403624549476003/2250316629207754
+qsubz:13914230734213/7377733041063051,68650193198811,-10400363504789/7533498628147940:-506482798638229846031398498148/7377733041063051
+qsubz:8362337855011/33881947681545,3976758804466,=1:-134740333755032092353924959/33881947681545
+qsubz:-79790637400646/303532319009043,-60289205709726,=1:18299722420286289131189651572/303532319009043
+qsubz:49164617138338/49329628036955,77336493302650,8067608439485/33220679284796:-3814980448302136859582292412/49329628036955
+qsubz:-22432972371586/38951076862109,-92458433570223,-31701633786722/95207688313893:3601355552543932683767008721/38951076862109
+qsubz:-4621525773709/140347977321,34467754323165,49739152325557/4329768753107:-4837479602057982650714674/140347977321
+qsubz:-43517481518770/3452004002879,30104767625988,21895741020071/133893785957:-103921778350696223428738222/3452004002879
+qsubz:52840510018437/757153700674,-23243061688718,81530288553473/77422952760:17598570172659746044814369/757153700674
+qsubz:66795802116211/748770475694,13193952800144,=1:-9879242314381210389583725/748770475694
+qsubz:40654512282679/28351746821,-94129569333945,4668047575488/16185258151:2668737718166428753421524/28351746821
+qsubz:-8794421645897/53319870337,-20198498303046,44580016832223/49670829584:1076981310511732830500605/53319870337
+qsubz:33181476617649/4377168145,45758335183370,79624732407833/456222057:-200291927099698421131001/4377168145
+qsubz:28405759396583/2581458592,80820518399572,-54287042127266/4414416479:-208634821604063469126041/2581458592
+qsubz:20477840610563/180143060,-48654124735301,-16777846576721/391089816:8764702931916652771623/180143060
+qsubz:19988889540450/80587711,60651285384749,-44648119713661/448244778:-4887748238375786679089/80587711
+qsubz:-52456127766149/43656429,6722399471849,16794509454023/64472294:-293476007708541133370/43656429
+qsubz:79338612639523/4449964,42881321722350,24368081230145/16600353:-190820258598262855877/4449964
+qsubz:-36687850855147/3594342,40016343462709,59189303240521/1278571:-143832460682291247625/3594342
+qsubz:-30566194381329/2595937,67081788792968,-67923038242759/8884794:-174140128120045352345/2595937
+qsubz:-6295335911933/438252,-44734738625819,76501444579927/371738:19605082376906516455/438252
+qsubz:27767502414109/413061,97215608337806,34631303453755/296748:-40155948628120070057/413061
+qsubz:37136350760161/3002,-92175327996582,76466821875271/29733:276747470996499325/3002
+qsubz:2935626294482/5109,20674608574976,-2365106865080/11931:-105623639583257902/5109
+qsubz:52812699008901/2884,84249241650178,6737583755031/134:-242922000220104451/2884
+qsubz:-65470998619593/2326,32262904613011,=1:-75108987128483179/2326
+qsubz:78999075171323/661,-10593407332566,=1:7081241321997449/661
+qsubz:1731396778013/5,56049768012708,=1:-278517443285527/5
+qsubz:-8277249758540/11,59885952775145,-25291842793412/45:-667022730285135/11
+qsubz:-42440035424938/57,-39767184220346,-904504982593/8:2224289465134784/57
+qsubz:22865720041019/4,40904975798004,8075381981923/3:-140754183150997/4
+qsubz:-21922184931013/2,-85282941031136,34448564580295/4:148643697131259/2
+qsubz:-246867251356781/34913747863834817207,99725282227818,=1:-3481783359351804958476515011821107/34913747863834817207
+qsubz:-305181664167009/90807051195363677740,-556419009100301,=1:50526769445444561004327150236832731/90807051195363677740
+qsubz:338648296555449/4263692604904527856,496604482821540,809299601354051/8236031413566206038:-2117368860968637737678068110262791/4263692604904527856
+qsubz:-229143629870713/5276801568796926466,-709348348254893,403852851463129/9918468826070875579:3743090476894927918180789515827425/5276801568796926466
+qsubz:541314787008921/969761679678247393,-625023945769056,-10730423739323/107949110676011946:606124271488125555126774399079929/969761679678247393
+qsubz:269697710637581/986639032055630686,-647511576454662,81783586137827/121738862044573311:638860195038043221027996005595713/986639032055630686
+qsubz:-688966709079205/74860741099180639,648207519211481,879845264372555/41946111313649477:-48525295274232840016387170795564/74860741099180639
+qsubz:166710353298975/16970305651247011,-698094548558201,213765522314/321157776265937:11846877862501969531938114086186/16970305651247011
+qsubz:49899180545856/2876267857739683,557467828819843,18059812167469/275257158459484:-1603426797758442090812218383913/2876267857739683
+qsubz:6692317961394/141734941248049,-441438992382050,647025798139055/12642657149192:62567329649867813522743081844/141734941248049
+qsubz:479537992567656/157885618980541,477496194629370,723421646353653/802564393977836:-75389782249910480040744521514/157885618980541
+qsubz:908470734681149/429897226733416,29178161829135,=1:-12543610851523044744852194011/429897226733416
+qsubz:77188802685248/7318291809111,-463455255292264,-108058346785819/1176426648669:3391700798694900254405702552/7318291809111
+qsubz:171404401104613/33934604643401,855275555777772,36574880343413/903775150870:-29023437846483581280861177959/33934604643401
+qsubz:-541340901900380/6622210685537,359991433354457,757631862823376/2232325778223:-2383939116662207278386288789/6622210685537
+qsubz:692469292076099/5877109446415,650562123345311,-533032945119773/2302096119676:-3823424800591835209803933966/5877109446415
+qsubz:-95311828811477/314989654006,189810882360044,-28308634395237/5347103791:-59788464161259140107747741/314989654006
+qsubz:698022114495799/176594100926,695874989112564,-126581470685793/77926271237:-122887418058525256076138465/176594100926
+qsubz:842269707991031/20902452297,641480824512781,-207378748871278/20625232021:-13408522332976363411316926/20902452297
+qsubz:90008215456199/31308617602,-364998910104603,7226822032963/10002572848:11427611301701797362478205/31308617602
+qsubz:-351501780974067/3968320430,622136787208291,55114547224579/2370456759:-2468838123284725621659197/3968320430
+qsubz:344449638260631/4282977544,558958638427895,637819877664383/3604552102:-2394007296067040109929249/4282977544
+qsubz:210466623353876/42415731,582912199285926,-497147675534948/306590031:-24724646831063605948030/42415731
+qsubz:159664413249106/959545307,-279292307566119,-653584191266708/745665815:267993623165934491902639/959545307
+qsubz:-392198737412127/18608647,672422899635821,-569033599510242/82909327:-12512880766238158956314/18608647
+qsubz:39300503655213/2721430,511724197547707,59370211633018/15974095:-1392621543631752605797/2721430
+qsubz:87754948235651/938752,383351463740417,375522385390265/6961414:-359871865534295703933/938752
+qsubz:41618261156437/401439,-114295722812862,220994573438802/7353641:45882802288533664855/401439
+qsubz:583595357599684/369917,-921858234302871,506477458084177/879257:341011616053972731391/369917
+qsubz:45271960096970/353353,134033050982156,449578874064836/569165:-47360935391737672098/353353
+qsubz:226890272517543/20945,-473968771427454,474551299506991/45887:9927502807820541573/20945
+qsubz:-684400875331106/63053,771762142119055,263139740728045/52269:-48662602747908106021/63053
+qsubz:34178215463647/1460,-574309051342644,-63579349430280/3001:838525393175723887/1460
+qsubz:304677119786896/7379,953072503508023,=1:-7032417326265914821/7379
+qsubz:690712418406353/551,-878220570482942,945308150006353/640:484590246754507395/551
+qsubz:563742800297603/343,-370471036590769,=1:127635308350931370/343
+qsubz:21771882327450/17,838540815832625,=1:-14233421986827175/17
+qsubz:-70429366835830/23,421029379926378,193588248726221/68:-9754105105142524/23
+qsubz:579884703987868/9,158994766699977,-448423246325295:-851068196311925/9
+qsubz:211206174985053/5,-931363857001162,111347832442520/3:4868025459990863/5
+qsubz:-1832545914230682/30139417405441315141,-2206272301963151,1860280227521645/86203654952388608222:66495761818931270288235871646138609/30139417405441315141
+qsubz:-2244126580089402/15802353325367691233,4284202352680604,9672828494536963/16956491871832558298:-67700479294430428930131058720034134/15802353325367691233
+qsubz:-2873054508761746/4018888696438887255,6328415852872821,1498506651106845/518044831134554573:-25433198937475240507570306781558101/4018888696438887255
+qsubz:7896973515418738/171152447613110907,28172470782975,2496184225627819/8379223243264936533:-4821787329815018407032286989587/171152447613110907
+qsubz:6171557047136737/153596772628473013,1680648096723096,-1368752415341766/146474119282103663:-258142123580853290414834522671511/153596772628473013
+qsubz:6110188097149881/174980302833168079,1110459252556,-1094629510180661/186263856652338951:-194308496296136243983761210043/174980302833168079
+qsubz:-3332313275107576/6438318281683471,7900787008515747,=1:-50867781436614198716281448225413/6438318281683471
+qsubz:-7156623476138575/60768468431925828,4848185091878538,2590883047783370/29043794443881857:-294616782707954363603301077218039/60768468431925828
+qsubz:6244864610487455/4441450329956024,4695453677641407,8682107496188525/1108836802236426:-20854624285853647226021740998313/4441450329956024
+qsubz:1214388452257501/8099557799286469,-7732646369856166,439856662355753/161507957350071:62631016214092712520853412275355/8099557799286469
+qsubz:152270808963307/225936249720782,5032164593494515,-3042221834459135/169235048654169:-1136948396231854028931589547423/225936249720782
+qsubz:2643724012201914/307126445994791,-693785933640383,=1:213080008080151385664497446867/307126445994791
+qsubz:-4268051553498140/95366069343373,-8287002357898623,-3054534942105489/17777545496443:790298841512051368610157377239/95366069343373
+qsubz:3485602780203412/25700401711199,7457017497637979,428269713159377/10715443614396:-191648345256732514829431823409/25700401711199
+qsubz:-8234491447936746/4919684964695,4149505619200689,=1:-20414260405707280268532611601/4919684964695
+qsubz:810546492778734/1537255953059,9694022516419974,9086115085796596/3823340626845:-14902193822453782061581221732/1537255953059
+qsubz:-5877831901958825/989824365981,-7295262013116067,170001713972327/26272141179:7221028096792006892537357902/989824365981
+qsubz:413656776972827/989269893760,7369973639327299,-436236958984308/162577127395:-7290893039190903982820781413/989269893760
+qsubz:3878951355242185/83694892558,3450947753988635,2108640605094263/15564008636:-288826701489471270922836145/83694892558
+qsubz:-2535073297478552/40453071523,4908538742513000,7101922105535221/34207081432:-198565468826829943054777552/40453071523
+qsubz:-2382309885993389/696509530,-1466852366874503,-2309936099592793/3712437025:1021676650248837767520201/696509530
+qsubz:7607952043533620/5686913259,6298086275997422,4940928909130479/2342224064:-35816670341687720578084678/5686913259
+qsubz:2927215245836138/37741447,-962144281698956,=1:36312720341309463665470/37741447
+qsubz:4910061305028263/340473560,8119898610953665,=1:-2764610782000388012569137/340473560
+qsubz:4067805811057167/37177673,5330125030512986,-1997223198941339/66900704:-198161641365721004704411/37177673
+qsubz:7759637046791302/19652141,-310036804999994,=1:6092894766686433878456/19652141
+qsubz:3919065179535201/3669449,-9390389769263598,2882022398896797/3976985:34457560267499719952703/3669449
+qsubz:716031381446830/216733,7947765435310961,=1:-1722542330059869063583/216733
+qsubz:4054967994410335/373802,525724563764829,3503712661359490/252721:-196512838416426199523/373802
+qsubz:9078916136353979/203034,-9146320842030949,-2957406411653994/351673:1857023184757048053245/203034
+qsubz:6377608393262961/38293,5049392078825515,=1:-193349993266072182934/38293
+qsubz:6441803794276323/46595,-7945891506343445,444633258633711/77876:370245256541867096098/46595
+qsubz:-31739640835113/134,9187216015631531,4944420675707143/1828:-1231118685735460267/134
+qsubz:9380863138336115/5303,6462848225018826,-6700633266931069/6325:-34263103274136498163/5303
+qsubz:-3097631232518591/9,-8171290453822216,-9196963695173/266:70443982851881353/9
+qsubz:1093336426937324/7,1050221975761222,4629256617357701/951:-6258217403391230/7
+qsubz:-347597167946897/2,7674954857028324,305176137974688:-15697506882003545/2
+qsubz:2328475415769504/79,272925582329873,-6102549509203995/38:-19232645588290463/79
+qsubz:2308509394585516,-3830045206470274,7003553193110811/4:6138554601055790
+qsubz:1732760946956491,1777160492223769,3345447948158671/5:-44399545267278
+qsubz:60622144360049674/33802404082907624055,-69039399995425550,51265382108255056/56157062688150984537:2333697696286865212886332363501654924/33802404082907624055
+qsubz:36134312588149621/46726106282722203568,88368419250610983,16599233636304207/89218481321406581495:-4129112149940203572739672031514437723/46726106282722203568
+qsubz:20529608710739058/363448886403849905,-38414609254761218,-28483290600430736/9731878244397435811:13961746955281991196780195397723348/363448886403849905
+qsubz:-21301556721438976/6513242985788039333,10185328317205357,19471190728639913/1019778013146869138:-66339518219986085639448723675745857/6513242985788039333
+qsubz:44545192250412223/556091898773307973,-68210916338593275,48338123621716519/630903301445119154:37931537983795590439601289412093798/556091898773307973
+qsubz:8756185550667068/221237800002764551,37082500190782117,-49571575251913483/428549478410686743:-8204050760810732298651341341667399/221237800002764551
+qsubz:1266875902956333/74065487263129243,82179201358611673,-22809095236679413/11512992706379829:-6086642591520386247198936144497206/74065487263129243
+qsubz:-3290636228641958/39922728219039171,27776924787657947,38458678927210417/47863542399556842:-1108930619058360556827999971083895/39922728219039171
+qsubz:-42130079299808296/8434875921605067,-11019950142983699,-23447400609379164/121422770092321:92951912118341475833697196994537/8434875921605067
+qsubz:4099885603797749/2435210469429361,74350793422542339,86927824732188143/8409742118553639:-181059830552954771443357588417630/2435210469429361
+qsubz:67669333773707083/272613019755061,-93798347274264096,-45708312696783257/349531962793823:25570650698471097774452720296939/272613019755061
+qsubz:90957430568123489/391120597363954,6192418291726731,47258016849281278/236338757046761:-2421982341387543639094949530885/391120597363954
+qsubz:9680926001959435/35332948152676,87479517830701337,69091152204102197/219079971218:-3090909267933256327145631368377/35332948152676
+qsubz:-2401057520785223/6794448427129,78594993607525862,9822515380715691/6307070974391:-534009630696870303660610695421/6794448427129
+qsubz:-35669437330800467/9924679089374,82178011946947185,7494777953306900/464563380743:-815590396776229150262403512657/9924679089374
+qsubz:11660103886719350/702376882271,76866897184391316,33851103741574544/1043053682715:-53989531594206620633040039286/702376882271
+qsubz:46821131628705451/862314840987,-23194527064543517,=1:20000984917477331879225436730/862314840987
+qsubz:161045881718771/27075945293,-43271044257960465,=1:1171604427099680375978560016/27075945293
+qsubz:-60112156053007651/36372620700,39791023371344653,1476360991693221/6530487026:-1447303800410866468595124751/36372620700
+qsubz:93025606850655363/57750297227,70375311017089745,-20809770167586319/6537747728:-4064195128586474843432981752/57750297227
+qsubz:66318318188267865/1763416382,-8494345308336372,25978643271663860/9056806641:14979067737403517739513969/1763416382
+qsubz:39872461457095153/7697794394,16021018477534333,-29038307872337798/2023268917:-123326506182661742052834049/7697794394
+qsubz:-10578481873157050/399979569,-74955252966976839,7152087282045522/102539471:29980569765438885423045341/399979569
+qsubz:78420049286413657/598935089,57793609900514480,71630428375584251/480499416:-34614620810975871938175063/598935089
+qsubz:-27519033180387711/13885085,57110868026002395,=1:-792989284483858645166286/13885085
+qsubz:112418468340001/301745,54405933003593985,=1:-16416718141750998663824/301745
+qsubz:9174319448294783/1062136,97028070754069006,=1:-103056997784124389462033/1062136
+qsubz:-11682605623507087/1833691,7208465426749752,42708279458013085/2810354:-13218109859447803001719/1833691
+qsubz:2812356728656513/534935,68388753901027584,97245878303468343/140699:-36583535255689461990527/534935
+qsubz:31551448030819707/330632,-80750562495416306,5621444274957506/269077:26698751530432514905099/330632
+qsubz:-33849467579218205/69497,60936973306267634,=1:-4234970683333260978303/69497
+qsubz:-10824831395257468/25447,96813598240824230,25910641834610055/22417:-2463626459265649438278/25447
+qsubz:4701573695056803/1438,20730190652622936,22128237033227327/2325:-29805312584776725165/1438
+qsubz:19342403188073667/1838,77710503528688069,-29951149360890159/1909:-142812563082540597155/1838
+qsubz:20926018629804348/149,51657522271692972,=1:-7676044799852448480/149
+qsubz:13573480210796164/447,33824716809070641,1445132915921588/9:-15106074933443780363/447
+qsubz:-42143315976323015/51,33391903738170435,=1:-1745130406623015200/51
+qsubz:-28698219386640759/13,83268075330816132,-49006503722648020/31:-1111183198687250475/13
+qsubz:12975981398542545,18975161321245933,550313867201012:-5999179922703388
+qsubz:-4164064005006797/3,12081203464497637,84626976109311453/4:-40407674398499708/3
+qsubz:-477106876207656134/7877944473247978593,-803086328922597207,311162678588479799/34146563555720051689:6326669506476782929117540896089933617/7877944473247978593
+qsubz:-465449358463997555/82259489098814668274,78609606376504442,23623692298759933/1909856158146778290:-6466386058790179182859588942381470663/82259489098814668274
+qsubz:55657155637787468/352243932662032145,931147756136809511,-706077458182178492/4890139950764490669:-327991147511056658341169010385943627/352243932662032145
+qsubz:-338412710404804019/9240924616405735378,180507301532576790,354994699428236406/1584136814505879965:-1668054366173361583178755373609480639/9240924616405735378
+qsubz:-278052766531165423/213589938382221126,-717335569765330249,327115671099490325/973040503527761492:153215660145552371350937879003474951/213589938382221126
+qsubz:319790079757993429/85843803189992002,129266654884522405,=1:-11096741280935559317469625781811381/85843803189992002
+qsubz:647723610543155092/95934901226294863,10437868520469255,655999718116549702/60165561163831581:-1001355885524269831096747212781973/95934901226294863
+qsubz:-490792959368504510/8839690905932849,780493070335457531,=1:-6899317495987951906756776145840329/8839690905932849
+qsubz:200230806231530877/534053235743650,574182776580143425,=1:-306644169740898654458247301470373/534053235743650
+qsubz:-415400268260899058/3432173800064079,-969417138049457063,=1:3327208102546448501242352298240919/3432173800064079
+qsubz:610500835640448509/244349286982576,-726909463539500534,141143959595247333/41552246570044:177619809116764391827142641144093/244349286982576
+qsubz:136794096998673790/125947220203517,501933222844173130,=1:-63217094145015905841679184224420/125947220203517
+qsubz:37195166234504707/4122583546869,350304198433672874,288669113811749979/50036393133086:-1444158324861755915971558426799/4122583546869
+qsubz:-220618681215838560/14377665800771,8868226871326041,=1:-127504402201563441934106016171/14377665800771
+qsubz:-178245325407305280/431875286797,92993296137381601,775757861791511902/3521879350061:-40161506439708276569913327277/431875286797
+qsubz:479413403799611117/2544433559696,571317426935469616,=1:-1453679234333296934118530585619/2544433559696
+qsubz:78548226516829117/75731440956,475186597103136792,372968862509778142/473438190991:-35986565721520216379222424035/75731440956
+qsubz:356871544245112943/457036865155,380199263690323829,=1:-173765079610907947968711165552/457036865155
+qsubz:164087683390841152/9866781011,414256053008139562,142080480091212971/28353008652:-4087373757348433175388616030/9866781011
+qsubz:-926767597190934385/71130390483,424803581672574937,997220370520185575/14320267108:-30216444643874005118080058956/71130390483
+qsubz:-508670075791922879/7201821098,217937729927638852,137262476496651971/1332969124:-1569548541951765573450022375/7201821098
+qsubz:708541217086167290/1270367493,137055529956144222,612951099738164089/8319475532:-174110889283632118162408156/1270367493
+qsubz:478290371375801493/32509979,-621018688752149419,=1:20189305008230285192353694/32509979
+qsubz:202407674710634402/98360799,438420143767171363,805524032483129161/407774601:-43123355436226170523964635/98360799
+qsubz:750240893218756098/12726925,682819412842796873,556437922516174385/42980509:-8690190705553419374149427/12726925
+qsubz:239662400690312894/37085945,-617903896056362368,=1:22915550144094372370030654/37085945
+qsubz:547526163264525237/6384643,925215752491576731,243367286469210971/2199851:-5907171730108914670016796/6384643
+qsubz:488339838572246377/8987524,833735135695423197,67144546497217911/577715:-7493214053366034100947851/8987524
+qsubz:54158926298615969/463896,903750262214101670,-323417221290610907/56479:-419246077481146609690351/463896
+qsubz:899979201562416758/19011,36874785972814972,333938930051256853/431121:-700126576927623015934/19011
+qsubz:251495623875326929/9839,122446851891915382,980630311370393757/34454:-1204503080140680116569/9839
+qsubz:586639670688982327/24017,-796132898656953871,-681706178572361176/45543:19121310466714750102134/24017
+qsubz:-102851779508569447/3820,-939797330665416187,=1:3589922951362381264893/3820
+qsubz:197733827323726961/1063,970508998896485514,-112039443168568153/1485:-1031453331999640374421/1063
+qsubz:798475189524604680/239,365694081282229859,=1:-86602410236928331621/239
+qsubz:142434970975405303/27,565787783866093670,80082655399847437/326:-15133835193409123787/27
+qsubz:814435903223223400/23,934520995176210672,824076522724149791/98:-20679546985829622056/23
+qsubz:-342004432352715490/61,708047941844384558,-893520674572963797/68:-43532928884860173528/61
+qsubz:188506043793261871/2,173381870849138370,457155699541150681/8:-158257697905014869/2
+qsubz:-195061562764744895,-579261672564430749,572618332809556695/7:384200109799685854
+qsubz:-5211865465872518894/11421997512267397151,9216468347981324231,-3730577014383987231/46090107429011417798:-105270478542533892972691061438449184775/11421997512267397151
+qsubz:443443414160163915/4491468994021274354,932514129347471790,=1:-4188358298450913632328975749705309745/4491468994021274354
+qsubz:275361187224379309/346698790548066715,-9688017663470973747,1805402917593442446/2385740059851766675:3358824006733693814162539396593910414/346698790548066715
+qsubz:1927916840762649449/644266943246233650,1019481372573774207,=1:-656818147604580167864072677502816101/644266943246233650
+qsubz:3969083678872801204/896572266795201101,6807779792226215707,=1:-6103666560158821383204536354397092203/896572266795201101
+qsubz:-865341312927331777/288496053508154740,8626492255839507491,1039454095259162685/156542247725866016:-2488708971428357042860912746744489117/288496053508154740
+qsubz:2279766799414118849/27989015333357246,61102716510638539,8643998670150313515/44107462445321072:-1710204869326040746987478648384745/27989015333357246
+qsubz:-9598524755027771179/55399943240765642,-815430339648713125,884311989519445007/53819690104622587:45174794533336946781627589986680071/55399943240765642
+qsubz:-2021737476156144347/2495236846065565,3202240405398277170,3178930774678872133/7381295168863952:-7990348249509715413422020018795397/2495236846065565
+qsubz:68053119707871158/578630692788811,737684984689589161,-7410529972742470086/9627432535163773:-426847173750840343829989219806413/578630692788811
+qsubz:2141868292014076693/328873136022248,-6454969195161975215,2185675198776140021/319490487602131:2122865962139927113433579878660013/328873136022248
+qsubz:6904094780152376715/105515417760572,9013725078444379686,=1:-951086967230996440142437656163677/105515417760572
+qsubz:986043406552959943/14107596810979,2995890298668631332,8819951421573670481/67954939364565:-42264812423539521185379288034085/14107596810979
+qsubz:-4371503587867387026/10407970809659,7789426111500215458,1611857228024591370/10701042327247:-81072119592494224995141074895848/10407970809659
+qsubz:128834428582928630/134708403993,8492912687875656470,-1262307966262698384/1518482758745:-1144066713435500610282261356080/134708403993
+qsubz:9450827094775890930/2700687301223,-6757147386255266788,6002877009556405644/1405277037833:18248942138561235652948359572654/2700687301223
+qsubz:-8388250355830908541/266466413258,2862142690442542385,=1:-762664896963214716421421848871/266466413258
+qsubz:-5619275429133115259/41783227722,-2163358989032247609,=1:90392121277550826819203901439/41783227722
+qsubz:9606560958482546016/29644869859,-7459227243081357178,9905446256945526764/20720077985:221127820879460752649388043918/29644869859
+qsubz:4930763186584321169/47984083979,6662837494722716160,551152931619292049/65568759475:-319710153880274018353836079471/47984083979
+qsubz:6701839224687506932/985583379,457687991137105386,3188171598044228633/792087660:-451089670130791153925472362/985583379
+qsubz:4977850203493279051/6143184950,3544412937261195005,5139590551055599222/1513126297:-21773984207790417170237895699/6143184950
+qsubz:2743230165777443647/888694730,494148490776673118,9757565623145649909/510318983:-439147156847452841121824493/888694730
+qsubz:-2143911698311688420/449171481,-6870034167785299997,639958345512727336/149888949:3085823419520813991370097137/449171481
+qsubz:-8533723636383149797/39725880,2768513107473221737,3141886070022952860/42371633:-109981628019631946320603357/39725880
+qsubz:-5314262731256470963/63761165,5833696012508623470,-7880529150937062671/68519301:-371963259327667136250013513/63761165
+qsubz:1681639872255718298/1514077,5997071385278801708,-6427612516373280573/8782472:-9080026170168899997925218/1514077
+qsubz:6099083259404780614/4192479,-5164344556388094262,-681054291106360636/3826929:21651412200504660448236112/4192479
+qsubz:8734142975627530613/432795,8347557484528703322,=1:-3612772407373624526714377/432795
+qsubz:9737081301281728277/751482,-1055406353334667048,=1:793128614297943544293413/751482
+qsubz:7681560095018293619/96421,-1078017997145375078,=1:103951254862849228689457/96421
+qsubz:9092804880201392539/52889,4169259379769360400,-5597148679483744113/49247:-220498866531741500803061/52889
+qsubz:-4754156917842901869/1537,-7603757415178737028,=1:11682220990211875910167/1537
+qsubz:-1492184829986224781/167,-4909822866544288080,-7885239837871971805/6814:818448233882909884579/167
+qsubz:-3561671662616934523/234,-1643132577230822696,=1:380931351409395576341/234
+qsubz:2224799941584138562/239,4895333498642631574,97344947199515758/161:-1167759906234004807624/239
+qsubz:7083599259933004607/80,7011559617335986001,1255271091090021783/31:-553841170126945875473/80
+qsubz:958854888905624023/33,5357637989296291879,-6913737981438705455/54:-175843198757872007984/33
+qsubz:-3476077523929127472,9908984532191635107,-6771898413854964869/5:-13385062056120762579
+qsubz:9188473183063801985/2,3589464423036032766,-2241566641820695587/2:2009544336991736453/2
+qsubz:41509521914914232161/2172094934845501331,95015472716989623433,=1:-206382627020524085395686379432876057162/2172094934845501331
+qsubz:-570614734467915216/612897350622429103,-29603844723095151643,717827408667935931/776625266995427534:18144117999022796755619629936333551013/612897350622429103
+qsubz:-27042524847598213145/9016861265984956672,61942065399081471006,-85599646530160700355/3483722943530240888:-558523010232084733112550144976532465177/9016861265984956672
+qsubz:26949534603425444509/3315837931819363899,1606604827685202950,-71919839549756914182/3712334721902834665:-5327241229082708837857932880292857541/3315837931819363899
+qsubz:41438250760107242789/99249508352697542,73974969596388490897,=1:-7341979362847306203122430732354032385/99249508352697542
+qsubz:87351178611540281996/61845876966812939,-91007621652632243823,19408679396333792502/44151394776784993:5628446171770955073811619296219507793/61845876966812939
+qsubz:4405917364991104531/771908998098153,64506590711703018448,53841168466232317214/53456487025575297:-49793217806998294835979616482622013/771908998098153
+qsubz:-9365617946363817493/26374061478484340,43990273202897382222,83764348600369483135/35424906140909763:-1160202169908537784737001508585220973/26374061478484340
+qsubz:-23473112900467700871/4618168111280368,15106111862258441004,38672462198241424645/4699633736186089:-69762564087716050528958198499110343/4618168111280368
+qsubz:-22186709781123392335/603508867935672,76634878648225439420,-26972666418343859759/2836755066733443:-46249828857378158866193511616382575/603508867935672
+qsubz:23848664713951836051/633837930342658,61700049658138946296,-28353020445764265473/310114901939234:-39107831777353989139731668388058717/633837930342658
+qsubz:2630510857358657218/37381246359883,-12240046954756473381,48743251697811443023/762346209014900:457548210672290050277093994431641/37381246359883
+qsubz:22881875543808933841/18718381442116,7150358297276988453,14651206458917400377/15752969059626:-133843134056206859479223810952707/18718381442116
+qsubz:1082979078922829695/1046984148841,-43275384717956071867,=1:45308641834697139731977743585842/1046984148841
+qsubz:21755828016468111169/5500110518439,18412344180922250307,63875503932039462805/8260608840523:-101269927898587827121167828799604/5500110518439
+qsubz:69011314837775177660/2882678720201,32263646636145101120,=1:-93005727594031047489899556547460/2882678720201
+qsubz:97885536037352108896/150601844165,4452732237850850724,=1:-670589686495399999211173316564/150601844165
+qsubz:22138505699176485607/252116416049,61532865941590224682,27472490489762575799/708864811:-15513445630395164712899324235811/252116416049
+qsubz:89674388203290664536/67784290823,-72266756979360926584,=1:4898550872013740444455898603168/67784290823
+qsubz:35131532657379157626/53215163647,19053685252752801749,28163327184395823897/32686497356:-1013944978768539369653403660977/53215163647
+qsubz:83869306682999924931/5573344090,99595425285705819332,=1:-555079574823255782969610022949/5573344090
+qsubz:-22687176270238560014/37602313,49747019891864444660,1536837876444207726/641869829:-1870603035478289271915058594/37602313
+qsubz:49755871830274632905/374641781,42438577123950343113,31092478152506184877/7732186:-15899264067066742469140771348/374641781
+qsubz:10982404440168695175/15660421,60671432520545031046,-27453714136445367576/288574235:-950140164962421895469735191/15660421
+qsubz:6775869043981190441/18805965,64780757548781992084,=1:-1218264652360010891780790619/18805965
+qsubz:44672679637496213080/48849753,95859623215842468974,18456416171029545998/4876557:-4682718872094290658793850342/48849753
+qsubz:-42152529057348698335/3235744,59925250634539284363,-3628407662598980249/15331:-193902812341735739490569407/3235744
+qsubz:52085283917127896710/9866863,38283604142633656357,4824692675957093036/5558115:-377739025136314829335701381/9866863
+qsubz:23591689782602478979/107299,69997830527239555546,79585026335134005520/792209:-7510673626052494468051275/107299
+qsubz:75522219291754027577/523942,98517292436821748408,-78467100165240534481/769278:-51617271711713968750356759/523942
+qsubz:-85486382965188732358/90271,23243020426810978176,=1:-2098256183331618999658054/90271
+qsubz:983479060786951655/34946,98005836915865207790,=1:-3424910993382764764477685/34946
+qsubz:35301842348289418558/1435,49016933196656116973,=1:-70303997294853238437697/1435
+qsubz:2632750748212302453/790,20382032741788103576,=1:-16099173115264389522587/790
+qsubz:-18891606196309322941/371,15238007397425687662,=1:-5672192350641239445543/371
+qsubz:22866847672127230662/17,21730312190117757012,30995020678487656037/5:-346548459559874638542/17
+qsubz:1126858518170848635,-611735474764215689,1160987006014179401/33:1738593992935064324
+qsubz:7067907915086579691/25,-28626674589646474416,=1:722734772656248440091/25
+qsubz:60995824276572751408/5,-94170815171282976513,=1:531849900132987633973/5
+qsubz:-26266792979830841992/9,26748623877696285585,-25180055821630578113/8:-267004407879097412257/9
diff --git a/polly/lib/External/isl/imath/tests/qtodec.tc b/polly/lib/External/isl/imath/tests/qtodec.tc
new file mode 100644 (file)
index 0000000..e037a8d
--- /dev/null
@@ -0,0 +1,1303 @@
+qtodec:3/29668193161647153598,10,8,0:0.00000000
+qtodec:1/2552439818325226004,8,24,0:0.000000000000000000003472
+qtodec:2/2729838301109816701,10,17,0:0.00000000000000000
+qtodec:-2/8398891633027131961,8,2,0:0.00
+qtodec:1/30929359245686845,10,17,0:0.00000000000000003
+qtodec:1/93965811021736277,4,4,0:0.0000
+qtodec:0,2,5,0:0.00000
+qtodec:6/83909376915228431,16,18,0:0.00000000000005270C
+qtodec:-3/7079577697657177,33,15,0:-0.0000000000LDPIW
+qtodec:-6/9174315766316507,8,5,0:0.00000
+qtodec:9/479356093905517,16,19,0:0.00000000000548E50ED
+qtodec:7/272231567064361,2,0,0:0
+qtodec:5/47376768449307,10,11,0:0.00000000000
+qtodec:1/12288137207534,10,19,0:0.0000000000000813792
+qtodec:3/2308297858255,16,3,0:0.000
+qtodec:3/7879579455704,4,19,0:0.0000000000000000000
+qtodec:1/716028119691,8,6,0:0.000000
+qtodec:-7/176165656001,10,2,0:0.00
+qtodec:-2/79472074107,16,21,0:-0.000000001BAB9EA7B105E
+qtodec:7/39648256931,10,3,0:0.000
+qtodec:4/9367226433,10,11,0:0.00000000042
+qtodec:4/5861792533,21,10,0:0.00000014H0
+qtodec:3/243862471,8,3,0:0.000
+qtodec:-5/892143793,16,23,0:-0.0000001812303B762B937DA
+qtodec:-2/12767069,11,15,0:-0.00000030641A338
+qtodec:-1/10048225,25,3,0:0.000
+qtodec:-9/1466150,8,1,0:0.0
+qtodec:0,20,1,0:0.0
+qtodec:4/16203,10,13,0:0.0002468678639
+qtodec:5/580616,2,22,0:0.0000000000000000100100
+qtodec:-4/49429,10,8,0:-0.00008092
+qtodec:-5/74444,2,7,0:0.0000000
+qtodec:-2/437,10,9,0:-0.004576659
+qtodec:-6/2737,4,17,0:-0.00002033222223022
+qtodec:2/295,16,18,0:0.01BC4FD65883E7B3A2
+qtodec:-1/41,13,18,0:-0.04177C08322B136459
+qtodec:0,8,11,0:0.00000000000
+qtodec:1/90,8,11,0:0.00554055405
+qtodec:3,16,7,0:3.0000000
+qtodec:1/5,10,16,0:0.2000000000000000
+qtodec:27/28225889819425315955,10,14,0:0.00000000000000
+qtodec:97/39183286035001818490,16,11,0:0.00000000000
+qtodec:-35/3702072548595294917,10,20,0:-0.00000000000000000945
+qtodec:37/8652786483007175262,16,10,0:0.0000000000
+qtodec:41/181598573551235020,23,14,0:0.000000000004LI
+qtodec:15/600082766020339676,16,13,0:0.0000000000000
+qtodec:-9/2722110669597035,16,10,0:0.0000000000
+qtodec:57/47186773574985517,4,12,0:0.000000000000
+qtodec:0,8,15,0:0.000000000000000
+qtodec:38/8249095374399173,10,12,0:0.000000000000
+qtodec:86/135104489739753,30,7,0:0.0000000
+qtodec:-23/99519784680918,16,16,0:-0.0000000000410D37
+qtodec:17/35672209854079,10,3,0:0.000
+qtodec:56/46540343251387,8,11,0:0.00000000000
+qtodec:0,16,1,0:0.0
+qtodec:-59/6929353087150,8,13,0:-0.0000000000004
+qtodec:79/932785444169,16,2,0:0.00
+qtodec:-39/53188416323,8,10,0:0.0000000000
+qtodec:70/56574330991,10,12,0:0.000000001237
+qtodec:-83/19562860498,22,23,0:-0.000000ACI2EFKHH9BB0IH2B
+qtodec:13/307883133,16,18,0:0.000000B55992EED238
+qtodec:11/573365410,10,14,0:0.00000001918497
+qtodec:-89/983323622,8,20,0:-0.00000001411360322773
+qtodec:-27/872316667,10,14,0:-0.00000003095206
+qtodec:23/38939829,18,17,0:0.0000121AHFG008FEF
+qtodec:10/15277977,33,22,0:0.0000PKABC0QM81FH6PKCEH
+qtodec:10/731501,8,10,0:0.0000034526
+qtodec:6/1029065,10,15,0:0.000005830535486
+qtodec:49/332590,16,17,0:0.0009A7C345BF4128D
+qtodec:50/776461,8,1,0:0.0
+qtodec:2/479,10,16,0:0.0041753653444676
+qtodec:43/1929,16,15,0:0.05B4E2ABBA75950
+qtodec:-3/4439,2,0,0:0
+qtodec:-77/3511,16,1,0:0.0
+qtodec:-3/73,2,22,0:-0.0000101010000101010000
+qtodec:-11/574,4,21,0:-0.001032133222211322030
+qtodec:85/7,30,12,0:C.48H48H48H48H
+qtodec:17/4,8,21,0:4.200000000000000000000
+qtodec:-61/8,16,1,0:-7.A
+qtodec:81/2,16,0,0:28
+qtodec:-223/7523256159150326952,19,11,0:0.00000000000
+qtodec:492/63927532590023633933,10,7,0:0.0000000
+qtodec:-488/4671427241940113665,10,11,0:0.00000000000
+qtodec:869/1536545359977443591,16,13,0:0.0000000000002
+qtodec:255/990950541390055304,35,10,0:0.0000000000
+qtodec:314/865017777698304039,10,21,0:0.000000000000000362998
+qtodec:397/94739791379991670,4,10,0:0.0000000000
+qtodec:197/49947954439637722,10,12,0:0.000000000000
+qtodec:4/2294468349351839,10,1,0:0.0
+qtodec:465/3028494196809779,11,17,0:0.00000000000053342
+qtodec:441/948226064615029,10,9,0:0.000000000
+qtodec:415/205250226057042,8,4,0:0.0000
+qtodec:-7/17462466865516,16,18,0:-0.000000000070D4FD1C
+qtodec:608/28239839509857,8,12,0:0.000000000001
+qtodec:-223/866713738143,10,22,0:-0.0000000002572937178517
+qtodec:563/7786288255956,8,1,0:0.0
+qtodec:-919/714101559956,4,11,0:0.00000000000
+qtodec:-835/607709250842,10,7,0:0.0000000
+qtodec:-734/88891360337,16,6,0:0.000000
+qtodec:41/3074329077,10,10,0:0.0000000133
+qtodec:-34/7345250185,8,9,0:0.000000000
+qtodec:142/2351029685,16,14,0:0.00000103697A0A
+qtodec:34/31175165,8,8,0:0.00000022
+qtodec:-96/319314395,16,17,0:-0.0000050B41B8D426F
+qtodec:948/10607737,16,12,0:0.0005DB5BC777
+qtodec:47/24044059,35,24,0:0.0002WNBVR50LE0WRKG58RQLQ
+qtodec:535/6095688,10,7,0:0.0000877
+qtodec:486/1456495,10,6,0:0.000333
+qtodec:373/978875,8,11,0:0.00014370747
+qtodec:6/6211,16,7,0:0.003F4F4
+qtodec:685/2168,4,0,0:0
+qtodec:-88/41285,4,1,0:0.0
+qtodec:168/2015,8,2,0:0.05
+qtodec:-257/2002,16,21,0:-0.20DCF6899725153A0DCF6
+qtodec:89/871,5,6,0:0.022341
+qtodec:499/295,2,3,0:1.101
+qtodec:587/48,4,5,0:30.03222
+qtodec:155/24,10,16,0:6.4583333333333333
+qtodec:199/9,4,16,0:112.0130130130130130
+qtodec:-106,8,2,0:-152.00
+qtodec:-2933/29115963383147957058,10,2,0:0.00
+qtodec:1529/24516687344881033558,4,16,0:0.0000000000000000
+qtodec:-8335/3596290216553914092,10,2,0:0.00
+qtodec:1923/868496977516837484,10,2,0:0.00
+qtodec:9839/964058578172332209,2,23,0:0.00000000000000000000000
+qtodec:6976/372390689442127831,4,16,0:0.0000000000000000
+qtodec:-5619/82130008401991793,16,19,0:-0.00000000001341E2F2A
+qtodec:-793/7362155502859746,10,10,0:0.0000000000
+qtodec:-4999/903131924743945,8,11,0:0.00000000000
+qtodec:-9413/1178970988260896,10,8,0:0.00000000
+qtodec:7323/311224385698598,10,22,0:0.0000000000235296472143
+qtodec:-9700/190189472805017,22,7,0:0.0000000
+qtodec:2239/31441940161082,16,18,0:0.000000004E4C01D373
+qtodec:7871/77670518853986,15,19,0:0.000000003D68421BBCA
+qtodec:2122/2157192364211,16,24,0:0.00000004399300DABE38D2A1
+qtodec:28/69260597489,10,18,0:0.000000000404270263
+qtodec:4611/328096450714,4,18,0:0.000000000000033011
+qtodec:-8445/771625180456,16,17,0:-0.0000002F0187FDD06
+qtodec:6104/31076369717,6,7,0:0.0000000
+qtodec:-5146/99207462261,16,19,0:-0.000000DEC8E01BF79F7
+qtodec:6599/8951560744,10,14,0:0.00000073718988
+qtodec:9817/9012958484,4,15,0:0.000000000102101
+qtodec:103/2508067,10,1,0:0.0
+qtodec:160/346307341,4,15,0:0.000000000013300
+qtodec:-6972/39670075,8,20,0:-0.00005604455467641370
+qtodec:-4197/45941168,2,7,0:0.0000000
+qtodec:-4076/9631149,16,5,0:-0.001BB
+qtodec:-6082/452297,16,8,0:-0.037141D2
+qtodec:3422/343607,10,20,0:0.00995905205656462179
+qtodec:2255/505667,2,4,0:0.0000
+qtodec:393/6293,16,1,0:0.0
+qtodec:235/511,8,6,0:0.353353
+qtodec:1809/3322,8,10,0:0.4266367156
+qtodec:-751/3630,10,5,0:-0.20688
+qtodec:1444/297,16,14,0:4.DCA8F158C7F91A
+qtodec:-175/18,10,10,0:-9.7222222222
+qtodec:-1745/2,10,10,0:-872.5000000000
+qtodec:-7930/67,2,18,0:-1110110.010110111011001110
+qtodec:3077/4,2,21,0:1100000001.010000000000000000000
+qtodec:-3053/2,2,20,0:-10111110110.10000000000000000000
+qtodec:21182/2833372713644414301,16,20,0:0.0000000000021AB1F123
+qtodec:45387/14250357568649348800,10,19,0:0.0000000000000031849
+qtodec:-13863/3176447931757610564,16,21,0:-0.0000000000013A7B4A19F
+qtodec:51053/6071062782227045417,4,2,0:0.00
+qtodec:48153/204469188404773127,26,12,0:0.000000001769
+qtodec:-35643/103256682364442069,8,14,0:-0.00000000000001
+qtodec:54071/11780111475151984,4,10,0:0.0000000000
+qtodec:40181/97271345682485899,16,15,0:0.00000000007445A
+qtodec:63074/426635952224589,27,6,0:0.000000
+qtodec:37487/5041371975161711,10,7,0:0.0000000
+qtodec:33690/403332722546693,29,23,0:0.0000001CMM80DDDLOISN2P1
+qtodec:-32096/929352974579813,10,23,0:-0.00000000003453585545848
+qtodec:27697/5399115155752,8,13,0:0.0000000005404
+qtodec:43081/77103958462682,2,0,0:0
+qtodec:76092/2192729147447,10,15,0:0.000000034701960
+qtodec:40520/1057974855979,4,10,0:0.0000000000
+qtodec:-93832/180749201941,4,21,0:-0.000000000020231122031
+qtodec:15613/112650436297,10,22,0:0.0000001385968888645643
+qtodec:-15981/2114647337,8,16,0:-0.0000017662447224
+qtodec:-2956/48741428353,8,24,0:-0.000000010107463123137573
+qtodec:36488/7263916629,10,6,0:0.000005
+qtodec:17486/4731824201,33,11,0:0.0004CKGBDNA
+qtodec:87479/200379782,2,0,0:0
+qtodec:-21070/435273677,4,21,0:-0.000000030230013321132
+qtodec:-22652/26779223,16,7,0:-0.00376F8
+qtodec:88608/32268761,16,23,0:0.00B3F52FA37144F68F26E67
+qtodec:31998/3038585,4,10,0:0.0002230202
+qtodec:-8472/444571,10,14,0:-0.01905657364065
+qtodec:34267/677762,10,24,0:0.050559045800738312268908
+qtodec:-92699/231514,16,22,0:-0.6680D6DAC04F671A8CA61A
+qtodec:36031/70412,4,3,0:0.200
+qtodec:98/63775,8,24,0:0.000622645765407600507635
+qtodec:-65898/3023,10,11,0:-21.79887528944
+qtodec:7561/977,16,22,0:7.BD2EE71B83467C335B7281
+qtodec:-37137/52,10,8,0:-714.17307692
+qtodec:-88738/631,21,8,0:-6E.D536IE1D
+qtodec:67918/13,10,20,0:5224.46153846153846153846
+qtodec:-20668/21,8,20,0:-1730.14141414141414141414
+qtodec:-72712/5,16,11,0:-38CE.66666666666
+qtodec:45492,2,7,0:1011000110110100.0000000
+qtodec:296304/46496256563281536829,23,10,0:0.0000000000
+qtodec:-319725/3061659936699002531,4,23,0:-0.00000000000000000000013
+qtodec:-702855/9285437245836392212,10,4,0:0.0000
+qtodec:-199215/2284481803901388209,12,10,0:0.0000000000
+qtodec:199669/333012758422549802,8,4,0:0.0000
+qtodec:486363/473044697601679021,10,17,0:0.00000000000102815
+qtodec:-825841/23059317823282264,7,9,0:0.000000000
+qtodec:117332/24561684169423891,10,11,0:0.00000000000
+qtodec:-281263/409628091879471,10,19,0:-0.0000000006866301544
+qtodec:63007/1228412979569096,10,9,0:0.000000000
+qtodec:102915/195471522013601,2,19,0:0.0000000000000000000
+qtodec:-93162/25115626353389,4,5,0:0.00000
+qtodec:338038/29004229856357,16,17,0:0.000000320E91B972B
+qtodec:439672/13350641833293,27,21,0:0.00000CKD439M189BCG4PN
+qtodec:-1085/288156538958,28,0,0:0
+qtodec:15999/3935036028619,11,22,0:0.0000000096501919328434
+qtodec:958486/806510801671,16,0,0:0
+qtodec:24222/167944894493,10,15,0:0.000000144225878
+qtodec:90199/33724326940,16,16,0:0.00002CDF4F08A894
+qtodec:798735/74124476497,10,20,0:0.00001077559043580330
+qtodec:276215/643447444,10,5,0:0.00042
+qtodec:-877491/8506905787,2,17,0:-0.00000000000001101
+qtodec:622736/862215415,2,9,0:0.000000000
+qtodec:48302/90081849,18,8,0:0.00325372
+qtodec:996595/91668012,16,21,0:0.02C87E4CDFA1A8C2484B9
+qtodec:10754/13902389,4,9,0:0.000003022
+qtodec:424209/505345,31,11,0:0.Q0LRENN7438
+qtodec:198628/7370669,10,13,0:0.0269484357525
+qtodec:906593/696606,10,19,0:1.3014429964714630652
+qtodec:63392/486251,16,14,0:0.215FDAEB4E8BAF
+qtodec:775986/96101,8,4,0:10.0461
+qtodec:985049/21250,17,1,0:2C.6
+qtodec:-284525/1208,10,4,0:-235.5339
+qtodec:933244/2529,10,20,0:369.01700276789244760775
+qtodec:719857/48,8,6,0:35225.012525
+qtodec:-26991/715,32,2,0:-15.NV
+qtodec:-59177/2,10,20,0:-29588.50000000000000000000
+qtodec:833931/65,8,0,0:31035
+qtodec:283969/4,10,9,0:70992.250000000
+qtodec:692243/9,13,10,0:29017.B72B72B72B
+qtodec:2220425/82098663244722404628,2,19,0:0.0000000000000000000
+qtodec:1332706/24886222077598879681,30,8,0:0.00000000
+qtodec:3722825/2026604562916823564,27,7,0:0.0000000
+qtodec:293817/19154085506889290,8,22,0:0.0000000000010335564623
+qtodec:-2328299/361670841450282499,10,4,0:0.0000
+qtodec:6148084/561670125531460687,33,17,0:0.0000000FD0POOHRUD
+qtodec:-6433247/6864670391549153,16,4,0:0.0000
+qtodec:5175613/4620647601293887,16,8,0:0.00000004
+qtodec:2667155/2429659044108081,17,20,0:0.00000007B30FD7461E0A
+qtodec:681343/9032805224095139,10,9,0:0.000000000
+qtodec:5863994/174238841171323,10,15,0:0.000000033654918
+qtodec:8643703/353914077710020,10,10,0:0.0000000244
+qtodec:5346661/34799692977081,10,0,0:0
+qtodec:5106120/19563121357247,2,24,0:0.000000000000000000000100
+qtodec:6183913/2383366879745,2,8,0:0.00000000
+qtodec:518571/148387088269,4,4,0:0.0000
+qtodec:-3361270/733528692901,16,24,0:-0.00004CE0F4509B06F00B6586
+qtodec:1562255/21178801269,10,21,0:0.000073765034203645702
+qtodec:3467363/42461659020,10,21,0:0.000081658679383366213
+qtodec:-9936449/10071886359,4,11,0:-0.00001000221
+qtodec:-3336987/9840159415,10,18,0:-0.000339119201149649
+qtodec:2604333/1086112640,15,22,0:0.00815CEC195D2CA7051D65
+qtodec:7503718/882484091,10,16,0:0.0085029498849061
+qtodec:4474267/384881278,10,10,0:0.0116250575
+qtodec:712293/1045276,8,2,0:0.53
+qtodec:-272327/2700287,10,16,0:-0.1008511317500695
+qtodec:3101476/3471127,16,21,0:0.E4BCDE9EB583017073130
+qtodec:3127691/6558689,10,20,0:0.47687746743289703170
+qtodec:41313/916,16,17,0:2D.19FDC3A2189808F17
+qtodec:590136/11795,16,10,0:32.0860B6A96C
+qtodec:3688335/27739,16,21,0:84.F736CF72645AD9608B190
+qtodec:430927/16465,10,14,0:26.17230488915882
+qtodec:6193621/6249,10,24,0:991.137942070731317010721715
+qtodec:6881703/4802,4,1,0:112121.0
+qtodec:-3142168/979,10,7,0:-3209.5689479
+qtodec:-3176297/326,10,20,0:-9743.24233128834355828220
+qtodec:6271672/3,10,7,0:2090557.3333333
+qtodec:-2915894/79,10,18,0:-36910.050632911392405063
+qtodec:654753,16,2,0:9FDA1.00
+qtodec:-6358267/9,4,15,0:-2230132222.013013013013013
+qtodec:-18678516/29688438786197957,16,22,0:-0.00000002B3C24F9A0699C5
+qtodec:-5100140/10011896485948009711,16,1,0:0.0
+qtodec:-63971979/5765059347475183331,16,20,0:-0.000000000C3363110E8A
+qtodec:49592178/2236069654488181723,16,23,0:0.000000001862A177C1DD31F
+qtodec:70399774/240687813855844671,2,14,0:0.00000000000000
+qtodec:45825874/963387555556851547,16,15,0:0.00000000344D0AD
+qtodec:-7101885/38297123998463233,35,6,0:0.000000
+qtodec:45706162/20208127584234763,8,23,0:0.00000000023333300051317
+qtodec:-4603037/752013415132706,10,9,0:-0.000000006
+qtodec:-33461502/9204850740162821,16,15,0:-0.0000000F9CF2B5A
+qtodec:17754722/53304375179261,16,15,0:0.000005969369127
+qtodec:-38722845/596630162922919,22,24,0:-0.0000077JCJJ5DGKGF1H14836
+qtodec:68992640/66560021807813,8,5,0:0.00000
+qtodec:14264823/17373344136937,10,2,0:0.00
+qtodec:12383615/9923197741689,16,17,0:0.000014EFE3254D306
+qtodec:-67431335/7690429580523,16,6,0:-0.000093
+qtodec:4367596/64156078187,16,15,0:0.000476275848D8E
+qtodec:20810847/488563827005,16,17,0:0.0002CAA4454B3E427
+qtodec:-22478409/38544781642,10,5,0:-0.00058
+qtodec:36702575/69781180501,24,3,0:0.007
+qtodec:65365649/26951426,16,8,0:2.6CE15346
+qtodec:13356174/2840415263,29,12,0:0.03RJM9IFG27A
+qtodec:47208715/178421993,10,21,0:0.264590223470937240343
+qtodec:7539463/119654423,24,13,0:0.1C717ALE7IC94
+qtodec:-43582754/39677013,2,15,0:-1.000110010011001
+qtodec:-57528557/8850837,5,6,0:-11.222214
+qtodec:47234381/8936103,10,1,0:5.2
+qtodec:33301301/106817,4,20,0:10313.30022203221331330110
+qtodec:81045865/711846,16,16,0:71.DA63F30882704AB2
+qtodec:91094596/828431,4,13,0:1231.3311313002012
+qtodec:40293131/48303,8,20,0:1502.13126064102265372300
+qtodec:-181649/70,8,6,0:-5042.770537
+qtodec:45546885/4774,10,1,0:9540.6
+qtodec:828359/734,31,12,0:15C.H5QUJ6M5B8HO
+qtodec:-59718139/406,16,16,0:-23E91.032717F5E94CED15
+qtodec:2679103/162,4,10,0:10002121.2230033303
+qtodec:12366443/53,8,10,0:707561.0717545336
+qtodec:34041109/25,4,7,0:11030123230.1130022
+qtodec:-42857879/3,4,13,0:-312133302013.2222222222222
+qtodec:-16602037/6,10,15,0:-2767006.166666666666666
+qtodec:201634836/47285863779715310669,8,2,0:0.00
+qtodec:744820415/27255853323214067023,2,1,0:0.0
+qtodec:-625328361/8980450114346406298,4,0,0:0
+qtodec:403756951/6617643244507173155,16,12,0:0.000000004315
+qtodec:-426683165/783310053429126211,16,23,0:-0.0000000256EC83CE37DE9A6
+qtodec:787333919/76979591766305433,10,11,0:0.00000001022
+qtodec:661348691/70208895966253883,16,20,0:0.000000287519ABAB23C0
+qtodec:280056103/19236376368074700,8,12,0:0.000000001750
+qtodec:7656653/5938020515370151,16,3,0:0.000
+qtodec:-208421697/1757008688014187,8,19,0:-0.0000000177275547023
+qtodec:246570074/100899135942843,34,13,0:0.0003912R3IHWN
+qtodec:113230062/65743402595005,10,7,0:0.0000017
+qtodec:70543944/10849645138255,10,19,0:0.0000065019586448286
+qtodec:642672567/24971850717497,10,5,0:0.00002
+qtodec:-314721695/752512751681,8,6,0:-0.000155
+qtodec:-163807291/5886020608,8,4,0:-0.0161
+qtodec:438467533/52265645624,20,6,0:0.037259
+qtodec:498074863/824377038073,16,4,0:0.0027
+qtodec:-27700104/49948246387,10,14,0:-0.00055457610634
+qtodec:141171374/99253478457,4,5,0:0.00001
+qtodec:-361755751/3656937423,4,14,0:-0.01211103001233
+qtodec:22816939/611768152,4,22,0:0.0021203010123303032113
+qtodec:-53856232/403256995,4,11,0:-0.02020300202
+qtodec:449484375/227346169,10,2,0:1.97
+qtodec:217806981/3021451,16,19,0:48.163DE229590DF0963DD
+qtodec:250860083/22259097,10,17,0:11.27000268699130068
+qtodec:431639694/8164765,22,23,0:28.J14GK2EE5A85EIDALF8872L
+qtodec:-39808798/57615,8,20,0:-1262.74366630432236034771
+qtodec:7210334/8793,8,10,0:1464.0042361134
+qtodec:-90699159/75166,16,16,0:-4B6.A6C208F34F5CA17D
+qtodec:-190010/41897,2,13,0:-100.1000100100000
+qtodec:-37292046/12725,4,21,0:-231302.213031123013102122123
+qtodec:-827038151/3021,16,21,0:-42D63.0AD8C3EB52CA876A2DEDD
+qtodec:-263139079/9216,2,19,0:-110111110001000.0110101011011100011
+qtodec:859020523/138,8,13,0:27575622.3140355346016
+qtodec:-50892458/33,4,12,0:-11320200303.230212302123
+qtodec:207612373/7,10,7,0:29658910.4285714
+qtodec:35998064/9,10,13,0:3999784.8888888888888
+qtodec:424044905/4,10,2,0:106011226.25
+qtodec:493019,10,13,0:493019.0000000000000
+qtodec:-4042513085/15637696512520985642,10,22,0:-0.0000000002585107775792
+qtodec:6403629722/13409004049280473687,10,14,0:0.00000000047756
+qtodec:4310949661/9182204608528567055,2,12,0:0.000000000000
+qtodec:-6207213301/7937357727791570577,26,7,0:-0.0000006
+qtodec:-5492618011/924682356235504554,10,14,0:-0.00000000594000
+qtodec:8192041323/632108923605970228,7,1,0:0.0
+qtodec:-186147758/5553753716846915,31,20,0:-0.00000TN4N56ODGNH7IPI
+qtodec:5752674759/45700966145683610,31,19,0:0.00003IM5RCTBI6HUEBC
+qtodec:1348886735/4229222108363968,4,20,0:0.00000000001111213123
+qtodec:-991251339/2657176318638922,10,1,0:0.0
+qtodec:8018307442/898724497172469,16,0,0:0
+qtodec:2014050707/340069109236288,16,18,0:0.0000635CD5D59A22E0
+qtodec:4505135732/39991791916081,10,7,0:0.0001126
+qtodec:6453084395/58624215198992,10,17,0:0.00011007540780027
+qtodec:-1804902629/2765243734591,10,16,0:-0.0006527101413962
+qtodec:2151190453/5551909474614,16,4,0:0.0019
+qtodec:725818559/82908634105,4,2,0:0.00
+qtodec:3396663851/192565119374,8,0,0:0
+qtodec:411464751/68497491776,8,15,0:0.003046546407536
+qtodec:331510163/2781814914,8,21,0:0.075007644307123546602
+qtodec:6307596319/2688917842,16,11,0:2.5884B649AE6
+qtodec:-9200062729/3512239660,4,3,0:-2.213
+qtodec:2884984405/325651823,3,8,0:22.21201202
+qtodec:1305611221/700300760,10,8,0:1.86435785
+qtodec:1587226477/40056887,4,16,0:213.2133310223222233
+qtodec:34378367/11734676,30,22,0:2.RQK7MSK4KA6QIJ9KADGNRK
+qtodec:7518884673/9949274,7,15,0:2126.502424542621013
+qtodec:3931084199/1830484,10,10,0:2147.5654520880
+qtodec:-2575482611/282998,22,10,0:-IHE.FD9E9AGG86
+qtodec:-1417727301/197914,10,14,0:-7163.35024808755317
+qtodec:3672290/691,8,14,0:12302.35211047212436
+qtodec:8228518089/35371,30,13,0:8IEE.HL4JRHM3K3LL1
+qtodec:410532666/2941,16,24,0:22145.7B57D42113C25F3A3BB688A9
+qtodec:8394604490/1573,8,21,0:24267154.265477753126202662152
+qtodec:7379334711/332,31,2,0:O22T4.O5
+qtodec:-2823493053/70,2,0,0:-10011001110111100011111111
+qtodec:2377080339/46,8,24,0:305101013.426205441310262054413102
+qtodec:419615836/45,10,23,0:9324796.35555555555555555555555
+qtodec:8359035220,4,24,0:13302033030011110.000000000000000000000000
+qtodec:2211961894/3,8,5,0:5374517267.25252
+qtodec:3722836622/14480498279571705649,16,0,0:0
+qtodec:65111863307/11533490001438870777,10,19,0:0.0000000056454605933
+qtodec:5949898539/1696780621152707101,8,11,0:0.00000000036
+qtodec:56815400197/1686789806569317842,10,11,0:0.00000003368
+qtodec:90925627747/25695775444577271,16,1,0:0.0
+qtodec:-27535487045/285845335283069982,10,8,0:-0.00000009
+qtodec:15775413556/25311693641355547,8,4,0:0.0000
+qtodec:-2057810676/17252279485169683,8,10,0:-0.0000000200
+qtodec:85387309833/8636897486832992,10,20,0:0.00000988634054800042
+qtodec:716266208/466095180147391,16,22,0:0.000019C83D60B83CEE8EE7
+qtodec:43248451649/397132885993682,8,6,0:0.000034
+qtodec:-45534175087/316387723492611,10,5,0:-0.00014
+qtodec:-47173726353/7171454234480,10,11,0:-0.00657798611
+qtodec:297529128/678060165163,8,5,0:0.00016
+qtodec:-6512811254/5361725734445,8,6,0:-0.000476
+qtodec:-20777019927/2016234688361,4,22,0:-0.0002220311123210221201
+qtodec:-947693138/3599271747,2,24,0:-0.010000110110011110110111
+qtodec:22262357967/226160142878,10,16,0:0.0984362570862418
+qtodec:82037055923/64093321236,4,17,0:1.10132223220113313
+qtodec:16205375896/9742150071,10,22,0:1.6634290970572752532996
+qtodec:97719092318/5262332763,10,12,0:18.569538780419
+qtodec:-49761904323/530474551,8,19,0:-135.6346771114202260241
+qtodec:33397252622/403519053,16,11,0:52.C3D6BF6B7B6
+qtodec:695492668/55458573,16,23,0:C.8A6F439434C6E70775E0AAB
+qtodec:75005050378/73364577,7,5,0:2660.23445
+qtodec:29030528543/40315167,10,15,0:720.089502370162574
+qtodec:31369038993/5743048,2,5,0:1010101010110.00010
+qtodec:39339254427/4936337,16,16,0:1F21.52312B564042C6B3
+qtodec:37009536016/100485,30,9,0:DJ6T.1P2MILPAG
+qtodec:1551216144/205609,10,8,0:7544.49534796
+qtodec:99143355445/6654,10,8,0:14899812.96137661
+qtodec:893556747/43649,4,15,0:10333313.122133133133000
+qtodec:-32107553839/5925,26,21,0:-BM86O.B3HIL8OGDBF29CN87DEB6
+qtodec:40475869854/7411,10,21,0:5461593.557414653892861961948
+qtodec:-21388883933/385,16,0,0:-34FB5D6
+qtodec:23566612035/406,4,14,0:3131123112102.13031203220002
+qtodec:-94254132457/78,8,23,0:-11001501411.43220322032203220322032
+qtodec:55429871241/94,2,1,0:100011001001011100101101111001.0
+qtodec:81069744134/9,10,14,0:9007749348.22222222222222
+qtodec:-63777906131/8,16,5,0:-1DB2EB3BA.60000
+qtodec:22636846283/8589275715769980395,16,4,0:0.0000
+qtodec:451030208027/11667920285394363609,2,13,0:0.0000000000000
+qtodec:-396336330142/9218513566402258373,8,6,0:0.000000
+qtodec:-812297708247/6583818474797492140,10,17,0:-0.00000012337790164
+qtodec:65812963138/110962035363701723,4,16,0:0.0000000000213303
+qtodec:-367081998292/90608900002645629,8,22,0:-0.0000010376016446422266
+qtodec:765068976289/27117928920114978,4,23,0:0.00000001312111101312131
+qtodec:466163950691/74887899881824511,21,19,0:0.000148I9D04GG13GACA
+qtodec:2881317737/21976075689165,4,1,0:0.0
+qtodec:17255779745/25462798741843,16,23,0:0.002C69AEC9C156BD44A08C5
+qtodec:53125954797/33441637786834,2,13,0:0.0000000001101
+qtodec:43895010407/151886174379178,10,1,0:0.0
+qtodec:-251294209230/63991299908567,16,24,0:-0.01015C39B4D2F68935F6E4BE
+qtodec:955590711151/37535044163376,10,6,0:0.025458
+qtodec:174878212849/3669903179355,7,21,0:0.022226131634650361136
+qtodec:-157330267554/4348224760679,3,12,0:-0.000222101011
+qtodec:459430618651/21414547740,10,19,0:21.4541359560367722246
+qtodec:34869089840/299703846887,10,8,0:0.11634515
+qtodec:745844090051/5002251143,3,7,0:12112.0022020
+qtodec:466911780262/26884443459,2,21,0:10001.010111100000101100111
+qtodec:815254747041/5076712349,10,16,0:160.5871459708736789
+qtodec:-481092000475/9125040392,10,17,0:-52.72217763515626967
+qtodec:148261988694/154485473,10,2,0:959.71
+qtodec:87399306218/237779763,8,23,0:557.44064516575231734633261
+qtodec:554983007393/9392637,10,12,0:59087.028210820880
+qtodec:-959429967314/73223417,10,23,0:-13102.77513154022844904929798
+qtodec:594089636023/951818,10,18,0:624163.060609276143128203
+qtodec:271932654628/1030467,10,22,0:263892.6376371101646146844100
+qtodec:381378480415/45628,10,8,0:8358430.79720785
+qtodec:157468278507/203998,4,1,0:2330131012.3
+qtodec:-195533395495/7408,16,4,0:-192C110.CCD2
+qtodec:-101137757753/54175,4,16,0:-13013301313.1210302022313232
+qtodec:236424674428/8301,10,2,0:28481469.03
+qtodec:44997066682/681,8,22,0:374034553.6221666243714700060074
+qtodec:49672355883/11,10,17,0:4515668716.63636363636363636
+qtodec:-156344022343/116,10,21,0:-1347793296.060344827586206896551
+qtodec:-282780023728/5,2,11,0:-110100101011000000000010010110001001.10011001100
+qtodec:638682849990/23,16,9,0:677268F6C.C8590B216
+qtodec:535560667707,16,18,0:7CB1E7423B.000000000000000000
+qtodec:-401907828437/3,16,9,0:-1F3130ECF1.AAAAAAAAA
+qtodec:3218700909539/29338078141536091560,8,23,0:0.00000001656320570000741
+qtodec:5439189996708/94348764673867659923,16,4,0:0.0000
+qtodec:1740848648701/1119578055730924485,31,18,0:0.0001DFUO0I3QPKUBB3
+qtodec:7295053757088/1450625657591198545,8,7,0:0.0000012
+qtodec:-1032855428030/265721276914642799,10,4,0:0.0000
+qtodec:9675459200429/511269589228603602,16,0,0:0
+qtodec:-6223725941437/56926625845778373,8,5,0:-0.00003
+qtodec:-2879348418643/47766734102586734,8,12,0:-0.000017632436
+qtodec:2520416264460/3387623665183741,4,12,0:0.000003003002
+qtodec:-3355498216855/9089973231071546,8,11,0:-0.00014061140
+qtodec:76270631539/39479824809239,10,8,0:0.00193188
+qtodec:3364353901017/768729606000529,10,2,0:0.00
+qtodec:-9452026777809/99657509107327,8,9,0:-0.060437046
+qtodec:-4815297415205/21430300809226,10,10,0:-0.2246957454
+qtodec:-6342167555982/3875920251233,7,17,0:-1.43115201521246450
+qtodec:8934479736203/3867754877020,10,18,0:2.309991201688244985
+qtodec:-3753600089937/143741616224,10,19,0:-26.1135236164839743412
+qtodec:2897856603605/615018645051,2,9,0:100.101101100
+qtodec:435938574533/2644597999,10,15,0:164.841149655955706
+qtodec:826020960749/10601806559,16,12,0:4D.E9C93E2C5870
+qtodec:9761146029167/8021480002,24,3,0:22G.L0D
+qtodec:2245343058343/784476985,4,9,0:230232.031313033
+qtodec:1072296751915/36801933,10,3,0:29136.968
+qtodec:-807541874983/131278078,8,7,0:-14007.3045040
+qtodec:-435413761289/43289060,7,10,0:-41216.2001345166
+qtodec:4073307919652/31662917,8,7,0:373206.0046555
+qtodec:-1321397617831/1964025,23,21,0:-296J4.IG8A9IBJ59J61E8CGB7GI
+qtodec:2696371910638/7287271,16,17,0:5A55B.3403DE272E3931399
+qtodec:5257481019409/238632,10,21,0:22031751.900034362533105367260
+qtodec:1568947440315/909929,10,13,0:1724252.5958783597401
+qtodec:766431707621/1221,2,20,0:100101011010100001000100100100.00111111111100101001
+qtodec:-431144146277/82280,4,20,0:-103333102122.32023132113312320331
+qtodec:384242556775/153,4,15,0:2111230030021023.331322021030331
+qtodec:2640838852687/18,16,18,0:2228CAD559.B8E38E38E38E38E38E
+qtodec:7610182808651/115,8,1,0:755027404533.7
+qtodec:-9118836627837/914,8,15,0:-112252512015.670667132577121
+qtodec:1898758084737/34,4,17,0:310000222322313211.22310231023102310
+qtodec:3941772625972/27,16,22,0:21FDC6B473.B425ED097B425ED097B425
+qtodec:7305852397411/8,4,6,0:31102200311321103230.120000
+qtodec:7715401636819/8,28,19,0:2FD9CJPF6.AE00000000000000000
+qtodec:-6377466965229/5272197654656004845,2,11,0:0.00000000000
+qtodec:95367642815004/58794630553530738613,16,8,0:0.00001B36
+qtodec:89910282347329/7828383835585298780,10,8,0:0.00001148
+qtodec:2038526394593/1990816553437773794,10,2,0:0.00
+qtodec:28272663625994/160960199502197837,35,1,0:0.0
+qtodec:-59069158030644/424215731327050267,16,3,0:0.000
+qtodec:75400206290854/49799134304108783,16,11,0:0.00633A28CE3
+qtodec:-37669923041786/75586822083192129,4,11,0:-0.00000200222
+qtodec:7496638266025/6034056131446777,8,8,0:0.00050553
+qtodec:24694543702374/3151507628740733,6,3,0:0.001
+qtodec:36765006277527/993625421845964,16,6,0:0.0978E3
+qtodec:24118383293179/139876602800164,8,3,0:0.130
+qtodec:84628426174922/74981426674997,16,16,0:1.20EFC3CE6BC695C0
+qtodec:75123320783542/76127954130971,2,8,0:0.11111100
+qtodec:72843089406231/6513652706969,16,20,0:B.2EE2417719BC9EBF6400
+qtodec:30025878059676/8095500354281,16,3,0:3.B57
+qtodec:40392627698767/335455107355,16,17,0:78.69533006D036F2932
+qtodec:19166212064859/56607758681,10,2,0:338.57
+qtodec:32912615723976/61714756253,32,24,0:GL.9LEN5HK85GIITU1DGPP794DF
+qtodec:41214369996242/38676773967,3,1,0:1110110.1
+qtodec:90080254229318/6760666411,2,10,0:11010000001100.0010101011
+qtodec:82429041024490/7102488371,16,5,0:2D55.A816C
+qtodec:57660654095256/202993813,8,10,0:1052623.2234624203
+qtodec:2309226834537/34009046,4,0,0:100210330
+qtodec:5980018582499/10018234,4,16,0:2101232301.1302033232010302
+qtodec:6907402092405/8167279,10,18,0:845740.924536188858002769
+qtodec:687627440189/2492032,4,3,0:1003113122.122
+qtodec:-26205406708751/2529448,16,19,0:-9E1540.A7F1ECC11AC5EB38F15
+qtodec:7987206144352/958979,16,4,0:7F16A0.7EAA
+qtodec:9349896502895/60416,10,12,0:154758615.315396583686
+qtodec:10860759301327/48735,10,2,0:222853376.45
+qtodec:3148381751581/5818,19,7,0:B9A7BD1.66HDG7A
+qtodec:61935911504963/4361,10,20,0:14202226898.63861499656042192157
+qtodec:-69993147865828/9859,4,19,0:-12213022013333300.0110131201200023123
+qtodec:86935769322811/926,16,10,0:15DBDEBA5B.04B3250B9C
+qtodec:-64121171058167/770,20,5,0:-351341067.9FGHD
+qtodec:9446426763225/4,16,18,0:225DABA57F6.400000000000000000
+qtodec:-15324302869615/24,8,5,0:-11225224260057.22525
+qtodec:-4671160833472/3,8,5,0:-26520750116225.25252
+qtodec:55245335112604/3,10,5,0:18415111704201.33333
+qtodec:566728086891451/10568813125939255124,3,12,0:0.000000001001
+qtodec:739540223328929/6053203450796243551,10,17,0:0.00012217336313578
+qtodec:-267044400853535/2379289330009370147,16,14,0:-0.00075B066EC680
+qtodec:-843852024858729/4271893173695550305,10,6,0:-0.000197
+qtodec:197347580645443/108172371955754181,16,12,0:0.0077900729BF
+qtodec:-471123271600944/654989858032575515,10,23,0:-0.00071928330770812175815
+qtodec:-163920861540435/9535143268783618,16,17,0:-0.0466A503DF678948D
+qtodec:-245368226573823/3254547830228791,16,1,0:-0.1
+qtodec:369028112478579/2538185191154003,16,21,0:0.253850793AFB1044E30DD
+qtodec:626129443248141/7910783804367593,16,19,0:0.1443195BA445886AF1D
+qtodec:-157750576827642/153140053336643,8,8,0:-1.01732420
+qtodec:275996140907183/409619916609098,16,20,0:0.AC7D3C447ED47543D31A
+qtodec:355251513430543/14307219099290,10,15,0:24.830228080324321
+qtodec:937664836189255/79009750870091,30,11,0:B.Q0S5AR173F3
+qtodec:349923951151518/2085182381581,10,14,0:167.81455389346000
+qtodec:942533795406013/1253026069985,8,12,0:1360.151377610176
+qtodec:168503932887067/490675611980,16,3,0:157.697
+qtodec:-677938451596593/682092667400,2,8,0:-1111100001.11101000
+qtodec:803603551114720/23581903161,2,0,0:1000010100011101
+qtodec:112615275542863/25757128420,16,2,0:1114.32
+qtodec:579802064583250/5360830521,16,9,0:1A67B.44BEE11BF
+qtodec:273379089201067/1016082892,2,13,0:1000001101011111011.1111010010100
+qtodec:975288121833827/137728947,2,4,0:11011000000110011111101.1100
+qtodec:-99770800296007/18724410,33,20,0:-4G8U3.H9T203QQF1ID7D4MF4GL
+qtodec:-991804729064264/26457723,2,18,0:-10001110111111111100111101.110010101110011101
+qtodec:-62591002485079/97559203,16,0,0:-9CA21
+qtodec:688513532701121/5610689,10,13,0:122714613.6064788121387
+qtodec:553695114091357/8948070,4,23,0:3230003012333.20320221111300131301211
+qtodec:394354539297348/400625,10,16,0:984348304.0183413416536661
+qtodec:950552587873347/888277,16,0,0:3FC88E89
+qtodec:350686839911665/16413,4,22,0:103321202113333012.3231220011031122032301
+qtodec:903828738534/25,16,20,0:86AE54865.5C28F5C28F5C28F5C28F
+qtodec:541050473343191/7988,10,3,0:67732908530.694
+qtodec:247693604041126/753,10,20,0:328942369244.52324037184594953519
+qtodec:669870599648747/481,8,6,0:24210111252064.072426
+qtodec:754104756872751/751,10,4,0:1004134163612.1850
+qtodec:400809404312086/31,29,15,0:POFCDO4JM.ES1P7E0R3LES1P7
+qtodec:691618327861484/41,2,13,0:11110101011110001111001111001110010010000010.1010001001010
+qtodec:-210072315488840,8,7,0:-5760750557365110.0000000
+qtodec:-81144130253573,10,3,0:-81144130253573.000
+qtodec:5170809372187007/11283707234075047947,10,10,0:0.0004582544
+qtodec:1639188787409323/46524006641110741684,10,3,0:0.000
+qtodec:5309238096936419/7635150210858603024,16,9,0:0.002D92563
+qtodec:6245068701898179/9732919709002668103,9,8,0:0.00041788
+qtodec:-4005803274360553/523443601614052653,8,16,0:-0.0037261037222672
+qtodec:910033404367986/51511134209314135,10,14,0:0.01766673202477
+qtodec:-8946453122467272/16357932122088269,4,1,0:-0.2
+qtodec:1439256442170292/18860267700460975,16,18,0:0.13892784AB4AC9534F
+qtodec:176342308920979/1166455373773242,19,16,0:0.2GAHC9H4CGC0CEHD
+qtodec:9127798257300245/3295488783649008,2,3,0:10.110
+qtodec:2823851681807332/216293042654769,35,9,0:D.1X72DBVCV
+qtodec:1528606788714955/776202467853779,8,1,0:1.7
+qtodec:-2245234784303738/7968662735081,2,19,0:-100011001.1100001000001110110
+qtodec:-128444956522416/7394678196655,16,17,0:-11.5EB2F81C36E711FA5
+qtodec:9112358352966977/2361812921250,16,7,0:F12.3478F81
+qtodec:2905352187696283/1380663976291,16,7,0:838.50B0C57
+qtodec:8510056286946796/21028769443,10,6,0:404686.365981
+qtodec:-327110149217475/8556403273,16,0,0:-9555
+qtodec:-9974695312898971/92239807984,10,5,0:-108138.72590
+qtodec:1221192643750202/2497860115,8,18,0:1672677.417113245412637252
+qtodec:-4419213285773803/8210131295,10,24,0:-538263.412238622792937929502380
+qtodec:3449812953293071/3716759862,3,8,0:1202011012221.11200111
+qtodec:-1747118140195518/581874449,30,24,0:-3L65I.ROIQ9PQN4D3L479OTM4HQTTO
+qtodec:2932615081988594/424849503,10,16,0:6902715.1056561174793230
+qtodec:205249461865499/1394293,8,8,0:1061431264.50247217
+qtodec:200178651506113/94362405,10,18,0:2121381.407204627732834914
+qtodec:4983485895963716/3124575,16,4,0:5F10BCAD.83B3
+qtodec:-2126394804343852/5400439,16,12,0:-177811A5.9FF614B5F0EB
+qtodec:-4331181325256657/303608,28,15,0:-11GP6OLI.GLNOMIO8LGAFBFB
+qtodec:5081378901139473/111776,10,6,0:45460375224.909399
+qtodec:2920920792505487/41003,10,4,0:71236758103.1994
+qtodec:7658747612532673/37587,8,3,0:2756104626662.525
+qtodec:4821921280150899/6211,10,2,0:776351840307.66
+qtodec:971865299978799/70,10,4,0:13883789999697.1285
+qtodec:-7430593251383/46,8,3,0:-2263415567573.502
+qtodec:2823536151388589/214,8,16,0:277777522736567.1720114437064505
+qtodec:4578540213882646/39,9,17,0:511604860453776.84754754754754754
+qtodec:-9927408845436128/93,7,7,0:-31325111416165136.1335226
+qtodec:407609585094280/3,2,13,0:11110111001001010101010110101111001101000101101.0101010101010
+qtodec:253188219226631/3,10,12,0:84396073075543.666666666666
+qtodec:-68930748060360886/37490536052536135645,16,16,0:-0.00787EE12917A18A
+qtodec:-27942742835596649/47682255502975144563,10,22,0:-0.0005860197371295314577
+qtodec:-889817670509617/3535523156098154639,2,8,0:0.00000000
+qtodec:15158188532341466/3995083585765893961,16,13,0:0.00F8A84A7CDC0
+qtodec:-59804365023342061/621117898115362242,8,8,0:-0.06123043
+qtodec:-81485939236590623/615428154300888948,34,11,0:-0.4H21W6LIJ50
+qtodec:36074584319124862/92634714729867147,10,20,0:0.38942835225781451191
+qtodec:27642416496412871/152889510367347,4,19,0:2310.3030302130330102330
+qtodec:-33829733020352429/4052703927980325,10,17,0:-8.34744743794091070
+qtodec:-66100320694014641/8124063954599958,16,10,0:-8.22E8955406
+qtodec:58590194428080104/702027678864689,16,14,0:53.7561E129C90D18
+qtodec:31662226155385957/171148946506769,28,12,0:6G.RQDMHIG61C7H
+qtodec:80426773270148529/88072832508602,10,6,0:913.184815
+qtodec:6986828640027445/26266703980128,4,16,0:10021.3332320200120130
+qtodec:-1329127236657015/571179194743,14,21,0:-BC2.DB9808DAB68A65CB41223
+qtodec:30790043632436089/2944082517781,10,21,0:10458.281466799040529212839
+qtodec:37527850657958435/230664339986,8,17,0:475606.50517543663044013
+qtodec:1274159114112977/691969514703,25,20,0:2NG.8JHABOIBBB9OE6722AG6
+qtodec:-8727012566649617/7034024865,10,9,0:-1240685.487205711
+qtodec:17256266960825731/63664944830,16,1,0:422C8.2
+qtodec:50744507398196374/8821405641,10,16,0:5752428.7469954669551965
+qtodec:47177149363508061/3993510814,4,7,0:231010021030.1003113
+qtodec:60964430640468696/20931833,8,19,0:25546310107.6643376221343113763
+qtodec:28046052697862828/808622915,4,7,0:2010103231022.1202200
+qtodec:15333390554164126/4607479,16,11,0:C65C4208.702AED37B48
+qtodec:36857302943990537/94956649,10,23,0:388148732.41778505684209643918668
+qtodec:8496754449568199/55962,10,8,0:151830786061.40236231
+qtodec:-40689989695341081/5616818,2,13,0:-110101111110010110111001100010011.0001001001010
+qtodec:23163002269331293/193866,16,4,0:1BD187A9C2.1156
+qtodec:34444442500613215/206713,8,13,0:2331370253516.7722402424374
+qtodec:62933776312076227/59883,16,14,0:F4B13D77CA.C8A382A3CADEC9
+qtodec:-18647677587711109/26916,18,2,0:-38FB804D22.HC
+qtodec:17817200142697406/9583,10,24,0:1859250771438.735886465616195345925075
+qtodec:-11671994921731151/3051,10,14,0:-3825629276214.73320222877745
+qtodec:-25084790823695601/724,4,9,0:-13320023333333312130211.012303213
+qtodec:55617132227847436/639,34,15,0:1EP48NP5TQ.OG5WKWQDA955GBD
+qtodec:-7818552938767891/33,10,5,0:-236925846629330.03030
+qtodec:38873447567837132/65,4,8,0:2013332310102332133330202.22111222
+qtodec:95354368608906933/5,8,15,0:1036015571557436212.463146314631463
+qtodec:-40993349533336479,5,21,0:-320441040014321013231404.000000000000000000000
+qtodec:135033976497795375/40316057739120473824,25,19,0:0.02288KK6H25D8FAK52C
+qtodec:-968873270873936405/81604197111822403467,33,1,0:0.0
+qtodec:-582538953962125016/4568729267973575005,4,6,0:-0.020022
+qtodec:6393160063269118/92227912540813733,10,19,0:0.0693191452255839024
+qtodec:474281688207585819/814291209842309920,10,3,0:0.582
+qtodec:40690442908425581/187118373843998614,8,12,0:0.157255306433
+qtodec:-268184957010686822/58138937651604387,10,18,0:-4.612828645369753495
+qtodec:244145735027212276/20118199473446397,10,18,0:12.135565876531608828
+qtodec:185382924301762910/5186767786834931,8,19,0:43.5735167671261201162
+qtodec:433898808529646925/9828786248752108,10,7,0:44.1457162
+qtodec:245241871711849034/3863301881929,10,23,0:63479.86235789484292426582206
+qtodec:-347923793289428653/116335863891625,16,5,0:-BAE.AF130
+qtodec:-101194595933896924/47243525609381,2,20,0:-100001011101.11111010011000101111
+qtodec:472198009745101481/5392622647777,4,6,0:111120023.231000
+qtodec:192703964184690803/5888450417178,10,2,0:32725.75
+qtodec:351370652185299362/4111024159547,10,9,0:85470.344748355
+qtodec:966591837542629967/302542852166,8,20,0:14140014.25030572653613126432
+qtodec:849532369021753832/344987961049,10,3,0:2462498.593
+qtodec:232084364697362395/63954852178,10,0,0:3628878
+qtodec:-15233960541477728/29236841251,2,10,0:-1111111001101011101.1001001000
+qtodec:-204455585309689977/2573797241,24,8,0:-9NA80J.I46J0E07
+qtodec:-208654616780822858/3143953651,16,20,0:-3F4ADE6.A4B10A1959FE7A9D8B74
+qtodec:61432060563100995/654186158,10,20,0:93906084.39486577305415869101
+qtodec:-215408951941727837/842697775,16,20,0:-F3C6CE3.6A4AABDAB1F876EE1689
+qtodec:1494042204388242/341149,2,14,0:100000101000010001111101010110000.01010101100110
+qtodec:252329963368832243/44580470,35,4,0:32QT0LR.50QV
+qtodec:168671981609579290/315937,10,17,0:533878531509.69747133130972314
+qtodec:97357880572782372/2370407,5,16,0:1133103442034142.2141330201310323
+qtodec:438158095794943133/660884,8,17,0:11513512103507.35524017602321151
+qtodec:7850289549554440/306739,21,4,0:E4890EGI.6AGB
+qtodec:119806400157154998/22543,8,20,0:115254513702023.51671000734614004504
+qtodec:842337451434634867/22911,16,20,0:21702A953033.D41940A3C2E70126A09C
+qtodec:-191741119725912979/977,10,12,0:-196254984366338.770726714431
+qtodec:679872291852418397/4361,16,19,0:8DC9E4228BBD.64F7B9167BA06ED4626
+qtodec:-520912901611533563/280,2,4,0:-110100111000000011011100001000100011100110111100111.0100
+qtodec:39729892807989997/54,8,8,0:24722320713461336.35502275
+qtodec:970713517442043449/37,10,14,0:26235500471406579.70270270270270
+qtodec:29117381123938587/8,16,12,0:CEE4352D5D323.600000000000
+qtodec:363588332502803888/3,35,2,0:18WP2QFWYK2H.NB
+qtodec:797307393945548281/8,10,23,0:99663424243193535.12500000000000000000000
+qtodec:962196352783334317/9197391367410673270,24,6,0:0.2C653F
+qtodec:-1712459327217296767/24201664403827655252,2,12,0:-0.000100100001
+qtodec:-6257340861519758901/171587352958408768,11,22,0:-33.516097715A478605011696
+qtodec:417344045124814390/1985525411662453127,16,6,0:0.35CF39
+qtodec:4903347687958413477/936909515551143478,8,9,0:5.167443402
+qtodec:6815391545417096283/459992327223804545,16,7,0:E.D0FA110
+qtodec:104292470919702350/405232099156473,10,0,0:257
+qtodec:1273295935414124869/12782736302053151,34,23,0:2V.KPSOK4L6RBMXDCVRWQAD0GN
+qtodec:4109078480849408360/435043171158277,10,19,0:9445.2200454249798277382
+qtodec:6514718679505732082/7354769508455189,8,8,0:1565.62007631
+qtodec:9866917402610085742/359433106924021,16,16,0:6B3B.54E315BF403F00E2
+qtodec:-1457774896854499915/466537799128293,21,21,0:-71G.DKGG5JHK6IED1DCB8C949
+qtodec:3562469801994530303/39520702664299,10,5,0:90141.86393
+qtodec:-1121788856677512277/4346264061083,10,15,0:-258104.165074127011561
+qtodec:-9277969991539582813/2921352796605,8,5,0:-14072753.47761
+qtodec:9405317682640021543/7885054834345,8,24,0:4431543.050247665143116233543566
+qtodec:6327008262496741021/191631004675,10,9,0:33016621.048494437
+qtodec:932916830728130561/490000068712,16,15,0:1D0D27.A1E90D8F3EB7E02
+qtodec:529997294498903710/61063223157,27,15,0:G8Q0A.BEM6E6H7QAPGMP1
+qtodec:-378316587720990944/3926689661,16,23,0:-5BE1B54.8DB9C3FC5575501C10951F3
+qtodec:-3320019367427260995/7860304231,16,6,0:-192CF9F4.E51A76
+qtodec:2546767615570206397/876018632,2,5,0:10101101010010000111010111011100.11111
+qtodec:4651229211968910861/560332411,10,14,0:8300839145.94208768873089
+qtodec:5163696080111021129/746361687,8,10,0:63427744254.2545124347
+qtodec:-9950518479492602835/4241804,8,1,0:-42105571761136.6
+qtodec:420714617814952557/20658446,10,21,0:20365259701.284044162857167475230
+qtodec:6389761026090454423/1077366,10,3,0:5930910225578.359
+qtodec:-3097681303678311991/1783890,4,6,0:-121101032000121021210.120323
+qtodec:821760264557780373/82357,2,1,0:10010001001100110000101011011100100010101100.1
+qtodec:6406014444168904793/598448,10,17,0:10704379401667.15369255139962035
+qtodec:1412628290169413175/3619,16,24,0:16302549B006E.CA617A05CCED655E02B02315
+qtodec:2486326722603345473/4212,10,22,0:590295993020737.2917853751187084520417
+qtodec:2663530739497419216/4037,16,2,0:25810EFFC7428.72
+qtodec:-214922836739795459/270,10,12,0:-796010506443686.885185185185
+qtodec:6226184158746697831/799,16,18,0:1BAF35FD2D429A.8FDC1D7A12954E7F84
+qtodec:-2407322554685617466/195,16,13,0:-2BDBEF138C3CFD.ABFABFABFABFA
+qtodec:858459865910732119/11,24,16,0:236L1CMG4BGII.248HALJF6D248HAL
+qtodec:2546836315293994167/4,8,10,0:43260270424442471455.6000000000
+qtodec:1687480025170556035,8,1,0:135531042215166732203.0
+qtodec:8502691839655002109/6,10,23,0:1417115306609167018.16666666666666666666666
+qtodec:13139171374879806857/10977381074509304689,10,0,0:1
+qtodec:25010427150343850302/67656897694844048439,16,9,0:0.5EA2677CC
+qtodec:34472195313108788669/434602033270864170,16,10,0:4F.51A97A0B8E
+qtodec:-83602382263216798102/7417291363069673277,2,14,0:-1011.01000101011100
+qtodec:255840050198896639/1315714580972021,2,17,0:11000010.01110011000100101
+qtodec:28302759431751782745/592140283405467652,16,17,0:2F.CC21AE72A26F651F8
+qtodec:3937631720009717237/36823618427527354,20,8,0:56.ICHH37AC
+qtodec:22545518158553313659/62467059813338995,16,15,0:168.EB237A73BBA8622
+qtodec:-48446768942686919883/3741466474083086,4,11,0:-3022110.21222310212
+qtodec:7169357010298918984/1220646708315151,10,7,0:5873.4087115
+qtodec:46778564443315773088/210614351846423,4,12,0:312032121.103121102132
+qtodec:30982166662165412803/52147001878280,2,11,0:10010001000011010011.01001111111
+qtodec:80598339985947052706/2958216824641,16,15,0:19FBC0E.4F4E111B987AE60
+qtodec:44066815386005295782/52340788103663,10,7,0:841921.1284845
+qtodec:2228125575854677152/794184699731,16,5,0:2ACF2E.DEE87
+qtodec:-31021849545265661608/4106419586427,27,24,0:-E5LLB.8KKG3308C79II4HIF7HO8DM2
+qtodec:77877994428662842064/93387431541,16,12,0:31B4AA89.4008C5AB084B
+qtodec:-659373254181263916/165391612333,10,10,0:-3986739.3810375323
+qtodec:98882644692855550886/8432909589,10,7,0:11725803964.7240371
+qtodec:69505961999667187147/91220437346,10,11,0:761956026.76218709506
+qtodec:10734338306931222346/1274484573,10,24,0:8422493715.764437382483718773110641
+qtodec:61367391524217084335/6370835564,14,13,0:6754326B1.A46C4BC7937B9
+qtodec:44577580152302734007/198070854,8,10,0:3214643014233.3071243700
+qtodec:-56791209452014782584/235059441,16,12,0:-3840B28498.8ADFAA158075
+qtodec:16511384744316378091/2678129,8,6,0:131556651335325.270744
+qtodec:88298173378026931716/10792589,10,12,0:8181370881261.848451377144
+qtodec:-42234235979751132649/8018900,24,5,0:-1NK84K6EHI.JE0IE
+qtodec:18531075354063777193/5038119,16,19,0:35864383BFF.AB3590FFE1BAF5F6E6B
+qtodec:36664397392769922711/807520,4,10,0:22110231133201221212231.0003203003
+qtodec:-42507384945776962084/555657,10,23,0:-76499324125813.15826850017186861679057
+qtodec:486858786170940568/88643,8,18,0:117731165754015.026354742305726672
+qtodec:893199977657440169/88569,10,0,0:10084792395278
+qtodec:45981109152253249913/3272,16,8,0:31ED0B3350005A.DF87D2EF
+qtodec:10005656828299907515/97,4,10,0:11232131312011100201311102202.3222320233
+qtodec:5497769811530428529/891,4,11,0:111322332031222203312210312.12320022322
+qtodec:19676898338016110283/235,4,18,0:10221132111123222120031323300.201133313102033302
+qtodec:92885714512301641859/8,10,19,0:11610714314037705232.3750000000000000000
+qtodec:46299019950017172226/55,2,14,0:101110101110101011001111100001001000001011000011010010110101.10010000010010
+qtodec:86031296735581415137/3,8,6,0:3067714130270613633640.252525
+qtodec:-74317122139160378225/9,4,6,0:-13022120120211002233111020312313.032032
+qtodec:68655/564493455483553,10,10,0:0.0000000001
+qtodec:744/11213190182777,8,17,0:0.00000000000443637
+qtodec:1969/316819189359038,10,8,0:0.00000000
+qtodec:-28439/301147910327855,8,17,0:-0.00000000000637251
+qtodec:47926/42794221756379,10,6,0:0.000000
+qtodec:8609/54631358200256,4,0,0:0
+qtodec:52489/82632930569226,2,8,0:0.00000000
+qtodec:10307/11184215134882,16,14,0:0.00000003F545F5
+qtodec:-31349/9533318763438,2,5,0:0.00000
+qtodec:-26472/3296480616721,8,0,0:0
+qtodec:57256/806743900853,16,15,0:0.00000130D23A739
+qtodec:40722/3682812606167,2,7,0:0.0000000
+qtodec:37969/34007088009,10,0,0:0
+qtodec:78781/962690517003,10,15,0:0.000000081834191
+qtodec:7283/142340577595,16,9,0:0.000000DBC
+qtodec:76855/907629934047,4,2,0:0.00
+qtodec:15363/69482486347,8,4,0:0.0000
+qtodec:-289/869154128,10,24,0:-0.000000332507193706845053
+qtodec:-21217/25103660786,19,1,0:0.0
+qtodec:13692/5736313747,32,11,0:0.0002G2T6T27
+qtodec:1355/477699881,10,14,0:0.00000283650897
+qtodec:18475/503078099,16,14,0:0.00026820095C41
+qtodec:62593/8927182523,8,24,0:0.000001655043044264105063
+qtodec:-82180/4421221347,16,9,0:-0.000137D93
+qtodec:-24674/17452297,12,7,0:-0.0025396
+qtodec:-11477/47606496,21,11,0:-0.0024ICB8BA6
+qtodec:-21973/418977883,8,17,0:-0.00001557675043667
+qtodec:-41725/131769957,22,2,0:0.00
+qtodec:3199/70769667,10,10,0:0.0000452029
+qtodec:34338/94122911,2,20,0:0.00000000000101111110
+qtodec:-13736/2772531,10,23,0:-0.00495431791384839339938
+qtodec:-5183/49753414,2,20,0:-0.00000000000001101101
+qtodec:-51566/4144321,10,12,0:-0.012442568999
+qtodec:-96027/1859756,4,4,0:-0.0031
+qtodec:12379/2809096,16,6,0:0.0120CD
+qtodec:-24031/9122052,17,11,0:-0.00CG07B319C
+qtodec:12305/38714,8,11,0:0.24257063763
+qtodec:88995/335867,8,14,0:0.20752442752633
+qtodec:81953/624954,16,1,0:0.2
+qtodec:1944/4277,33,16,0:0.EWW7Q5DG2C5HIGRA
+qtodec:54911/82297,10,10,0:0.6672296681
+qtodec:29583/27671,16,14,0:1.11B0618C693572
+qtodec:-75887/60475,10,16,0:-1.2548491112029764
+qtodec:17652/15565,16,2,0:1.22
+qtodec:87767/115652505214716,4,18,0:0.000000000000000310
+qtodec:12897/583646546551346,16,2,0:0.00
+qtodec:-19825/432539042784217,16,19,0:-0.00000000326520AEFDE
+qtodec:736440/839968528505573,4,18,0:0.000000000000000330
+qtodec:703589/85878714909896,8,18,0:0.000000001063003223
+qtodec:608123/89966921812529,10,15,0:0.000000006759406
+qtodec:919819/82768941199286,8,23,0:0.00000000137353716263317
+qtodec:-38153/35848949843701,16,23,0:-0.00000004922DAC4A09FC403
+qtodec:209877/1638057441965,10,0,0:0
+qtodec:751856/1582376330691,8,10,0:0.0000000776
+qtodec:212627/2270529591527,16,5,0:0.00000
+qtodec:-342197/1695850530890,8,19,0:-0.0000000330524323052
+qtodec:360157/727872304477,16,10,0:0.0000084D2F
+qtodec:-840347/766875155324,8,7,0:-0.0000002
+qtodec:441366/320303145713,10,14,0:0.00000137796336
+qtodec:-397333/170752574257,20,0,0:0
+qtodec:377646/38251209193,16,16,0:0.0000A5A34AEE4273
+qtodec:492455/93020377059,10,14,0:0.00000529405508
+qtodec:-329137/677535547,8,1,0:0.0
+qtodec:-906246/51378477563,10,1,0:0.0
+qtodec:860093/6194527744,19,3,0:0.000
+qtodec:31316/103976957,23,3,0:0.003
+qtodec:243505/1499845166,8,7,0:0.0000524
+qtodec:482241/2737367521,10,17,0:0.00017616962147042
+qtodec:567088/116192713,16,14,0:0.013FDA91B97CF9
+qtodec:694040/908350707,8,9,0:0.000310227
+qtodec:288216/7323035,10,14,0:0.03935745220390
+qtodec:991400/605403489,16,24,0:0.006B522057B40442574209DF
+qtodec:-461143/35204521,2,16,0:-0.0000001101011010
+qtodec:-117710/43583043,16,20,0:-0.00B1004216172B6035A9
+qtodec:-3056/22397223,2,15,0:-0.000000000000100
+qtodec:-102033/8495267,4,1,0:0.0
+qtodec:110927/145078,27,19,0:0.KHAI30C2MDG85E9MMC2
+qtodec:106035/1516586,8,11,0:0.04363023014
+qtodec:-78219/7511632,16,22,0:-0.02AA6DFD6E8394C7FBAF89
+qtodec:64866/256723,16,1,0:0.4
+qtodec:-384383/794667,30,8,0:-0.EF9TIJGJ
+qtodec:105023/359600,10,13,0:0.2920550611790
+qtodec:-335084/614183,10,5,0:-0.54557
+qtodec:173356/199035,16,23,0:0.DEF8B56028757A16842DA12
+qtodec:381414/97673,27,20,0:3.OBK85563P4LQHMP877N1
+qtodec:740226/15361,10,10,0:48.1886595924
+qtodec:791292/78311,4,2,0:22.01
+qtodec:284139/12334,10,12,0:23.037052051240
+qtodec:823655/378760563881187,10,4,0:0.0000
+qtodec:4866313/111569112800605,19,9,0:0.0000020IE
+qtodec:1858787/249890994746724,10,5,0:0.00000
+qtodec:7273440/805769398706737,8,22,0:0.0000000011542366515000
+qtodec:-9119403/7773223229000,16,5,0:-0.00001
+qtodec:2054927/69883023343346,8,17,0:0.00000000374455467
+qtodec:-3095106/23726483413861,10,19,0:-0.0000001304494200009
+qtodec:1124235/18821267939248,8,16,0:0.0000000100106064
+qtodec:-825697/8046469218859,4,4,0:0.0000
+qtodec:-8466329/522547357251,10,5,0:-0.00001
+qtodec:-451191/4499178998474,16,11,0:-0.000001AEB64
+qtodec:359287/900902946089,10,1,0:0.0
+qtodec:-1567363/85934054431,8,3,0:0.000
+qtodec:508948/70232110139,16,17,0:0.00007994276FF3FFE
+qtodec:2394568/624074713719,8,1,0:0.0
+qtodec:-4216998/945198033841,16,12,0:-0.00004AD9FB9A
+qtodec:8302337/6722959869,16,14,0:0.0050EE9167ED89
+qtodec:429445/95937769192,35,7,0:0.0006P3L
+qtodec:331857/43689514733,10,16,0:0.0000075958042113
+qtodec:159145/7758156704,10,4,0:0.0000
+qtodec:2901825/9825452368,8,1,0:0.0
+qtodec:9606613/3849003924,16,22,0:0.00A391BF8D5B12DB0C8967
+qtodec:581921/247249935,4,17,0:0.00002122033212230
+qtodec:-7077467/7969534729,4,23,0:-0.00000322030310031021011
+qtodec:7654151/567131838,8,0,0:0
+qtodec:-157427/61065933,16,22,0:-0.00A8F3651849629E3984C9
+qtodec:9393952/205343869,19,20,0:0.0G9EG2BH71D114B92E89
+qtodec:1582726/158038579,2,13,0:0.0000001010010
+qtodec:2124277/82841119,4,6,0:0.001221
+qtodec:3083421/3981011,10,22,0:0.7745321477383508862447
+qtodec:3235080/17333887,4,3,0:0.023
+qtodec:-1229849/73704028,8,18,0:-0.010426157756241450
+qtodec:-1583401/1441424,10,15,0:-1.098497735572600
+qtodec:7626667/3243668,4,4,0:2.1121
+qtodec:-1121161/1274083,10,0,0:0
+qtodec:562341/836315,10,1,0:0.6
+qtodec:7101809/698134,2,17,0:1010.00101100001011001
+qtodec:3520373/805634,4,1,0:10.1
+qtodec:-6935257/276974,16,22,0:-19.0A14C076A97C6E6EAC313C
+qtodec:-944696/960767,10,0,0:0
+qtodec:-1179024/57377,8,10,0:-24.4307440501
+qtodec:-6460475/3693,10,9,0:-1749.383969672
+qtodec:4614415/37109,10,2,0:124.34
+qtodec:-257431/24801,26,10,0:-A.9MKCFG90C1
+qtodec:79010339/389043341388123,16,19,0:0.00000368427AA7D37AB
+qtodec:77290549/450505435559884,29,11,0:0.00003F1D92R
+qtodec:1533996/23992454790335,16,3,0:0.000
+qtodec:20673781/414667535279553,10,20,0:0.00000004985628061300
+qtodec:1613195/541735894212,4,23,0:0.00000000030133112221312
+qtodec:-63576657/214144111954,16,16,0:-0.001374F10A12653D
+qtodec:80261049/89465234336497,10,11,0:0.00000089711
+qtodec:-92707227/46577185021877,16,2,0:0.00
+qtodec:20180088/9052096932529,10,11,0:0.00000222932
+qtodec:5958725/9682403484536,4,2,0:0.00
+qtodec:6585917/42481037484,10,19,0:0.0001550319245964863
+qtodec:47989819/1900947593758,4,15,0:0.000000012213202
+qtodec:-54873667/162032680162,8,4,0:-0.0001
+qtodec:-52980833/419098674300,26,15,0:-0.0025JPO9FCEKGE3
+qtodec:-60842116/680762626237,16,5,0:-0.0005D
+qtodec:-45311824/640856069947,16,19,0:-0.0004A23C4D9E3DCA928
+qtodec:46200845/79924033279,10,24,0:0.000578059478539094811289
+qtodec:98460259/75913335170,2,10,0:0.0000000001
+qtodec:24809941/19096691737,16,18,0:0.005524895A3969F3B0
+qtodec:10882277/3259863295,31,11,0:0.036DTIINPNJ
+qtodec:4972596/3972114529,8,24,0:0.000510127773454276673616
+qtodec:-14213132/6879138065,10,24,0:-0.002066121055530813801161
+qtodec:10551615/4849980697,16,18,0:0.008E94803047CFE692
+qtodec:-10819947/251762996,10,4,0:-0.0429
+qtodec:-5411766/234581185,10,2,0:-0.02
+qtodec:-14769835/347988511,2,7,0:-0.0000101
+qtodec:50123417/964435923,2,23,0:0.00001101010011100000010
+qtodec:-16460359/132357561,2,23,0:-0.00011111110101100011110
+qtodec:3791364/16604819,16,22,0:0.3A73C74220AF142E9A1AF8
+qtodec:37528863/53944966,10,17,0:0.69568795353397757
+qtodec:-124027/319601,16,3,0:-0.635
+qtodec:4793306/12338915,4,12,0:0.120313023033
+qtodec:26259994/812687,4,17,0:200.11000003221312333
+qtodec:-46562347/4867601,8,15,0:-11.441530754510376
+qtodec:17565101/2286550,4,6,0:13.223221
+qtodec:63309560/2167187,16,1,0:1D.3
+qtodec:272611/47935,7,17,0:5.45445020052652515
+qtodec:22106/1745,10,15,0:12.668194842406876
+qtodec:92712989/247904,12,7,0:271.BA24145
+qtodec:-26831343/493699,10,1,0:-54.3
+qtodec:82814925/36226,8,4,0:4356.0402
+qtodec:5223041/7597,2,6,0:1010101111.100000
+qtodec:1284647/982,10,12,0:1308.194501018329
+qtodec:1433947/3182,4,8,0:13002.22102233
+qtodec:-344137/2854599874650,4,20,0:-0.00000000000200113013
+qtodec:165197798/175803438592331,10,11,0:0.00000093967
+qtodec:-477975899/343848834437535,8,4,0:0.0000
+qtodec:-179094377/38000927193456,8,12,0:-0.000001170433
+qtodec:128908614/5526392874913,10,7,0:0.0000233
+qtodec:78808036/21436353240389,15,20,0:0.00002BD2221322244863
+qtodec:141778616/4804415363543,2,7,0:0.0000000
+qtodec:-525236484/20786529543401,4,20,0:-0.00000001221332312331
+qtodec:-330972359/2306003612051,16,0,0:0
+qtodec:72312481/6690636866,16,10,0:0.02C4505872
+qtodec:52490699/28938790787,4,14,0:0.00001312313312
+qtodec:-282868783/8254983317343,10,11,0:-0.00003426642
+qtodec:822417609/530339299663,10,5,0:0.00155
+qtodec:-481554202/25544143895,16,17,0:-0.04D3797320111700E
+qtodec:35278143/42465228617,4,10,0:0.0000031213
+qtodec:369827999/465038226115,8,12,0:0.000320362366
+qtodec:-505275021/38032954912,10,1,0:0.0
+qtodec:254690907/68730592706,16,17,0:0.00F2DA573347E3502
+qtodec:-106083040/46269280369,10,12,0:-0.002292731573
+qtodec:-60406265/22643434934,34,12,0:-0.032SWS7SG010
+qtodec:319918396/6184401717,10,9,0:0.051729886
+qtodec:-140330623/1088869052,8,5,0:-0.10177
+qtodec:-409230877/2046172793,16,9,0:-0.333315036
+qtodec:314851793/5236274560,2,24,0:0.000011110110010010011100
+qtodec:128553221/836175814,6,6,0:0.053112
+qtodec:-122961428/611026759,4,19,0:-0.0303201010230121103
+qtodec:-446255647/346867903,10,24,0:-1.286529088279465281052539
+qtodec:-260572769/470364896,28,6,0:-0.FE8R4F
+qtodec:280776256/10072775,8,5,0:33.67770
+qtodec:369274812/9412439,10,11,0:39.23263800169
+qtodec:-316593321/24342910,28,8,0:-D.04A53L0J
+qtodec:152179493/70796663,10,7,0:2.1495291
+qtodec:-600553760/2862917,10,22,0:-209.7698815578656314521168
+qtodec:68116207/854536,10,8,0:79.71133691
+qtodec:831793089/4921439,2,17,0:10101001.00000011101000101
+qtodec:-430839925/3981974,4,0,0:-1230
+qtodec:665664377/410666,16,9,0:654.F04907A9E
+qtodec:427424299/163630,7,24,0:10421.065444130504402406531221
+qtodec:-570208971/139948,6,8,0:-30510.23351152
+qtodec:403698908/154223,35,7,0:24R.M2YQLYB
+qtodec:211979567/2715,16,13,0:130FD.3046E824F649B
+qtodec:691881174/35801,10,17,0:19325.74995111868383564
+qtodec:718421447/46942,16,16,0:3BC8.72F483CD15F4B8DA
+qtodec:201501728/17427,10,7,0:11562.6170884
+qtodec:6614235784/345886207819559,10,13,0:0.0000191225774
+qtodec:-2302388421/790735305178466,2,17,0:0.00000000000000000
+qtodec:7147160405/219749646210273,2,19,0:0.0000000000000010001
+qtodec:1993884675/319701400539757,2,9,0:0.000000000
+qtodec:6157645931/53304026168395,16,19,0:0.00079217C9BDFCFA6C0
+qtodec:1746071285/5227857159967,4,16,0:0.0000011132031323
+qtodec:553442690/20934817860993,32,23,0:0.000RN1U6EMOSU5RV9F49PC4
+qtodec:3205641509/24017897955798,10,12,0:0.000133468862
+qtodec:3393272000/255645842301,10,2,0:0.01
+qtodec:9744696047/5669769706461,16,16,0:0.0070A32FE7590818
+qtodec:3865439982/2777396640079,8,22,0:0.0005546553373234167534
+qtodec:4190724699/7966032689051,33,7,0:0.00ITT41
+qtodec:-9506622734/658378266099,10,0,0:0
+qtodec:3974837290/274042666569,10,23,0:0.01450444684313124346213
+qtodec:3060351821/439485280782,8,7,0:0.0034413
+qtodec:-3608767797/392112547931,3,20,0:-0.00002020101100120022
+qtodec:-955758669/13342842196,10,4,0:-0.0716
+qtodec:389442347/27273496087,8,16,0:0.0072371430615551
+qtodec:5632160912/39395530459,10,16,0:0.1429644644044466
+qtodec:2712067031/40703849020,33,24,0:0.26IF0WA1MRBQE0RTIFEMN3WE
+qtodec:5097549193/6461069250,2,14,0:0.11001001111110
+qtodec:7958065019/7287746841,24,20,0:1.24NC8DE54L3EKC4A039D
+qtodec:8706651840/8110760959,21,20,0:1.1B887AG7I6KF270GDIG0
+qtodec:1270979794/691940283,8,10,0:1.6543531132
+qtodec:-9105312527/329024092,10,18,0:-27.673695478202246661
+qtodec:1056925223/1272276,19,5,0:25D.DIBG8
+qtodec:-7999259177/792682763,16,11,0:-A.17645D7D0D8
+qtodec:7669473418/610724525,16,17,0:C.8ED8889631A0F8E4A
+qtodec:1543148811/90789352,12,22,0:14.BB6A362A93B84A069598BB
+qtodec:3603627164/30995143,10,11,0:116.26425353159
+qtodec:7737616061/5485940,10,3,0:1410.444
+qtodec:2810821129/39280616,10,16,0:71.5574605296413885
+qtodec:5927485272/2570707,10,23,0:2305.78018887411128533901374
+qtodec:3101097701/525664,2,22,0:1011100001011.0110010000110101010011
+qtodec:2470594099/907464,2,4,0:101010100010.1000
+qtodec:22580764/15141,4,19,0:113103.1131203032310023320
+qtodec:-41037999/6632,16,0,0:-182B
+qtodec:1026897985/217757,10,4,0:4715.7978
+qtodec:8539499023/655885,10,21,0:13019.811434931428527866927
+qtodec:-2250794858/346599,4,14,0:-1211131.33013232112020
+qtodec:-9450403358/13649,10,1,0:-692387.9
+qtodec:204008989/1324,27,17,0:7M9N.945Q8MB323LQ00ENA
+qtodec:1031368481/24059,10,0,0:42868
+qtodec:1641140120/9907,10,17,0:165654.59977793479358029
+qtodec:10594464181/256539867180682,8,2,0:0.00
+qtodec:-46231449261/99440850943399,10,14,0:-0.00046491405516
+qtodec:27073997033/979290145342336,16,12,0:0.0001CFD50AA2
+qtodec:21909914237/215314847601042,10,18,0:0.000101757563313037
+qtodec:22790213983/20690898775054,16,15,0:0.00482F72209EE2C
+qtodec:57162073993/66399138763836,16,24,0:0.00386B443F1EB24EAADD18E5
+qtodec:49004505327/38821416507106,16,17,0:0.0052B9FACDD757940
+qtodec:11768332051/3589682824180,10,12,0:0.003278376566
+qtodec:15850186666/2474635965095,10,16,0:0.0064050579113730
+qtodec:46667593003/1864122052703,4,0,0:0
+qtodec:-59759544899/1772867786040,10,1,0:0.0
+qtodec:-56774525477/9339451223280,10,9,0:-0.006079000
+qtodec:88931309073/791190043090,10,23,0:0.11240195683666335508307
+qtodec:-35855044967/97196495706,10,12,0:-0.368892362904
+qtodec:31352585060/666072991803,16,24,0:0.0C0CD4E3E1E55177982A4E95
+qtodec:-4008002633/30236135502,4,15,0:-0.020132330330203
+qtodec:-46826363590/29612569101,16,18,0:-1.94D0183BB64FFD4582
+qtodec:-35128605083/27702402610,16,20,0:-1.44A0480BA20A024C6723
+qtodec:-65659897349/54589663850,16,11,0:-1.33EA0A452B1
+qtodec:86323433001/89177536283,16,5,0:0.F7CE8
+qtodec:12490055427/952518779,2,8,0:1101.00011100
+qtodec:2264332583/1185373888,16,18,0:1.E9049A2BCA80B2A224
+qtodec:-74427879390/4597012537,29,9,0:-G.5F5O0DEKA
+qtodec:29951503181/2445822201,8,0,0:14
+qtodec:-31576431431/83020171,10,9,0:-380.346499539
+qtodec:-9447985051/104277227,16,6,0:-5A.9ABFE8
+qtodec:35232385623/566066791,16,1,0:3E.3
+qtodec:-15116306133/99765700,16,7,0:-97.84A01D7
+qtodec:85943946533/13486473,8,4,0:14344.4650
+qtodec:17458384033/41778207,10,15,0:417.882558554990165
+qtodec:47372358000/36962941,16,4,0:501.9E1F
+qtodec:-19944419571/15407785,16,5,0:-50E.7014B
+qtodec:5577496827/9366839,16,9,0:253.738AF7ED4
+qtodec:2073882842/2445003,16,16,0:350.367A18E86AC9C78B
+qtodec:-43839972997/4451064,10,3,0:-9849.324
+qtodec:26005540769/1779488,24,3,0:118M.199
+qtodec:1651522055/135313,16,9,0:2FAD.32DF9AD5F
+qtodec:76197886466/518409,27,11,0:7CGN.30FE7G874BA
+qtodec:765108336/7387,10,5,0:103574.97441
+qtodec:23901412931/455042,5,21,0:3140100.331040440011320300133
+qtodec:-30812270737/28228,2,4,0:-100001010011111011101.1110
+qtodec:-40336960322/42873,30,15,0:-14PBH.IOF1RIL9A5ETT1J
+qtodec:8218880614/47365,10,15,0:173522.234012456455188
+qtodec:4420970446/22233,4,11,0:300202333.03222222132
+qtodec:614430785631/133706995251806,16,5,0:0.012D2
+qtodec:599123774551/302548464679822,4,8,0:0.00002001
+qtodec:281790013817/560893551217888,8,11,0:0.00020354622
+qtodec:-206717407741/550231026879086,8,23,0:-0.00014237041720054527517
+qtodec:666962690207/14069382615292,10,18,0:0.047405256395691365
+qtodec:931917525705/93596193043406,11,24,0:0.0122860711573932A1A861A6
+qtodec:-113538101447/619757160013,16,16,0:-0.2EE60BCB5C2D54A9
+qtodec:728394383355/38080601690192,4,13,0:0.0010321120312
+qtodec:189773534962/4102482488695,8,2,0:0.02
+qtodec:10973390446/485105217927,4,22,0:0.0011302213131130210013
+qtodec:-115610427903/163642536352,4,24,0:-0.231031233321010131133112
+qtodec:-24720050891/3267467595011,10,13,0:-0.0075655075902
+qtodec:406509460181/819769573976,8,3,0:0.375
+qtodec:819367776495/157261270951,2,4,0:101.0011
+qtodec:-256014045305/291786063426,4,1,0:-0.3
+qtodec:10334656186/19273767409,16,24,0:0.89449D46C54D81A73E4D1527
+qtodec:-186869912318/39153869757,16,24,0:-4.C5D010D70DDE0283131D1DFB
+qtodec:217180119685/68726204146,10,3,0:3.160
+qtodec:129836079717/94890868831,16,19,0:1.5E46C53EB0621ACB13D
+qtodec:810979911896/61650722121,8,1,0:15.1
+qtodec:45011863358/4039593361,16,18,0:B.248624FAE640A4ACF0
+qtodec:-215420752673/1003997587,8,4,0:-326.4402
+qtodec:784586911285/4052339642,10,20,0:193.61331492386293912725
+qtodec:25138297055/497924358,10,20,0:50.48617656700377771034
+qtodec:66808621591/367038485,10,13,0:182.0207534667652
+qtodec:657202139395/116949531,10,10,0:5619.5363399533
+qtodec:-50242217502/259433627,8,15,0:-301.522407370214770
+qtodec:-805222832932/648093307,8,3,0:-2332.345
+qtodec:176740416233/55550964,23,7,0:607.DD7LBL1
+qtodec:15978966044/90531185,16,14,0:B0.809963ADB03146
+qtodec:-22930906857/3466300,10,13,0:-6615.3843744049851
+qtodec:428950257809/90217188,4,20,0:1022102.22033130022220202132
+qtodec:-729269681423/3415862,4,17,0:-310013313.01003010133211323
+qtodec:716760678407/8104084,4,6,0:111211330.120101
+qtodec:-56519730643/958996,4,4,0:-32120320.1123
+qtodec:75679919054/101713,10,8,0:744053.55317412
+qtodec:899780170392/784091,16,20,0:118299.976D24C16D10DCEF0726
+qtodec:654179133521/312025,10,22,0:2096559.9984648665972277862350
+qtodec:157095035973/829990,4,19,0:232031121.1220131333300101012
+qtodec:-118896971485/312696,8,8,0:-1346507.64746463
+qtodec:291032078135/26972,8,11,0:51122413.51356143360
+qtodec:-125244286687/10654,16,7,0:-B3605B.AA6F343
+qtodec:-254071356292/52021,2,8,0:-10010101000011000101111.00111010
+qtodec:-411717868922/67827,4,7,0:-113021331211.2202322
+qtodec:-3022414154367/90907778612482,16,11,0:-0.0882E0B2B5C
+qtodec:-17701275548/653297673253,17,7,0:-0.07E206F
+qtodec:8979713291953/175380602612246,8,24,0:0.032156070756223520303273
+qtodec:-5326013448559/12787683829043,4,24,0:-0.122221331303312310031302
+qtodec:857488611960/30586540342757,10,7,0:0.0280348
+qtodec:5738645734057/90951057139915,10,6,0:0.063095
+qtodec:2150180745771/75085058005357,10,10,0:0.0286365996
+qtodec:9211573654621/31326323574601,10,1,0:0.2
+qtodec:-2622066957883/1546353871091,10,6,0:-1.695644
+qtodec:224011912746/207690732319,10,17,0:1.07858405738553459
+qtodec:9555205925617/1205795142091,2,20,0:111.11101100101001011010
+qtodec:-8730617437121/6055175866493,10,24,0:-1.441843743207007133126749
+qtodec:-4064904713342/494211830517,10,24,0:-8.225025105306892432251847
+qtodec:7676618287424/780404569679,35,3,0:9.T9Y
+qtodec:-4358217891649/583281222878,17,13,0:-7.80676F3C2CC10
+qtodec:4328191663159/246276445006,26,9,0:H.EO9M9D2J7
+qtodec:737625000181/4792760124,17,17,0:90.F646D65A829FCC044
+qtodec:-71443761268/988984303,10,8,0:-72.23953004
+qtodec:381451888319/69461063050,16,1,0:5.7
+qtodec:201128820701/3339261143,16,3,0:3C.3B4
+qtodec:4042648911199/1793950960,10,7,0:2253.4890871
+qtodec:5673741769200/852342691,10,0,0:6656
+qtodec:-8389684341647/9150651656,10,15,0:-916.840095879505961
+qtodec:1372726881895/1560653491,16,19,0:36F.95ACC431C89A521C30D
+qtodec:328988903869/101330533,4,1,0:302232.2
+qtodec:6568406520821/800160752,8,17,0:20020.66750526036730745
+qtodec:501238490585/5971867,8,0,0:243735
+qtodec:6266930625937/691212664,8,23,0:21552.44562064316534547754507
+qtodec:4565491072367/11630659,16,17,0:5FD5B.541017CCD8963842F
+qtodec:-1162420020152/24630125,4,22,0:-23201123.0031031110222320020123
+qtodec:5113275296450/89201439,15,21,0:11EB7.BC9038ED2071A71B54669
+qtodec:3315661534768/61059429,10,14,0:54302.20342820434825
+qtodec:1733402780098/4797927,4,12,0:1120031001.212321010002
+qtodec:3283980196433/2438910,18,5,0:CEFF5.0A1C8
+qtodec:8489184557941/8439595,35,7,0:NG4A.SQX37QV
+qtodec:3788804069259/3461851,10,3,0:1094444.581
+qtodec:-3096145670549/510543,7,24,0:-102355342.020600564131455624420322
+qtodec:-3078702213873/276616,10,22,0:-11129877.5698911125892934609711
+qtodec:1748608098871/9819,8,9,0:1247254444.540514032
+qtodec:8487930264661/21627,15,11,0:246C724D.08EEC2CE9E2
+qtodec:740911632886/11719,16,19,0:3C4B546.94752D05B3962EF76A3
+qtodec:563687406299/41136,8,8,0:64213553.32002623
+qtodec:1780375881783/26804,33,7,0:1N09JI.51C9U8J
+qtodec:-3247679347711/26264,2,20,0:-111010111101101010000000000.10010101101101001111
+qtodec:21406766924698/763359226461945,8,7,0:0.0162672
+qtodec:24260209610958/200034339782053,10,24,0:0.121280224372428559322852
+qtodec:1814902384527/227339212768685,4,12,0:0.000200230300
+qtodec:31173219462521/203933404240669,8,6,0:0.116207
+qtodec:18030863259117/23714043196153,16,11,0:0.C2A5FEBA219
+qtodec:12974701069361/70664067852975,10,2,0:0.18
+qtodec:25696621276083/44253078013283,8,4,0:0.4512
+qtodec:9021988651073/35238715595793,10,6,0:0.256024
+qtodec:8048554533578/701038746989,16,11,0:B.7B1C260E450
+qtodec:-23885228112881/6921647732686,10,20,0:-3.45080088373872630271
+qtodec:33478283623865/8474518157089,8,1,0:3.7
+qtodec:-25807603431943/2948804373766,8,19,0:-10.6007565676256043474
+qtodec:89076698620825/964761424737,10,3,0:92.330
+qtodec:76836733524587/591287975017,16,14,0:81.F2B4FA0C640A59
+qtodec:2301284879441/92761811708,8,7,0:30.6357611
+qtodec:-22162325445043/7119385698,10,7,0:-3112.9547386
+qtodec:-88830049403167/77327410704,10,12,0:-1148.752409972677
+qtodec:40330389045243/30915263495,8,10,0:2430.4275130461
+qtodec:-97356183980680/88686324821,8,0,0:-2111
+qtodec:-61508444809/21872771653,4,5,0:-2.30333
+qtodec:-76008039360448/2365100065,2,20,0:-111110110001001.01011000100110100100
+qtodec:4553948402077/3181382511,10,21,0:1431.436926031746831338509
+qtodec:43200901021147/9612178431,4,1,0:1012032.1
+qtodec:98112477878099/2403895417,10,22,0:40813.9543776579361896591194
+qtodec:88141431773341/441452695,10,20,0:199662.23509710593113493168
+qtodec:-74737428452597/886243587,8,21,0:-244552.444607747231253546632
+qtodec:42004523099961/727188967,16,7,0:E1A2.DF30844
+qtodec:535967733905/65519711,9,19,0:12188.2235053083367133015
+qtodec:29508211302267/62743787,22,5,0:203F2.KH16G
+qtodec:20444506756589/73095694,10,8,0:279695.09061079
+qtodec:60358251477113/17276777,2,9,0:1101010100111011100101.111110110
+qtodec:7675515321823/53051166,16,2,0:23529.5E
+qtodec:68145812098865/9201386,6,15,0:422423113.430414512210252
+qtodec:9010952293583/1041530,10,5,0:8651649.29822
+qtodec:64799577298519/4451432,10,22,0:14557018.3479201749010206153884
+qtodec:4766086981551/1109401,4,20,0:100120312122.12111220122321000303
+qtodec:-14985202309069/259277,7,5,0:-1301154532.10024
+qtodec:77527740569441/65903,10,5,0:1176391675.18081
+qtodec:-34544219638590/487433,16,10,0:-43962AD.C208E5DFB8
+qtodec:89606198611077/718691,4,14,0:13123213120300.10302120010032
+qtodec:-20900481598325/19479,8,1,0:-7775046350.6
+qtodec:8694579108687/6527,2,14,0:1001111011001100010010100100000.10100101000000
+qtodec:11008512080877/36688,10,4,0:300057568.7112
+qtodec:-26629103193937/3238,16,24,0:-1EA2F4C19.E0C5562D391507BF7C71372F
+qtodec:320315168187847/67090457824132,16,10,0:4.C63D998DFE
+qtodec:37992496059712/933307870572061,2,15,0:0.000010100110101
+qtodec:-642835243415327/563880960452415,8,2,0:-1.10
+qtodec:-996741207812269/744724604059786,10,19,0:-1.3384024139643589286
+qtodec:865729136060421/18601273799867,4,24,0:232.202221202012312012111231
+qtodec:-190792427336021/12399475938971,8,11,0:-17.30615536546
+qtodec:353117587688196/41602134470867,4,12,0:20.133032231321
+qtodec:223068576005855/34076492509692,15,12,0:6.82D1EA2D84C4
+qtodec:219205101136492/2395575765723,4,5,0:1123.20010
+qtodec:456340378396493/4330214900946,16,21,0:69.6299AAE57B6C08183D61A
+qtodec:3571581360820/3092454154269,2,22,0:1.0010011110101001110001
+qtodec:847831462081399/7150211415400,10,5,0:118.57432
+qtodec:-898578802522565/555835047564,16,16,0:-650.A0E8207F331CE070
+qtodec:663661151253796/453138066205,10,19,0:1464.5892736664396649880
+qtodec:271225450200625/257749526519,34,21,0:UW.9L5RX9FJI38PG83BX6NV9
+qtodec:-165514406278015/4322124123,22,8,0:-3D2E.F462JIGL
+qtodec:969134788868309/87912888352,10,13,0:11023.8078515624311
+qtodec:349857780160166/918601801,10,19,0:380859.0183247049828067994
+qtodec:583417315283519/55625636618,23,7,0:JJ0.6AGDG5C
+qtodec:5198673145663/2582846448,2,16,0:11111011100.1100010011011010
+qtodec:25224504315989/2747113245,10,16,0:9182.1858315815444295
+qtodec:-354734288655699/8606733226,10,5,0:-41215.90379
+qtodec:294622457238131/4699248277,10,15,0:62695.656809649983088
+qtodec:84851645314450/3149545649,8,5,0:64474.72505
+qtodec:162782722239884/940443795,10,5,0:173091.38845
+qtodec:-503919081966818/49953093,10,12,0:-10087845.450667449160
+qtodec:696741265176479/547456417,10,10,0:1272688.0963320208
+qtodec:123373090223114/171645417,10,19,0:718767.1676844945997014298
+qtodec:530906534529992/21770787,10,10,0:24386189.3706457189
+qtodec:25200685975741/10321244,4,3,0:21110012200.213
+qtodec:-58528486417214/9145779,16,23,0:-61A614.0F20EFF0ECB8777D9D089D6
+qtodec:-202870643410118/39728965,4,0,0:-103132222332
+qtodec:226786253503/4854200,10,10,0:46719.5940634914
+qtodec:947663833947325/1199459,8,24,0:5705715226.174676743125024435532213
+qtodec:58508575771048/1950595,10,12,0:29995245.435904429161
+qtodec:-162029920997164/5378993,10,23,0:-30122723.89965259296675046797792
+qtodec:-638908439370581/780673,2,13,0:-110000110001111110011101001101.0011111111011
+qtodec:54048561476435/260446,16,13,0:C5E8D1C.AADE1542405BB
+qtodec:311253898901698/112463,16,23,0:A4F666A8.42F6DD7D2BF402286E84E52
+qtodec:-364014082098529/378836,16,13,0:-3945CA63.2A9FE228A057C
+qtodec:662955978899037/29150,8,10,0:251345254234.0616507470
+qtodec:380819161094198/155,16,19,0:23C0A857C06.F4704F4704F4704F470
+qtodec:19950100398461/41364,3,22,0:1020121112200021201.1102012021021112012001
+qtodec:843068174103353/67398,8,22,0:135145224047.7022451545330470767051
+
+# Writing decimal fractions, with rounding
+qtodec:@0.001,10,1,0:0.0
+qtodec:@-3.5,10,0,0:-3
+qtodec:@12.001,10,2,0:12.00
+qtodec:@0.001,10,1,2:0.1
+qtodec:@-3.2,10,0,2:-4
+qtodec:@12.001,10,2,2:12.01
+qtodec:@0.001,10,1,3:0.0
+qtodec:@0.051,10,1,3:0.1
+qtodec:@0.050,10,1,3:0.0
+qtodec:@-3.5,10,0,3:-3
+qtodec:@12.001,10,2,3:12.00
+qtodec:@0.001,10,1,1:0.0
+qtodec:@0.051,10,1,1:0.1
+qtodec:@0.050,10,1,1:0.1
+qtodec:@-3.5,10,0,1:-4
+qtodec:@12.002,10,2,1:12.00
+qtodec:@12.005,10,2,1:12.01
diff --git a/polly/lib/External/isl/imath/tests/root.tc b/polly/lib/External/isl/imath/tests/root.tc
new file mode 100644 (file)
index 0000000..b7c5e8b
--- /dev/null
@@ -0,0 +1,44 @@
+# Root-finding tests
+
+# Square root tests
+sqrt:0,0:0
+sqrt:0,=1:0
+sqrt:1,0:1
+sqrt:1,=1:1
+sqrt:1,5:1
+sqrt:256,=1:16
+sqrt:257,=1:16
+sqrt:-1,0:$MP_UNDEF
+sqrt:-1,=1:$MP_UNDEF
+sqrt:-1029384298,66883:$MP_UNDEF
+sqrt:394820398429038402938402,=1:628347354915
+sqrt:394820398429038402938402,-5839823984:628347354915
+sqrt:17179869183,0:131071
+sqrt:4295098369,=1:65537
+sqrt:26965706504352387672564992041751053514175649974280741932736827760729,=1:5192851481060515336695158019653723
+
+# More general roots
+root:0,1,0:0
+root:0,1,=1:0
+root:0,5,0:0
+root:0,5,=1:0
+root:-1,5,0:-1
+root:-1,4,0:$MP_UNDEF
+root:-1,3,=1:-1
+root:-8,3,0:-2
+root:-8,3,=1:-2
+root:17,2,0:4
+root:17,3,0:2
+root:29,2,0:5
+root:29,3,0:3
+root:50,5,=1:2
+root:4295098369,2,0:65537
+root:4295098369,2,43:65537
+root:4295098369,2,=1:65537
+root:-4295098369,2,=1:$MP_UNDEF
+root:-4295098369,4,65537:$MP_UNDEF
+root:-281487861809153,3,0:-65537
+root:-281487861809153,3,=1:-65537
+root:-281487861809153,3,8349283:-65537
+root:-19991036671350700657170189502736817905009200157042372341654483623953031910930270960998207372480741818129399253027601458115528449927512127290460743651463958852225556661727551760552841554362323271980596910944452290359774556447658518439936535499843549082781717193598437061923,7,=1:-571823748273487384719287348728374273472
+root:26965706504352387672564992041751053514175649974280741932736827760729,2,=1:5192851481060515336695158019653723
diff --git a/polly/lib/External/isl/imath/tests/rtest.c b/polly/lib/External/isl/imath/tests/rtest.c
new file mode 100644 (file)
index 0000000..4db0a4e
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+  Name:     rtest.c
+  Purpose:  Test routines for RSA implementation.
+  Author:   M. J. Fromberger
+
+  Copyright (C) 2002-2008 Michael J. Fromberger, All Rights Reserved.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include "rsamath.h"
+
+void random_fill(unsigned char *buf, int len);
+void print_buf(unsigned char *buf, int len, int brk, FILE *ofp);
+
+int main(int argc, char *argv[]) {
+  int buf_len, msg_len, i;
+  unsigned char *buf;
+  mp_result res;
+
+  if (argc < 3) {
+    fprintf(stderr, "Usage: %s <bufsize> <msglen>\n", argv[0]);
+    return 1;
+  }
+
+  srand((unsigned int)time(NULL));
+
+  if ((buf_len = atoi(argv[1])) <= 0) {
+    fprintf(stderr, "Buffer length must be positive, not %d\n", buf_len);
+    return 2;
+  }
+  if ((msg_len = atoi(argv[2])) <= 0) {
+    fprintf(stderr, "Message length must be positive, not %d\n", msg_len);
+    return 2;
+  }
+  if (msg_len > buf_len) msg_len = buf_len;
+
+  buf = calloc(buf_len, sizeof(*buf));
+  for (i = 0; i < msg_len; ++i) buf[i] = i + 1;
+
+  printf(
+      "Buffer size:  %d bytes\n"
+      "Message len:  %d bytes\n\n",
+      buf_len, msg_len);
+
+  printf("Message:\n");
+  print_buf(buf, msg_len, 16, stdout);
+  fputc('\n', stdout);
+
+  if ((res = rsa_pkcs1v15_encode(buf, msg_len, buf_len, 2, random_fill)) !=
+      MP_OK) {
+    printf("Error from encoding function: %d\n", res);
+    free(buf);
+    return 1;
+  }
+  printf("Encoded message:\n");
+  print_buf(buf, buf_len, 16, stdout);
+  fputc('\n', stdout);
+
+  msg_len = -1; /* make decoder fill this in */
+  if ((res = rsa_pkcs1v15_decode(buf, buf_len, 2, &msg_len)) != MP_OK) {
+    printf("Error from decoding function: %d\n", res);
+    free(buf);
+    return 1;
+  }
+  printf("Decoded message (%d bytes):\n", msg_len);
+  print_buf(buf, msg_len, 16, stdout);
+  fputc('\n', stdout);
+
+  free(buf);
+  return 0;
+}
+
+void random_fill(unsigned char *buf, int len) {
+  int i;
+
+  for (i = 0; i < len; ++i) {
+    unsigned char c = 0;
+
+    while (c == 0) c = (unsigned char)rand();
+
+    buf[i] = c;
+  }
+}
+
+void print_buf(unsigned char *buf, int len, int brk, FILE *ofp) {
+  int i;
+
+  for (i = 0; i < len; ++i) {
+    fprintf(ofp, "%02X", buf[i]);
+
+    if ((i + 1) % brk == 0)
+      fputc('\n', ofp);
+    else
+      fputc(' ', ofp);
+  }
+  if (i % brk) fputc('\n', ofp);
+}
diff --git a/polly/lib/External/isl/imath/tests/set.tc b/polly/lib/External/isl/imath/tests/set.tc
new file mode 100644 (file)
index 0000000..0b870a1
--- /dev/null
@@ -0,0 +1,12 @@
+#Unsigned integer assignment. Assumes sizeof(long) == 8.
+setu:0,0:0
+setu:0,18446744073709551615:18446744073709551615
+setu:0,567:567
+
+#Signed integer assignment. Assumes sizeof(long) == 8.
+setv:0,0:0
+setv:0,-1:-1
+setv:0,9223372036854775807:9223372036854775807
+setv:0,-9223372036854775808:-9223372036854775808
+setv:0,4324:4324
+
diff --git a/polly/lib/External/isl/imath/tests/sqr.tc b/polly/lib/External/isl/imath/tests/sqr.tc
new file mode 100644 (file)
index 0000000..84ef2d2
--- /dev/null
@@ -0,0 +1,755 @@
+# Squaring tests
+
+sqr:0,0:0
+sqr:495,0:245025
+sqr:702,0:492804
+sqr:23080,0:532686400
+sqr:-485,0:235225
+sqr:31727877,0:1006658178927129
+sqr:-8234442,0:67806035051364
+sqr:80,0:6400
+sqr:75029676,0:5629452280664976
+sqr:-8153,0:66471409
+sqr:5729957,0:32832407221849
+sqr:641,0:410881
+sqr:-82,0:6724
+sqr:7356,0:54110736
+sqr:0,=1:0
+sqr:7761224,0:60236597978176
+sqr:928319,0:861776165761
+sqr:912,0:831744
+sqr:334190449,0:111683256202821601
+sqr:#xAC46D3FD,0:#x73EF407495E70809
+sqr:-180,0:32400
+sqr:8965915,0:80387631787225
+sqr:1771,0:3136441
+sqr:131,0:17161
+sqr:2518088106,0:6340767709578667236
+sqr:31019,0:962178361
+sqr:460877681,0:212408236843937761
+sqr:2,0:4
+sqr:2,=1:4
+sqr:-43189,0:1865289721
+sqr:400,0:160000
+sqr:400,=1:160000
+sqr:16978,0:288252484
+sqr:32,0:1024
+sqr:4185,0:17514225
+sqr:246082426,0:60556560386045476
+sqr:5024,0:25240576
+sqr:4283818927,0:18351104599323431329
+sqr:79803747,0:6368638035240009
+sqr:27,0:729
+sqr:-294872579,0:86949837846111241
+sqr:5431,0:29495761
+sqr:-64,0:4096
+sqr:-27347593472,0:747890868709777014784
+sqr:-93,0:8649
+sqr:5941698,0:35303775123204
+sqr:68188,0:4649603344
+sqr:-10073,0:101465329
+sqr:712007,0:506953968049
+sqr:74981,0:5622150361
+sqr:590060947429,0:348171921680809101710041
+sqr:3375362,0:11393068631044
+sqr:6288,0:39538944
+sqr:-14938,0:223143844
+sqr:818,0:669124
+sqr:-61517636,0:3784419539028496
+sqr:-485757743,0:235960584884454049
+sqr:52047149,0:2708905719028201
+sqr:880295,0:774919287025
+sqr:23268913856,0:541442352037948788736
+sqr:8611582804,0:74159358390148502416
+sqr:-35440071,0:1255998632485041
+sqr:-123,0:15129
+sqr:-198239315,0:39298826011669225
+sqr:-18792,0:353139264
+sqr:42334,0:1792167556
+sqr:8871716,0:78707344784656
+sqr:-742998638,0:552046976069855044
+sqr:599309793653,0:359172228768401439084409
+sqr:92330620850,0:8524943546546454722500
+sqr:-21253,0:451690009
+sqr:-8591240,0:73809404737600
+sqr:-4406721416023,0:19419193638435754241136529
+sqr:7093605833487,0:50319243720880795970579169
+sqr:540053945630,0:291658264190530996096900
+sqr:6679643648234,0:44617639267392821131318756
+sqr:521589,0:272055084921
+sqr:13144286787,0:172772275138902783369
+sqr:-47469,0:2253305961
+sqr:480758624,0:231128854550373376
+sqr:-8238434,0:67871794772356
+sqr:-867204631,0:752043872027846161
+sqr:84079798766,0:7069412560531055122756
+sqr:14048677,0:197365325450329
+sqr:647598376181,0:419383656832267988144761
+sqr:89538606,0:8017161964423236
+sqr:8775965118,0:77017563752352753924
+sqr:135957585,0:18484464919032225
+sqr:76500157735,0:5852274133479880330225
+sqr:821777330800,0:675317981416772628640000
+sqr:38741,0:1500865081
+sqr:262422499893,0:68865568450091585011449
+sqr:-114911750278913,0:13204710352163261933292461569
+sqr:645965,0:417270781225
+sqr:-846535490921,0:716622337388858473428241
+sqr:56965538331,0:3245072557340630265561
+sqr:-744309142053,0:553996098943672933054809
+sqr:8398405793,0:70533219863895958849
+sqr:14899711014997,0:222001388330422931958910009
+sqr:4321091217,0:18671829305634541089
+sqr:818709681211,0:670285542108617246426521
+sqr:557620246567,0:310940339381441875285489
+sqr:666538614295667,0:444273724347187940858494974889
+sqr:-169058708804,0:28580847022475667110416
+sqr:-796502,0:634415436004
+sqr:-5416597755634,0:29339531246339285978741956
+sqr:922525,0:851052375625
+sqr:2993210,0:8959306104100
+sqr:1714169182508836,0:2938375986263011104043218074896
+sqr:-27353337,0:748205045035569
+sqr:9130672606905,0:83369182254485348653679025
+sqr:1596656380704,0:2549311598042796583535616
+sqr:-9683496758810,0:93770109477883775312616100
+sqr:909229240,0:826697810870977600
+sqr:333499398389171,0:111221848725938992589570067241
+sqr:-307250046,0:94402590767002116
+sqr:3035000042541,0:9211225258223871809736681
+sqr:-2721781933,0:7408096890805216489
+sqr:48792067992331,0:2380665898968251261074813561
+sqr:9234221,0:85270837476841
+sqr:8101724703211,0:65637943166619366033710521
+sqr:8164095821,0:66652460574469664041
+sqr:804766485,0:647649095379255225
+sqr:6183556496806,0:38236370949191691088201636
+sqr:48857539680655569,0:2387059183646833479261385610713761
+sqr:7026205978661388,0:49367570454577033123192362086544
+sqr:644316320534354,0:415143520906928406000094197316
+sqr:-2418657837,0:5849905732481518569
+sqr:-689024588558,0:474754883637521184519364
+sqr:7595432034404,0:57690587789250486239635216
+sqr:51477603372463937,0:2649943648972710500135406365539969
+sqr:-4859149914716259,0:23611337893687027113016478955081
+sqr:-596229664,0:355489812233552896
+sqr:539807450614764,0:291392083739210874761534775696
+sqr:-1566967626957,0:2455387543931251913079849
+sqr:65611170065548,0:4304825637370261946616540304
+sqr:30495282,0:929962224259524
+sqr:24673048425668,0:608759318615358173321246224
+sqr:-417870989,0:174616163447838121
+sqr:973135796,0:946993277456553616
+sqr:61834268876013338,0:3823476807431111794332536353902244
+sqr:82806890204302,0:6856981065307326523299307204
+sqr:1316959192994,0:1734381516011407738684036
+sqr:80328462383346,0:6452661868872633334658155716
+sqr:42624480104111,0:1816846304145754485399100321
+sqr:-375979141,0:141360314467097881
+sqr:9920379080,0:98413921090901646400
+sqr:80353168236771535,0:6456631645686909915006519786256225
+sqr:21921266256,0:480541914266444257536
+sqr:51036336390,0:2604707632113238232100
+sqr:7536279247897084,0:56795504902284238073836255703056
+sqr:4057492473172,0:16463245169847433139741584
+sqr:270453549401790,0:73145122384026464066855204100
+sqr:-97595328880030,0:9524848219201217774132800900
+sqr:2730620091663,0:7456286084993650522105569
+sqr:596640915610381483,0:355980382180394358404919444789279289
+sqr:907362117785845,0:823306012792813655285282364025
+sqr:3529407863794686,0:12456719869015768803663561838596
+sqr:5637629105915,0:31782861935859962287987225
+sqr:701177821774260333,0:491650337748096387958827849257270889
+sqr:388674994544,0:151068251383778429767936
+sqr:9003508844276352939,0:81063171508962508596780155978893937721
+sqr:5782278255807599,0:33434741827585369298571706144801
+sqr:54932190594257,0:3017545563483777218801382049
+sqr:2330326791,0:5430422952852357681
+sqr:2344523846,0:5496792064462631716
+sqr:734348606390121,0:539267875707112861194846394641
+sqr:1667343410703,0:2780034049214712934954209
+sqr:47416690990247089326,0:2248342584464579496535799798615023134276
+sqr:2992718026488505861,0:8956361186069257268281338748231351321
+sqr:36345508239,0:1320995969151216881121
+sqr:9136952501974852622,0:83483901023344519207328952878620274884
+sqr:-68684476889,0:4717557365515575118321
+sqr:3324362191672831934,0:11051383981423794566026717599410180356
+sqr:3950591846438354580,0:15607175937145207775001664097806976400
+sqr:452699498737223,0:204936836156932968571605751729
+sqr:16407472075973,0:269205139923833746283896729
+sqr:-42791759402,0:1831134672718655397604
+sqr:-969620447288,0:940163811798981186554944
+sqr:-7324554153015094663,0:53649093540450670762129798726851083569
+sqr:1246969904304174,0:1554933942240360863251113822276
+sqr:527095728932983463,0:277829907459393180154350270231472369
+sqr:133034527166,0:17698185418281191991556
+sqr:5806610887494202860,0:33716729998766214183769310106832179600
+sqr:604840631315943,0:365832189290668488059885979249
+sqr:7106121629098296578,0:50496964607538628518974633341246510084
+sqr:81378228896850,0:6622416138388112367939922500
+sqr:-18768741494576,0:352265657290218942237419776
+sqr:81188620065937,0:6591592028211068078227687969
+sqr:8219251025608152,0:67556087421960658524081448855104
+sqr:20867876779389,0:435468281279762622975213321
+sqr:27156769177930279482,0:737490112183384027655411672542630188324
+sqr:40320990680365371419,0:1625782289446111137560608246113822073561
+sqr:231848755308011786,0:53753845337874323313724120314909796
+sqr:841695784516,0:708451793672004705354256
+sqr:1766836913116,0:3121712677549275732829456
+sqr:664177322904,0:441131516259924282993216
+sqr:5979213918247228581465,0:35750999080161375874506971631233196141546225
+sqr:1758746127509067,0:3093187941028139358526167210489
+sqr:135179542401621982047,0:18273508683911915341791581411360790310209
+sqr:112047175441308,0:12554569524375254604552750864
+sqr:70541788345164680600,0:4976143902934011567084482333700016360000
+sqr:1492832267100,0:2228548177694925742410000
+sqr:3521705164411,0:12402407265039108540976921
+sqr:-473191108111249626,0:223909824795552331595427695285139876
+sqr:855883713881684,0:732536931687904321002750675856
+sqr:16916839558930925199,0:286179460662610259828831065810133189601
+sqr:296829185936965,0:88107565624001340524953411225
+sqr:7414275234516727336390,0:54971477253168072142121335070692704218232100
+sqr:90237037450605,0:8142722927861889317814866025
+sqr:60553464627047020812,0:3666722078339034795281351845204761139344
+sqr:4439551436109999,0:19709616953866354532829227780001
+sqr:5735204172472,0:32892566899940238322590784
+sqr:-477556465681133,0:228060177913855160813632163689
+sqr:6136903544018042,0:37661585108581203963482021513764
+sqr:7355012443029717610726,0:54096208037121975042332803663623262070247076
+sqr:2615297272121929464,0:6839779821568405573166111210191327296
+sqr:1236583510060121661932,0:1529138777352611011481426496873465697972624
+sqr:259304999298782298,0:67239082661341488057486265598160804
+sqr:67283385405374162098001,0:4527053951608116799312629323426390509928196001
+sqr:301048056239861279998,0:90629932165798680163672601418278954880004
+sqr:513985608867175879,0:264181206122561507573492869119422641
+sqr:8456087728243890247050,0:71505419667756916634176268857406110033702500
+sqr:978607251971625,0:957672153611455542449805140625
+sqr:190320200462916,0:36221778704244531620691223056
+sqr:213818886286553,0:45718516132821882562028621809
+sqr:-862217602106683,0:743419193382598324879713262489
+sqr:318640018205323583652,0:101531461201888944823553345475699841657104
+sqr:-500900129006539730,0:250900939238768144201293108068472900
+sqr:820114087330800098,0:672587116238431209810989756836809604
+sqr:55403047897851377414057,0:3069497716371613929908572787677424384421199249
+sqr:4810813844423644764918,0:23143929845698208536190754736426427483546724
+sqr:9103047106745502875,0:82865466627627670814122634036633265625
+sqr:963951698125641,0:929202876319306914592621660881
+sqr:539175052498265418,0:290709737236507269568171898774714724
+sqr:-50157204922004988220,0:2515745205588001416429472062562338768400
+sqr:11026905984136936161244,0:121592655582994972607713656480448242767627536
+sqr:3502071722216797290044,0:12264506347550524601785650136506422261521936
+sqr:-40351577732954785,0:1628249825538692426114606854396225
+sqr:-95254896582422725495010,0:9073495322928048629343683310955771449534900100
+sqr:60457070221477869,0:3655057339764706108220106456781161
+sqr:93325659970487089,0:8709678808926976205678491915693921
+sqr:413237232385124613101743,0:170765010229317482334791391007519236011269638049
+sqr:951114415591592288075347,0:904618631546136131332571710964234352253549170409
+sqr:401010074180215687828,0:160809079594022088656212052683319147357584
+sqr:52476554710721850732027,0:2753788794307383662963857897873667915763528729
+sqr:5258576802493280623,0:27652629987720455286211141065027268129
+sqr:6054103219841182396749,0:36652165796491372073556099894662392045769001
+sqr:956352502346019997280,0:914610108743494184401252227637651207398400
+sqr:-26892207599979464777,0:723190829600393285039943832095383659729
+sqr:764634776535170557034248,0:584666341486990214285762412733243291473444925504
+sqr:8999350031831592,0:80988300995427275943650249254464
+sqr:7641437781743263624,0:58391571372253409436905597502761613376
+sqr:27231085935730852312965,0:741532041239158628505821004397916290307091225
+sqr:54460324605443402457738,0:2965926956130264089583329153826508098876076644
+sqr:360110851757167625249,0:129679825553272757329435766523210102312001
+sqr:5646907739554115833792819,0:31887567019036174101601259024712393010835015966761
+sqr:8713094333529031952536,0:75918012864975725504514567963780052556831296
+sqr:6067775047370385059161755,0:36817894025490678648663816543505226751463254680025
+sqr:-39161602370641311011,0:1533631100236219150516980671952829842121
+sqr:7592562487471228106393,0:57647005126155282856061129287036732527470449
+sqr:-117854390966306661620,0:13889657470039065250071587891189181024400
+sqr:-5296482668083754900244441,0:28052728653311610979016516323012132263081551402481
+sqr:4890037916081745315,0:23912470820717098435617409376524449225
+sqr:878103465304676151,0:771065695780080592884753986988174801
+sqr:410286152523309284403,0:168334726952380209481013581654379939066409
+sqr:1320575015715850,0:1743918372132917474487941222500
+sqr:1130593146191972580760544,0:1278240862216263084092458499026711588345467175936
+sqr:9152293784326972307,0:83764481514630131881899390265544902249
+sqr:-30945617243677794421601,0:957631226592208454530069639810039434135403201
+sqr:637512608176985502983848,0:406422325584622643202173308977613669311348887104
+sqr:953752290145863389507,0:909643430958479183560202570458470797703049
+sqr:71232551174252547137921372,0:5074076346792507932127726514013453732491272854362384
+sqr:89641379812972941263,0:8035576974773672749927646579813248035169
+sqr:570533510213359628,0:325508486276377734955790890860298384
+sqr:156037452082545281465,0:24347686452412614795656577852136072546225
+sqr:820946717694830576249,0:673953513293915850368458978756517402910001
+sqr:897982009226057242719944960,0:806371688893666754984415476086593388617121385429401600
+sqr:30047225710589062348346,0:902835772903084382776376808801558904248935716
+sqr:91332956688159987977447,0:8341708977401308279373560739783999581780637809
+sqr:779547769133542092868254,0:607694724361082242143909923818285375848601008516
+sqr:70223199028646964984,0:4931297681816964046455576234794522120256
+sqr:-7130588717194686908,0:50845295453784170628102737064146600464
+sqr:7862855876206371917242,0:61824502529993072660297880196210138896886564
+sqr:99635166626419149819259,0:9927166428674308348042432184271252852367309081
+sqr:9143110466763720332929390,0:83596469007444295894790689042921258303578725772100
+sqr:624603802062355481979,0:390129909550750146243139974448833393756441
+sqr:57467188276773877127351,0:3302477728438176937336538778081989035872277201
+sqr:56666158509765775413,0:3211053520253900204952292290417155320569
+sqr:1669285813108053464947655816,0:2786515125843815201176904833798671100095144793598625856
+sqr:-3894381579633443035,0:15166207887788271015100954608590011225
+sqr:260571571745997869095,0:67897544002179714981985817184280756119025
+sqr:53560277137779384583336,0:2868703287075733025329170304306805830328888896
+sqr:532633647890554999729943,0:283698602865199724513575317928240776802930783249
+sqr:-8109683324597705697831,0:65766963625258096837076939441707642678104561
+sqr:71512764950951349786,0:5114075550930015809763806667815322245796
+sqr:-3230261313024043132,0:10434588150419815167286482704196369424
+sqr:3876597618180653484531214,0:15028009093283915659666843759569773575981340313796
+sqr:2022902748890635933130119,0:4092135531469291257986156298716581802948984954161
+sqr:-9239803654422657921335,0:85373971572282304128064994834647223048182225
+sqr:40891548247525081118,0:1672118718079671532749847110472480129924
+sqr:165164019691356860628567608,0:27279153400606916807248493439181759924278997826841664
+sqr:236044194969218596813550,0:55716861978666481928715444466626794213463602500
+sqr:-9327691800876445934166044473,0:87005834332137675107296063213991033162475616331013847729
+sqr:-1141008979009187167080443,0:1301901490179587721260801760634357975556433076249
+sqr:80240901025439711368171436,0:6438602197374411723371216408703542996140198286302096
+sqr:48396694980176876386,0:2342240085004277665404844769815924420996
+sqr:8287110859147430899223483,0:68676206391799270292835857144249638800252378651289
+sqr:979738309307210018577,0:959887154724150329311355128100080685104929
+sqr:79997549118990663707588,0:6399607865045323915139363453196300002368777744
+sqr:404720558142791950357,0:163798730183413039673176219498755952427449
+sqr:39783276700470626124196,0:1582709105026208988642497555015175748816646416
+sqr:68076977401073761586383174,0:4634474852066307646499543932220927310440054750314276
+sqr:8780946490021005951868,0:77105021260612224378649288336653880732689424
+sqr:2293326364302719333015,0:5259345813205928950683229209501046468990225
+sqr:-85950587462318432622522110756,0:7387503485117650543389782822459944191622287564105530891536
+sqr:-45213570780978740239083451,0:2044266982766574490551025400685924690824376542069401
+sqr:-252288475394454050742693,0:63649474816858046994487266873669024064892892249
+sqr:13343208905111714280686404,0:178041223885452552994753470810964520657769390451216
+sqr:2532670767542782527921078886,0:6414421216765747171902768427962647904467236158235000996
+sqr:90594811403510761816916775742,0:8207419853237683569360118704220290897994537812705119650564
+sqr:8205141011719296761924,0:67324339022197964842201619162042351536181776
+sqr:9720036859316498875611356,0:94479116546471347354649044496204860597822756158736
+sqr:283132666802141375993924892,0:80164107010492409231567496032871329019099690937211664
+sqr:35478297544662423863733,0:1258709596667599773811969774518746956152695289
+sqr:32285080416677631255843925,0:1042326417511341492231091561259042214939463959405625
+sqr:-34268147969999862649888,0:1174305965293805707432076575873585053266412544
+sqr:700904064615551520403894,0:491266507794601220883840126321977531400890363236
+sqr:911134642830965648237534581154,0:830166337366711341532911911675565532094507072828006211971716
+sqr:51391198660039915856968,0:2641055299715688443070254859801397489834153024
+sqr:66416349272456975065639625734,0:4411131450680996161120441843876023071544149766499595038756
+sqr:806758926584205263840,0:650859965623299098779505861978364011545600
+sqr:477799154735707308352114224,0:228292032266156375585779864239845871819082410743122176
+sqr:-1654950158079442331247637936451,0:2738860025727171161306644564106812249408719162131709514475401
+sqr:942376212580429636273132640938,0:888072926037435108264123633745578188505325516681766433519844
+sqr:-173744882442406814125820238,0:30187284174925763628296929994001889276434196290376644
+sqr:2808504238232363752504253,0:7887696056169149811385548240526285742328783088009
+sqr:807298846393541075908135,0:651731427388342229023346153451352474114959178225
+sqr:26937190640553605997330,0:725612239605528790179357561582679743967128900
+sqr:62574675969704339348702583,0:3915590072713493701996057357474786632808765390871889
+sqr:804162708867230857991464,0:646677662332682695199247623301634798792296863296
+sqr:-386730036170782490733,0:149560120876654733607852171916967230877289
+sqr:-434273419527492647189701,0:188593402908101632063112882554636374293080469401
+sqr:869166535411038930671123943286,0:755450466278428791412005047210119303561723595211750144477796
+sqr:10449922204455770677506,0:109200874079177753861811872396922278254380036
+sqr:-90720321424101605506013285,0:8230176719292308756103957083707087895694294596491225
+sqr:618017451906480640476197978670,0:381945570860979111437601753456109637509740412489393774968900
+sqr:600218595859234657114146,0:360262362815231263075003129475804047328873309316
+sqr:-1271084021549941372472074416151,0:1615654589839571823374561631341349734773214052728307529654801
+sqr:-1550867554578739621065776,0:2405190171845039917385273345455165995626118482176
+sqr:6043648591268889505332580,0:36525688294746432641148169772867559568256409456400
+sqr:4436117400241675705710942,0:19679137588726963606581585499912481843633658527364
+sqr:963653222408138267064741,0:928627533057588796323445139533613848091885397081
+sqr:79810459027918017737526,0:6369709370246980620783598883260816355828600676
+sqr:902803003175340266413761,0:815053262542413447161071151674614683772050165121
+sqr:41752360733446165868795969,0:1743259626815817253890642356111049015824205750648961
+sqr:18433679660798345484293758,0:339800545836930605431594748131416795001464037762564
+sqr:-8099616466845982700651861415703,0:65603786910002599981017618042158396492585415981482319374984209
+sqr:53861499928450854325903869409643,0:2901061174542511385668622771108001926502370466421638385341387449
+sqr:-9539042911647353522749973,0:90993339670249619985617080925599605810472271500729
+sqr:-9953723302036330682964697708913,0:99076607573501034335207891975711363757759935206913991279641569
+sqr:819405964225846194717255113,0:671426134208888733847054770271652175310634741124642769
+sqr:802401078039205223147440807946,0:643847490038478710635011163996163360107384995763769256738916
+sqr:519449268240923314088505,0:269827542276030702352860062200068431818973135025
+sqr:-4555091246368490325696260,0:20748856262742846629765230682011655772853777987600
+sqr:92030015548432048748093276815,0:8469523761844644646313223067398164807006285055804216544225
+sqr:69892106365908429041254342845691,0:4884906532263457551578632249701418592382287262507816195837267481
+sqr:910047959446947352191893618610,0:828187288493552732485135863553654427423698002303240138332100
+sqr:248378228391386474704886916939167,0:61691744338843742253916643321386052988120454926320117359978653889
+sqr:44668713115713790179611935799452,0:1995293931413941180740289260931549563994989167786466958363500304
+sqr:554146318830994817582767590433,0:307078142673942561571697027825775135058421635981084833127489
+sqr:913107312130554773072541881000511,0:833764963466286379835121944707623846292155777477098298802382261121
+sqr:81108023466385198143279886584,0:6578511470623691973244557720131367432321893163523903189056
+sqr:-4943833529340426042939004,0:24441489965830613211569173244841340595166064512016
+sqr:51140730159890637422105920403,0:2615374281286747861428645748709966547587341461263771682409
+sqr:-607843803842581788311388679398,0:369474089869819046801414956186873945785214116905230429642404
+sqr:122000635477119336893648,0:14884155056820949371250828570794377554062747904
+sqr:5316396721948668528754688,0:28264074105146548353074606970605680292688081977344
+sqr:3871007685189086282275603,0:14984700498792968128669630624162919017232049013609
+sqr:7594454675984973208305706419,0:57675741825590024399104214106984154178550700718617803561
+sqr:28214522979760017572876300,0:796059306975406100990301973660076181981455101690000
+sqr:-8758954355837792555434977,0:76719281407649839529729437792891939009581674990529
+sqr:192247354570382237619981,0:36959045339310268227417106552924468739370440361
+sqr:17921008488602803526064091292,0:321162545248573740358745190642913074581611098877710229264
+sqr:2786656582338594569854846808207651,0:7765454907891016297545581568122273298720717571197646453099134937801
+sqr:-8119878340729712848165819773762372,0:65932424268251514701015178259411842162406168492081516233544323066384
+sqr:-79010392379176306659400405,0:6242642103911401396317544499881175920416754114164025
+sqr:502548653639979591878843903680232,0:252555149275356173101979364004936274487595147326132901113707573824
+sqr:370095553656392383016573,0:136970718836231613385863745681913470927192664329
+sqr:3308233251214375641713788330957879,0:10944407244440438253289991279061494519953582690662512604421672178641
+sqr:-183583169171890388291350537,0:33702780003194925435879559331574763782761847410188369
+sqr:20022240072762280694432559381,0:400890097531327699316940227336660015830476888446091103161
+sqr:991600160459479600853539507705,0:983270878223265691657333328413726449497510327213293754367025
+sqr:-886802930484090401215003053,0:786419437515170472599024051267193209332214818799320809
+sqr:-4021243178549426619810076170246,0:16170396701030295777747606521080114147933679758148426375700516
+sqr:-437190641321459296906356238626351,0:191135656859068873243134481446335599971533230314698916447391575201
+sqr:4949096192729469662233605922109588,0:24493553124889331919611856555201632265117322697483182895572281529744
+sqr:-222922740889004859161836432272026,0:49694548405466398945671001441165552874782078359206058576462144676
+sqr:6633207453537081635390578639208521,0:43999441121659895022772886274234937490050952802629650017809319007441
+sqr:-388419057976394528897376766008911,0:150869364599269734301902942514512041010013259450627804723731405921
+sqr:1587145903911990027117983209,0:2519032120304607880066057705136945202936833323605937681
+sqr:9341556580305242597961446590124642,0:87264679343044178399059265004205078308505980101212849351757095628164
+sqr:-98589396724476958519746033,0:9719869146496308037624494359753950110951166819237089
+sqr:68949788143317567890727634506437,0:4754073285008375866022480396033956238363312230990817816594434969
+sqr:15348440724699030968793800,0:235574632679599714954032510452755198589426918440000
+sqr:19579760235445809588453948,0:383367010877544944929983398547473038485912916786704
+sqr:72079227800301785573175211637474,0:5195415080287797782151390372393575616172253417843110320401100676
+sqr:6817374173872891802717574,0:46476590626589093993102340500884140128371608445476
+sqr:27365680739830168291453603457,0:748880482354311826968810008262872424540584520070202350849
+sqr:267264590007941098022378239,0:71430361072112848614264522780315039578433629580741121
+sqr:6823763963460016478347085218,0:46563754629015553103873634993707652191220912556554107524
+sqr:8549091706180068110128584180,0:73086969000676828009663171737806902080553533491346272400
+sqr:-68363462105740373654914242951,0:4673562951083000043628088543159794818215387066081453188401
+sqr:63674293081366378395048823165,0:4054415599411742243170904564153062594260665424051440617225
+sqr:12314822493559883827822938851812,0:151654853047888474961995203087973689051788205242869652895683344
+sqr:360322042567152808702152365098795,0:129831974359765080636852128393794927791043507146551510810110452025
+sqr:2648892181207467563739706353,0:7016629787662055175845497345399540904332220966668560609
+sqr:1931728450461383908845059474429384,0:3731574806321939346389291168735723327873036035228210710552402619456
+sqr:358403207284545478566799458841,0:128452858991848873192347508921766736387368968538450453063281
+sqr:16923832563401191240604105408,0:286416108634038535732613208202327062603817395183974846464
+sqr:-60296919348805772314352496412720,0:3635718482956387921607376827103051300909552440589140468577798400
+sqr:137381863838359684196723188000,0:18873776511701600260921940211907923493005196696883344000000
+sqr:591213095515431378414779198676378,0:349532924308938586251105113436721993590864360832386253227175198884
+sqr:550075895507569886172410506205,0:302583490818454944080300856365310614939073667909864343502025
+sqr:711087936283568776727078639050747961,0:505646053128024768394217620639062509678773141734419309834385513545657521
+sqr:87137753047658080124389033343282625,0:7592988006194645030937734327894136192749543225796276656746210626890625
+sqr:892477052408611488403157406380218433,0:796515289075963457333727567531410316000818421665541198467895652792975489
+sqr:6158563241782182682620279504718154739,0:37927901203030667115475855586796884579475600717657459343120085141148158121
+sqr:163129498185919713569905746566,0:26611233178389983120491164583169402737995471084949820792356
+sqr:-840675253673606619740059054280,0:706734882139182840398643757541187982055463962461807986318400
+sqr:3156757217808506455275677523420556199,0:9965116132186102265018848181467495754138541196082820401622097670517327601
+sqr:993671209419443022612977747577,0:987382472429098591948836324268579783286641834412572329370929
+sqr:-9326822514499666899515267554736938,0:86989618216977889172048813242979601855371201795395107397962381615844
+sqr:-235676703573040466448512193799813867,0:55543508607054784964710322367602777661099488105005836599662883845493689
+sqr:9745324195976053070545476544,0:94971343684676305233934428420617617171065924820054183936
+sqr:42036349610817613966650109709956317,0:1767054688602886165196914277223620205192980370693225930615078048204489
+sqr:6423789221002494265324250049541,0:41265067955867832110408469297659891351326774859357340954310681
+sqr:39820799073224257724368475037593,0:1585696038830097902894340812101752876025276615089993162763233649
+sqr:-248685011975388562625272850484520,0:61844235181199152802863183501684240433880069673516902798759630400
+sqr:7810586566859132079040306752412919266,0:61005262518400323306681848115066990496722484937205544401071870384233978756
+sqr:148248035689146148163507965322876507,0:21977480085690350061040242660528838386718186881517058316005748772521049
+sqr:2174924777531088681854941082964503,0:4730297787918655595183218550423839198281245191521603201754758037009
+sqr:7460214282782494008461541364649578693,0:55654797145031921479620736345863324550380883977276538456407066982399588249
+sqr:910214324198168001046442701640701,0:828490115975527682261108829195991618894759199353089171357299771401
+sqr:-59899876223007500200643117496816827084,0:3587995171531619267909340862365356764690500898711702775194521329813155943056
+sqr:3693325822188682181380816692,0:13640655628845705229325716773595065057160551856905822864
+sqr:-377300624776321473819796906114622586,0:142355761456602529596293103174374647548147320880285674734176169221327396
+sqr:414831269398550325451238357295142,0:172084982070812635693442772673726339898901985136718231410496800164
+sqr:6560318055585225985879353052799903,0:43037772990437520228181479222553604645045752273627418993347756809409
+sqr:81752690538327392490210233502803189412,0:6683502410255525163317352014073423856877240881760773530410353274879548905744
+sqr:218839351597324273539262978455,0:47890661807537314072553854206046627823699636362157794187025
+sqr:-5805326576316957672801693030589753,0:33701816657691969378866024022901213186262873511166214639390988601009
+sqr:657052654171627411520319781527678957,0:431718190353980208506608543148088461575698759507192213967541915660607849
+sqr:850803172144816061232121227544210866,0:723866037731681512526641628957082234808088810211668969221470630672469956
+sqr:96750262807275012100488295035769,0:9360613353276782505243770907131423414773817247651756648989421361
+sqr:1302972096425652715773488728124955290,0:1697736284063860438660129973080040668130028649420585700653556064498984100
+sqr:362539128333737071068563296326856312,0:131434619572985877564322363931711449060712966012688612245083752694241344
+sqr:8647059398106102973445629549035094,0:74771636234375079831388808708994826778243955204442145247786443588836
+sqr:4801679506442312786805559965365951,0:23056126082588092523487649586475214155591493450499364174637350134401
+sqr:-77184374294092760219449891857411639,0:5957427635170607277431236668258878037311657775496943176517416692666321
+sqr:237675308690641513277997273186171423,0:56489552361191733248853882918288952408272576415112822843718756741844929
+sqr:-5002351530431559668603019491716529,0:25023520834010967237231458781580750346527800518094804987246891807841
+sqr:43664655191273703505834328260330,0:1906602112972825584894722514125938669910101850559285284251708900
+sqr:61437334296785487665781722675145481656,0:3774546045494974352232649823192447953130381594535380154723604664512232502336
+sqr:76999761286305362841208123728009,0:5928963238148010105553373748266081481905919994513298364211104081
+sqr:4045969265340624054820554440481625,0:16369867296080949138563301459618249171273665229809612664561962640625
+sqr:-90733797775896931157915560238405881,0:8232622058837358891226618551896739737707140965912018467654084095386161
+sqr:1250789450925599394334826479552697791,0:1564474250546762415577515695203307841292579604239130459928690626176279681
+sqr:5972484542109405765482619578501051194087,0:35670571605735798250313214826049005528483190382247035739054380369668008543763569
+sqr:65678344134099005094717808763640919760,0:4313644888197137191319800821202398871887873211187330220689626491898758457600
+sqr:-62990747469444164811979252597669258024,0:3967834266759286452973199215274493545160660868223522376653578082958688384576
+sqr:-53997255662311143749287788767141410,0:2915703619060992875399948731380693863707266595015584952708102936788100
+sqr:5686190404642301882852816915831698249955,0:32332761317846184821910191091058430280642996317973095727786765956628209657502025
+sqr:4318656996688968372478897431491494622189,0:18650798255050580180132125928030568680914499281769771597690822356558707851151721
+sqr:90772643431688731485119396638690,0:8239672795576503406798366498149929387564332199866630470404916100
+sqr:5194695663243172552311326817796924132,0:26984863033717424374763712982568150984157237537337208924447183760163953424
+sqr:663052304331426874021220834995676750,0:439638358279215120964420211896852784266488221371872739050191190490562500
+sqr:765274211863773061319130051954728,0:585644619343719017714207640892708560609108866025443392573761553984
+sqr:8793390746808666322341142829879636,0:77323720826060274427606858051544436111644164324015870268834247492496
+sqr:-1143404644203622436511911843731903,0:1307374180386412415102092423534367931853000575304412276790140001409
+sqr:1274715157279956414098609764282,0:1624898732199264017780108312111877512545271895107751602975524
+sqr:409119214024402199476926287393039,0:167378531283944613340338055007668151076742941392029630986865655521
+sqr:71377375780409892756507920763626830337332,0:5094729773297844747021699813855551310975623888825070108789795349920431748912878224
+sqr:16711505580703743734170498011402976914,0:279274418773892371081455883621263741224242040916240683397794226501216963396
+sqr:-74453371480687043335744644177229319766278,0:5543304524841182775798580739240538131276183842677571645900572414881617796545973284
+sqr:-6405878501504187329383105565378712287,0:41035279376033532548797887930856354109329109091108165640510577306324770369
+sqr:40950531000192473613267941356844194183,0:1676945989197724793333658733771064889173041987235658694162953328114611037489
+sqr:4307204533471560374295387513178008657555,0:18552010893157962052718908742109438219933838558835235689466967303594533258578025
+sqr:-149484891420637067740168061887375693,0:22345732763039653620332820862877954314918077499338875920118166527230249
+sqr:8343682513737833903327046937516169964,0:69617037890054498842921226973866568012575744383637684564661631967735761296
+sqr:3509188584470681541017936658877926984,0:12314404521379345637100883238194066833159131043160907804892714733235336256
+sqr:843579050130514060756624621185917,0:711625613819100354786465278348435375464052902370772400359479130889
+sqr:31410619716472975493735222400837838865,0:986627030972880827393632528272477830148142517559149626692979125963704488225
+sqr:99785546587226129843537244978723,0:9957155307711476328643044694094129659431472972828141076722710729
+sqr:87088383260454928172097866342477398,0:7584386498919886145615067404165620415719691675067902815356104140850404
+sqr:-21019572728823619340736653333183687,0:441822437702305615250281344482791728824090026904703796170591282913969
+sqr:-213022293683144585643783023194682847,0:45378497606027901635433606485223048786626898394552542573714372916025409
+sqr:821558964589159729952441643882176928965,0:674959132296812211087604639834230395153394804319126838028473912988118655971225
+sqr:93628576598887540441164941175327620645,0:8766310355933751549963656542407355813018943206504806465783388451037030216025
+sqr:808908479404403522256434597056244,0:654332928052344317344932524548899015475902513950134223950499387536
+sqr:2403686005394008280252761408349209,0:5777706412527004403350603444613906227812077284451715581174490925681
+sqr:98761522656704312056591131334972202427,0:9753838357470719156604333998408117019236907401667603138016126272795064690329
+sqr:264921969502430465410895298885047472157,0:70183649925046697616917925839949419303701946877664620425503463543495690232649
+sqr:5734044193381222850292161236386120,0:32879262811648918591058681843423942962076958921730666289037728654400
+sqr:-77343515936181223098604746930499746,0:5982019457370318819325847928980176284218772540166615080618809306064516
+sqr:477530086265353018187224199691826067746,0:228034983288595495261021696621307088152352747277191879096752478920892981520516
+sqr:6380429851450892850108602700855721,0:40709885089285662602074098891157189887680003507622857222825658429841
+sqr:1614017525491513292625779920457654198,0:2605052572593747761378509433651355353858519931761187647033655684947023204
+sqr:5843196999513910258932442804866747074,0:34142951175128363766762829236509048605085738725187936744829961482287561476
+sqr:-16840291081678306354388229172771403474441,0:283595403715653901461439541409615997910511102944454782045143368506083646540262481
+sqr:7474294456536468895568721815784039906712,0:55865077623011788920219279745354529689516076975872074869650077219876961662650944
+sqr:40025018325908445925732334410935532,0:1602002091989306935275241821685425175435487432655654492651387460123024
+sqr:71178821881382993600746091906288293726,0:5066424684421646444739284493107312862767524722848585207267121476784450963076
+sqr:-956534424185242867042536059215467741482912,0:914958104651394134287596545591933348101595618215576678952462132267362996716787999744
+sqr:721829962859255739884681107822513072001361,0:521038495281394520876802923408055786959896312734012309918355263586370064581985852321
+sqr:513339816745878383185851793188104945331,0:263517767456692000522339869140844051045940350138813491305250127423978498699561
+sqr:799894410213938707352908144028526318948,0:639831067491504852234204013807619439299774103064068517022995175896723023826704
+sqr:5059143920618658416911136512212276876813,0:25594937209532730337328341168912486221010349334531467986696362464941481577036969
+sqr:7379242107602262033739052700681405641112,0:54453214082610274166992064235604092051241247993780042359574422852539255744596544
+sqr:4599028230060805133113661583732548660414,0:21151060660896221947440972108717970222629954445507481380394996890598345890651396
+sqr:-610947584794355405122282058915720029,0:373256951366056087824599406569194476559334062938481114234422535511760841
+sqr:151016760305167557688524773300221125,0:22806061893068431731595439152646898640190980000204142970991973896265625
+sqr:-5043972380615273383773350465024144665722,0:25441657376409708308182401188063792057370329788793418956979339486342827121781284
+sqr:-1901326156132477111554066093388015224,0:3615041151993500730555701528108452476651988041641332535522955478055770176
+sqr:186173294979292913545567242624444046622,0:34660495763446811970285555836345743988397392804771376759698280409658509610884
+sqr:134444238155321083315064919179926948671901,0:18075253173164693407381472881519065043651038267940050028398999140418897027746953801
+sqr:182751469381748889650715918274290926706,0:33398099561188301891306676682175702712867585589145527684366524689236264010436
+sqr:-19782833113399238615456499401930538244,0:391360485992605412572841611431223918801790691677441123223853085111546603536
+sqr:-53439814746421546360134168635454563545302138,0:2855813800131853763301018844500573332922284544274015258314229885052800908865809707371044
+sqr:-942658818709448211511437874237821183862608,0:888605648490692349494488804835692227243472617418048028178845602724596399794620561664
+sqr:9834555863623710363291061910128791251884,0:96718489034735503589624960384782834610966324564239408703329883463441847933549456
+sqr:51449832652939146582734700068610837004647986,0:2647085280015443222139677978390743228846577502050643060932244409106773419670167773856196
+sqr:2291742184006479592618233849836236908475350,0:5252082237954788967476725027613349500538682695376657947018844871340710892661557622500
+sqr:35726042449731702718621910342910442871,0:1276350109120031602372605532253019950930377400791207831395379049985354722641
+sqr:314864095665797450690432494576559180549068,0:99139398739440448973186550472760318244168691761448570815799105906596791989955668624
+sqr:-59649935536675658576676397615555554,0:3558114809529561588382641776313422189329463523863391447026516060246916
+sqr:46149412421201088724138934931962583741,0:2129768266822109334168041249232625528680710162397761120741201681200437555081
+sqr:81505683246039956870662440686055779,0:6643176401403798520603430158045363639536746978811045511154051899296841
+sqr:-91299975424257598936582802453683157768592,0:8335685512470041532934583154336766995790602158310653976092333552449139600621662464
+sqr:574823126630437679349613040851854060,0:330421626909192191581312097609382416497762511199933655831540139538483600
+sqr:5848279024202366423130208101566693655407,0:34202367544925383191149561091505226508437583697212620809081729403292547660335649
+sqr:33303836250493780483071804093805232,0:1109145508999703631203582340229800796051766205357661302556477550573824
+sqr:-90097283028670050701146267779856415835245618,0:8117520409148276344113019232317307994477445330168474386622133497011544293514182388201924
+sqr:-14668385513233950758334444245442362205,0:215161533564851632997671384914831185622213282649650113792531204770412462025
+sqr:7590774137730042375112728223871690355920093,0:57619852010031268329372461592010579705963482263927747947299813304373576413452601128649
+sqr:343995691938696340599208107211356310244992,0:118333036072382474528342713640289708614178710132517265632044214980665310259061080064
+sqr:9070182305961666411059354831291359229936,0:82268207063380092355731635277150073589698333812886179476183173042500898918564096
+sqr:-613222418174165442752517769424869180677247339,0:376041734151371031903812645758550041032916828201133265381231649900288825614887998182580921
+sqr:581873090996018714406098523305834447403,0:338576294025261075090661404647983063923320691169652763323293680756298373444409
+sqr:820560888183185727159245513358928235617874576,0:673320171215978629926989442338497570791398876600290863949889599973315463411875711667179776
+sqr:-9626227543559910905998441385452600037,0:92664256720391476419210060982085791459697761624823914410791509283492401369
+sqr:66650014481401668085852877112449263254057605,0:4442224430371052066838460958811706436780164160347132176597571432339519948135496658336025
+sqr:7315583918748836072386922803226766220,0:53517768072256576981304868128894291620776130258551034531987652238533088400
+sqr:70529223458010474926294230806646675385113866,0:4974371361589975054598623878560502789346907784009727387771830847443624158903789785465956
+sqr:401470286946091912268711270125222133422,0:161178391300577378096702751397459234166566519344188262751550714578757169430084
+sqr:4572343757129188862013232461765111042143389,0:20906327433358266822416965557951167365266138697665588057103694409510400778423236405321
+sqr:715210017519130849476306967366881834101790443,0:511525369159715456627844733333364085544303094139050148620796444543726446833386218286136249
+sqr:4527199826692724171566735731879658501804396281,0:20495538270806631774445707083379965566022585863396771217697173872449187877155922938886630961
+sqr:35406064719217317374472447210630089246913,0:1253589418901405255011316475685007527140454016052775693446831108384535391480029569
+sqr:2644657831335048513698968865262623996785,0:6994215044841801912150035078815852976779574670478382280388121561737327690336225
+sqr:228843981090068751940043109460476113233,0:52369567681151744523434257037145251209496783558582439385608973652170637712289
+sqr:-363455548653099175486553836897754887953239,0:132099935846725341876165715863568689720197347788826724804411086993540711366650591121
+sqr:49645456723940808192361707189216800740740233,0:2464671373328679603526959106904136209915438913265444195194837009476455587724892784894289
+sqr:-41972159081040399279897402054342460893529,0:1761662137924162054566224840868772179586183621899204603865834479280728681074073841
+sqr:904449444989445227486671780903374927026028972,0:818028798541715508716549477493246211642182516309001046520574799048903490361447595383376784
+sqr:-4637800501264787734476081456234817427937,0:21509193489531916376293763644814267498077828503138957431543983297006948188075969
+sqr:2819020042629861965107669573484320344278,0:7946874000748868771060776526221076809798728593879130631101816702469560447341284
+sqr:-1419073712851139608844222498035130011907978763,0:2013770202505118633030036333824745381599233534572616361640971080598274677688338220059010169
+sqr:1279435386592185332336335306072373865346150,0:1636954908464294734873238356134567494583629002794863673644038288728942651859319822500
+sqr:7540143721140140666472157286788379305,0:56853767335449087373733223381002849374201673267193998122596274388552283025
+sqr:-5262011646580039205673608048505741906619582985,0:27688766568743975427118675132271563800332472067380214865377259872310937555902021895301510225
+sqr:-7327313385175641658893891579493621423472131,0:53689521444574121181384482122663805719648236391922401719821519793880350881347733681161
+sqr:5706335860903446254669972577013696202625,0:32562268957432675122028129097936933650790091200861535522835758415216345056890625
+sqr:60764795039857320711933375802630887834931,0:3692360316235868846208377282943565982855715966661963445194081550939587924703774761
+sqr:6600882114332387632455874953453879300978,0:43571644687313212152096063287158210620222118112302362027400043627924277911756484
+sqr:-2251822567054969085004683861579459385511998,0:5070704873498030741204798440716913976082340904309541108933200404386498317664601952004
+sqr:2529814352175492857421615283607797166745474847,0:6399960656473108602788181861993114613603433429900229071740736287078399957217499951509673409
+sqr:8879583655989939149712696359705781351087498,0:78847005903723654012446892603376809645393741694579508469156852345582458114307251900004
+sqr:3351414487201377754699699738698168276843,0:11231979065023273817960765077734203806947341396425672066505356077057923890046649
+sqr:493311088492211553497370970192138517368154,0:243355830029370578206188770286494126657338190622766247718762414035192416310773367716
+sqr:82685877720710523061992100323174276509125450,0:6836954374444292844442742416877544049404896861094638922225024615086673653057123837702500
+sqr:647294863666837620786899669173664903756583190,0:418990640529469902225676759601758499930370634181067199099319436360711522177979263390576100
+sqr:216273949195441394151753549195148053993499942,0:46774421100592365260727829266381968975002672686299927792795537237038284660867986754003364
+sqr:3950961225764940372370426740411682156774744080,0:15610094607498000126930368549421600598238504973066689872189952445984103363005501349495046400
+sqr:-64567592264420980155379737156740169852286,0:4168973970824515995743765693939003440464366784937500483094535902887465079059425796
+sqr:-5393776308108858222846593366287251097190,0:29092822861916424670653729347861600362879624868296884894957063675916858825896100
+sqr:4421257035474409230652669129710743041139129999,0:19547513773731961522209166180650357790395010294343310626102311499057900780186531074621740001
+sqr:25745585348235541052001355061838556004714,0:662835164923280565618572665499610627882266313568159091349035783688149905990221796
+sqr:3022361477414863092264903791427345647050163,0:9134668900161353985753195181966102732074420111230027247692488593788588488383438326569
+sqr:16174126083338739712392546466600144029545,0:261602354559738560524227152873205540857880607788363443574217951532138509832907025
+sqr:8536359038962118971924046789322102135506936,0:72869425642070271408155883035265401649238199527773293064559915981755136561073704108096
+sqr:16829452309909947550920920604869233567741,0:283230465051533269305657969245471380416496809799098078990297800266415747635843081
+sqr:355623225691640883087356495814808440781511,0:126467878651327748249114458690580697745795910662947600858514518696687118116439443121
+sqr:-4209401143443034381092730841013060610254,0:17719057986419525309516357045133676283967190690277715809293823866768206889944516
+sqr:918167948787358412274755629955529806721807808,0:843032382180385220097634047295256324836379578514035039013396468142117850016057007689764864
+sqr:938573266314205341044186153980377755729062621,0:880919776239716222375696294047377432376471646919887673869340040964527602792324015339389641
+sqr:-337834833138283209912173119871827704113293618,0:114132374481571659273888147381589921838671732890472824055868207447165729730421587879529924
+sqr:3347677785850637302491730901579246582150171,0:11206946557877825427011369191220138899303204964536294325376558809200796800953595329241
+sqr:4356645141393535940709418390025017847118962,0:18980356888027902768955973980307120610625051788598446346637986213696827755243779957444
+sqr:92826772426011694027779601747722647943499793413,0:8616809679030564963186880963791809918932126468805307429201291100830072265634908592373678188569
+sqr:51010376762258960953864569830757574823681474404,0:2602058537427608996290624274755631383147159000024273704429828958236707279671443068347307155216
+sqr:30382831063227602873284055143189355113414,0:923116423416628149265937489922124060523986868896196859513517045335380028802735396
+sqr:3915054492997401943585003235342851158415,0:15327651683139143984118805637794267152206819518847446899400091861876507425312225
+sqr:-4641090311724785696843174695620414415792,0:21539719281585668471865797038997005291814557178275054719466959614202528658987264
+sqr:-39951447861070793408634234428218891908517431,0:1596118186195858073668911179663982468054349199578643473088622372024243339381964430839761
+sqr:-555198960224555495005823246552894089948692,0:308245885434427554629461691197291076483738765823061906226206596488656320063192510864
+sqr:58589016716833637943477313441669085819261,0:3432672879845411479467663313022248204450828930033468407431125219807738163558586121
+sqr:81263647890474008516998822691088790271345139919,0:6603780468466940774544731497500550809853395908650543188970162129807619747633000977661687326561
+sqr:5560457512376932639583447838381337320337229849,0:30918687746949065998721620382358683435170457483405007324210641546498211977797053331056562801
+sqr:432730426644912729122981083168165400551009,0:187255622144288196428332849203454859775636894202341850981185369067975298080810918081
+sqr:165634868693456077262813338073145431993831748,0:27434909727098436123329108213498577822229788099353666621117280426073913085588319332735504
+sqr:5136036432296350718059822910992767783245508,0:26378870233875426793297045400748869895784309008118709948631066937426759954797802178064
+sqr:52495461812056415175919972939040513752659169,0:2755773510861073404770251585451023468741709259421767644302188340904609910323218679770561
+sqr:644921741309901067265662755007058628663417209308,0:415924052414194952773497338448414267721637881779193538991963654588957862098729012454014681838864
+sqr:77219986751846279294740383367169789369471081163,0:5962926353955314887856712243839730087619098814350842401405209118435169818950049029756133432569
+sqr:-406564763021417498306152266546407011266123,0:165294906530661369246246104614399625280534743301156579253890792930213067047527451129
+sqr:77332635435051704171741918986869908321498,0:5980336503330614478952575573159205861850436194935556182332670256809867467728964004
+sqr:-30133226652964637636178317676292739183072833,0:908011348518938418160952049024705846190373876758216571799570644467898365634836182645889
+sqr:843353980371530518867911928059756715267687917567,0:711245936208503883695472164087598868479574150979252250593440597707343604621646246021356987199489
+sqr:52416664036135192338300928811249602187501,0:2747506668677068472049940358100381783185000537820108447834753651234627284360625001
+sqr:24936864359653987871165102360085320772025101390,0:621847204091781294552778349831227902040956037620708005774854493451595520123946776239779932100
+sqr:2505909981582499443571901125584999220379619248,0:6279584835794802700486852245258742443988754052584342546884836165850470328098083893452085504
+sqr:-73977703479204885730664268429435963708518,0:5472700612057162655101360993309179348039302715439935757192986595911588767665756324
+sqr:-198589249704105435037679342682866043073186,0:39437690098039540617666518382007710264897977029189581552408645429654317451352190596
+sqr:73328039448018528864208189941878255640285587838,0:5377001369290161515275169918004259959150861969199997507466059992543980522974959373053213514244
+sqr:535683488298987839878819855712326543532053,0:286956799636171841961137163658674435700232958301938352313323115244951797648638394809
+sqr:184063216702015429721557935438113110817744644,0:33879267742693091845169539821262585008285349159029510408323623234301679006071982790686736
+sqr:9676294432856266922797489910606089116869045937198,0:93630673951325184339475444014224838280508945273159278657409367399182897368794695514896350160091204
+sqr:-2663749195133384508359036407296314458167292120970,0:7095559774573753778551499428892681382031491295323466926688594859703932221913778622258641113740900
+sqr:56186493557755840121940359083662314213584866639,0:3156922058315738524532619454274852899939633083172653727996908969426171204418780549199415156321
+sqr:144196799982597573891264558388418615203807,0:20792717125221251686070638980516239709909762281452172068877272181455090376147293249
+sqr:450542969038187905714211262451476459135879207294,0:202988966949745545842203931499090333856324212634176893780523587535885897796107342866845822802436
+sqr:467808110665735390128574258585344541690288818,0:218844428404644929675525571476567575876982168069310375514724173646708352135783728255837124
+sqr:43329024140220466727250156222903487498123397,0:1877404332943807955894226235179737256169220753410657867280549089825917543297596638819609
+sqr:-6438501793677256617789281924089504319534108161,0:41454305347185250745373491255204904408762383595512409623526297043091627263730566245646801921
+sqr:-510407326611660928505767463487707749496052517369,0:260515639058862714248740984693664668973511630313643512343292186231469444203704884750122046682161
+sqr:594859310867495622564465375741063919562317268,0:353857599725751795685985263032949412484008176182571404388603629978255638007107293890983824
+sqr:472755285423104075830726552388870346265278901544,0:223497559895480601087050545047908867496351886554740936596802968200467105106203324052391245583936
+sqr:919376689556435886927444595022970417850392,0:845253497299751088037885686267060750171668735078243780695626798158701607430094553664
+sqr:-57876848300975619887354759108579447562241954,0:3349729569254144498438740796585193942967339615854670325521241615639822207154890837738116
+sqr:92443624150723929520372770653993712765851558123728,0:8545823646120308559485384430414356108540247254855261339713154331207835436289869077213927151756617984
+sqr:6356695791313384685269608982290373651589003464257,0:40407581383301297900732576196843555338795405220256471898087562078412738286830831265520747076562049
+sqr:307127491594185711277517789087998032847443,0:94327296092936614738485546027297758808557937399435107006033165112073657182511638249
+sqr:17428956723465902727803305936369912233011708,0:303768532468447295689240001394414945439324062976254537841546907447929084153848065077264
+sqr:72297817711860917755762192038277545133731492273,0:5226974445897470229462257539080517594348715584296818355233250622811936276677931595563458706529
+sqr:67252278294589637192130214244481638653946844,0:4522868935812932439511615502129787436243727493914417949589485803608267599747418777560336
+sqr:233519289964558213430232864885327053119123532000,0:54531258785551418329049006520631935794109261573329320368381923668902676071212807876155024000000
+sqr:-563139419418908049216270219501394613917054555130,0:317126005703464832075631587212216737604993581567807889138062714550857544319576086464682209316900
+sqr:387346925081870204031788982970764929245794451,0:150037640370379968568374859913413077524950740578939448357312222610670070607632870142391401
+sqr:6548128948957570787901878097677042348848668836243860,0:42877992732176180696955854123775448728390486486456039969161855812399796757319019743578067660753387699600
+sqr:3936261343830022028126989725444688680102839,0:15494153366930530895998393269628264395230650631049274762266477014870155078335615859921
+sqr:-6668751893614929632721278392171875150277412,0:44472251818592709753921778491551103916600149753115944646208009229845890958300557417744
+sqr:822791736100600708215338516228167925437093404964,0:676986240995440558720776181683504597370626325184035707987923521578936602522691804063023299841296
+sqr:2255604311982997704851854524113475159961890,0:5087750812236292443500181849614429747419680925075316427764315940109096523306252372100
+sqr:52999724285024877184966735916574085712319285570070,0:2808970774288655729113448519823998478249246548895966709777902921010943548779991866954934924879804900
+sqr:8675455794622195828232781164728362446211729095767700,0:75263533244443835242476547921223757363355239874534465194829970026093679319415889649583007878052363290000
+sqr:9766818189510276491458799796620669154596997230,0:95390737546948795157658200093224007046731125703431784850732659642141281407725292532627672900
+sqr:-9024401376963549724600495802510085357805727790,0:81439820212541612297986698812686168419623022133807410031655461931147272504463139331578284100
+sqr:-164402463040098189805763808555384663595781727680,0:27028169853650851333425988271230481834028482476783289514442582861911248333185010717365678182400
+sqr:8209632913178182128605357625511278362817287,0:67398072569138485304045634372020174804374820709272995681812799898811875361955746040369
+sqr:7849224085998259155678225291216074629306321405059,0:61610318752215206841639102273634107076695214340061949813699902301891202503337597099419319950793481
+sqr:84268602084300522449759528578955949436191540691506,0:7101197297242178356528279504357739226784541729116446371397131837835040302245005109217734596660548036
+sqr:6902994314778717651425565958771304030675588082954,0:47651330509867297636610632795902289548938744057689235679157410009315813482325208267069460785366116
+sqr:50206220922066168700530370919092488455057426610,0:2520664619275314690877903300166053204159444860750414396463078163212160418801872872915536092100
+sqr:96072567275642889243275576425042150057804998,0:9229938182932928965775346621497651355565875548926029234561161694019317264672817793780004
+sqr:-6595062761346074146596020647362793948252580229123,0:43494852826093704554640308679361114439497638530221613744048447331967293266246352267351827177349129
+sqr:8568149081811385177067925203516520860649420,0:73413178688145282880121477119739180696541954507523244741188166930150537554224146336400
+sqr:49248502660946919517092747877001926974328533013,0:2425415014345295812313592875146328669679484501975145885494533043030190389627256319264630858169
+sqr:17904856181876925295665552266562559466201268258,0:320583874893696347362514229991660521224017219129814545000338054375384201139526969367678354564
+sqr:771631948578145161796849085547411200917340758349,0:595415864066505259182407508395039909989724181602136362998216709114978732844986284528318413205801
+sqr:12382670011838180563176688905711438881735913656016,0:153330516622076566768604699870546073103022701784337888662872589882573674742398852825302835572992256
+sqr:79887086905840845071329751273276580577004634220257,0:6381946654301367805599628548194540727819498426580860632249477255744128432673947273772575390389146049
+sqr:-30740506384917649516095908074870705315727017255,0:944978732801162777072483626498071187718358606407147765800812805176218918541578974739067735025
+sqr:2367793261905004127519128277205938124388123643062,0:5606444931122739470452985637552178996115400052104533840285616956995976414363107753679718780735844
+sqr:-7205537163239928136782948117253088856431489639087,0:51919765810831710781135325357956163524444034169223786198198403577770151672808946737583429518193569
+sqr:-87222501875881575403280138643647476695025770484971921,0:7607764833488164940156888723183272524826225411571931628845909517856498792285963403271657878006104158430241
+sqr:768592553397196739913804827364926053433680074,0:590734513137622721905021754614420272988265613837215107708841948464515520527214250584645476
+sqr:72654430008231434800757497564201500782485093291413,0:5278666199821000407130155626386018512614357611234992080780160725379258284115224662271305897739536569
+sqr:5294979779912456291593332485003094781099145296,0:28036810869681764068248622882698671835224328885732252901436697669373532746966430141718927616
+sqr:-225524330077841338311518714864637992502982300827,0:50861223457059131344076452854745359154811942946783092141124606168363630406185633713222724883929
+sqr:76300515665590045878902542341914483141905465924,0:5821768690834952001877892404074353487780621638858283497181488390792314668694315843107525173776
+sqr:1367671021590108635537147568793462718551758852,0:1870524023297331401480243199414359851331324615117918733772848624680091553081397302760357904
+sqr:510148602546875823515395311882287764490427522201,0:260251596680530277967028454013847983210561613833634354975554290871003699196080451660212347884401
+sqr:-431885828352074513804191534183233827345066984060724,0:186525368731357569947997844493090345640360420960321598190276095427440182661892141310259951076519404176
+sqr:-809483217718253905386013436699549868896275873002,0:655263079767498053425256239691815322385021649460858579931313119375600071847578167997497232492004
+sqr:7093947060113745921407567380188169090451326617,0:50324084891696458689525345491512385227204357117921476509864826534231186457831032775212664689
+sqr:-68080232880306501903664558878954222691596262631984,0:4634918109036766536359386931180300421938059628159541879284111014923670444055728559424188487019776256
+sqr:123732084807188820529492594422304230836960515452,0:15309628810733366542785996328670362388267452693830627108998185467309957713222828345677530764304
+sqr:7540117648567179857455046065990308358027888235,0:56853374154234257609895527408355719669136623351747723531173678837172982618421514013651415225
+sqr:-45060593639989118987524402495961714937398249804074054,0:2030457099188227839836890779305097649691764560779479754889468083163520905704358745278334218397976315994916
+sqr:632053029293918960044415400816420531501630472353905348,0:399491031839619579039593812314125996580654591892869493458792928066176249648663979069801773646377507343001104
+sqr:3817746132424122174583264307874535849181410143,0:14575185531639343007201251665616569687900232059519506674273338124182781949884342453983280449
+sqr:-601998309194629269720110854571071245260480241599,0:362401964273192463544703828120443279897492192836031400769571647881320007895533397773473410076801
+sqr:149189674784531010082775561427484020603730152224437164,0:22257559062314127889768903830566720975053523644513943276233173866428033619416786913180630322709896584362896
+sqr:-667952680634617065225948909891271695652859024779524,0:446160783566970739385553579285903168560292605633974252482379900185517391327443619782431132256809666576
+sqr:896442187023978024135817888181355581875489698966,0:803608594676332793793077691071489566065573314613637479558689073204033255413470271487577301469156
+sqr:469876837063508044888529054004029741634188262,0:220784242008806487516585370721594781809415657049495909138954715803166606284395035658580644
+sqr:333460505499634389071621746836449438345651158948851902,0:111195908728071696640013460481101860680028270768188479169081462544951631246428196028946634293924963929017604
+sqr:2786546981347699152350591332346527753272696601615332,0:7764844079257974407678493361975288835463281192151603359405015138569536085295805773150543091151697470224
+sqr:-73071180676220826524286202896313207937408377936310398,0:5339397445416907926684389231894822147916634835106530498340816561362917793316088182837322991485253402918404
+sqr:97268643839279074792000245431060117711471587597076511,0:9461189074332523111016107641208277216000335342535735276099162974736485081225309337128089039686273987933121
+sqr:5373770600769362045085178646946336003315453933096,0:28877410469693110277861132973833648845693365290082720947082539067604050573484907294481735644145216
+sqr:7730022208425583302760731266174266674824479287,0:59753243342752732027570001943282813441979961478227838695136173133534955486934528970692028369
+sqr:186015250092269625466554459097460746814672772260764,0:34601673266889614905648672478996105551510265225901936707632047204975658817888057802926645503613863696
+sqr:4815666699948553139200366699245624686477868625356,0:23190645764993388131257987862178276692328734350163125333215390017611850098020996699531633086126736
+sqr:17081969233179688351760402283975114660908394799,0:291793672883297470081631634308890045217155311366254116499612450017968346005970487790850250401
+sqr:-43332131748563083907399274032132960698499791186721,0:1877673641874828787625525012286653311094511677166880415689214828901799869432475136212839985486731841
+sqr:1898554232540005594761509086534555991176474523590966619,0:3604508173895569638767886256267002152378977439165342675620569566281281336502387804811587491743137018772291161
+sqr:-6445244173897779327967913685216339870247860278566770826,0:41541172461163267894256110942941660309957282870559131430664069420103268562436340311324462473310528425204722276
+sqr:65847514811614176821263497363221055127791917392687769,0:4335895206865748400390819297884493082375490967259923170455114945080901924156961634452124720130029922197361
+sqr:-28264343742850718502716299981680971000837535755872043920,0:798873127214024562941629848748102397995321372847598546364602780290618822199779680422856795951621179798408966400
+sqr:-282181133469986333088832466973840605999043481716,0:79626192086406241151931423646013826941082487042406305406535152992700626621319634719227626304656
+sqr:-434247247729195929964308594117079054346013291477644823,0:188570672160381659752938334784076794251905170787774464494097399065847591192000757928868479498829562938701329
+sqr:9240816951257803833721612536356214330313434983018109831,0:85392697926653572474441387898710779160646698736295404941246735442747843749195839063211719258143563711978848561
+sqr:-553437984914283832199711793939722097864052715723678494,0:306293603145983058628720487059837183281755876058747737586115542682024534807946633420427796579332982678108036
+sqr:6047211011673838976527797824201388483565752195,0:36568761019709335078453798066472987505683172242522836648346989500201360601930015916147318025
+sqr:8955137550631297248650463364979038566397939600995033172,0:80194488550726709893601438825399931426591990165490900865830781031863248149485356041714708909894913413380381584
+sqr:790779058506749058766189248617038335165057845224,0:625331519372820450923822161102637479423295357609393493544855157664620164122653416349989939610176
+sqr:924579527319299462598706457157008969788011018317012,0:854847302337979221303684560755968979733480484179132343486688206396061271407117703550270221776928608144
+sqr:8261040079039720082284754517273813743276045370542446932,0:68244783187500584624392647600687253970401912865126265782976546569564017937607883404257489780392858354036212624
+sqr:81648112117151901296706874493743067927111503972,0:6666414212295007129897504217103504480128611223900886718005747056017651759771665045223771776784
+sqr:7899564578684868309378186947806084222206879072463,0:62403120532812640959186386238692291461262959507356112939970796721050816677313636908195151204886369
+sqr:202875148688606841162017225883717133105073395273,0:41158325955424334103292855054548709570644287446922395354404946376369163111503043012196098744529
+sqr:-447599944273190621944023321274152349834427894265443,0:200345710113363350241573135392171477512633083999735087675041776698945249056665566679475323004543986249
+sqr:279448269247759221729545915827816901286962304397091,0:78091335185568132343602216620236567337871190952067796247538287572338846008514454214870712673009262281
+sqr:263048068751475889817576462013638717456577558094,0:69194286473881186494904734527044427456680242987310636245194242896044320271253317351079944912836
+sqr:4953918586547460893294750792007989508019383275031399,0:24541309362140392785101770879220285481237618136650376029112407574731123149898250836474326855904435897201
+sqr:4471437353356145807877658377771700534452125783017614265,0:19993752004988613946043886485552363304372507758161087249440003657966157279048035653082325835710499252331490225
+sqr:-72098170677932326230814230626869993207419376557699079862,0:5198146215104260669761646225033691215158769193995972929447181676171580708713242869981328524528675902921453939044
+sqr:298429988994779695408244160373799551781709296663708,0:89060458331424330116238562159365179356263870750077166569310858891659319712469121280685043299644309264
+sqr:15631841203855394599569166381728452039734506241667,0:244354459422551272302469662109502580403312226387630490060815637724042398254594605237073781406938889
+sqr:660426807315003637221713949061982205086603339679753,0:436163567820288941746673080355640275297800545472250496547078441144692622864124308034416680452598141009
+sqr:917392439916950305180360768242753564177817712397351776809,0:841608888816775275663208862326623620567046837893704481168518555441621791638059053430461906332510516549269350222481
+sqr:-155846450238268495344369959195559500580543629842832,0:24288116051869098349295047128215656778566742131145679653985424636366108865305515159091137545021780224
+sqr:25472033362764858072900019697941213135876145681845377,0:648824483633806003744793667544511819270248356569452159505562928008016765090401968998670090576448136272129
+sqr:20189277289260360026888777803572924468097073267041778216,0:407606917462644151076725849420885819139012157714254702542998040670975149459822767551525742560834848763332142656
+sqr:325204287745187960673217120597871887240330145314572,0:105757828767855008418740324132756067538697480557296437838517344014269355767453319221651293844835543184
+sqr:-6414722934234222900958263644266120836831440017886,0:41148670322990518384944829118717910442843247950185748761142292129209592995146647048734271999908996
+sqr:312301120272909624627968726242736198455177785970818842,0:97531989723714362934668096275738607603861443157722482847186557044333833343486010148981998218139163982220964
+sqr:9028894954680171974419101406148453477562571298124980366,0:81520944102649064731832317449161331094564889092209138390941931719546194698076589489252890701465890227885493956
+sqr:788806307332790616113150948641884167876975922667808167,0:622215390487992922911688182036473235781447944210433463649952255548713919326836326920237228393877695911899889
+sqr:8462072534820037419699255083511733952413272276484107788809,0:71606671584555613408851055334596052520163369900719944476255980385358955582796459794726778717991205869753539345638481
+sqr:-685942527221288609261737584619270624284127458641912,0:470517150650728264715592414998231622951986855228964433454490078408056889339366486340487414051443015744
+sqr:370058929694186697058774342888571633336040599274254758,0:136943611446407012761130137137417712864012148304763406301401028969847631099408086708759895389055756285638564
+sqr:9704187879914430313664077393665195769441512689418966870566,0:94171262408678125773934398641195191307284789234258975677909176503419014249751224545097316770934552462579867397160356
+sqr:5925798128737745925759715663331423546607679889144875112930,0:35115083462551771236157369162138315687265847656064728641830503311468988183199467328159949805669318527886480253184900
+sqr:33488647002377175259885536134537076443400396426003731,0:1121489478049825766276530922246725189111830952465458275864281151986139799264328218398374227234130825920361
+sqr:2123735232819297700815836330311374814786388785356210060,0:4510251339118036610109622239017828107705345092062097267522409602229318236281318584088873097703239806845203600
+sqr:29872141162702890384989735017623770258183788742075,0:892344817644448391848145835628174663828417858780217507228848289828118687946707014712413510875305625
+sqr:7532139657883258576470960593627865781553593844952,0:56733127825857731552224724505206926449807777229886757388281330093349393178013626920192739015882304
+sqr:845457525713874120263223171268947077567681659698840902652,0:714798427786226119268210281388981030688454506537030966614579539102544522728409887855024503885468326555462140633104
+sqr:521768158545019160169259844676904044401662888508547040917,0:272242011271460250849489239712473973544134037328971616162419516920558472338192391022931027231772869417436872200889
+sqr:8452712498170643941637436558664265704301557216577944354047371344426782440907597751590676094202515006314790319892114058862117560952042968596008623655407033230534186943984081346699704282822823056848387726531379014466368452684024987821414350380272583623832617294363807973375,=1:71448348576730208360402604523024658663907311448489024669693316988935593287322878666163481950176220037593478347105937422686501991894419788796088422137966026262523598150372719976137911322484446114613284904383977643176193557817897027023063420124852033989626806764509137929897881780377071828193979369536094745977623512725964279515528917451111552087757216338484610394583686853163069435510427134801022221259480105632478261997058761512146362996413333996057383868504433356414886358698618132135318758644287722813462338791398132036589335991224708890625
diff --git a/polly/lib/External/isl/imath/tests/sub.tc b/polly/lib/External/isl/imath/tests/sub.tc
new file mode 100644 (file)
index 0000000..ef5f97a
--- /dev/null
@@ -0,0 +1,849 @@
+# Subtraction tests
+
+sub:0,0,0:0
+sub:0,0,=1:0
+sub:1,=1,=1:0
+sub:1,-1,0:2
+sub:1,-1,=2:2
+sub:1,-1,=1:2
+sub:-1,1,0:-2
+sub:-1,1,=1:-2
+
+sub:103427990038,909510006269847,0:-909406578279809
+sub:128593002,-9007199254740992,0:9007199383333994
+sub:-65537,70000,0:-135537
+sub:-1000000,-6543210,0:5543210
+sub:#x29C932F25E6CEF8046FA,#x29C932F25E6CEF8046FA,0:0
+sub:#x800000001,2,0:#x7FFFFFFFF
+sub:95031018,=1,=1:0
+sub:#x-176E7F8018D6BA4B550AB36AAAFDC78A9,#x186DAD2485A41B18AAF5EF17922D7E5F1F,=1:#x-19E4951C873186BD60469A4E3CDD5AD7C8
+sub:-628443782411312,-301652218193016,=2:-326791564218296
+sub:950147,37133897,0:-36183750
+sub:649972385,297,0:649972088
+sub:505,9,0:496
+sub:33,-2638,0:2671
+sub:-5,71542573,0:-71542578
+sub:4,475357,0:-475353
+sub:5,775166,0:-775161
+sub:0,20805741,0:-20805741
+sub:1,39,0:-38
+sub:76825770,751287444,0:-674461674
+sub:-5846049,574445,0:-6420494
+sub:501105944,54475,0:501051469
+sub:84350933,594,0:84350339
+sub:1367,-96716998,0:96718365
+sub:49879,-426695,0:476574
+sub:4,2,0:2
+sub:710883222,2440893,0:708442329
+sub:-68,2096377330,0:-2096377398
+sub:-87838,-485655,0:397817
+sub:4683739592,822,0:4683738770
+sub:2849496,766332,0:2083164
+sub:60422837,52,0:60422785
+sub:-13318,250,0:-13568
+sub:1,2001827,0:-2001826
+sub:97481748,62763650,0:34718098
+sub:1643,636255899,0:-636254256
+sub:-400522,-40393280,0:39992758
+sub:45568099,22,0:45568077
+sub:645024401,860182184,0:-215157783
+sub:37244191,-976205,0:38220396
+sub:-27,359887,0:-359914
+sub:27528,8076231,0:-8048703
+sub:7298,58548352177,0:-58548344879
+sub:71847293055,573,0:71847292482
+sub:673824473,27805877,0:646018596
+sub:449,53709067,0:-53708618
+sub:40569,6538078687,0:-6538038118
+sub:-642338,9669221067,0:-9669863405
+sub:209745,-28,0:209773
+sub:2488518646,-1846396,0:2490365042
+sub:581,539581676,0:-539581095
+sub:-86,16372077246,0:-16372077332
+sub:82972869,96,0:82972773
+sub:81666,-224,0:81890
+sub:3353174666,6467525,0:3346707141
+sub:178,76264272942,0:-76264272764
+sub:67786255,18533457,0:49252798
+sub:-59339460,8103,0:-59347563
+sub:427117459,-6532,0:427123991
+sub:-514830072898,10894,0:-514830083792
+sub:4160587,946181096,0:-942020509
+sub:76936,1066849,0:-989913
+sub:-776709551,28397881,0:-805107432
+sub:917,6034390,0:-6033473
+sub:5528,-1297,0:6825
+sub:303,37728739196,0:-37728738893
+sub:920355,13059,0:907296
+sub:55576,-56300,0:111876
+sub:-85278759,67364939177,0:-67450217936
+sub:50472201146,-89468966856,0:139941168002
+sub:7257002442515,-4541182637,0:7261543625152
+sub:56005,-57203,0:113208
+sub:1508,8778323669,0:-8778322161
+sub:7477,1777344,0:-1769867
+sub:619620595216,-271826,0:619620867042
+sub:503021,559324,0:-56303
+sub:46990,601026675862,0:-601026628872
+sub:630276867,92393884,0:537882983
+sub:64847122,-1741761,0:66588883
+sub:-901885041650,6063747686,0:-907948789336
+sub:9090817588683,-74217059906,0:9165034648589
+sub:4643353802,39676050,0:4603677752
+sub:61222313,-991211846100,0:991273068413
+sub:8145673172195,79545920286,0:8066127251909
+sub:4326733518687,315334416,0:4326418184271
+sub:65122622889524,686861271,0:65121936028253
+sub:91927935495,815931,0:91927119564
+sub:360036184139,-929647,0:360037113786
+sub:851769193,5104213614039,0:-5103361844846
+sub:49764,-1370901,0:1420665
+sub:543849288,7706203685,0:-7162354397
+sub:62844,8576091,0:-8513247
+sub:-809058073978,541423856,0:-809599497834
+sub:-2639589,58729,0:-2698318
+sub:-79585473,1798247,0:-81383720
+sub:316852976150,-860129592,0:317713105742
+sub:1273939285186,11601,0:1273939273585
+sub:80537932950,292617381640,0:-212079448690
+sub:5467548,5430035835,0:-5424568287
+sub:-5937877,24003123599412,0:-24003129537289
+sub:684651821908033,41369461672136,0:643282360235897
+sub:1137993337,2322246811872,0:-2321108818535
+sub:7374342836,64650413647,0:-57276070811
+sub:432132,-42261483441184,0:42261483873316
+sub:83231980056423,2783677270377,0:80448302786046
+sub:2587541968775,479202225,0:2587062766550
+sub:-928954175477668,-1742785659277,0:-927211389818391
+sub:6404997096,7343350521970,0:-7336945524874
+sub:727251429810,3193503,0:727248236307
+sub:77165840,-457577668996931,0:457577746162771
+sub:33934095603840,74283623494449,0:-40349527890609
+sub:3846088301735,-44249412464855,0:48095500766590
+sub:24497022452,4724262825964,0:-4699765803512
+sub:463651487662200,-753243402,0:463652240905602
+sub:71713522960,15380043873197,0:-15308330350237
+sub:8294630828927135,31183461626,0:8294599645465509
+sub:6703541383230,44950919818203,0:-38247378434973
+sub:868891910767,8481827,0:868883428940
+sub:6321902376793877,-477388684714663,0:6799291061508540
+sub:-32763637641,66549351522069,0:-66582115159710
+sub:288533359019263,58471469888811,0:230061889130452
+sub:-751498035858161,527076997758,0:-752025112855919
+sub:1940356995569832,103761002,0:1940356891808830
+sub:11785051,32863482880064,0:-32863471095013
+sub:6832388,998030894437455,0:-998030887605067
+sub:-29992855,4391685016,0:-4421677871
+sub:-60108503487,-15310122633,0:-44798380854
+sub:-6477442216968621,60885516917,0:-6477503102485538
+sub:31744989963367,971914401,0:31744018048966
+sub:4773395,-699494329,0:704267724
+sub:158083905091,153315973803,0:4767931288
+sub:9257392592301,778762452,0:9256613829849
+sub:-869525659304,751325704189605,0:-752195229848909
+sub:-49703875573842714,4505925018715,0:-49708381498861429
+sub:-91664099,25339513330017666,0:-25339513421681765
+sub:469453608,-325915913621728,0:325916383075336
+sub:-6329249891,453489665443616,0:-453495994693507
+sub:1555896943,216164615094,0:-214608718151
+sub:7867736225,6515990968510638,0:-6515983100774413
+sub:47191079551,22909405,0:47168170146
+sub:480598620144,-630471272,0:481229091416
+sub:-44964236,4129791840132424,0:-4129791885096660
+sub:2078461471836,9510166882939211,0:-9508088421467375
+sub:3399372328,4480430653,0:-1081058325
+sub:37397829728829741,55828595309,0:37397773900234432
+sub:932684640397258009,-748484093750,0:932685388881351759
+sub:840884486710412,70796060480,0:840813690649932
+sub:2539205,16161203759,0:-16158664554
+sub:713637461058,6441899124,0:707195561934
+sub:-8173074559441,-280676331618304941,0:280668158543745500
+sub:430261608,4233937508,0:-3803675900
+sub:-131645380114748755,77441408953418,0:-131722821523702173
+sub:-31661643391,786373077474234,0:-786404739117625
+sub:278686734235471032,120592814722,0:278686613642656310
+sub:-2931231599090,18746712502644976,0:-18749643734244066
+sub:61029444723255769,-2293742672243933,0:63323187395499702
+sub:816220890520,640524790657208413,0:-640523974436317893
+sub:16665591262,113580566277835849,0:-113580549612244587
+sub:-868305701832,6230551669213729,0:-6231419974915561
+sub:11999732039934306,23827304849399,0:11975904735084907
+sub:91534672684829653,795520608093438312,0:-703985935408608659
+sub:-8985197818103126,141826190572801,0:-9127024008675927
+sub:390870406977082056,3249082110578,0:390867157894971478
+sub:88089340380,339939269745765,0:-339851180405385
+sub:-9559600885723,1043929655718,0:-10603530541441
+sub:7521666468386587380,-6553266884,0:7521666474939854264
+sub:8481985305837,8883976116,0:8473101329721
+sub:8322745787655471,-2367148822664118142,0:2375471568451773613
+sub:-1536130411,5098377844876093,0:-5098379381006504
+sub:-80409580247,-379667394325917,0:379586984745670
+sub:2780978527253898223,-793585194380805771,0:3574563721634703994
+sub:983228849414820623,411233979567,0:983228438180841056
+sub:4312344973,8504030055,0:-4191685082
+sub:6929160648081603523,-9139369237550637,0:6938300017319154160
+sub:40543447104286,922867012966969520,0:-922826469519865234
+sub:-32492268811,-52539511415,0:20047242604
+sub:-837736542959704435,-11698939306808,0:-837724844020397627
+sub:30695570430,6965534034801150,0:-6965503339230720
+sub:743449156492,-892800013061,0:1636249169553
+sub:4650491989907718938,9119100370137466,0:4641372889537581472
+sub:475327493368,391070618301538,0:-390595290808170
+sub:9789197909023,-2250068166694,0:12039266075717
+sub:3951486522961630212,41419130651165087030,0:-37467644128203456818
+sub:36289729721981,609158820292,0:35680570901689
+sub:5238096716643,857369737080,0:4380726979563
+sub:20927421747352,7859500562781,0:13067921184571
+sub:853523362775,-58650620319893709899,0:58650621173417072674
+sub:46324137709977166,3445427404517058,0:42878710305460108
+sub:8903783900,665953140969,0:-657049357069
+sub:8807754569337,1429027872766,0:7378726696571
+sub:-69086569251605,3823065660047,0:-72909634911652
+sub:74058749504331776,4434739153355644691,0:-4360680403851312915
+sub:-52234016526389,-2748494775019,0:-49485521751370
+sub:-6279254893906588798,625713048668,0:-6279255519619637466
+sub:3054225188071649,435737551736,0:3053789450519913
+sub:773765483980477636,76679006788618217,0:697086477191859419
+sub:9779893465932,7787153050157190775,0:-7787143270263724843
+sub:59561782129137,9069749963639028245,0:-9069690401856899108
+sub:-341767412794852361,347062438266855646,0:-688829851061708007
+sub:-9228152928357,640608182261,0:-9868761110618
+sub:-42043060859484,7345135549532130055,0:-7345177592592989539
+sub:19318981939433,264137322793696365561,0:-264137303474714426128
+sub:8745011564822621615,75690236981341546,0:8669321327841280069
+sub:2006412627556,444508404836,0:1561904222720
+sub:-996892139262,3687846060016536,0:-3688842952155798
+sub:591666758481462692,6187092701409,0:591660571388761283
+sub:17253871467666658,521693769674,0:17253349773896984
+sub:-18811272204464,-70402687077401900203,0:70402668266129695739
+sub:45980222925454243960,90960767776830610102,0:-44980544851376366142
+sub:-66394515686754,99465607502696,0:-165860123189450
+sub:-731492671961447493,42337700004380375319,0:-43069192676341822812
+sub:6642648198381310,-567336740547801378,0:573979388746182688
+sub:811917479145896,258859229290245057,0:-258047311811099161
+sub:66015593565297,625461142945341,0:-559445549380044
+sub:30440701155222429,6075207040555619467769,0:-6075176599854464245340
+sub:2751861052219993314121,760255884133587996796,0:1991605168086405317325
+sub:9525855084181563454,4607581127890,0:9525850476600435564
+sub:5557962211148071712,1921710471388746938,0:3636251739759324774
+sub:800293622218736473310,8120868065192,0:800293614097868408118
+sub:-45549550905111,-3937133121943669502489,0:3937133076394118597378
+sub:-81611168134401657674033,-29024094310537521258,0:-81582144040091120152775
+sub:473739545776060,-95651109326027,0:569390655102087
+sub:-9943711197250791783,5192955396843373262,0:-15136666594094165045
+sub:74362674758137703088,991218776208774087,0:73371455981928929001
+sub:8942190838160347,42915360862670,0:8899275477297677
+sub:66210460069722759,8216793402040737008247,0:-8216727191580667285488
+sub:28630228799120059057,-727654086775011,0:28630956453206834068
+sub:-2502191839260572,-609085018990088802,0:606582827150828230
+sub:-707403262721461629,-9548746126714505844843,0:9548038723451784383214
+sub:-42739413943936747053,7248311562458017,0:-42746662255499205070
+sub:46123774937019599821,521218568189626101724,0:-475094793252606501903
+sub:9415554602318087,9000595012272170366,0:-8991179457669852279
+sub:-1951679141829705122,-12285787616979339429,0:10334108475149634307
+sub:-4386967398151873150474,2143436435198250529,0:-4389110834587071401003
+sub:97977437591194303377451,642191000671555391,0:97976795400193631822060
+sub:83261682108887535662635,511317890231125086112,0:82750364218656410576523
+sub:41310833218589671,9897170076989397,0:31413663141600274
+sub:1683930885684182315875,-66190399132485560,0:1683997076083314801435
+sub:83038493375345259207979,58284882728646817780,0:82980208492616612390199
+sub:174833752819190460,58205143986480293592,0:-58030310233661103132
+sub:-51972688295317718162,-53017954844280432,0:-51919670340473437730
+sub:3049073769975215127,-8413940824249555462,0:11463014594224770589
+sub:66856363357316667,-37906703703222242237619,0:37906770559585599554286
+sub:541685788711205,813493512383742701225466,0:-813493511842056912514261
+sub:12039482877604486443159,-27784227929617157318,0:12067267105534103600477
+sub:2031498290041713,-706931410323604521481,0:706933441821894563194
+sub:793163145663267355,488093806957995,0:792675051856309360
+sub:-35932264894813,6608203939349524510555,0:-6608203975281789405368
+sub:6095035696899997995461,49012978744796870,0:6094986683921253198591
+sub:736660687461873,2928166059556503986320,0:-2928165322895816524447
+sub:-80752317921759003744482,-2784356502312865996499584,0:2703604184391106992755102
+sub:-55600025805872206,-7990044978835553,0:-47609980827036653
+sub:20131235857391244,745599894858331816,0:-725468659000940572
+sub:473379993971533482724,53545104197056246737,0:419834889774477235987
+sub:-7901274667808068,7310483319842229,0:-15211757987650297
+sub:611143500250518767744,565842823113937536426566,0:-565231679613687017658822
+sub:8702674605316149,74225958414698686231,0:-74217255740093370082
+sub:847520472084398906,-181833891734712245,0:1029354363819111151
+sub:882552741752125480,4287937154291698619767895,0:-4287936271738956867642415
+sub:1164933678283444,-605787688418745409686,0:605788853352423693130
+sub:8189990356647722508802,5327680305703219926,0:8184662676342019288876
+sub:20126414182234863325418,651586473061170891,0:20125762595761802154527
+sub:-7243913367665451229510,920916193262000838,0:-7244834283858713230348
+sub:241247407616518609790,849820061721310660,0:240397587554797299130
+sub:11610932258446222276,-238310622287414468083,0:249921554545860690359
+sub:333102694750160639,69609722651274194224,0:-69276619956524033585
+sub:489371802875965014118478,96271202587903139,0:489371706604762426215339
+sub:7344620696143243253130,-354550759273217997666,0:7699171455416461250796
+sub:7443029079637089736774,47397475977873627,0:7442981682161111863147
+sub:-552185046973685246703728,5086882342952953836639656,0:-5639067389926639083343384
+sub:34160638466370340264992,6442462400353615432715,0:27718176066016724832277
+sub:224642516163621778782,4567297709761777098,0:220075218453860001684
+sub:396245283577471672779404,-28835207585120519380895,0:425080491162592192160299
+sub:542742994231711454505,1493274706520691229211,0:-950531712288979774706
+sub:-4010437024179449951252946,6148766465731638330749,0:-4016585790645181589583695
+sub:-45993733981177457,-2333654032343500227394581,0:2333653986349766246217124
+sub:-53268979390855780768161,244917458799919371067,0:-53513896849655700139228
+sub:9597472083289623017,283637277496645411,0:9313834805792977606
+sub:-549237729763380362715631,4233347728399082996881,0:-553471077491779445712512
+sub:546810502069383982063,-5966616092961401439222,0:6513426595030785421285
+sub:2693320235570423841,-636227430987384270,0:3329547666557808111
+sub:299001294509600705281,-662976479255032381882,0:961977773764633087163
+sub:-9969627469592910143441654,-4697810125124307023,0:-9969622771782785019134631
+sub:295862851742112486,62089965837017871773124,0:-62089669974166129660638
+sub:35578586721878839413,524399278031861381275,0:-488820691309982541862
+sub:-579419395708175094375,-86888512465827623053,0:-492530883242347471322
+sub:6685264590200748832,2474399060436569565967165,0:-2474392375171979365218333
+sub:411194309664386491791190124,-758109583623796174126,0:411195067773970115587364250
+sub:63387968120454752,367951841292571472228663,0:-367951777904603351773911
+sub:-523269515783595554078,49060669022383177598,0:-572330184805978731676
+sub:13445326521609443648,9751080551639245658806,0:-9737635225117636215158
+sub:789739255835156800013,315101502591672711170806,0:-314311763335837554370793
+sub:73481634769773817391,7522066373372077852,0:65959568396401739539
+sub:59238938099041804756,-284755768386936014001,0:343994706485977818757
+sub:2345748144830635294766296,26772347379722903394664,0:2318975797450912391371632
+sub:-96180432920038812502,7130528324583233658,0:-103310961244622046160
+sub:-6103646636128907863077733278,167360991644513667938,0:-6103646803489899507591401216
+sub:89183651282796860734843567,650591691692940868,0:89183650632205169041902699
+sub:885385723843334016669166462,7959173204532632279022148,0:877426550638801384390144314
+sub:426509712333758537770,3053810150190399695475807,0:-3053383640478065936938037
+sub:-43602818211336693439,37720583430905942376,0:-81323401642242635815
+sub:42082335899892839012828,54006514124159856356378769,0:-53964431788259963517365941
+sub:744007647137500935704813,9607111119925514823029,0:734400536017575420881784
+sub:49316936033792930103965,-3034940638845987540137,0:52351876672638917644102
+sub:83874798574806162505693,464988593797915772,0:83874333586212364589921
+sub:47935017932067725904,525937150680246466817568,0:-525889215662314399091664
+sub:15759732742160839060899,8468547017336608217,0:15751264195143502452682
+sub:68081177675380449585,232838274961715380121771,0:-232770193784039999672186
+sub:198837569846432824894,74142127460226777613642,0:-73943289890380344788748
+sub:1898390184425605471746,-8609726339421831182804422363,0:8609728237812015608409894109
+sub:5010086610580228482335807,750924907754526639102577674,0:-745914821143946410620241867
+sub:3239772657087138659473,26630017052110857873,0:3213142640035027801600
+sub:30931222688688580641792927,47650975868262142324567646743,0:-47620044645573453743925853816
+sub:2618635242932069293276,-37969350588765740201326652600,0:37969353207400983133395945876
+sub:62748041061334975755,-8597227755884238992024742173,0:8597227818632280053359717928
+sub:73666512572900713065,727593598628012630085291831,0:-727593524961500057184578766
+sub:73065402278129705309963059248,-1510259437891597840030938,0:73066912537567596907803090186
+sub:652852443033404198570557,3218208198091308335983,0:649634234835312890234574
+sub:322654125619631317783651175,103982638102588159557510478,0:218671487517043158226140697
+sub:47298054366651393257588577343,25292337944252217030,0:47298054341359055313336360313
+sub:4969650998010954466,-5928799632879538310681042,0:5928804602530536321635508
+sub:94361219162537205953,-573028299187075717448661476,0:573028393548294879985867429
+sub:500487140938346964814,-666190790348527856857515,0:666691277489466203822329
+sub:2397057037367709886558,8469650679664722706535608,0:-8467253622627354996649050
+sub:5916454672457377863577802905,-301691311710205742681455,0:5916756363769088069320484360
+sub:-4732324961421982812667328,-41666595440544717926863264,0:36934270479122735114195936
+sub:7784556296620016124437432,295631109431335676271,0:7784260665510584788761161
+sub:-468243465340943117955484398,-86059014635749889021797574078,0:85590771170408945903842089680
+sub:7581798337258404983887829,286326330291344819121713,0:7295472006967060164766116
+sub:-59661872187286137669680,993451500121394333929486,0:-1053113372308680471599166
+sub:2962196560211918477855182834,429980300074111981923309698661,0:-427018103513900063445454515827
+sub:-117191815514577197960025,-93952901109567063533541898393,0:93952783917751548956343938368
+sub:972649124468069443877962,39940702160872858805890483783,0:-39939729511748390736446605821
+sub:52911349728309634554095814861,640041502135571284090,0:52911349088268132418524530771
+sub:9563434009347863250789850,39324990112287164371797250,0:-29761556102939301121007400
+sub:501256807694158654884,8345102795766270329548488379,0:-8345102294509462635389833495
+sub:73135419149054064613594459638,-376755188742340618890,0:73135419525809253355935078528
+sub:258128605755268399576,116154542754127542403,0:141974063001140857173
+sub:-388289190817020242752560429,683426700586684828499964340,0:-1071715891403705071252524769
+sub:77603273142377289304718668478,7907734025138351381355884534,0:69695539117238937923362783944
+sub:59920022083646756381083767,-676349674131765453090842,0:60596371757778521834174609
+sub:1386456963825362091135,5043324890371013843489776600,0:-5043323503914050018127685465
+sub:22908004694216963557562131,1437848391259187655742912574429,0:-1437825483254493438779355012298
+sub:75830204485394953668558224750,818650518003178932071960,0:75829385834876950489626152790
+sub:8072507208044425938387,2801437782939637080569080,0:-2793365275731592654630693
+sub:996986457053305310363710,4270654800444412431799788016,0:-4269657813987359126489424306
+sub:476227015634465030195295,802516552923254955041235580710,0:-802516076696239320576205385415
+sub:-3862793080955285675336,601225923445782883856004,0:-605088716526738169531340
+sub:34058788843087368388987,788661560182208367542729826,0:-788627501393365280174340839
+sub:75890485056733894277957536421,28898157540847408357479445339,0:46992327515886485920478091082
+sub:836419152310550927547976,-715832228817310323167747520,0:716668647969620874095295496
+sub:71149688455411718068481321,130052491916581090823794037636,0:-129981342228125679105725556315
+sub:3047224655714425540346555,583427698600273187296801675761,0:-583424651375617472871261329206
+sub:-1762508903601801463391,1123979050566438206073605513714,0:-1123979052328947109675406977105
+sub:75571713529690058494700131,154047782298368874362663480,0:-78476068768678815867963349
+sub:8881924107521011726353538,-3145465133030840075856549,0:12027389240551851802210087
+sub:2119385564140685046061904,42628989499638883272827242,0:-40509603935498198226765338
+sub:636137867409083757104434174,876963242090925483645110008648,0:-876327104223516399888005574474
+sub:956392636402263734252628073,47247440520063140522408813223,0:-46291047883660876788156185150
+sub:5565262347877821939981460417240,-985376663560828156502183,0:5565263333254485500809616919423
+sub:-96960327111310542205299575340,754323275128519456665692931,0:-97714650386439061661965268271
+sub:390903876504582680914435276856,409728963505921718859992691123,0:-18825087001339037945557414267
+sub:600683747782519279592349358,3076791699376918600719019341,0:-2476107951594399321126669983
+sub:9867764659515798940712578323,6357991496217721443026258037557,0:-6348123731558205644085545459234
+sub:68114522731034072566854092812686,62725405971469064330284876,0:68114460005628101097789762527810
+sub:907396594886580376638506,-894708410482856602073830977246,0:894709317879451488654207615752
+sub:-30792046454713176872672190485565,-8017250846058869636998077777,0:-30784029203867118003035192407788
+sub:-18821866119770039003181629912,82441485710616151410107,0:-18821948561255749619333040019
+sub:80095770818874409058224,9316123957640218030400143320,0:-9316043861869399155991085096
+sub:-901755584000000420457516562373,-2517773106349772310667656,0:-901753066226894070685205894717
+sub:-883321569482669903165683,-44558935482820169589044365546478,0:44558934599498600106374462380795
+sub:601706200500617282847480732962335,43201582734874942566066864633597,0:558504617765742340281413868328738
+sub:3611141688653897808711895791472,54026584092810638450252354,0:3611087662069804998073445539118
+sub:-9089386632359156927536477163974,604640114580951133123734104973745,0:-613729501213310290051270582137719
+sub:-65911585682039568232806668,921349267715834145888878007323,0:-921415179301516185457110813991
+sub:740180119243741829715055823,420700352624083519085129,0:739759418891117746195970694
+sub:85012296935839090922311415,56044320231947385798897291322,0:-55959307935011546707974979907
+sub:5658315653448747612688000,4877275861716865293755139,0:781039791731882318932861
+sub:53078309233697402718315797802,786142563765269101788772678439,0:-733064254531571699070456880637
+sub:380283779338470154888541799,69789893061880576858724867806,0:-69409609282542106703836326007
+sub:-36819622867396721797461,-487239057841776678372530391049923,0:487239057804957055505133669252462
+sub:432355289983835194025265634880,722175859400496706671386831852299,0:-721743504110512871477361566217419
+sub:406113849743376356851682,-2948843385313638396180656653220,0:2948843791427488139557013504902
+sub:-450089373848778279085231682276,6922355877436261896463320824,0:-457011729726214540981695003100
+sub:-461778533905902103878563791120779,30903051263975616567418133538553,0:-492681585169877720445981924659332
+sub:2225847828886634429718900,-141670429280564340131559528873669,0:141670431506412169018193958592569
+sub:-518005307820181246928833,41493548566098807242410918395372,0:-41493549084104115062592165324205
+sub:1386972819787742372011414030306,6378199700569631039860797133,0:1380594620087172740971553233173
+sub:-9953467574634703627642091359525106,109232097199219102894213900,0:-9953467683866800826861194253739006
+sub:272224578522098768588271712614,-954774545043667358357735233977,0:1226999123565766126946006946591
+sub:-13397521090097970078307026041,-208746646957761968673045385061,0:195349125867663998594738359020
+sub:90242053814362992528569637627538,819378127307812972535514213,0:90241234436235684715597102113325
+sub:475879565794423355160366826570767,-981714991594839343058124009,0:475880547509414949999709884694776
+sub:73272944471878906655000028253254,9316121481273747448232884110081053,0:-9242848536801868541577884081827799
+sub:156124484535009677347773264807041,41067689846332812531537548182,0:156083416845163344535241727258859
+sub:5750622698618635176765494780582,8778936683577810871387349,0:5750613919681951598954623393233
+sub:752423753475915953095080157764850,110028403919321544278497683,0:752423643447512033773535879267167
+sub:986438424059798089328623129,944289987162416305345778315780032,0:-944289000723992245547688987156903
+sub:2940131992853959894009314316599,-6130856644000035009877295436,0:2946262849497959929019191612035
+sub:-60219475207618615852406049263760,245420985013813274904940493371846,0:-305640460221431890757346542635606
+sub:76132456058041997180166479105207,1333701621741713587577000118516444,0:-1257569165683671590396833639411237
+sub:551757239718514829275035933587668,20975678617718960357674898185,0:551736264039897110314678258689483
+sub:827026171479636357807858542315003,657266896495283042560293955528681,0:169759274984353315247564586786322
+sub:62029235723027056966248632640016,4720308399791420006433428083,0:62024515414627265546242199211933
+sub:3370077911228331451226459981542,56700095331827269676453888012958,0:-53330017420598938225227428031416
+sub:3514193210192659422357386965236028,5945062235433978181560378967712895,0:-2430869025241318759202992002476867
+sub:3725417532430237033267313551512,-29139588479237546460280773,0:3725446672018716270813773832285
+sub:86971485372454469574581715701279,76600079495825348746163163766060,0:10371405876629120828418551935219
+sub:52025473585241225053445613599064,64931994025064476703228951534248,0:-12906520439823251649783337935184
+sub:-46094956887492446679275334,4199288643419024266960740601763,0:-4199334738375911759407419877097
+sub:-199531081865328340581624098,61586813654360478634926776,0:-261117895519688819216550874
+sub:2228997256609098057220853694688,77983035307573853597859653028,0:2151014221301524203622994041660
+sub:-998325557636914977245575086,7667612449137815647454849829,0:-8665938006774730624700424915
+sub:746793137925798942820906830,399507178175236915401754759449,0:-398760385037311116458933852619
+sub:634724387005569029859717498,3437595978823543942820525964913,0:-3436961254436538373790666247415
+sub:7141573144886127523784053337066625,-390050969405812623337724114002,0:7141963195855533336407391061180627
+sub:-91403573621251855050085889821,78465471196357080847824505165565,0:-78556874769978332702874591055386
+sub:349658297262594920988266356059043171,796963132566625995186691340562185,0:348861334130028294993079664718480986
+sub:-633893601713106197757857736129298,86189806992731837430692951480,0:-633979791520098929595288429080778
+sub:-43900746259116235552821471377,591055471482916203481396667491207,0:-591099372229175319716949488962584
+sub:2557547273135447028597996609,64663579124550082208338293785,0:-62106031851414635179740297176
+sub:94701712281465414851697898675451825,1024428303725598723580617161,0:94701711257037111126099175094834664
+sub:1405995388343974884472280878660,-220054432405512280858363563,0:1406215442776380396753139242223
+sub:999816594826990228141732119822,984552280063995997341773813089627665,0:-984551280247401170351545671357507843
+sub:5838938294141788996592039893,50902237118539094354421180186316,0:-50896398180244952565424588146423
+sub:599678492538583548148447971111185,73667844355412382811962121530977,0:526010648183171165336485849580208
+sub:6395778081807663524044632168813593,867149393095359006170012722,0:6395777214658270428685625998800871
+sub:939460433716954373684816294933837,474277009046118167849279293527097,0:465183424670836205835537001406740
+sub:7816286294597662244110191807959541,6233835682136551847146227987794,0:7810052458915525692263045579971747
+sub:23281631659668473110100795038996,116520759657498664805703882673,0:23165110900010974445295091156323
+sub:46391396072715161551587488065814,33356982434471244343742063785074041,0:-33310591038398529182190476297008227
+sub:4585954807809352935161825310034011798,-54552397859131970401808336962,0:4585954862361750794293795711842348760
+sub:2422872895287330189582522753,4480479893211606075278003418285,0:-4478057020316318745088420895532
+sub:-13361745527437011657973841351,984220774495913608130872189292612,0:-984234136241441045142530163133963
+sub:-52685529704743149299243245793811,124512071496978690744692284754346701,0:-124564757026683433893991528000140512
+sub:143835388043216256200766869526,498925860575853395417250651462811889,0:-498925716740465352200994450695942363
+sub:371250666979424888145103423650818,1951666913810216016291928636377,0:369299000065614672128811495014441
+sub:14113880586323385101587281089,5086582061966123909499437086680,0:-5072468181379800524397849805591
+sub:457422738047527621626918654730135,17793707850630720090008287485134930,0:-17336285112583192468381368830404795
+sub:75091527004493134510290819264195424,48439881910003416229205500079317137,0:26651645094489718281085319184878287
+sub:-37624201790320133398219479795320611,4305256066030674211442956228314751717,0:-4342880267820994344841175708110072328
+sub:-63359729740153326293762634,354591974904021002246602880500006792,0:-354591974967380731986756206793769426
+sub:9308446708313654525402624748223454,-60317991035211151378177464977415474,0:69626437743524805903580089725638928
+sub:120534458842619000629729516606,567080219552763040041011655657,0:-446545760710144039411282139051
+sub:-8121545527448089591108392261383421226,-250658045580063728305171566063327,0:-8121294869402509527380087089817357899
+sub:196379537181644459409584027643681,1405776248624555617885389492315342,0:-1209396711442911158475805464671661
+sub:249608305407374994198898962694969319,2499313962944780828355872882428,0:249605806093412049418070606822086891
+sub:-86133870952625036607121720129239484192,-2210083521958904762483447549909,0:-86133868742541514648216957645791934283
+sub:-5537761268890338810683747816401,88831072690533799673765398860186343,0:-88836610451802690012576082608002744
+sub:7650066177648379388712028843866717642,918679522282053129239748147974121,0:7649147498126097335582789095718743521
+sub:565791730633833592281012727365648,852047442684103892006895595156346311,0:-851481650953470058414614582428980663
+sub:35625580968671553109914463243195234,991752088396773683576302377308181924,0:-956126507428102130466387914064986690
+sub:6830152102738950636231503454962474,6109835276749854485232715520241,0:6824042267462200781746270739442233
+sub:9645316618209602253070352413137908638,3394079504397347166925767086732227,0:9641922538705204905903426646051176411
+sub:6906473148858285032644642660383154266,-13248476237838956330778312519,0:6906473162106761270483598991161466785
+sub:663679860762267995009788953575,245501799877415862306412167957117435,0:-245501136197555100038417158168163860
+sub:-44512568466689863068389777224796828752,59397617756155227553085552332805471,0:-44571966084446018295942862777129634223
+sub:-9780895042010683622315363216460759418,76907130979153947097579514138695056628,0:-86688026021164630719894877355155816046
+sub:7347847663681638512926883660656747,21689722568710802776572651908345,0:7326157941112927710150311008748402
+sub:3783373250173630571015208086015385375,85650811474649882924710498921920,0:3783287599362155921132283375516463455
+sub:56849910710166566393455502068193,938068347237485972222899422567001939804,0:-938068290387575262056333029111499871611
+sub:504581213153898088538898634074784,298859276817968178012741515281,0:504282353877080120360885892559503
+sub:62457537532467044548168035547098,350956278715084042186918483657291476,0:-350893821177551575142370315621744378
+sub:7253075028419141077788097530219264862,50712428890680046435253055355573928021,0:-43459353862260905357464957825354663159
+sub:908092436379098470271979681591988,-50980440695559153633860322916212052697,0:50981348787995532732330594895893644685
+sub:199609775815884715957098583502038535,126431898613403845101203447550779,0:199483343917271312111997380054487756
+sub:9582359917228621477273022611353,-7814266758202663854720672879571,0:17396626675431285331993695490924
+sub:-8602898145948602715689375495162314,160918011477272833149624669760689743,0:-169520909623221435865314045255852057
+sub:9948567545244824462599097821402,321969130181831095335604501478150,0:-312020562636586270873005403656748
+sub:3108375720921396317913873465866,515757643860608151355730977219,0:2592618077060788166558142488647
+sub:-6959118740348618652311501232880384,314902316795577348140190091299453995580,0:-314909275914317696758842402800686875964
+sub:852431860747366034722063069637910,697844878845085176354494126562269534,0:-696992446984337810319772063492631624
+sub:-695872067848396881315408129801830330160,515796995164989970353676000353939744,0:-696387864843561871285761805802184269904
+sub:763264778536698023696216317523596944856,66658684467328574590928002628720352,0:763198119852230695121625389520968224504
+sub:551406701743303600756051581664966707,-2096778986234403787979394471172513533,0:2648185687977707388735446052837480240
+sub:8980464673485071567470684316357345,706157473742536317728718771566732899996,0:-706148493277862832657151300882416542651
+sub:-8959013916303797315474218091253977724,17317243712015390717561716185598103919,0:-26276257628319188033035934276852081643
+sub:610642046003967779716956199512502965820,-1342047130732031394498227273521440693,0:611984093134699811111454426786024406513
+sub:39048465017221373894786787092323,27171758183377068947756846246554,0:11876706833844304947029940845769
+sub:8851422489276175894252333429720103986615,23971945232205648973518397199417121,0:8851398517330943688603359911322904569494
+sub:-84833640081477194078008827918110,4096265727659744202225819899847459,0:-4181099367741221396303828727765569
+sub:2449552679550251863203300609863059096,-87978393823203322230640767374297,0:2449640657944075066525531250630433393
+sub:-78001817791533007712431842020149120,-517984095203705432252174589659459457366,0:517906093385913899244462157817439308246
+sub:925643199231868890271300730031810,24193296045997277400311155524231,0:901449903185871612870989574507579
+sub:45809177403727955831024802122687486932,47359799236575106780358807894627994236,0:-1550621832847150949334005771940507304
+sub:517605223957091165935716210936350445,862910955378659702358254436657666937,0:-345305731421568536422538225721316492
+sub:72688630642528437745188023003208451686,-6514092119486018712109302075636901,0:72695144734647923763900132305284088587
+sub:9017708871653095110086602388639208564217,9686163604138029584498185971117663,0:9017699185489490972057017890453237446554
+sub:232079069033420026812017177630381923958,-620458583032652195500759259597623123174,0:852537652066072222312776437228005047132
+sub:7890695491854299352485817202277388,703159083088728550533731201284887315751,0:-703151192393236696234378715467685038363
+sub:89820101894310757911847760478077656263,83262600530464963372213698397466309520,0:6557501363845794539634062080611346743
+sub:15643499204310770849595390474553,-167812233465782889797029678386637503251,0:167812249109282094107800527982027977804
+sub:-5489423773440626595521848968440708,53474930188578916210505119684094887079874,0:-53474935678002689651131715205943855520582
+sub:9795002336914579634933717979516686913,261017010939337312979598924346472448676,0:-251222008602422733344665206366955761763
+sub:4331261142314159296760231606251204672243,95924782688351130622315102956854589,0:4331165217531470945629609291148247817654
+sub:-8555084299250330981422502494290977,-783738723298387481257063528884261006006,0:783730168214088230926082106381766715029
+sub:55877969868981220363181591809987047101,-582660368158295495569660057228613506663,0:638538338027276715932841649038600553764
+sub:7431276323200780996119690290385564268160,352432120959308196444383869982649742380,0:7078844202241472799675306420402914525780
+sub:55510991248344199097615219287024885342254,332608825632573500219548085422149375,0:55510658639518566524114999738939463192879
+sub:-407443715077704811283446238871658731249,-40791246123034116937388818513050,0:-407443674286458688249329301482840218199
+sub:92659603513745501543601415394970469662329,6767288283622355176053882537452755648142,0:85892315230123146367547532857517714014187
+sub:47223347378419458293433033085679670112,-62754319264178123190515063783530,0:47223410132738722471556223600743453642
+sub:1267788394862117094544460471276744086901,-665697188010909239862834883890257046539,0:1933485582873026334407295355167001133440
+sub:295345762969445285300883528234566,676193063455453770878866399645739938,0:-675897717692484325593565516117505372
+sub:5505393498870816097766218031623252626,39514445630793756368190395762767,0:5505353984425185304009849841227489859
+sub:42208069897508165365927050240558926,45558978530284359271147071076409531,0:-3350908632776193905220020835850605
+sub:54167453556761503889312836115010425171760,187522719313793483915703839179272166586,0:53979930837447710405397132275831153005174
+sub:362669233317017065848977774618899144317100,22296129083231337516474760065879885,0:362669211020887982617640258144139078437215
+sub:2070398587579928847370215004355097684669,-64067479504146184394486079741662,0:2070398651647408351516399398841177426331
+sub:547456256889894902401571239347850863825110,963930110027673150476898540751636078,0:547455292959784874728420762449310112189032
+sub:1331413985442244763704908202938864787301,-6928236741466387982911397285024730442,0:1338342222183711151687819600223889517743
+sub:2647018820693334945869095350861961405456,68207845515177324917936202808076981,0:2646950612847819768544177414659153328475
+sub:8513268833284045819607290710032375651,877742296072025989690540346672438747497853,0:-877733782803192705644720739381728715122202
+sub:-362723824300008973505657052571345045426697,-3728428407208494550981026382186278817,0:-362720095871601765011106071544962859147880
+sub:29679672086905939495640819132486834971886,805805496484559347056265315535987,0:29679671281100443011081472076221519435899
+sub:85912095665544820943415113062566570378,-2312537069323562328248319672615297,0:85914408202614144505743361382239185675
+sub:-92634213643016881068533819685947190995,874723874226479957426284530510689780,0:-93508937517243361025960104216457880775
+sub:339348983157405555268049494721010874912,538915927881095996244878294700090,0:339348444241477674172053249842716174822
+sub:-786507623206485460799545427617928648802,-66497629708368438568316964408808815,0:-786441125576777092360977110653519839987
+sub:7838773867614617728873367710439469,-20970941234515400392700499346730050,0:28809715102130018121573867057169519
+sub:-14549979612356881205802146600958641293,-4331851795749574278449787125765833575320873,0:4331837245769961921568581323619232616679580
+sub:916100575956975239103806648291021240434945,-6239107263122317258754465996318083039813,0:922339683220097556362561114287339323474758
+sub:92055367791915247552778134001204029114,6493201508072505271272645779402011239988532,0:-6493109452704713356025093001268010035959418
+sub:-6983015937156891828369789959503372656192768,774335279468118483882198373037947794429,0:-6983790272436359946853672157876410603987197
+sub:3000995395281402114598820789701617484765714,21554713637509345916067753026101593,0:3000995373726688477089474873633864458664121
+sub:210513959404424485767273638342023036080,7040631017221420564743196284036319107483,0:-6830117057816996078975922645694296071403
+sub:927299366270769201971090702434342061,292331300721224857352792240371766440,0:634968065549544344618298462062575621
+sub:4878072375408814508188936210997478,1660478705544816285463647361127486,0:3217593669863998222725288849869992
+sub:549522597810758995529412992430729353622069,28161367971601239141551130639124424718,0:549494436442787394290271441300090229197351
+sub:-3158360246238245818023338839988456941,266461438371462069740221467823944724791696,0:-266464596731708307986039491162784713248637
+sub:9007280594321441251173718122758301273400191,5723070952876244917629403533894720814995808,0:3284209641445196333544314588863580458404383
+sub:7884430922306064951790326519656428,-265155882238652982403545634743490030,0:273040313160959047355335961263146458
+sub:4597158820829446940984073371303248589349336,4591368594874737502008341975525406,0:4597158816238078346109335869294906613823930
+sub:187371543407659146021544517634809651432,2502692698036481709764505060551779924246,0:-2315321154628822563742960542916970272814
+sub:-46135001830288779024726983515547650361,28041526428243568730358118145100364532,0:-74176528258532347755085101660648014893
+sub:-9572831631676924773779207132507340476745,6190297632466241073074006835641016273635051,0:-6199870464097917997847786042773523614111796
+sub:47274442119812358441831910654123850,99197173529181174900799490801927162,0:-51922731409368816458967580147803312
+sub:4006521386515878530482447147782028809,9872623466258041127006795769315012678883,0:-9868616944871525248476313322167230650074
+sub:82360906569911962379105787490864998240463,3515099274891762492395251937584744489436,0:78845807295020199886710535553280253751027
+sub:343670280360898716041692324762031485,912832148190967667750082998631524743067,0:-912488477910606769034041306306762711582
+sub:-253140613356453965474749134907880537,-170796125539274882635608256319127725001467,0:170795872398661526181642781569992817120930
+sub:36063566343365723001908493555712611383171,32734135808710310540138548400630432992351,0:3329430534655412461769945155082178390820
+sub:8562448362864558581436509546230412228013,97253910164731217335889068286633868249,0:8465194452699827364100620477943778359764
+sub:458404043113501189736392131389765493,90992739814093306447341282135584737049,0:-90534335770979805257604890004194971556
+sub:93153136351650823472294576193567969076519204,-173058937221894304147436488969103021,0:93153136524709760694188880341004458045622225
+sub:6881134628891939703289843575851421899205356,411386417698245110176551995497774432463572,0:6469748211193694593113291580353647466741784
+sub:4806770024356558662054629453935871253631,-54599892445310777761980324364755187,0:4806824624249003972832391434260236008818
+sub:-659266383152476584352966529996782786154127,435809612191536018491951858809486469615871,0:-1095075995344012602844918388806269255769998
+sub:6935351506572536921188795798274428881775,-576575580669724321453218122448616063259,0:7511927087242261242642013920723044945034
+sub:858138516046706031509684781296126036025,8270111802191391308669991938939548604849,0:-7411973286144685277160307157643422568824
+sub:817937608310793751229857205081702066047,67716404516400692803055765045097508053,0:750221203794393058426801440036604557994
+sub:21505104291973748253849551840337359946735,724706181460445217421835535592570632258046,0:-703201077168471469167985983752233272311311
+sub:708273146228220275650926105350112291281906759,23865262954820244462104344820227603348946351,0:684407883273400031188821760529884687932960408
+sub:6099153001249914941269621426404674818058,2938683952037817006492484814984313285,0:6096214317297877124263128941589690504773
+sub:-31923841914332687245342017699243753384096,-5606132365222969440586408949174817104241599,0:5574208523308636753341066931475573350857503
+sub:72727007176742518045851035107319602707253724,6024790453998465390250582473731871348,0:72727001151952064047385644856737128975382376
+sub:83215407925470185284051090474309060496,291921577188866523931442328192670035753786,0:-291838361780941053746158277102195726693290
+sub:9122506511038509689834545171005820589612113,719752849629179435477077881697561682399792,0:8402753661409330254357467289308258907212321
+sub:-706538117813388518478786341886424717471940980,753933770122593367025588615709647464797283389,0:-1460471887935981885504374957596072182269224369
+sub:-521928555277746411910375390507381642863,6565723095409618237803362642454225982248113,0:-6566245023964895984215273017844733363890976
+sub:24450643550397676433664068681105834123,-3553012684598341625460876864934571794587360,0:3553037135241892023137310529003252900421483
+sub:4697123465198881265199203985357713516731,2536656939218887194502000678986317871877842,0:-2531959815753688313236801475000960158361111
+sub:-434930612814998054601249422118251831669239,-9901632499831703140917838027000240996177,0:-425028980315166351460331584091251590673062
+sub:-24385109664317253785149664202310847974785,96607275813663749523021171230142234086194,0:-120992385477981003308170835432453082060979
+sub:175998623183130570261164123649545173,5736821048759940607107406386900421138480116,0:-5736820872761317423976836125736297488934943
+sub:29899463144003206689099598069297927023037663,99983896248939908245937246988587266778965056,0:-70084433104936701556837648919289339755927393
+sub:-2847961215729667396008072338427848628952207702,-18041421325649266529475871020854283985158140,0:-2829919794404018129478596467406994344967049562
+sub:860655541398867584200967070629696235008,78536431962263231465180358761552384639106,0:-77675776420864363880979391690922688404098
+sub:635054687904331166120357977754969371811679971,-686756348638066683308736393560844813903,0:635055374660679804187041286491362932656493874
+sub:66115475514119620126879119225040664892295317,-87563343403151221453653304787865218792612594,0:153678818917270841580532424012905883684907911
+sub:-95550181030075465859987797705444435041845,-13665284586416167283376541733856225706235,0:-81884896443659298576611255971588209335610
+sub:92616049236912210791574668731523882357,-50096816156035511846343817545380962370926891,0:50096908772084748758554609120049693894809248
+sub:752708246188412062918458739359406381571670,-91802938193508678084864563021449730861494286,0:92555646439697090147783021760809137243065956
+sub:4243612523329014748898840962380294468164,-7391899758560053704137252356014460148281541618,0:7391904002172577033152001254855422528576009782
+sub:7067486379132347032443631353172208490907237,6868653310067531021850169369487996413345,0:7060617725822279501421781183802720494493892
+sub:652556473645101039426795633187084650620590359,66152612457983000774979517275135281517333,0:652490321032643056426020653669809515339073026
+sub:-35248969314647098087083472237063687482719167,25849045865960518844267357563296662714932,0:-35274818360513058605927739594626984145434099
+sub:154806501204449775250550809865383692315599,220408143673773957176222952814246726548300733,0:-220253337172569507400972402004381342855985134
+sub:426192001635333106574725027301522624829,54396270337654281439857103497213765055827390,0:-54395844145652646106750528772186463533202561
+sub:2229896635643148464416291192052339376,44520846864866048574834661782670612999637,0:-44518616968230405426370245491478560660261
+sub:3511182372941029827917330703726647738515,103149425998143931124350359115352011,0:3511079223515031683986206353367532386504
+sub:525626542557810263995696385369141917216429,28217794014403546465377535948401259179623,0:497408748543406717530318849420740658036806
+sub:246690678230593477546220249711651118557673599,7508868156388634892422733339741334130597495770,0:-7262177478158041414876513090029683012039822171
+sub:-52449842456878273278887468997485654278006880781,-8622224358149020156382756933011263673304901,0:-52441220232520124258731086240552643014333575880
+sub:43917648018810264827549426849617327620,237558137782296171751042504067082682085,0:-193640489763485906923493077217465354465
+sub:436885913378194523559098742354033959419293521,-4530060472748984412434685566970122986799899668,0:4966946386127178935993784309324156946219193189
+sub:934641428600528147928021193868692944237063,766500089354618869804173156494044479533434,0:168141339245909278123848037374648464703629
+sub:-9768794865885075606938340182122123503498,43399753693320722515476020420307206331,0:-9812194619578396329453816202542430709829
+sub:4363510431895873679990777251153049456887914686,-513680867120410140612246382388345195337,0:4363510945576740800400917863399431845233110023
+sub:813902461333355602341973794050956320693244,45925401255610697190710944025791579854,0:813856535932099991644783083106930529113390
+sub:469188297775571118958824594174696108861,49387169240595114881040011727698749675,0:419801128534976004077784582446997359186
+sub:2617097578471262472460098378161373440917,626830512279231586849866185531317270325856135,0:-626827895181653115587393725432939108952415218
+sub:5151556733598102144567084692707520491967675549,925683351507641765110930982020390027551182330,0:4225873382090460379456153710687130464416493219
+sub:7961214185889032744958189528184087887568,15082937694452952801156707282245848781046520,0:-15074976480267063768411749092717664693158952
+sub:103879675257649176952122144944531240879704,-22423657059836578389654041651233303849189846,0:22527536735094227566606163796177835090069550
+sub:-377277225308671992459589258065441211400861174609,785048601099920118475775642499967466881441513003,0:-1162325826408592110935364900565408678282302687612
+sub:2735744675788022453896759288099853051599961,8561848816916220633924173923975969846159936,0:-5826104141128198180027414635876116794559975
+sub:-8108322047295156406910661075095138292543118,765970407325610304094444482334627162219563792,0:-774078729372905460501355143409722300512106910
+sub:62171119480646146147373364600786632314820,68234069541303335859784698762591456286309,0:-6062950060657189712411334161804823971489
+sub:522026031606431401123213997569507489607798170076,-717305442128471697055893486214586513387,0:522026032323736843251685694625400975822384683463
+sub:7106849336102271174193475715677967626534,9912977315535152329193899289756117840576705086,0:-9912970208685816226922725096280402162609078552
+sub:5058631248804275381537183819839410866070,50068425216904104076548398574368463679233329,0:-50063366585655299801166861390548624268367259
+sub:377384922290900684378766697765696266656684929965,3450714239029691596858831084813277683453331017,0:373934208051870992781907866680882988973231598948
+sub:4127043375130626839550947340494729073973521,-93626779328435839646986009707952408489178855259,0:93630906371810970273825560655292903218252828780
+sub:8332162922657358325764463012629457809751,18980828259225905732804403805861953606268378,0:-18972496096303248374478639342849324148458627
+sub:6824265591340935169578122399500191463946638,540683715600472521291029118849898014133054,0:6283581875740462648287093280650293449813584
+sub:938521197483583303249511621812565283382055,44983796709641426782128325690649049185212710901,0:-44982858188443943198825076179027236619929328846
+sub:6735919466177663580236501266144291220013606,545280109966768999298146733178996573556068,0:6190639356210894580938354532965294646457538
+sub:141557686844798866713592847624357600454939,63012778579350927253738282115561965895300222,0:-62871220892506128387024689267937608294845283
+sub:2911872274073904179049270098803758998758604373,5178258239494241937818225445947335874009677,0:2906694015834409937111451873357811662884594696
+sub:1408871869925689627762516558570503883504,142730298505138588027696948531422563739,0:1266141571420551039734819610039081319765
+sub:8517606735957047009697093887557000606415498004,67761524001779430467799539453579156328203130,0:8449845211955267579229294348103421450087294874
+sub:4191752928232629208839556407817672130663759960,31120143251696350351062838658625186585417641244,0:-26928390323463721142223282250807514454753881284
+sub:1773460231905714486091498164221417916299907001,-13984788525502795401300137979455088110924764646,0:15758248757408509887391636143676506027224671647
+sub:25958221336257013267259455572234542250872387609,369753082501759921518867762124056653598276202875,0:-343794861165502908251608306551822111347403815266
+sub:2747326205290884717571093710516354517279131,-200370678858880488915468681389496795418066109,0:203118005064171373633039775100013149935345240
+sub:40540925013283891720123827423744878263336,16816649411016376863928894144184888209331,0:23724275602267514856194933279559990054005
+sub:956824713963595631181304277992935834382643,3722011506884112771542173984351354075026431,0:-2765186792920517140360869706358418240643788
+sub:33786382660255444220666312795011817615453429904,735670904381689507641600295585249267679379526941,0:-701884521721434063420933982790237450063926097037
+sub:2877930508524945640926303283416511321376944980965,-43009247946073345794766337066700378436417844073,0:2920939756471018986721069620483211699813362825038
+sub:850600786011638919961278503128401557972292751560,899851210392294397522137472190488479511758393106,0:-49250424380655477560858969062086921539465641546
+sub:2462694975979744365735428888726732845981,9408686710098328540592679577780711010523157567,0:-9408684247403352560848313842351822283790311586
+sub:-2041867610696880800533651474257712171578353,-2951979315678021415040184889765351233307860,0:910111704981140614506533415507639061729507
+sub:-129073103525919620980862298218649200450487,-4680531750102980987058307458952588397482469573,0:4680402676999455067437326596654369748282019086
+sub:560697897202574381605152953497173580884569831607,-4417286348361216883592573456612155389663357,0:560702314488922742822036546070630193039959494964
+sub:17697094196983519858381804010054585256525242,1131229531263856806842311520174862769452765002,0:-1113532437066873286983929716164808184196239760
+sub:804944662083760414801916105180787524533460301166,561420687759659377688505547923187467868090247,0:804383241396000755424227599632864337065592210919
+sub:-1028404789696953408936491711523277627418563936203,-464819589190508369472777448816708894892918349,0:-1027939970107762900567018934074460918523671017854
+sub:3239904738301933363048789064790365041923795,-9362725662858815747997680077547152674652685944821,0:9362728902763554049931043126336217465017727868616
+sub:761535872788271240805547447218654406655,107117430857728547131949784152272910306695,0:-106355894984940275891144236705054255900040
+sub:-706599751963833313886288562747297926395913585,8278362817238299934703728858793740479430872564850,0:-8279069416990263768017615147356487777357268478435
+sub:463035181445197130733843489204182896424351860,455471771631505836436066499095031596509414,0:462579709673565624897407422705087864827842446
+sub:2824978869446515961236880620253514087311655553702,84452147844444783212562643686865477267414258,0:2824894417298671516453668057609827221834388139444
+sub:95172190180193659817200533401819150201616611288,4253516641549024667802049662408505566309488148712,0:-4158344451368831007984849129006686416107871537424
+sub:-413667190552706011487044934212907016404257969614,33510901758543302257900826215150539862667792900853,0:-33924568949096008269387871149363446879072050870467
+sub:1802858236899130718560292083677283004676939126204,-9591029147984982245013613101603852129053721197,0:1812449266047115700805305696778886856805992847401
+sub:5057939642669588382714715374719737582363077336,6279587642602985268062149755325894048022192320,0:-1221647999933396885347434380606156465659114984
+sub:20062487148514066658598386877620234236424,92694212932494347668352880363113439277308854,0:-92674150445345833601694281976235819043072430
+sub:334984437475294142374221031664489193167379,-6135445036242663334683894840540269979231933,0:6470429473717957477058115872204759172399312
+sub:78029827510297184965229487811790757939762626812,-32404291595021766293653499499799280338229,0:78029859914588779986995781465290257739042965041
+sub:713392855478976816484264895166180199146764030460313,681291155333056129472241044283899139868686991,0:713392174187821483428135422925135915247624161773322
+sub:-80133415624337150636387109270312659175361915999,51418478774844443709286576402320460325196,0:-80133467042815925480830818556889061495822241195
+sub:880115711847568080735088547347709199159560057170765,93939048978536600599293035541531212947874110,0:880115617908519102198487948054673657628347109296655
+sub:6923910812034533596353419663722878592724935671,484167528133286735810248062291120475761574,0:6923426644506400309617609415660587472249174097
+sub:67181341858171188344681106006257889001113561091,-275892233786910833508198970431602677775347,0:67181617750404975255514614205228320603791336438
+sub:36921718877954581697392970162605715186348102300,94932105400913864317595606773063738421165759973115,0:-94895183682035909735898213802901132705979411870815
+sub:10176087189864101236325835126503742119508524,578515167611780503112210135879212793628134689743,0:-578504991524590639010973810044086289886015181219
+sub:771806623592639026200339778481682177781432660780,67004362616728326045114859791690823708021066956420,0:-66232555993135687018914520013209141530239634295640
+sub:-203402851288321919373536431407297524778554,6479472994213736597322939815331596128853683,0:-6682875845502058516696476246738893653632237
+sub:1472434831082398237848463668763914130244321191790,749284377551792267939683738695982222675701748529,0:723150453530605969908779930067931907568619443261
+sub:21819548957613983312659642613368102599157263541546,-43027293878272366259573611249912277474953128041,0:21862576251492255678919216224618014876632216669587
+sub:79183581106215686052084319942513882987033006034916,395676242411723933204666672941564134969621059,0:79183185429973274328151115275840941422898036413857
+sub:8848994582532139477750176043869310148875814,308406836916867466802062976742038687492470522689,0:-308397987922284934662585226565994818182321646875
+sub:7723560617201337569325102213658726205516718762753,10703682032080071751681616104703726510312121990,0:7712856935169257497573420597554022479006406640763
+sub:57399920075594463974650254762286091360205308040447,7737623533444627764626187063734986201237515268274,0:49662296542149836210024067698551105158967792772173
+sub:9235227695889244745982433565536373274090597220112,107148050059803991302004419466765330676586504,0:9235120547839184941991131561116906508759920633608
+sub:-4983756542035372848701023851198318990123574220609,-6542643049007414884687990348404270219346342352782197,0:6537659292465379511839289324553071900356218778561588
+sub:567419840932221417516346055492012551836180868531246,33746605794257306032350927932072975156967743676747,0:533673235137964111483995127559939576679213124854499
+sub:587649861585950611495201008010198217521972105575,887181300999163339932116937542961612984777530930,0:-299531439413212728436915929532763395462805425355
+sub:7453222478591891189413329402038211767394218016685,2017672006030135323721939597399603743488046383,0:7451204806585861054089607462440812163650729970302
+sub:2861829900660252465253636986401989994945337,773601832041130668133623108987574604308317806,0:-770740002140470415668369472001172614313372469
+sub:1854813068723965360605974071849448846065646688997753,-1779594647650002771086955563648126785119135484216483,0:3634407716373968131692929635497575631184782173214236
+sub:92477926938178288909943789222630295714892817851483,-9993806749512159715432826828952487671606121447735045,0:10086284676450338004342770618175117967321014265586528
+sub:180006337772988467709872310927140175108921733,2381572659355146492539589222943064206470713510957947,0:-2381572479348808719551121513070753279330538402036214
+sub:-8062115630203258999893376666703748484646367,-242384162973621030696116727652753612307623848798,0:242376100857990827437116834276086908559139202431
+sub:-9512092783939545330832128518113211511839319679,51817273821892700393156339701080192019872355095563,0:-51826785914676639938487171829598305231384194415242
+sub:95014753687636191420633875239958137975948173417195,-3085034910995602744319197683314962939217430996273791,0:3180049664683238935739831558554921077193379169690986
+sub:-851020909203213144832385221818295668814907441557232,920708095345140363620526592235073155935947208,0:-851021829911308489972748842344887903888063377504440
+sub:57322816917914786923271397439113286785049794499,375876690150945835847772932354648419953665427305,0:-318553873233031048924501534915535133168615632806
+sub:31393149038789273525817858949583645513566324353,414359836823939404881738593288787821854173,0:31392734678952449586412977210990356725744470180
+sub:77504028676487775641669635436308236988049655601524,181344091581225499628551847769549638986540093069,0:77322684584906550142041083588538687349063115508455
+sub:98633986434584756460936637580630245052082529240,4571853594019360336499761737542755082748090242,0:94062132840565396124436875843087489969334438998
+sub:72702371263558464947877213929280953160835791,336826520924373293318758608698133996765552613,0:-264124149660814828370881394768853043604716822
+sub:790131994620824397445459877738169154533174191,3152340776901124584130874954251376174718487427033,0:-3151550644906503759733429494373638005563954252842
+sub:-9550173574955362798449947158209546914492142849353,-54424792605728662879926674617913575370555620507,0:-9495748782349634135570020483591633339121587228846
+sub:94354150013483998466350999623761463016719477838,6188045953454972757543729666811730031705853499240,0:-6093691803441488759077378667187968568689134021402
+sub:3939113274773256610453330771473753217221500577791591,-8856764963107169782992507920019475780655171681871327,0:12795878237880426393445838691493228997876672259662918
+sub:2660941406633181818791417317975166457527878033652214,7055550945359964654212545682444924769432938191323615,0:-4394609538726782835421128364469758311905060157671401
+sub:6672381018209518975788815573873682181604983076,69748594953382081761188754597777837110112667,0:6602632423256136894027626819275904344494870409
+sub:-22928680073391300326697730831966862930951563902710,-36030604459777331413643572771813761886932316,0:-22928644042786840549366317188394091117189676970394
+sub:906731248248897060644189710812453469279110754543,-41959270679040328466239441893560854573456943089818,0:42866001927289225526883631604373308042736053844361
+sub:-70638227944710922429439115847001418432478750483,760914797512164822868407393497280368562831931857,0:-831553025456875745297846509344281786995310682340
+sub:-216358205244444335173319801401182209472584639,998326193886993948549118716632444642265383767831852,0:-998326410245199192993453889952246043447593240416491
+sub:9580122909801568750668900466947122420236232215529435,-62027973553309464740272784879673114659231909,0:9580122971829542303978365207219907299909346874761344
+sub:622693558963818873312878405559947227488964435,3981112093580815021150239981188100077575880890208,0:-3980489400021851202276927102782540130348391925773
+sub:866815675276233673264562843306494664048668452463644611,71519824955354947547025359232296671791960617075,0:866815603756408717909615296281135431751996660503027536
+sub:-6687913766044745929873407959705938856856788714,-128082208096293248054363272445011912033353379,0:-6559831557948452681819044687260926944823435335
+sub:6533704846133682195298434566037164357331105933,-9099620103006618056421372601941016491284861199065,0:9106153807852751738616671036507053655642192304998
+sub:4119542544028390490425044803879052308401738542548112,-20834003332412447609236300940967058715737799257,0:4119563378031722902872654040179993275460454280347369
+sub:-13158459479990345059531702133456996581106330236513,888807402238789998415182036488079992896567250394,0:-14047266882229135057946884169945076574002897486907
+sub:986374598296880992789870555481914795958300865,36115966024290721654021137035289387632631652243,0:-35129591425993840661231266479807472836673351378
+sub:60328360173152774817583105641423657510833102534,806537457680548774367999519005704564118620169512120612,0:-806537397352188601215224701422598922694962658679018078
+sub:8497710798125734752308241652761644166763994003249,2232134954790237265184644308782501409978670104200558,0:-2223637243992111530432336067129739765811906110197309
+sub:-66833280768590802448180039862748595225905660580,8736830538198277449921336865075351529251534384,0:-75570111306789079898101376727823946755157194964
+sub:912827735433629466385516382081400733023462641070447,4902935580754276432455992085105349174803805305833,0:907924799852875189953060389996295383848658835764614
+sub:5478598360832354100644271821080131609231404518792,-47055673068764638632714990426082071032104852775171,0:52534271429596992733359262247162202641336257293963
+sub:7690586776927788135745843200669172025110973236,384324896599663253158847925223211417882480709853337445,0:-384324888909076476231059789477368217213308684742364209
+sub:983884777941532996194149884936915312060876070737,518287984800732830855502265279223067978197266689047,0:-517304100022791297859308115394286152666136390618310
+sub:-954694380473047886020997568695000343640652324258341,14189460325400480062958182003318094361774366261792942,0:-15144154705873527948979179572013094705415018586051283
+sub:61441847820605789319902797573300129174741870859,-56353161438453661015964270802670942459168904316247488,0:56353222880301481621753590705468515759298079058118347
+sub:840900363013208299376170217559531949250066389223,-518733806293446093467395721640110032406740773472,0:1359634169306654392843565939199641981656807162695
+sub:2801043712260244666215482898915857882171271259,30068822738933846329923273175088581474609748837369043,0:-30068819937890134069678606959605682558751866666097784
+sub:39332562720628190237986833106169417514936299004,3977882056567658721057988043991788532782214317,0:35354680664060531516928845062177628982154084687
+sub:4875943313527670330837641575224800871607771346650,3006293236431797162023390328257380215745687023197,0:1869650077095873168814251246967420655862084323453
+sub:1046076579612442168236157596521887526129291572,56509310551736435818443805857748077305452153240874241,0:-56509309505659856206001637621590480783564627111582669
+sub:68801970722430443700036017990845232711747541145506,3921528808796839431326261733514349542141553429,0:68798049193621646860604691729111718362205399592077
+sub:7996124256938877464175310613395477260421185912077919187,43920453269964575011284701085185099530091428989544,0:7996080336485607499600299328694392075321655820648929643
+sub:437847871205482940383237227334352005149025155566700,8912640649325787853768245140880891930970131371688993,0:-8474792778120304913385007913546539925821106216122293
+sub:-189562142066164910097303467426752455631983999971824429,-3126396058243394757216280555044878821697145366839147,0:-186435746007921515340087186871707576810286854604985282
+sub:3738151126960474749651813623570168405472279315305,16849954488569956342093577361010810357803346759,0:3721301172471904793309720046209157595114475968546
+sub:326436788465045244627154191800265908625864556666530,8436920985951650690723103995113757167828613977782053802,0:-8436594549163185645478476840921956901919988113225387272
+sub:73862903715165018158730950116899815638213415384,3605176405676828750083989599730691253025429971416,0:-3531313501961663731925258649613791437387216556032
+sub:-98508500558610553174664717035831451337440647751,-85349349113075502208578338510421486004026291637018909,0:85349250604574943598025163845704450172574954196371158
+sub:-3958479771038348317047929281014493361412362156,74460379620572355406333334733218930851102604423,0:-78418859391610703723381264014233424212514966579
+sub:-2678832891454610091209266352796918435982227896,844180754012069973260601080737112141842619632733391282,0:-844180756690902864715211171946378494639538068715619178
+sub:62145977984087344899814827854294051292745009920192834974,7334739588662979743633482328597512684449095879737,0:62145970649347756236835084220811722695232325471096955237
+sub:829628512088735025241917875963770566118880397874,2778273578473650916716745944557448674527619910366636167,0:-2778272748845138827981720702639572710757053791486238293
+sub:5475358208178590127449325322332321821544579907242021829,5101549647265375935536396006666544834314249747938912445,0:373808560913214191912929315665776987230330159303109384
+sub:-327933746445993810109526304208281604193537699541388,-17513330151263794083025328269239503268164355683299,0:-310420416294730016026500975939042100925373343858089
+sub:-97299271106272768099051589856225693996221199008328,-683640181471185906440394924792222282513250833654408,0:586340910364913138341343334935996588517029634646080
+sub:81950415706753285772469335186046579994901810195099988,-695576496751235568817818414861599429774724685935,0:81951111283250037008038153004461441594331584919785923
+sub:11733022337838616680086438101577803026869925229236251633,4209981603742836477443590186310139108935024708250714,0:11728812356234873843608994511391492887760990204528000919
+sub:2993252088056118669505330045592351552378298855615136540,12751727236236955721686048352301817814151141431,0:2993252075304391433268374323906303200076481041463995109
+sub:39376759077330221210471049201931709948853198615,-9493608874721279041170835115951049053361083855467392,0:9493648251480356371392045587000250985071032708666007
+sub:-5280130155085387575883303159292113846385931782810769147,-1019810672320943407741389860781837676645351883469636964,0:-4260319482764444168141913298510276169740579899341132183
+sub:8457922806422768126334853404146638292374687915778812,995127687303275765352581834049367391219012453856914,0:7462795119119492360982271570097270901155675461921898
+sub:34992662458077134231839550916665303135384048742,-8152964279502937641561776276851678598174407814,0:43145626737580071873401327193516981733558456556
+sub:8237492058118191763481523977841344753346311488313,1647118892275027900093320780430922273315158677508003654,0:-1647110654782969781901557298906944431970405331196515341
+sub:-440042339580320057764506833117106015591230779324161,513962930617733479729549861446740257284856596728706,0:-954005270198053537494056694563846272876087376052867
+sub:34635151931992497392391616758693644900635250427499823,287128980133325949899403223688828310849990578079457307,0:-252493828201333452507011606930134665949355327651957484
+sub:48138028043471938379654489799905392276347294678190375860,8955461479465751553200394404645878189278984773776867,0:48129072581992472628101289405500746398158015693416598993
+sub:7624317887859192567599023956675797189693348039462742,-973928186389609942202650295012119719585450666839535260,0:981552504277469134770249318968795516775144014878998002
+sub:775402642132715473344595954662582545794117369927872,63796684229986115177275440213147384846517231365197485,0:-63021281587853399703930844258484802300723113995269613
+sub:37362432357418646911115330814724472853415155235293,87036796847105652716376950065916449694424391617602112013,0:-87036759484673295297730038950585634969951538202446876720
+sub:-300945445086734604702237356948834421909997080585835251,86543393214880176913230280671573673375238923042066,0:-301031988479949484879150587229505995583372319508877317
+sub:-654047435982290398129267970179757606710004276417490112,86422930881746427524648992269920847889306495489,0:-654047522405221279875695494828749876630852165723985601
+sub:794552108714326403336258405676646043844624401498072689,544976653015779028031808690831373018858631899320,0:794551563737673387557230373867955212471605542866173369
+sub:-195959798494693192093817249845807727728979751653,18593677965094459754532848130637776457537309190937253673,0:-18593678161054258249226040224455026303345036919917005326
+sub:57601304615929231199752161276702979414912411756145,21951958716061857914468826747760163180070915240014675524,0:-21951901114757241985237626995598886477091500327602919379
+sub:311215074108149476976205428525338649682414980832,6243249733271681693520367645680387625166806885842687456,0:-6243249422056607585370890669474959099828157203427706624
+sub:-60089258178336658544420554675373945148810656687928409220,-940949437845306471952666460412774999437620754784474,0:-60088317228898813237948602008913532373811219067173624746
+sub:3844895658482592533059556269556968661475827694950384997,527322363491124024058755005552497077118499938802,0:3844895131160229041935532210801963108978750576450446195
+sub:-6028944995177498518136854918757906591099625985414,15888968609159402431030920451645796896759203224067431,0:-15894997554154579929549057306564554803350302850052845
+sub:996013497441974701923950607149438472739078933691,112407411020615162605964831561295393767448218127,0:883606086421359539317985775588143078971630715564
+sub:7719318511816366427665580178076378029426275595533,163667549683108101581704958685911902179912256741218,0:-155948231171291735154039378507835524150485981145685
+sub:123382564431290774896664572552493052435404643704458759934,12531798191484951858836698658135874099473672299388553,0:123370032633099289944805735853834916561305170032159371381
+sub:942048756549299165967164928739420673047263758767141,3639275805983487223033248868875293658626128636190227,0:-2697227049434188057066083940135872985578864877423086
+sub:240418823794626925772533604032962688702579243574687,4907674204394917198714890794857507854118108024516422187,0:-4907433785571122571789118261253474891429405445272847500
+sub:3950213238876863129818663666502819327768719939127457701,29991402193339371342321385670768500228753395231039352972,0:-26041188954462508212502722004265680900984675291911895271
+sub:1920667868219534801099538208015399489683153418341349572065,-233412004414149707586851107620826952570732551540827551954,0:2154079872633684508686389315636226442253885969882177124019
+sub:7784321585128756839986661147453831080387260908002873,586237266875238457979621090825032494806800315405801,0:7198084318253518382007040056628798585580460592597072
+sub:-34225848774985487393407814198681047162140030645991253741,-789489361585689258214473176784928536166156096643657,0:-34225059285623901704149599725504262233603864489894610084
+sub:-944338971240124849797024756328867740674305651345965,649970029057878269623349411694378680589331156335769959,0:-650914368029118394473146436450707548330005461987115924
+sub:25816073494421415375915233416338690441492640884943818729,764159631162282034769988362928740167840568754650018844,0:25051913863259133341145245053409950273652072130293799885
+sub:7111381553325219432932289055091214481651627513743376,7385563406175559235314072692841151936136627185182905,0:-274181852850339802381783637749937454484999671439529
+sub:-438137611853268269308435226684643695607887735487389,5824616025576441892684517623276732904299681537303913,0:-6262753637429710161992952849961376599907569272791302
+sub:-9680790659167697968786181797074343179561171865505840566,-932899327759500157755319258322165056527752927868968726,0:-8747891331408197811030862538752178123033418937636871840
+sub:567793364811051880825781313748966696400236576537363041402,-976578291468928773578542746545826341079985184892523837,0:568769943102520809599359856495512522741316561722255565239
+sub:38007779187090670273244552314378701844162920433585869254,7187767815567041059760334263355184283280579165883650238,0:30820011371523629213484218051023517560882341267702219016
+sub:9014053603553462724377168305482782158101121369010869473906,755601637469656651454003843855153366578358802242924461,0:9013298001915993067725714301638927004734543010208626549445
+
+# Small integer subtraction tests
+
+subv:3358604991,36411,0:3358568580
+subv:674222429,18986,0:674203443
+subv:-3,-29805,=1:29802
+subv:3,-61063,=1:61066
+subv:2717723,-25258,=1:2742981
+subv:394,-40508,=2:40902
+subv:4744781967,21435,0:4744760532
+subv:-14,50287,0:-50301
+subv:2197,3582,=2:-1385
+subv:-5296,38162,=2:-43458
+subv:-258774,57544,=2:-316318
+subv:7417476246,-58958,=2:7417535204
+subv:6714936,-40949,0:6755885
+subv:15862,-58672,0:74534
+subv:958081,21046,0:937035
+subv:82515,-11287,0:93802
+subv:72715,-25449,0:98164
+subv:-8346662975566,52150,0:-8346663027716
+subv:96216,-33648,=2:129864
+subv:71597071124556,40786,0:71597071083770
+subv:2795133710510,-24996,=1:2795133735506
+subv:8501300888546,1685,0:8501300886861
+subv:3877092429,45143,0:3877047286
+subv:-9123902,27698,0:-9151600
+subv:-71914098152,-49684,0:-71914048468
+subv:-5633175963555389,-13681,0:-5633175963541708
+subv:-68774492,24946,0:-68799438
+subv:2837978518,2447,=1:2837976071
+subv:9527903026793981,34045,=2:9527903026759936
+subv:-719766995836501,-14683,=1:-719766995821818
+subv:6826892934542,-9599,0:6826892944141
+subv:474765520,-36545,=2:474802065
+subv:137980222,12896,0:137967326
+subv:4124108674,61743,0:4124046931
+subv:-4977334202151,16161,0:-4977334218312
+subv:-6764356933,33130,=1:-6764390063
+subv:6639990082377605303,63220,0:6639990082377542083
+subv:68384248282,-28652,0:68384276934
+subv:-64782488650,-31866,=2:-64782456784
+subv:84126983615,63328,0:84126920287
+subv:280281352217,19756,=1:280281332461
+subv:-337730569530652702,55596,0:-337730569530708298
+subv:750462053456012,-18056,=1:750462053474068
+subv:-859984251764611,60341,0:-859984251824952
+subv:781147832162694072159,10186,0:781147832162694061973
+subv:414707731902540,13874,0:414707731888666
+subv:4749293013793395,-27594,0:4749293013820989
+subv:-476780935041195291,-51859,0:-476780935041143432
+subv:-3619074244886709,38416,=1:-3619074244925125
+subv:97855199057493,40752,0:97855199016741
+subv:777675086535345464853,9892,=2:777675086535345454961
+subv:3103441257588144,4992,0:3103441257583152
+subv:136564148041720,53068,=2:136564147988652
+subv:-4664978338218772692212,46644,0:-4664978338218772738856
+subv:235299291342838779459,27155,=1:235299291342838752304
+subv:45286262426870,28782,0:45286262398088
+subv:422289955984703063,27236,=2:422289955984675827
+subv:-6379926829937406097,-63773,0:-6379926829937342324
+subv:830836702855178852980658,-61406,=1:830836702855178853042064
+subv:4000074483936047411,59077,=2:4000074483935988334
+subv:1622930723651719839167208,63514,0:1622930723651719839103694
+subv:532951482400205192926144,57956,0:532951482400205192868188
+subv:148980429628794512840,63138,=2:148980429628794449702
+subv:-9890648040727702186064,-46766,=1:-9890648040727702139298
+subv:-10934480308082214085686,63224,=2:-10934480308082214148910
+subv:355809482274653919711872,32446,0:355809482274653919679426
+subv:-33926193961684655624,11389,=2:-33926193961684667013
+subv:-7186493575578045620,15528,=1:-7186493575578061148
+subv:34706765155128499193360248,83,=1:34706765155128499193360165
+subv:4328479538590740673745630,14623,0:4328479538590740673731007
+subv:-963713498430054741223932789,30239,0:-963713498430054741223963028
+subv:-831264221344401371,39516,0:-831264221344440887
+subv:318721481318817753735405,52833,0:318721481318817753682572
+subv:-62693787119478234447,27553,=1:-62693787119478262000
+subv:-7016655669525046977522194886,32638,=2:-7016655669525046977522227524
+subv:608134301020199755515,29066,0:608134301020199726449
diff --git a/polly/lib/External/isl/imath/tests/test.bc b/polly/lib/External/isl/imath/tests/test.bc
new file mode 100644 (file)
index 0000000..f067be8
--- /dev/null
@@ -0,0 +1,155 @@
+/* e(a, b, m) := a^b (mod m) */
+define e(a, b, m) {
+  auto s, sb;
+
+  sb = obase; obase = 16;
+  s = 1;
+  while(b != 0) {
+    if((b % 2) == 1) {
+      s = (s * a) % m;
+    }
+    b /= 2;
+    a = (a * a) % m;
+  }
+  obase = sb;
+  return (s);
+}
+
+/* g(a, b) := (a, b) */
+define g(a, b) {
+  auto r;
+
+  while(b != 0) {
+    r = a % b;
+    a = b;
+    b = r;
+  }
+  if(a < 0) {
+    return(-a);
+  } else {
+    return(a);
+  }
+}
+
+define a(x) {
+  if(x < 0) {
+    return (-x);
+  } else {
+    return (x);
+  }
+}
+
+xgu = 0; xgv = 0;
+define x(a, b) {
+  auto u, v, x, y, t, r;
+
+  if(a(b) > a(a)) {
+    t = b; b = a; a = t; r = 1;
+  } else {
+    r = 0;
+  }
+
+  u = 1; v = 0;
+  x = 0; y = 1;
+
+  while(b != 0) {
+    t = a / b;
+
+    a = a - (t * b);
+    v = v - (t * y);
+    u = u - (t * x);
+
+    if(a(a) < a(b)) {
+      t = a; a = b; b = t;
+      t = v; v = y; y = t;
+      t = u; u = x; x = t;
+    }
+  }
+
+  if(r) {
+    xgu = v; xgv = u;
+  } else {
+    xgu = u; xgv = v;
+  }
+
+  if(a < 0) {
+    return (-a);
+  } else {
+    return (a);
+  }
+}
+
+define i(a, m) {
+  auto c;
+
+  c = x(a, m);
+  if(c != 1)
+    return(0);
+
+  return ((xgu + m) % m);
+}
+
+scale = 0
+rand_modulus = 2860385147
+rand_base = 129
+rand_seed = 10342799
+
+define srand(s) {
+  rand_seed = s;
+}
+
+define rand(n) {
+  auto r;
+
+  r = (rand_seed * rand_base) % rand_modulus;
+  rand_seed = r;
+  return(r % n);
+}
+
+define rand_digits(k) {
+  auto s;
+
+  s = 0;
+  while(k > 0) {
+    s = (s * 10) + rand(10);
+    k = k - 1;
+  }
+
+  return(s);
+}
+
+define rval(ndigits, probneg) {
+  auto x;
+  x = rand_digits(ndigits);
+  if(probneg > 0 && rand(100) < probneg)
+    x = x * -1;
+  return(x);
+}
+
+for(i = 2; i < 100; i += 4) {
+  value = rand_digits(i);
+  obase = 256;
+  print "readuns:", value;
+  obase = 10;
+  print ":", value, "\n"  
+}
+
+/*
+for(i = 2; i < 100; i += 4) {
+  for(j = 0; j < 2; ++j) {
+    ndig = rand(7);
+    base = rval(ndig, 20);
+    expt = rand_digits(i);
+    mod = rand_digits(i);
+
+    result = e(base, expt, mod);
+    if(result < 0) {
+      result = result + mod;
+    }
+    print "emodbv:", base, ",", expt, ",", mod, ",0:", result, "\n";
+    print "emodbv:", base, ",", expt, ",", mod, ",=2:", result, "\n";
+    print "emodbv:", base, ",", expt, ",", mod, ",=3:", result, "\n";
+  }
+}
+*/
+halt
diff --git a/polly/lib/External/isl/imath/tests/test.sh b/polly/lib/External/isl/imath/tests/test.sh
new file mode 100644 (file)
index 0000000..d887a61
--- /dev/null
@@ -0,0 +1,85 @@
+#!/bin/bash
+## 
+## Name:     test.sh
+## Purpose:  Run test suites for IMath library.
+##
+## Copyright (C) 2002-2007 Michael J. Fromberger. All Rights Reserved.
+##
+
+set -o pipefail
+
+if [ ! -f ../imtest ] ; then
+  echo "I can't find the imath test driver 'imtest', did you build it?"
+  echo "I can't proceed with the unit tests until you do so, sorry."
+  exit 2
+fi
+
+echo "-- Running all available unit tests"
+if ../imtest *.tc | (grep -v 'OK'||true) ; then
+    echo "ALL PASSED"
+else
+    echo "FAILED"
+    exit 1
+fi
+
+echo ""
+echo "-- Running test to compute 1024 decimal digits of pi"
+if [ ! -f ../pi ] ; then
+  echo "I can't find the pi computing program, did you build it?"
+  echo "I can't proceed with the pi test until you do so, sorry."
+  exit 1
+fi
+
+tempfile="/tmp/pi.1024.$$"
+
+../pi 1024 | tr -d '\r\n' > ${tempfile}
+if cmp -s ${tempfile} ./pi1024.txt ; then
+  echo "  PASSED 1024 digits"
+else
+  echo "  FAILED"
+  echo "Obtained:"
+  cat ${tempfile}
+  echo "Expected:"
+  cat ./pi1024.txt
+fi
+rm -f ${tempfile}
+
+tempfile="/tmp/pi.1698.$$"
+
+echo "-- Running test to compute 1698 hexadecimal digits of pi"
+
+../pi 1698 16 | tr -d '\r\n' > ${tempfile}
+if cmp -s ${tempfile} ./pi1698-16.txt ; then
+  echo "  PASSED 1698 digits"
+else
+  echo "  FAILED"
+  echo "Obtained:"
+  cat ${tempfile}
+  echo "Expected:"
+  cat ./pi1698-16.txt
+fi
+rm -f ${tempfile}
+
+tempfile="/tmp/pi.1500.$$"
+
+echo "-- Running test to compute 1500 decimal digits of pi"
+
+../pi 1500 10 | tr -d '\r\n' > ${tempfile}
+if cmp -s ${tempfile} ./pi1500-10.txt ; then
+  echo "  PASSED 1500 digits"
+else
+  echo "  FAILED"
+  echo "Obtained:"
+  cat ${tempfile}
+  echo "Expected:"
+  cat ./pi1500-10.txt
+fi
+rm -f ${tempfile}
+
+echo "-- Running regression tests"
+
+for bug in bug-swap ; do
+    ../${bug}
+done
+
+exit 0
diff --git a/polly/lib/External/isl/imath/tools/findthreshold.py b/polly/lib/External/isl/imath/tools/findthreshold.py
new file mode 100644 (file)
index 0000000..fbb325e
--- /dev/null
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+##
+## Name:     findthreshold.py
+## Purpose:  Find a good threshold for recursive multiplication.
+## Author:   M. J. Fromberger
+##
+## This tool computes some timing statistics to help you select a suitable
+## recursive multiplication breakpoint.  It uses the imtimer tool to run a
+## series of tests varying precision and breakpoint, and prints out a summary
+## of the "best" values for each category.  Each summary line contains the
+## following fields, tab-separated:
+##
+## prec     -- the precision of the operands (in digits).
+## thresh   -- the threshold for recursive multiplication (digits).
+## trec     -- total time using recursive algorithm (sec).
+## tnorm    -- total time without recursive algorithm (sec).
+## ratio    -- speedup (ratio of tnorm/trec).
+##
+## You are responsible for reading and interpreting the resulting table to
+## obtain a useful value for your workload.  Change the default in imath.c, or
+## call mp_int_multiply_threshold(n) during program initialization, to
+## establish a satisfactory result.
+##
+import math, os, random, sys, time
+
+
+def get_timing_stats(num_tests, precision, threshold, seed=None):
+    """Obtain timing statistics for multiplication.
+
+    num_tests      -- number of tests to run.
+    precision      -- number of digits per operand.
+    threshold      -- threshold in digits for recursive multiply.
+    seed           -- random seed; if None, the clock is used.
+
+    Returns a tuple of (seed, bits, time) where seed is the random seed used,
+    bits is the number of bits per operand, and time is a float giving the
+    total time taken for the test run.
+    """
+    if seed is None:
+        seed = int(time.time())
+
+    line = os.popen(
+        './imtimer -mn -p %d -t %d -s %d %d' % (precision, threshold, seed,
+                                                num_tests), 'r').readline()
+
+    count, prec, bits, thresh, status = line.strip().split('\t')
+    kind, total, unit = status.split()
+
+    return seed, int(bits), float(total)
+
+
+def check_binary(name):
+    if not os.path.exists(name):
+        os.system('make %s' % name)
+        if not os.path.exists(name):
+            raise ValueError("Unable to build %s" % name)
+    elif not os.path.isfile(name):
+        raise ValueError("Path exists with wrong type")
+
+
+def compute_stats():
+    check_binary('imtimer')
+    seed = int(time.time())
+
+    print >> sys.stderr, "Computing timer statistics (this may take a while)"
+    stats = {}
+    for prec in (32, 40, 64, 80, 128, 150, 256, 384, 512, 600, 768, 1024):
+        sys.stderr.write('%-4d ' % prec)
+        stats[prec] = (None, 1000000., 0.)
+
+        for thresh in xrange(8, 65, 2):
+            s, b, t = get_timing_stats(1000, prec, thresh, seed)
+            sp, bp, tp = get_timing_stats(1000, prec, prec + 1, seed)
+
+            if t < stats[prec][1]:
+                stats[prec] = (thresh, t, tp)
+                sys.stderr.write('+')
+            else:
+                sys.stderr.write('.')
+        sys.stderr.write('\n')
+
+    return list((p, h, t, tp) for p, (h, t, tp) in stats.iteritems())
+
+
+if __name__ == "__main__":
+    stats = compute_stats()
+    stats.sort(key=lambda s: s[3] / s[2])
+    for prec, thresh, trec, tnorm in stats:
+        print "%d\t%d\t%.3f\t%.3f\t%.4f" % (prec, thresh, trec, tnorm,
+                                            tnorm / trec)
+
+    print
+
+# Here there be dragons
diff --git a/polly/lib/External/isl/imath/tools/mkdoc.py b/polly/lib/External/isl/imath/tools/mkdoc.py
new file mode 100644 (file)
index 0000000..4744781
--- /dev/null
@@ -0,0 +1,209 @@
+#!/usr/bin/env python
+##
+## Name:    mkdoc.py
+## Purpose: Extract documentation from header files.
+##
+## Copyright (C) 2018 Michael J. Fromberger. All Rights Reserved.
+##
+## Usage: mkdoc.py <template> <output>
+##
+from __future__ import print_function
+
+import collections, re, sys
+
+# A regular expression to match commented declarations.
+# This is specific to C and not very general; it should work fine for the imath
+# headers but will not adapt well to arbitrary code or to C++.
+doc = re.compile(r'''(?mx)/\*\* # open  /**
+(?P<text>(?:[^*]|\*[^/])*)      # text      Does a thing
+\*/\n                           # close */
+(?P<decl>[^;{]*(?:;$|\{))''')  # decl  void f(x);
+
+# A regular expression matching up to 4 spaces at the head of a line.
+spc = re.compile(r'(?m)^ {1,4}')
+
+# A regular expression matching an insertion point.  An insertion point has the
+# form {{include "header" name ...}}.  If no names are given, all the names in
+# the given header are inserted.
+ins = re.compile(r'{{insert "(?P<file>[^"]*)"(?P<names>(?:\s+\w+)+)?\s*}}')
+
+# A regular expression matching non-identifier characters, for splitting.
+nid = re.compile(r'\W+')
+
+# A cache of already-parsed files, maps filename to declarations.
+CACHE = {}
+
+
+def last_word(s):
+    """Returns the last identifier-shaped word in s."""
+    return nid.split(s.strip())[-1]
+
+
+def typeset(text):
+    """Renders text with verbatim sections into markdown."""
+    lines = []
+    fence = False
+    for line in text.split('\n'):
+        if fence != line.startswith(' '):
+            lines.append('```')
+            fence = not fence
+        lines.append(line)
+    if fence:
+        lines.append('```')
+    for i, line in enumerate(lines):
+        if i == 0: lines[i] = ' -  ' + line
+        elif line: lines[i] = '    ' + line
+    return '\n'.join(lines)
+
+
+class LIndex(object):
+    """Represents a line offset index for text."""
+
+    def __init__(self, text):
+        pos = 0
+
+        # An array of ending offsets for each line, with a sentinel at position
+        # 0 to make the index arithmetic easier.
+        idx = [0]
+
+        # Scan forward for newlines or EOF, and push the offsets of the line
+        # breaks onto the list so we can binary search them later.
+        while pos < len(text):
+            next = text.find('\n', pos)
+            if next < 0:
+                break
+            idx.append(next)
+            pos = next + 1
+        if idx[-1] < len(text):
+            idx.append(len(text))
+        self._len = len(text)
+        self._index = idx
+
+    def linecol(self, pos):
+        """Returns the (line, col) corresponding to pos.
+
+        Line numbers are 1-based, columns are 0-based.
+        """
+        if pos < 0 or pos > self._len:
+            raise IndexError("position %d out of range" % pos)
+
+        # Binary search for the largest line number whose end marker is at or
+        # after pos and whose previous line's end is before pos.
+        idx = self._index
+        i, j = 1, len(idx)
+        while i < j:
+            m = (i + j) / 2
+            if idx[m] < pos:
+                i = m + 1
+            elif idx[m - 1] < pos:
+                return m, pos - idx[m - 1]
+            else:
+                j = m
+
+        # This happens if (and only if) the whole file is one line.
+        return 1, pos
+
+
+class Decl(object):
+    """Represents a single documented declaration."""
+
+    def __init__(self, com, decl, line=None):
+        """Initialize a new documented declaration.
+
+        Params:
+          com: the raw text of the comment
+          decl: the raw text of the declaration
+          line: the line number of the declaration
+        """
+        lp = decl.find('(')
+        if lp < 0:
+            self.name = last_word(decl.rstrip(';'))
+        else:
+            self.name = last_word(decl[:lp])
+        self.decl = ' '.join(decl.rstrip(';{').strip().split())
+        self.comment = spc.sub('', com.rstrip())
+        self.line = line
+
+    def __repr__(self):
+        return '#Decl["%s"]' % self.decl
+
+    def markdown(self, path):
+        pos = self.decl.index(self.name)
+        decl = '%s<a href="%s#L%d">%s</a>%s' % (
+            self.decl[:pos],
+            path,
+            self.line,
+            self.name,
+            self.decl[pos + len(self.name):],
+        )
+        return '''------------
+<a id="{name}"></a><pre>
+{decl};
+</pre>
+{comment}
+'''.format(name=self.name, decl=decl, comment=typeset(self.comment))
+
+
+def parse_decls(text):
+    """Parse a dictionary of declarations from text."""
+    decls = collections.OrderedDict()
+    idx = LIndex(text)
+    for m in doc.finditer(text):
+        line, _ = idx.linecol(m.span('decl')[0])
+        d = Decl(m.group('text'), m.group('decl'), line)
+        decls[d.name] = d
+    return decls
+
+
+def load_file(path):
+    """Load declarations from path, or use cached results."""
+    if path not in CACHE:
+        with file(path, 'rU') as fp:
+            CACHE[path] = parse_decls(fp.read())
+    return CACHE[path]
+
+
+def main(args):
+    if len(args) != 2:
+        print("Usage: mkdoc.py <input> <output>", file=sys.stderr)
+        sys.exit(1)
+
+    doc_template = args[0]
+    doc_markdown = args[1]
+
+    with file(doc_template, 'rU') as input:
+        template = input.read()
+
+    with file(doc_markdown, 'wt') as output:
+        print(
+            '''<!--
+  This file was generated from "{0}" by mkdoc.py
+  DO NOT EDIT
+-->
+'''.format(doc_template),
+            file=output)
+
+        pos = 0  # last position of input copied
+
+        # Look for substitution markers in the template, and replace them with
+        # their content.
+        for ip in ins.finditer(template):
+            output.write(template[pos:ip.start()])
+            pos = ip.end()
+
+            decls = load_file(ip.group('file'))
+            if ip.group('names'):  # pick the selected names, in order
+                decls = collections.OrderedDict(
+                    (key, decls[key])
+                    for key in ip.group('names').strip().split())
+
+            # Render the selected declarations.
+            for decl in decls.values():
+                print(decl.markdown(ip.group('file')), file=output)
+
+        # Clean up any remaining template bits
+        output.write(template[pos:])
+
+
+if __name__ == "__main__":
+    main(sys.argv[1:])
diff --git a/polly/lib/External/isl/include/isl/cpp-checked-conversion.h b/polly/lib/External/isl/include/isl/cpp-checked-conversion.h
deleted file mode 100644 (file)
index 5268364..0000000
+++ /dev/null
@@ -1,691 +0,0 @@
-/// These are automatically generated conversions between
-/// the default and the checked C++ bindings for isl.
-///
-/// isl is a library for computing with integer sets and maps described by
-/// Presburger formulas. On top of this, isl provides various tools for
-/// polyhedral compilation, ranging from dependence analysis over scheduling
-/// to AST generation.
-
-#ifndef ISL_CPP_CHECKED_CONVERSION
-#define ISL_CPP_CHECKED_CONVERSION
-
-#include <isl/cpp.h>
-#include <isl/cpp-checked.h>
-
-namespace isl {
-
-checked::aff check(aff obj) {
-       return checked::manage(obj.copy());
-}
-
-aff uncheck(checked::aff obj) {
-       return manage(obj.copy());
-}
-
-checked::aff_list check(aff_list obj) {
-       return checked::manage(obj.copy());
-}
-
-aff_list uncheck(checked::aff_list obj) {
-       return manage(obj.copy());
-}
-
-checked::ast_build check(ast_build obj) {
-       return checked::manage(obj.copy());
-}
-
-ast_build uncheck(checked::ast_build obj) {
-       return manage(obj.copy());
-}
-
-checked::ast_expr check(ast_expr obj) {
-       return checked::manage(obj.copy());
-}
-
-ast_expr uncheck(checked::ast_expr obj) {
-       return manage(obj.copy());
-}
-
-checked::ast_expr_id check(ast_expr_id obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_id>();
-}
-
-ast_expr_id uncheck(checked::ast_expr_id obj) {
-       return manage(obj.copy()).as<ast_expr_id>();
-}
-
-checked::ast_expr_int check(ast_expr_int obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_int>();
-}
-
-ast_expr_int uncheck(checked::ast_expr_int obj) {
-       return manage(obj.copy()).as<ast_expr_int>();
-}
-
-checked::ast_expr_op check(ast_expr_op obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>();
-}
-
-ast_expr_op uncheck(checked::ast_expr_op obj) {
-       return manage(obj.copy()).as<ast_expr_op>();
-}
-
-checked::ast_expr_op_access check(ast_expr_op_access obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_access>();
-}
-
-ast_expr_op_access uncheck(checked::ast_expr_op_access obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_access>();
-}
-
-checked::ast_expr_op_add check(ast_expr_op_add obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_add>();
-}
-
-ast_expr_op_add uncheck(checked::ast_expr_op_add obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_add>();
-}
-
-checked::ast_expr_op_address_of check(ast_expr_op_address_of obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_address_of>();
-}
-
-ast_expr_op_address_of uncheck(checked::ast_expr_op_address_of obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_address_of>();
-}
-
-checked::ast_expr_op_and check(ast_expr_op_and obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_and>();
-}
-
-ast_expr_op_and uncheck(checked::ast_expr_op_and obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_and>();
-}
-
-checked::ast_expr_op_and_then check(ast_expr_op_and_then obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_and_then>();
-}
-
-ast_expr_op_and_then uncheck(checked::ast_expr_op_and_then obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_and_then>();
-}
-
-checked::ast_expr_op_call check(ast_expr_op_call obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_call>();
-}
-
-ast_expr_op_call uncheck(checked::ast_expr_op_call obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_call>();
-}
-
-checked::ast_expr_op_cond check(ast_expr_op_cond obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_cond>();
-}
-
-ast_expr_op_cond uncheck(checked::ast_expr_op_cond obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_cond>();
-}
-
-checked::ast_expr_op_div check(ast_expr_op_div obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_div>();
-}
-
-ast_expr_op_div uncheck(checked::ast_expr_op_div obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_div>();
-}
-
-checked::ast_expr_op_eq check(ast_expr_op_eq obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_eq>();
-}
-
-ast_expr_op_eq uncheck(checked::ast_expr_op_eq obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_eq>();
-}
-
-checked::ast_expr_op_fdiv_q check(ast_expr_op_fdiv_q obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_fdiv_q>();
-}
-
-ast_expr_op_fdiv_q uncheck(checked::ast_expr_op_fdiv_q obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_fdiv_q>();
-}
-
-checked::ast_expr_op_ge check(ast_expr_op_ge obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_ge>();
-}
-
-ast_expr_op_ge uncheck(checked::ast_expr_op_ge obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_ge>();
-}
-
-checked::ast_expr_op_gt check(ast_expr_op_gt obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_gt>();
-}
-
-ast_expr_op_gt uncheck(checked::ast_expr_op_gt obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_gt>();
-}
-
-checked::ast_expr_op_le check(ast_expr_op_le obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_le>();
-}
-
-ast_expr_op_le uncheck(checked::ast_expr_op_le obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_le>();
-}
-
-checked::ast_expr_op_lt check(ast_expr_op_lt obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_lt>();
-}
-
-ast_expr_op_lt uncheck(checked::ast_expr_op_lt obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_lt>();
-}
-
-checked::ast_expr_op_max check(ast_expr_op_max obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_max>();
-}
-
-ast_expr_op_max uncheck(checked::ast_expr_op_max obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_max>();
-}
-
-checked::ast_expr_op_member check(ast_expr_op_member obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_member>();
-}
-
-ast_expr_op_member uncheck(checked::ast_expr_op_member obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_member>();
-}
-
-checked::ast_expr_op_min check(ast_expr_op_min obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_min>();
-}
-
-ast_expr_op_min uncheck(checked::ast_expr_op_min obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_min>();
-}
-
-checked::ast_expr_op_minus check(ast_expr_op_minus obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_minus>();
-}
-
-ast_expr_op_minus uncheck(checked::ast_expr_op_minus obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_minus>();
-}
-
-checked::ast_expr_op_mul check(ast_expr_op_mul obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_mul>();
-}
-
-ast_expr_op_mul uncheck(checked::ast_expr_op_mul obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_mul>();
-}
-
-checked::ast_expr_op_or check(ast_expr_op_or obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_or>();
-}
-
-ast_expr_op_or uncheck(checked::ast_expr_op_or obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_or>();
-}
-
-checked::ast_expr_op_or_else check(ast_expr_op_or_else obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_or_else>();
-}
-
-ast_expr_op_or_else uncheck(checked::ast_expr_op_or_else obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_or_else>();
-}
-
-checked::ast_expr_op_pdiv_q check(ast_expr_op_pdiv_q obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_pdiv_q>();
-}
-
-ast_expr_op_pdiv_q uncheck(checked::ast_expr_op_pdiv_q obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_pdiv_q>();
-}
-
-checked::ast_expr_op_pdiv_r check(ast_expr_op_pdiv_r obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_pdiv_r>();
-}
-
-ast_expr_op_pdiv_r uncheck(checked::ast_expr_op_pdiv_r obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_pdiv_r>();
-}
-
-checked::ast_expr_op_select check(ast_expr_op_select obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_select>();
-}
-
-ast_expr_op_select uncheck(checked::ast_expr_op_select obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_select>();
-}
-
-checked::ast_expr_op_sub check(ast_expr_op_sub obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_sub>();
-}
-
-ast_expr_op_sub uncheck(checked::ast_expr_op_sub obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_sub>();
-}
-
-checked::ast_expr_op_zdiv_r check(ast_expr_op_zdiv_r obj) {
-       return checked::manage(obj.copy()).as<checked::ast_expr_op>().as<checked::ast_expr_op_zdiv_r>();
-}
-
-ast_expr_op_zdiv_r uncheck(checked::ast_expr_op_zdiv_r obj) {
-       return manage(obj.copy()).as<ast_expr_op>().as<ast_expr_op_zdiv_r>();
-}
-
-checked::ast_node check(ast_node obj) {
-       return checked::manage(obj.copy());
-}
-
-ast_node uncheck(checked::ast_node obj) {
-       return manage(obj.copy());
-}
-
-checked::ast_node_block check(ast_node_block obj) {
-       return checked::manage(obj.copy()).as<checked::ast_node_block>();
-}
-
-ast_node_block uncheck(checked::ast_node_block obj) {
-       return manage(obj.copy()).as<ast_node_block>();
-}
-
-checked::ast_node_for check(ast_node_for obj) {
-       return checked::manage(obj.copy()).as<checked::ast_node_for>();
-}
-
-ast_node_for uncheck(checked::ast_node_for obj) {
-       return manage(obj.copy()).as<ast_node_for>();
-}
-
-checked::ast_node_if check(ast_node_if obj) {
-       return checked::manage(obj.copy()).as<checked::ast_node_if>();
-}
-
-ast_node_if uncheck(checked::ast_node_if obj) {
-       return manage(obj.copy()).as<ast_node_if>();
-}
-
-checked::ast_node_list check(ast_node_list obj) {
-       return checked::manage(obj.copy());
-}
-
-ast_node_list uncheck(checked::ast_node_list obj) {
-       return manage(obj.copy());
-}
-
-checked::ast_node_mark check(ast_node_mark obj) {
-       return checked::manage(obj.copy()).as<checked::ast_node_mark>();
-}
-
-ast_node_mark uncheck(checked::ast_node_mark obj) {
-       return manage(obj.copy()).as<ast_node_mark>();
-}
-
-checked::ast_node_user check(ast_node_user obj) {
-       return checked::manage(obj.copy()).as<checked::ast_node_user>();
-}
-
-ast_node_user uncheck(checked::ast_node_user obj) {
-       return manage(obj.copy()).as<ast_node_user>();
-}
-
-checked::basic_map check(basic_map obj) {
-       return checked::manage(obj.copy());
-}
-
-basic_map uncheck(checked::basic_map obj) {
-       return manage(obj.copy());
-}
-
-checked::basic_set check(basic_set obj) {
-       return checked::manage(obj.copy());
-}
-
-basic_set uncheck(checked::basic_set obj) {
-       return manage(obj.copy());
-}
-
-checked::fixed_box check(fixed_box obj) {
-       return checked::manage(obj.copy());
-}
-
-fixed_box uncheck(checked::fixed_box obj) {
-       return manage(obj.copy());
-}
-
-checked::id check(id obj) {
-       return checked::manage(obj.copy());
-}
-
-id uncheck(checked::id obj) {
-       return manage(obj.copy());
-}
-
-checked::id_list check(id_list obj) {
-       return checked::manage(obj.copy());
-}
-
-id_list uncheck(checked::id_list obj) {
-       return manage(obj.copy());
-}
-
-checked::map check(map obj) {
-       return checked::manage(obj.copy());
-}
-
-map uncheck(checked::map obj) {
-       return manage(obj.copy());
-}
-
-checked::map_list check(map_list obj) {
-       return checked::manage(obj.copy());
-}
-
-map_list uncheck(checked::map_list obj) {
-       return manage(obj.copy());
-}
-
-checked::multi_aff check(multi_aff obj) {
-       return checked::manage(obj.copy());
-}
-
-multi_aff uncheck(checked::multi_aff obj) {
-       return manage(obj.copy());
-}
-
-checked::multi_id check(multi_id obj) {
-       return checked::manage(obj.copy());
-}
-
-multi_id uncheck(checked::multi_id obj) {
-       return manage(obj.copy());
-}
-
-checked::multi_pw_aff check(multi_pw_aff obj) {
-       return checked::manage(obj.copy());
-}
-
-multi_pw_aff uncheck(checked::multi_pw_aff obj) {
-       return manage(obj.copy());
-}
-
-checked::multi_union_pw_aff check(multi_union_pw_aff obj) {
-       return checked::manage(obj.copy());
-}
-
-multi_union_pw_aff uncheck(checked::multi_union_pw_aff obj) {
-       return manage(obj.copy());
-}
-
-checked::multi_val check(multi_val obj) {
-       return checked::manage(obj.copy());
-}
-
-multi_val uncheck(checked::multi_val obj) {
-       return manage(obj.copy());
-}
-
-checked::point check(point obj) {
-       return checked::manage(obj.copy());
-}
-
-point uncheck(checked::point obj) {
-       return manage(obj.copy());
-}
-
-checked::pw_aff check(pw_aff obj) {
-       return checked::manage(obj.copy());
-}
-
-pw_aff uncheck(checked::pw_aff obj) {
-       return manage(obj.copy());
-}
-
-checked::pw_aff_list check(pw_aff_list obj) {
-       return checked::manage(obj.copy());
-}
-
-pw_aff_list uncheck(checked::pw_aff_list obj) {
-       return manage(obj.copy());
-}
-
-checked::pw_multi_aff check(pw_multi_aff obj) {
-       return checked::manage(obj.copy());
-}
-
-pw_multi_aff uncheck(checked::pw_multi_aff obj) {
-       return manage(obj.copy());
-}
-
-checked::pw_multi_aff_list check(pw_multi_aff_list obj) {
-       return checked::manage(obj.copy());
-}
-
-pw_multi_aff_list uncheck(checked::pw_multi_aff_list obj) {
-       return manage(obj.copy());
-}
-
-checked::schedule check(schedule obj) {
-       return checked::manage(obj.copy());
-}
-
-schedule uncheck(checked::schedule obj) {
-       return manage(obj.copy());
-}
-
-checked::schedule_constraints check(schedule_constraints obj) {
-       return checked::manage(obj.copy());
-}
-
-schedule_constraints uncheck(checked::schedule_constraints obj) {
-       return manage(obj.copy());
-}
-
-checked::schedule_node check(schedule_node obj) {
-       return checked::manage(obj.copy());
-}
-
-schedule_node uncheck(checked::schedule_node obj) {
-       return manage(obj.copy());
-}
-
-checked::schedule_node_band check(schedule_node_band obj) {
-       return checked::manage(obj.copy()).as<checked::schedule_node_band>();
-}
-
-schedule_node_band uncheck(checked::schedule_node_band obj) {
-       return manage(obj.copy()).as<schedule_node_band>();
-}
-
-checked::schedule_node_context check(schedule_node_context obj) {
-       return checked::manage(obj.copy()).as<checked::schedule_node_context>();
-}
-
-schedule_node_context uncheck(checked::schedule_node_context obj) {
-       return manage(obj.copy()).as<schedule_node_context>();
-}
-
-checked::schedule_node_domain check(schedule_node_domain obj) {
-       return checked::manage(obj.copy()).as<checked::schedule_node_domain>();
-}
-
-schedule_node_domain uncheck(checked::schedule_node_domain obj) {
-       return manage(obj.copy()).as<schedule_node_domain>();
-}
-
-checked::schedule_node_expansion check(schedule_node_expansion obj) {
-       return checked::manage(obj.copy()).as<checked::schedule_node_expansion>();
-}
-
-schedule_node_expansion uncheck(checked::schedule_node_expansion obj) {
-       return manage(obj.copy()).as<schedule_node_expansion>();
-}
-
-checked::schedule_node_extension check(schedule_node_extension obj) {
-       return checked::manage(obj.copy()).as<checked::schedule_node_extension>();
-}
-
-schedule_node_extension uncheck(checked::schedule_node_extension obj) {
-       return manage(obj.copy()).as<schedule_node_extension>();
-}
-
-checked::schedule_node_filter check(schedule_node_filter obj) {
-       return checked::manage(obj.copy()).as<checked::schedule_node_filter>();
-}
-
-schedule_node_filter uncheck(checked::schedule_node_filter obj) {
-       return manage(obj.copy()).as<schedule_node_filter>();
-}
-
-checked::schedule_node_guard check(schedule_node_guard obj) {
-       return checked::manage(obj.copy()).as<checked::schedule_node_guard>();
-}
-
-schedule_node_guard uncheck(checked::schedule_node_guard obj) {
-       return manage(obj.copy()).as<schedule_node_guard>();
-}
-
-checked::schedule_node_leaf check(schedule_node_leaf obj) {
-       return checked::manage(obj.copy()).as<checked::schedule_node_leaf>();
-}
-
-schedule_node_leaf uncheck(checked::schedule_node_leaf obj) {
-       return manage(obj.copy()).as<schedule_node_leaf>();
-}
-
-checked::schedule_node_mark check(schedule_node_mark obj) {
-       return checked::manage(obj.copy()).as<checked::schedule_node_mark>();
-}
-
-schedule_node_mark uncheck(checked::schedule_node_mark obj) {
-       return manage(obj.copy()).as<schedule_node_mark>();
-}
-
-checked::schedule_node_sequence check(schedule_node_sequence obj) {
-       return checked::manage(obj.copy()).as<checked::schedule_node_sequence>();
-}
-
-schedule_node_sequence uncheck(checked::schedule_node_sequence obj) {
-       return manage(obj.copy()).as<schedule_node_sequence>();
-}
-
-checked::schedule_node_set check(schedule_node_set obj) {
-       return checked::manage(obj.copy()).as<checked::schedule_node_set>();
-}
-
-schedule_node_set uncheck(checked::schedule_node_set obj) {
-       return manage(obj.copy()).as<schedule_node_set>();
-}
-
-checked::set check(set obj) {
-       return checked::manage(obj.copy());
-}
-
-set uncheck(checked::set obj) {
-       return manage(obj.copy());
-}
-
-checked::set_list check(set_list obj) {
-       return checked::manage(obj.copy());
-}
-
-set_list uncheck(checked::set_list obj) {
-       return manage(obj.copy());
-}
-
-checked::space check(space obj) {
-       return checked::manage(obj.copy());
-}
-
-space uncheck(checked::space obj) {
-       return manage(obj.copy());
-}
-
-checked::union_access_info check(union_access_info obj) {
-       return checked::manage(obj.copy());
-}
-
-union_access_info uncheck(checked::union_access_info obj) {
-       return manage(obj.copy());
-}
-
-checked::union_flow check(union_flow obj) {
-       return checked::manage(obj.copy());
-}
-
-union_flow uncheck(checked::union_flow obj) {
-       return manage(obj.copy());
-}
-
-checked::union_map check(union_map obj) {
-       return checked::manage(obj.copy());
-}
-
-union_map uncheck(checked::union_map obj) {
-       return manage(obj.copy());
-}
-
-checked::union_pw_aff check(union_pw_aff obj) {
-       return checked::manage(obj.copy());
-}
-
-union_pw_aff uncheck(checked::union_pw_aff obj) {
-       return manage(obj.copy());
-}
-
-checked::union_pw_aff_list check(union_pw_aff_list obj) {
-       return checked::manage(obj.copy());
-}
-
-union_pw_aff_list uncheck(checked::union_pw_aff_list obj) {
-       return manage(obj.copy());
-}
-
-checked::union_pw_multi_aff check(union_pw_multi_aff obj) {
-       return checked::manage(obj.copy());
-}
-
-union_pw_multi_aff uncheck(checked::union_pw_multi_aff obj) {
-       return manage(obj.copy());
-}
-
-checked::union_set check(union_set obj) {
-       return checked::manage(obj.copy());
-}
-
-union_set uncheck(checked::union_set obj) {
-       return manage(obj.copy());
-}
-
-checked::union_set_list check(union_set_list obj) {
-       return checked::manage(obj.copy());
-}
-
-union_set_list uncheck(checked::union_set_list obj) {
-       return manage(obj.copy());
-}
-
-checked::val check(val obj) {
-       return checked::manage(obj.copy());
-}
-
-val uncheck(checked::val obj) {
-       return manage(obj.copy());
-}
-
-checked::val_list check(val_list obj) {
-       return checked::manage(obj.copy());
-}
-
-val_list uncheck(checked::val_list obj) {
-       return manage(obj.copy());
-}
-
-} // namespace isl
-
-#endif /* ISL_CPP_CHECKED_CONVERSION */
diff --git a/polly/lib/External/isl/include/isl/cpp-checked.h b/polly/lib/External/isl/include/isl/cpp-checked.h
deleted file mode 100644 (file)
index bde60ad..0000000
+++ /dev/null
@@ -1,19815 +0,0 @@
-/// These are automatically generated checked C++ bindings for isl.
-///
-/// isl is a library for computing with integer sets and maps described by
-/// Presburger formulas. On top of this, isl provides various tools for
-/// polyhedral compilation, ranging from dependence analysis over scheduling
-/// to AST generation.
-
-#ifndef ISL_CPP_CHECKED
-#define ISL_CPP_CHECKED
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <functional>
-#include <memory>
-#include <ostream>
-#include <string>
-#include <type_traits>
-
-namespace isl {
-namespace checked {
-
-#define ISLPP_STRINGIZE_(X) #X
-#define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
-
-#define ISLPP_ASSERT(test, message)                          \
-  do {                                                       \
-    if (test)                                                \
-      break;                                                 \
-    fputs("Assertion \"" #test "\" failed at " __FILE__      \
-      ":" ISLPP_STRINGIZE(__LINE__) "\n  " message "\n",     \
-      stderr);                                               \
-    abort();                                                 \
-  } while (0)
-
-/* Class used to check that isl::checked::boolean,
- * isl::checked::stat and isl::checked::size values are checked for errors.
- */
-struct checker {
-       bool checked = false;
-       ~checker() {
-               ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
-       }
-};
-
-class boolean {
-private:
-  mutable std::shared_ptr<checker> check = std::make_shared<checker>();
-  isl_bool val;
-
-  friend boolean manage(isl_bool val);
-  boolean(isl_bool val): val(val) {}
-public:
-  static boolean error() {
-    return boolean(isl_bool_error);
-  }
-  boolean()
-      : val(isl_bool_error) {}
-
-  /* implicit */ boolean(bool val)
-      : val(val ? isl_bool_true : isl_bool_false) {}
-
-  isl_bool release() {
-    auto tmp = val;
-    val = isl_bool_error;
-    check->checked = true;
-    return tmp;
-  }
-
-  bool is_error() const { check->checked = true; return val == isl_bool_error; }
-  bool is_false() const { check->checked = true; return val == isl_bool_false; }
-  bool is_true() const { check->checked = true; return val == isl_bool_true; }
-
-  explicit operator bool() const {
-    ISLPP_ASSERT(check->checked, "IMPLEMENTATION ERROR: Unchecked error state");
-    ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
-    return is_true();
-  }
-
-  boolean negate() {
-    if (val == isl_bool_true)
-      val = isl_bool_false;
-    else if (val == isl_bool_false)
-      val = isl_bool_true;
-    return *this;
-  }
-
-  boolean operator!() const {
-    return boolean(*this).negate();
-  }
-};
-
-inline boolean manage(isl_bool val) {
-  return boolean(val);
-}
-
-class ctx {
-  isl_ctx *ptr;
-public:
-  /* implicit */ ctx(isl_ctx *ctx)
-      : ptr(ctx) {}
-  isl_ctx *release() {
-    auto tmp = ptr;
-    ptr = nullptr;
-    return tmp;
-  }
-  isl_ctx *get() {
-    return ptr;
-  }
-};
-
-/* Class encapsulating an isl_stat value.
- */
-class stat {
-private:
-       mutable std::shared_ptr<checker> check = std::make_shared<checker>();
-       isl_stat val;
-
-       friend stat manage(isl_stat val);
-       stat(isl_stat val) : val(val) {}
-public:
-       static stat ok() {
-               return stat(isl_stat_ok);
-       }
-       static stat error() {
-               return stat(isl_stat_error);
-       }
-       stat() : val(isl_stat_error) {}
-
-       isl_stat release() {
-               check->checked = true;
-               return val;
-       }
-
-       bool is_error() const {
-               check->checked = true;
-               return val == isl_stat_error;
-       }
-       bool is_ok() const {
-               check->checked = true;
-               return val == isl_stat_ok;
-       }
-};
-
-inline stat manage(isl_stat val)
-{
-       return stat(val);
-}
-
-/* Class encapsulating an isl_size value.
- */
-class size {
-private:
-       mutable std::shared_ptr<checker> check = std::make_shared<checker>();
-       isl_size val;
-
-       friend size manage(isl_size val);
-       size(isl_size val) : val(val) {}
-public:
-       size() : val(isl_size_error) {}
-
-       isl_size release() {
-               auto tmp = val;
-               val = isl_size_error;
-               check->checked = true;
-               return tmp;
-       }
-
-       bool is_error() const {
-               check->checked = true;
-               return val == isl_size_error;
-       }
-
-       explicit operator unsigned() const {
-               ISLPP_ASSERT(check->checked,
-                           "IMPLEMENTATION ERROR: Unchecked error state");
-               ISLPP_ASSERT(!is_error(),
-                           "IMPLEMENTATION ERROR: Unhandled error state");
-               return val;
-       }
-};
-
-inline size manage(isl_size val)
-{
-       return size(val);
-}
-
-}
-} // namespace isl
-
-#include <isl/id.h>
-#include <isl/space.h>
-#include <isl/val.h>
-#include <isl/aff.h>
-#include <isl/set.h>
-#include <isl/map.h>
-#include <isl/ilp.h>
-#include <isl/union_set.h>
-#include <isl/union_map.h>
-#include <isl/flow.h>
-#include <isl/schedule.h>
-#include <isl/schedule_node.h>
-#include <isl/ast_build.h>
-#include <isl/fixed_box.h>
-
-namespace isl {
-
-namespace checked {
-
-// forward declarations
-class aff;
-class aff_list;
-class ast_build;
-class ast_expr;
-class ast_expr_id;
-class ast_expr_int;
-class ast_expr_op;
-class ast_expr_op_access;
-class ast_expr_op_add;
-class ast_expr_op_address_of;
-class ast_expr_op_and;
-class ast_expr_op_and_then;
-class ast_expr_op_call;
-class ast_expr_op_cond;
-class ast_expr_op_div;
-class ast_expr_op_eq;
-class ast_expr_op_fdiv_q;
-class ast_expr_op_ge;
-class ast_expr_op_gt;
-class ast_expr_op_le;
-class ast_expr_op_lt;
-class ast_expr_op_max;
-class ast_expr_op_member;
-class ast_expr_op_min;
-class ast_expr_op_minus;
-class ast_expr_op_mul;
-class ast_expr_op_or;
-class ast_expr_op_or_else;
-class ast_expr_op_pdiv_q;
-class ast_expr_op_pdiv_r;
-class ast_expr_op_select;
-class ast_expr_op_sub;
-class ast_expr_op_zdiv_r;
-class ast_node;
-class ast_node_block;
-class ast_node_for;
-class ast_node_if;
-class ast_node_list;
-class ast_node_mark;
-class ast_node_user;
-class basic_map;
-class basic_set;
-class fixed_box;
-class id;
-class id_list;
-class map;
-class map_list;
-class multi_aff;
-class multi_id;
-class multi_pw_aff;
-class multi_union_pw_aff;
-class multi_val;
-class point;
-class pw_aff;
-class pw_aff_list;
-class pw_multi_aff;
-class pw_multi_aff_list;
-class schedule;
-class schedule_constraints;
-class schedule_node;
-class schedule_node_band;
-class schedule_node_context;
-class schedule_node_domain;
-class schedule_node_expansion;
-class schedule_node_extension;
-class schedule_node_filter;
-class schedule_node_guard;
-class schedule_node_leaf;
-class schedule_node_mark;
-class schedule_node_sequence;
-class schedule_node_set;
-class set;
-class set_list;
-class space;
-class union_access_info;
-class union_flow;
-class union_map;
-class union_pw_aff;
-class union_pw_aff_list;
-class union_pw_multi_aff;
-class union_set;
-class union_set_list;
-class val;
-class val_list;
-
-// declarations for isl::aff
-inline aff manage(__isl_take isl_aff *ptr);
-inline aff manage_copy(__isl_keep isl_aff *ptr);
-
-class aff {
-  friend inline aff manage(__isl_take isl_aff *ptr);
-  friend inline aff manage_copy(__isl_keep isl_aff *ptr);
-
-protected:
-  isl_aff *ptr = nullptr;
-
-  inline explicit aff(__isl_take isl_aff *ptr);
-
-public:
-  inline /* implicit */ aff();
-  inline /* implicit */ aff(const aff &obj);
-  inline explicit aff(isl::checked::ctx ctx, const std::string &str);
-  inline aff &operator=(aff obj);
-  inline ~aff();
-  inline __isl_give isl_aff *copy() const &;
-  inline __isl_give isl_aff *copy() && = delete;
-  inline __isl_keep isl_aff *get() const;
-  inline __isl_give isl_aff *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::aff add(isl::checked::aff aff2) const;
-  inline isl::checked::multi_aff add(const isl::checked::multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_aff add(const isl::checked::pw_aff &pwaff2) const;
-  inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_aff add(const isl::checked::union_pw_aff &upa2) const;
-  inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::aff add_constant(isl::checked::val v) const;
-  inline isl::checked::aff add_constant(long v) const;
-  inline isl::checked::multi_aff add_constant(const isl::checked::multi_val &mv) const;
-  inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::aff as_aff() const;
-  inline isl::checked::map as_map() const;
-  inline isl::checked::multi_aff as_multi_aff() const;
-  inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::checked::set as_set() const;
-  inline isl::checked::union_map as_union_map() const;
-  inline isl::checked::aff at(int pos) const;
-  inline isl::checked::basic_set bind(isl::checked::id id) const;
-  inline isl::checked::basic_set bind(const std::string &id) const;
-  inline isl::checked::basic_set bind(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::pw_aff bind_domain(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::pw_aff bind_domain_wrapped_domain(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::aff ceil() const;
-  inline isl::checked::pw_aff coalesce() const;
-  inline isl::checked::pw_aff cond(const isl::checked::pw_aff &pwaff_true, const isl::checked::pw_aff &pwaff_false) const;
-  inline isl::checked::multi_val constant_multi_val() const;
-  inline isl::checked::val constant_val() const;
-  inline isl::checked::val get_constant_val() const;
-  inline isl::checked::aff div(isl::checked::aff aff2) const;
-  inline isl::checked::pw_aff div(const isl::checked::pw_aff &pa2) const;
-  inline isl::checked::set domain() const;
-  inline isl::checked::set eq_set(isl::checked::aff aff2) const;
-  inline isl::checked::set eq_set(const isl::checked::pw_aff &pwaff2) const;
-  inline isl::checked::val eval(isl::checked::point pnt) const;
-  inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
-  inline isl::checked::multi_aff flat_range_product(const isl::checked::multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::aff floor() const;
-  inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
-  inline isl::checked::set ge_set(isl::checked::aff aff2) const;
-  inline isl::checked::set ge_set(const isl::checked::pw_aff &pwaff2) const;
-  inline isl::checked::aff gist(isl::checked::set context) const;
-  inline isl::checked::union_pw_aff gist(const isl::checked::union_set &context) const;
-  inline isl::checked::aff gist(const isl::checked::basic_set &context) const;
-  inline isl::checked::aff gist(const isl::checked::point &context) const;
-  inline isl::checked::set gt_set(isl::checked::aff aff2) const;
-  inline isl::checked::set gt_set(const isl::checked::pw_aff &pwaff2) const;
-  inline boolean has_range_tuple_id() const;
-  inline isl::checked::multi_aff identity() const;
-  inline isl::checked::pw_aff insert_domain(const isl::checked::space &domain) const;
-  inline isl::checked::pw_aff intersect_domain(const isl::checked::set &set) const;
-  inline isl::checked::union_pw_aff intersect_domain(const isl::checked::space &space) const;
-  inline isl::checked::union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::union_pw_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
-  inline isl::checked::pw_aff intersect_params(const isl::checked::set &set) const;
-  inline boolean involves_locals() const;
-  inline boolean involves_nan() const;
-  inline boolean involves_param(const isl::checked::id &id) const;
-  inline boolean involves_param(const std::string &id) const;
-  inline boolean involves_param(const isl::checked::id_list &list) const;
-  inline boolean is_cst() const;
-  inline boolean isa_aff() const;
-  inline boolean isa_multi_aff() const;
-  inline boolean isa_pw_multi_aff() const;
-  inline isl::checked::set le_set(isl::checked::aff aff2) const;
-  inline isl::checked::set le_set(const isl::checked::pw_aff &pwaff2) const;
-  inline isl::checked::aff_list list() const;
-  inline isl::checked::set lt_set(isl::checked::aff aff2) const;
-  inline isl::checked::set lt_set(const isl::checked::pw_aff &pwaff2) const;
-  inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::pw_aff max(const isl::checked::pw_aff &pwaff2) const;
-  inline isl::checked::multi_val max_multi_val() const;
-  inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::pw_aff min(const isl::checked::pw_aff &pwaff2) const;
-  inline isl::checked::multi_val min_multi_val() const;
-  inline isl::checked::aff mod(isl::checked::val mod) const;
-  inline isl::checked::aff mod(long mod) const;
-  inline isl::checked::aff mul(isl::checked::aff aff2) const;
-  inline isl::checked::pw_aff mul(const isl::checked::pw_aff &pwaff2) const;
-  inline class size n_piece() const;
-  inline isl::checked::set ne_set(isl::checked::aff aff2) const;
-  inline isl::checked::set ne_set(const isl::checked::pw_aff &pwaff2) const;
-  inline isl::checked::aff neg() const;
-  inline boolean plain_is_empty() const;
-  inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::multi_aff product(const isl::checked::multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::aff pullback(isl::checked::multi_aff ma) const;
-  inline isl::checked::pw_aff pullback(const isl::checked::multi_pw_aff &mpa) const;
-  inline isl::checked::pw_aff pullback(const isl::checked::pw_multi_aff &pma) const;
-  inline isl::checked::union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
-  inline isl::checked::aff pullback(const isl::checked::aff &ma) const;
-  inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::checked::pw_multi_aff range_factor_domain() const;
-  inline isl::checked::pw_multi_aff range_factor_range() const;
-  inline isl::checked::multi_aff range_product(const isl::checked::multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::id range_tuple_id() const;
-  inline isl::checked::multi_aff reset_range_tuple_id() const;
-  inline isl::checked::aff scale(isl::checked::val v) const;
-  inline isl::checked::aff scale(long v) const;
-  inline isl::checked::multi_aff scale(const isl::checked::multi_val &mv) const;
-  inline isl::checked::aff scale_down(isl::checked::val v) const;
-  inline isl::checked::aff scale_down(long v) const;
-  inline isl::checked::multi_aff scale_down(const isl::checked::multi_val &mv) const;
-  inline isl::checked::multi_aff set_at(int pos, const isl::checked::aff &el) const;
-  inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
-  inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
-  inline isl::checked::multi_aff set_range_tuple(const isl::checked::id &id) const;
-  inline isl::checked::multi_aff set_range_tuple(const std::string &id) const;
-  inline class size size() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::aff sub(isl::checked::aff aff2) const;
-  inline isl::checked::multi_aff sub(const isl::checked::multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_aff sub(const isl::checked::pw_aff &pwaff2) const;
-  inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_aff sub(const isl::checked::union_pw_aff &upa2) const;
-  inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_aff subtract_domain(const isl::checked::set &set) const;
-  inline isl::checked::union_pw_aff subtract_domain(const isl::checked::space &space) const;
-  inline isl::checked::union_pw_aff subtract_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::pw_aff tdiv_q(const isl::checked::pw_aff &pa2) const;
-  inline isl::checked::pw_aff tdiv_r(const isl::checked::pw_aff &pa2) const;
-  inline isl::checked::aff_list to_list() const;
-  inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
-  inline isl::checked::multi_union_pw_aff to_multi_union_pw_aff() const;
-  inline isl::checked::pw_multi_aff to_pw_multi_aff() const;
-  inline isl::checked::union_pw_aff to_union_pw_aff() const;
-  inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
-  inline isl::checked::aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
-  inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
-  inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
-  inline isl::checked::pw_aff union_add(const isl::checked::pw_aff &pwaff2) const;
-  inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_aff union_add(const isl::checked::union_pw_aff &upa2) const;
-  inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
-  static inline isl::checked::aff zero_on_domain(isl::checked::space space);
-};
-
-// declarations for isl::aff_list
-inline aff_list manage(__isl_take isl_aff_list *ptr);
-inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
-
-class aff_list {
-  friend inline aff_list manage(__isl_take isl_aff_list *ptr);
-  friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
-
-protected:
-  isl_aff_list *ptr = nullptr;
-
-  inline explicit aff_list(__isl_take isl_aff_list *ptr);
-
-public:
-  inline /* implicit */ aff_list();
-  inline /* implicit */ aff_list(const aff_list &obj);
-  inline explicit aff_list(isl::checked::ctx ctx, int n);
-  inline explicit aff_list(isl::checked::aff el);
-  inline explicit aff_list(isl::checked::ctx ctx, const std::string &str);
-  inline aff_list &operator=(aff_list obj);
-  inline ~aff_list();
-  inline __isl_give isl_aff_list *copy() const &;
-  inline __isl_give isl_aff_list *copy() && = delete;
-  inline __isl_keep isl_aff_list *get() const;
-  inline __isl_give isl_aff_list *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::aff_list add(isl::checked::aff el) const;
-  inline isl::checked::aff at(int index) const;
-  inline isl::checked::aff get_at(int index) const;
-  inline isl::checked::aff_list clear() const;
-  inline isl::checked::aff_list concat(isl::checked::aff_list list2) const;
-  inline isl::checked::aff_list drop(unsigned int first, unsigned int n) const;
-  inline stat foreach(const std::function<stat(isl::checked::aff)> &fn) const;
-  inline isl::checked::aff_list insert(unsigned int pos, isl::checked::aff el) const;
-  inline class size size() const;
-};
-
-// declarations for isl::ast_build
-inline ast_build manage(__isl_take isl_ast_build *ptr);
-inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
-
-class ast_build {
-  friend inline ast_build manage(__isl_take isl_ast_build *ptr);
-  friend inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
-
-protected:
-  isl_ast_build *ptr = nullptr;
-
-  inline explicit ast_build(__isl_take isl_ast_build *ptr);
-
-public:
-  inline /* implicit */ ast_build();
-  inline /* implicit */ ast_build(const ast_build &obj);
-  inline explicit ast_build(isl::checked::ctx ctx);
-  inline ast_build &operator=(ast_build obj);
-  inline ~ast_build();
-  inline __isl_give isl_ast_build *copy() const &;
-  inline __isl_give isl_ast_build *copy() && = delete;
-  inline __isl_keep isl_ast_build *get() const;
-  inline __isl_give isl_ast_build *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-private:
-  inline ast_build &copy_callbacks(const ast_build &obj);
-  struct at_each_domain_data {
-    std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> func;
-  };
-  std::shared_ptr<at_each_domain_data> at_each_domain_data;
-  static inline isl_ast_node *at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2);
-  inline void set_at_each_domain_data(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn);
-public:
-  inline isl::checked::ast_build set_at_each_domain(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn) const;
-  inline isl::checked::ast_expr access_from(isl::checked::multi_pw_aff mpa) const;
-  inline isl::checked::ast_expr access_from(isl::checked::pw_multi_aff pma) const;
-  inline isl::checked::ast_expr call_from(isl::checked::multi_pw_aff mpa) const;
-  inline isl::checked::ast_expr call_from(isl::checked::pw_multi_aff pma) const;
-  inline isl::checked::ast_expr expr_from(isl::checked::pw_aff pa) const;
-  inline isl::checked::ast_expr expr_from(isl::checked::set set) const;
-  static inline isl::checked::ast_build from_context(isl::checked::set set);
-  inline isl::checked::ast_node node_from(isl::checked::schedule schedule) const;
-  inline isl::checked::ast_node node_from_schedule_map(isl::checked::union_map schedule) const;
-  inline isl::checked::union_map schedule() const;
-  inline isl::checked::union_map get_schedule() const;
-};
-
-// declarations for isl::ast_expr
-inline ast_expr manage(__isl_take isl_ast_expr *ptr);
-inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
-
-class ast_expr {
-  friend inline ast_expr manage(__isl_take isl_ast_expr *ptr);
-  friend inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
-
-protected:
-  isl_ast_expr *ptr = nullptr;
-
-  inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr();
-  inline /* implicit */ ast_expr(const ast_expr &obj);
-  inline ast_expr &operator=(ast_expr obj);
-  inline ~ast_expr();
-  inline __isl_give isl_ast_expr *copy() const &;
-  inline __isl_give isl_ast_expr *copy() && = delete;
-  inline __isl_keep isl_ast_expr *get() const;
-  inline __isl_give isl_ast_expr *release();
-  inline bool is_null() const;
-private:
-  template <typename T,
-          typename = typename std::enable_if<std::is_same<
-                  const decltype(isl_ast_expr_get_type(NULL)),
-                  const T>::value>::type>
-  inline boolean isa_type(T subtype) const;
-public:
-  template <class T> inline boolean isa() const;
-  template <class T> inline T as() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline std::string to_C_str() const;
-};
-
-// declarations for isl::ast_expr_id
-
-class ast_expr_id : public ast_expr {
-  template <class T>
-  friend boolean ast_expr::isa() const;
-  friend ast_expr_id ast_expr::as<ast_expr_id>() const;
-  static const auto type = isl_ast_expr_id;
-
-protected:
-  inline explicit ast_expr_id(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_id();
-  inline /* implicit */ ast_expr_id(const ast_expr_id &obj);
-  inline ast_expr_id &operator=(ast_expr_id obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::id id() const;
-  inline isl::checked::id get_id() const;
-};
-
-// declarations for isl::ast_expr_int
-
-class ast_expr_int : public ast_expr {
-  template <class T>
-  friend boolean ast_expr::isa() const;
-  friend ast_expr_int ast_expr::as<ast_expr_int>() const;
-  static const auto type = isl_ast_expr_int;
-
-protected:
-  inline explicit ast_expr_int(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_int();
-  inline /* implicit */ ast_expr_int(const ast_expr_int &obj);
-  inline ast_expr_int &operator=(ast_expr_int obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::val val() const;
-  inline isl::checked::val get_val() const;
-};
-
-// declarations for isl::ast_expr_op
-
-class ast_expr_op : public ast_expr {
-  template <class T>
-  friend boolean ast_expr::isa() const;
-  friend ast_expr_op ast_expr::as<ast_expr_op>() const;
-  static const auto type = isl_ast_expr_op;
-
-protected:
-  inline explicit ast_expr_op(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op();
-  inline /* implicit */ ast_expr_op(const ast_expr_op &obj);
-  inline ast_expr_op &operator=(ast_expr_op obj);
-private:
-  template <typename T,
-          typename = typename std::enable_if<std::is_same<
-                  const decltype(isl_ast_expr_op_get_type(NULL)),
-                  const T>::value>::type>
-  inline boolean isa_type(T subtype) const;
-public:
-  template <class T> inline boolean isa() const;
-  template <class T> inline T as() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::ast_expr arg(int pos) const;
-  inline isl::checked::ast_expr get_arg(int pos) const;
-  inline class size n_arg() const;
-  inline class size get_n_arg() const;
-};
-
-// declarations for isl::ast_expr_op_access
-
-class ast_expr_op_access : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_access ast_expr_op::as<ast_expr_op_access>() const;
-  static const auto type = isl_ast_expr_op_access;
-
-protected:
-  inline explicit ast_expr_op_access(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_access();
-  inline /* implicit */ ast_expr_op_access(const ast_expr_op_access &obj);
-  inline ast_expr_op_access &operator=(ast_expr_op_access obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_add
-
-class ast_expr_op_add : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_add ast_expr_op::as<ast_expr_op_add>() const;
-  static const auto type = isl_ast_expr_op_add;
-
-protected:
-  inline explicit ast_expr_op_add(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_add();
-  inline /* implicit */ ast_expr_op_add(const ast_expr_op_add &obj);
-  inline ast_expr_op_add &operator=(ast_expr_op_add obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_address_of
-
-class ast_expr_op_address_of : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_address_of ast_expr_op::as<ast_expr_op_address_of>() const;
-  static const auto type = isl_ast_expr_op_address_of;
-
-protected:
-  inline explicit ast_expr_op_address_of(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_address_of();
-  inline /* implicit */ ast_expr_op_address_of(const ast_expr_op_address_of &obj);
-  inline ast_expr_op_address_of &operator=(ast_expr_op_address_of obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_and
-
-class ast_expr_op_and : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_and ast_expr_op::as<ast_expr_op_and>() const;
-  static const auto type = isl_ast_expr_op_and;
-
-protected:
-  inline explicit ast_expr_op_and(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_and();
-  inline /* implicit */ ast_expr_op_and(const ast_expr_op_and &obj);
-  inline ast_expr_op_and &operator=(ast_expr_op_and obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_and_then
-
-class ast_expr_op_and_then : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_and_then ast_expr_op::as<ast_expr_op_and_then>() const;
-  static const auto type = isl_ast_expr_op_and_then;
-
-protected:
-  inline explicit ast_expr_op_and_then(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_and_then();
-  inline /* implicit */ ast_expr_op_and_then(const ast_expr_op_and_then &obj);
-  inline ast_expr_op_and_then &operator=(ast_expr_op_and_then obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_call
-
-class ast_expr_op_call : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_call ast_expr_op::as<ast_expr_op_call>() const;
-  static const auto type = isl_ast_expr_op_call;
-
-protected:
-  inline explicit ast_expr_op_call(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_call();
-  inline /* implicit */ ast_expr_op_call(const ast_expr_op_call &obj);
-  inline ast_expr_op_call &operator=(ast_expr_op_call obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_cond
-
-class ast_expr_op_cond : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_cond ast_expr_op::as<ast_expr_op_cond>() const;
-  static const auto type = isl_ast_expr_op_cond;
-
-protected:
-  inline explicit ast_expr_op_cond(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_cond();
-  inline /* implicit */ ast_expr_op_cond(const ast_expr_op_cond &obj);
-  inline ast_expr_op_cond &operator=(ast_expr_op_cond obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_div
-
-class ast_expr_op_div : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_div ast_expr_op::as<ast_expr_op_div>() const;
-  static const auto type = isl_ast_expr_op_div;
-
-protected:
-  inline explicit ast_expr_op_div(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_div();
-  inline /* implicit */ ast_expr_op_div(const ast_expr_op_div &obj);
-  inline ast_expr_op_div &operator=(ast_expr_op_div obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_eq
-
-class ast_expr_op_eq : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_eq ast_expr_op::as<ast_expr_op_eq>() const;
-  static const auto type = isl_ast_expr_op_eq;
-
-protected:
-  inline explicit ast_expr_op_eq(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_eq();
-  inline /* implicit */ ast_expr_op_eq(const ast_expr_op_eq &obj);
-  inline ast_expr_op_eq &operator=(ast_expr_op_eq obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_fdiv_q
-
-class ast_expr_op_fdiv_q : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_fdiv_q ast_expr_op::as<ast_expr_op_fdiv_q>() const;
-  static const auto type = isl_ast_expr_op_fdiv_q;
-
-protected:
-  inline explicit ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_fdiv_q();
-  inline /* implicit */ ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj);
-  inline ast_expr_op_fdiv_q &operator=(ast_expr_op_fdiv_q obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_ge
-
-class ast_expr_op_ge : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_ge ast_expr_op::as<ast_expr_op_ge>() const;
-  static const auto type = isl_ast_expr_op_ge;
-
-protected:
-  inline explicit ast_expr_op_ge(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_ge();
-  inline /* implicit */ ast_expr_op_ge(const ast_expr_op_ge &obj);
-  inline ast_expr_op_ge &operator=(ast_expr_op_ge obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_gt
-
-class ast_expr_op_gt : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_gt ast_expr_op::as<ast_expr_op_gt>() const;
-  static const auto type = isl_ast_expr_op_gt;
-
-protected:
-  inline explicit ast_expr_op_gt(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_gt();
-  inline /* implicit */ ast_expr_op_gt(const ast_expr_op_gt &obj);
-  inline ast_expr_op_gt &operator=(ast_expr_op_gt obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_le
-
-class ast_expr_op_le : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_le ast_expr_op::as<ast_expr_op_le>() const;
-  static const auto type = isl_ast_expr_op_le;
-
-protected:
-  inline explicit ast_expr_op_le(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_le();
-  inline /* implicit */ ast_expr_op_le(const ast_expr_op_le &obj);
-  inline ast_expr_op_le &operator=(ast_expr_op_le obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_lt
-
-class ast_expr_op_lt : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_lt ast_expr_op::as<ast_expr_op_lt>() const;
-  static const auto type = isl_ast_expr_op_lt;
-
-protected:
-  inline explicit ast_expr_op_lt(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_lt();
-  inline /* implicit */ ast_expr_op_lt(const ast_expr_op_lt &obj);
-  inline ast_expr_op_lt &operator=(ast_expr_op_lt obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_max
-
-class ast_expr_op_max : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_max ast_expr_op::as<ast_expr_op_max>() const;
-  static const auto type = isl_ast_expr_op_max;
-
-protected:
-  inline explicit ast_expr_op_max(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_max();
-  inline /* implicit */ ast_expr_op_max(const ast_expr_op_max &obj);
-  inline ast_expr_op_max &operator=(ast_expr_op_max obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_member
-
-class ast_expr_op_member : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_member ast_expr_op::as<ast_expr_op_member>() const;
-  static const auto type = isl_ast_expr_op_member;
-
-protected:
-  inline explicit ast_expr_op_member(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_member();
-  inline /* implicit */ ast_expr_op_member(const ast_expr_op_member &obj);
-  inline ast_expr_op_member &operator=(ast_expr_op_member obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_min
-
-class ast_expr_op_min : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_min ast_expr_op::as<ast_expr_op_min>() const;
-  static const auto type = isl_ast_expr_op_min;
-
-protected:
-  inline explicit ast_expr_op_min(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_min();
-  inline /* implicit */ ast_expr_op_min(const ast_expr_op_min &obj);
-  inline ast_expr_op_min &operator=(ast_expr_op_min obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_minus
-
-class ast_expr_op_minus : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_minus ast_expr_op::as<ast_expr_op_minus>() const;
-  static const auto type = isl_ast_expr_op_minus;
-
-protected:
-  inline explicit ast_expr_op_minus(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_minus();
-  inline /* implicit */ ast_expr_op_minus(const ast_expr_op_minus &obj);
-  inline ast_expr_op_minus &operator=(ast_expr_op_minus obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_mul
-
-class ast_expr_op_mul : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_mul ast_expr_op::as<ast_expr_op_mul>() const;
-  static const auto type = isl_ast_expr_op_mul;
-
-protected:
-  inline explicit ast_expr_op_mul(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_mul();
-  inline /* implicit */ ast_expr_op_mul(const ast_expr_op_mul &obj);
-  inline ast_expr_op_mul &operator=(ast_expr_op_mul obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_or
-
-class ast_expr_op_or : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_or ast_expr_op::as<ast_expr_op_or>() const;
-  static const auto type = isl_ast_expr_op_or;
-
-protected:
-  inline explicit ast_expr_op_or(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_or();
-  inline /* implicit */ ast_expr_op_or(const ast_expr_op_or &obj);
-  inline ast_expr_op_or &operator=(ast_expr_op_or obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_or_else
-
-class ast_expr_op_or_else : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_or_else ast_expr_op::as<ast_expr_op_or_else>() const;
-  static const auto type = isl_ast_expr_op_or_else;
-
-protected:
-  inline explicit ast_expr_op_or_else(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_or_else();
-  inline /* implicit */ ast_expr_op_or_else(const ast_expr_op_or_else &obj);
-  inline ast_expr_op_or_else &operator=(ast_expr_op_or_else obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_pdiv_q
-
-class ast_expr_op_pdiv_q : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_pdiv_q ast_expr_op::as<ast_expr_op_pdiv_q>() const;
-  static const auto type = isl_ast_expr_op_pdiv_q;
-
-protected:
-  inline explicit ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_pdiv_q();
-  inline /* implicit */ ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj);
-  inline ast_expr_op_pdiv_q &operator=(ast_expr_op_pdiv_q obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_pdiv_r
-
-class ast_expr_op_pdiv_r : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_pdiv_r ast_expr_op::as<ast_expr_op_pdiv_r>() const;
-  static const auto type = isl_ast_expr_op_pdiv_r;
-
-protected:
-  inline explicit ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_pdiv_r();
-  inline /* implicit */ ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj);
-  inline ast_expr_op_pdiv_r &operator=(ast_expr_op_pdiv_r obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_select
-
-class ast_expr_op_select : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_select ast_expr_op::as<ast_expr_op_select>() const;
-  static const auto type = isl_ast_expr_op_select;
-
-protected:
-  inline explicit ast_expr_op_select(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_select();
-  inline /* implicit */ ast_expr_op_select(const ast_expr_op_select &obj);
-  inline ast_expr_op_select &operator=(ast_expr_op_select obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_sub
-
-class ast_expr_op_sub : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_sub ast_expr_op::as<ast_expr_op_sub>() const;
-  static const auto type = isl_ast_expr_op_sub;
-
-protected:
-  inline explicit ast_expr_op_sub(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_sub();
-  inline /* implicit */ ast_expr_op_sub(const ast_expr_op_sub &obj);
-  inline ast_expr_op_sub &operator=(ast_expr_op_sub obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_zdiv_r
-
-class ast_expr_op_zdiv_r : public ast_expr_op {
-  template <class T>
-  friend boolean ast_expr_op::isa() const;
-  friend ast_expr_op_zdiv_r ast_expr_op::as<ast_expr_op_zdiv_r>() const;
-  static const auto type = isl_ast_expr_op_zdiv_r;
-
-protected:
-  inline explicit ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_zdiv_r();
-  inline /* implicit */ ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj);
-  inline ast_expr_op_zdiv_r &operator=(ast_expr_op_zdiv_r obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_node
-inline ast_node manage(__isl_take isl_ast_node *ptr);
-inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
-
-class ast_node {
-  friend inline ast_node manage(__isl_take isl_ast_node *ptr);
-  friend inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
-
-protected:
-  isl_ast_node *ptr = nullptr;
-
-  inline explicit ast_node(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node();
-  inline /* implicit */ ast_node(const ast_node &obj);
-  inline ast_node &operator=(ast_node obj);
-  inline ~ast_node();
-  inline __isl_give isl_ast_node *copy() const &;
-  inline __isl_give isl_ast_node *copy() && = delete;
-  inline __isl_keep isl_ast_node *get() const;
-  inline __isl_give isl_ast_node *release();
-  inline bool is_null() const;
-private:
-  template <typename T,
-          typename = typename std::enable_if<std::is_same<
-                  const decltype(isl_ast_node_get_type(NULL)),
-                  const T>::value>::type>
-  inline boolean isa_type(T subtype) const;
-public:
-  template <class T> inline boolean isa() const;
-  template <class T> inline T as() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline std::string to_C_str() const;
-  inline isl::checked::ast_node_list to_list() const;
-};
-
-// declarations for isl::ast_node_block
-
-class ast_node_block : public ast_node {
-  template <class T>
-  friend boolean ast_node::isa() const;
-  friend ast_node_block ast_node::as<ast_node_block>() const;
-  static const auto type = isl_ast_node_block;
-
-protected:
-  inline explicit ast_node_block(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node_block();
-  inline /* implicit */ ast_node_block(const ast_node_block &obj);
-  inline ast_node_block &operator=(ast_node_block obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::ast_node_list children() const;
-  inline isl::checked::ast_node_list get_children() const;
-};
-
-// declarations for isl::ast_node_for
-
-class ast_node_for : public ast_node {
-  template <class T>
-  friend boolean ast_node::isa() const;
-  friend ast_node_for ast_node::as<ast_node_for>() const;
-  static const auto type = isl_ast_node_for;
-
-protected:
-  inline explicit ast_node_for(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node_for();
-  inline /* implicit */ ast_node_for(const ast_node_for &obj);
-  inline ast_node_for &operator=(ast_node_for obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::ast_node body() const;
-  inline isl::checked::ast_node get_body() const;
-  inline isl::checked::ast_expr cond() const;
-  inline isl::checked::ast_expr get_cond() const;
-  inline isl::checked::ast_expr inc() const;
-  inline isl::checked::ast_expr get_inc() const;
-  inline isl::checked::ast_expr init() const;
-  inline isl::checked::ast_expr get_init() const;
-  inline boolean is_degenerate() const;
-  inline isl::checked::ast_expr iterator() const;
-  inline isl::checked::ast_expr get_iterator() const;
-};
-
-// declarations for isl::ast_node_if
-
-class ast_node_if : public ast_node {
-  template <class T>
-  friend boolean ast_node::isa() const;
-  friend ast_node_if ast_node::as<ast_node_if>() const;
-  static const auto type = isl_ast_node_if;
-
-protected:
-  inline explicit ast_node_if(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node_if();
-  inline /* implicit */ ast_node_if(const ast_node_if &obj);
-  inline ast_node_if &operator=(ast_node_if obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::ast_expr cond() const;
-  inline isl::checked::ast_expr get_cond() const;
-  inline isl::checked::ast_node else_node() const;
-  inline isl::checked::ast_node get_else_node() const;
-  inline boolean has_else_node() const;
-  inline isl::checked::ast_node then_node() const;
-  inline isl::checked::ast_node get_then_node() const;
-};
-
-// declarations for isl::ast_node_list
-inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
-inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
-
-class ast_node_list {
-  friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
-  friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
-
-protected:
-  isl_ast_node_list *ptr = nullptr;
-
-  inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
-
-public:
-  inline /* implicit */ ast_node_list();
-  inline /* implicit */ ast_node_list(const ast_node_list &obj);
-  inline explicit ast_node_list(isl::checked::ctx ctx, int n);
-  inline explicit ast_node_list(isl::checked::ast_node el);
-  inline ast_node_list &operator=(ast_node_list obj);
-  inline ~ast_node_list();
-  inline __isl_give isl_ast_node_list *copy() const &;
-  inline __isl_give isl_ast_node_list *copy() && = delete;
-  inline __isl_keep isl_ast_node_list *get() const;
-  inline __isl_give isl_ast_node_list *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::ast_node_list add(isl::checked::ast_node el) const;
-  inline isl::checked::ast_node at(int index) const;
-  inline isl::checked::ast_node get_at(int index) const;
-  inline isl::checked::ast_node_list clear() const;
-  inline isl::checked::ast_node_list concat(isl::checked::ast_node_list list2) const;
-  inline isl::checked::ast_node_list drop(unsigned int first, unsigned int n) const;
-  inline stat foreach(const std::function<stat(isl::checked::ast_node)> &fn) const;
-  inline isl::checked::ast_node_list insert(unsigned int pos, isl::checked::ast_node el) const;
-  inline class size size() const;
-};
-
-// declarations for isl::ast_node_mark
-
-class ast_node_mark : public ast_node {
-  template <class T>
-  friend boolean ast_node::isa() const;
-  friend ast_node_mark ast_node::as<ast_node_mark>() const;
-  static const auto type = isl_ast_node_mark;
-
-protected:
-  inline explicit ast_node_mark(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node_mark();
-  inline /* implicit */ ast_node_mark(const ast_node_mark &obj);
-  inline ast_node_mark &operator=(ast_node_mark obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::id id() const;
-  inline isl::checked::id get_id() const;
-  inline isl::checked::ast_node node() const;
-  inline isl::checked::ast_node get_node() const;
-};
-
-// declarations for isl::ast_node_user
-
-class ast_node_user : public ast_node {
-  template <class T>
-  friend boolean ast_node::isa() const;
-  friend ast_node_user ast_node::as<ast_node_user>() const;
-  static const auto type = isl_ast_node_user;
-
-protected:
-  inline explicit ast_node_user(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node_user();
-  inline /* implicit */ ast_node_user(const ast_node_user &obj);
-  inline ast_node_user &operator=(ast_node_user obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::ast_expr expr() const;
-  inline isl::checked::ast_expr get_expr() const;
-};
-
-// declarations for isl::basic_map
-inline basic_map manage(__isl_take isl_basic_map *ptr);
-inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
-
-class basic_map {
-  friend inline basic_map manage(__isl_take isl_basic_map *ptr);
-  friend inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
-
-protected:
-  isl_basic_map *ptr = nullptr;
-
-  inline explicit basic_map(__isl_take isl_basic_map *ptr);
-
-public:
-  inline /* implicit */ basic_map();
-  inline /* implicit */ basic_map(const basic_map &obj);
-  inline explicit basic_map(isl::checked::ctx ctx, const std::string &str);
-  inline basic_map &operator=(basic_map obj);
-  inline ~basic_map();
-  inline __isl_give isl_basic_map *copy() const &;
-  inline __isl_give isl_basic_map *copy() && = delete;
-  inline __isl_keep isl_basic_map *get() const;
-  inline __isl_give isl_basic_map *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::basic_map affine_hull() const;
-  inline isl::checked::basic_map apply_domain(isl::checked::basic_map bmap2) const;
-  inline isl::checked::map apply_domain(const isl::checked::map &map2) const;
-  inline isl::checked::union_map apply_domain(const isl::checked::union_map &umap2) const;
-  inline isl::checked::basic_map apply_range(isl::checked::basic_map bmap2) const;
-  inline isl::checked::map apply_range(const isl::checked::map &map2) const;
-  inline isl::checked::union_map apply_range(const isl::checked::union_map &umap2) const;
-  inline isl::checked::map as_map() const;
-  inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
-  inline isl::checked::set bind_domain(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::set bind_range(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::map coalesce() const;
-  inline isl::checked::map complement() const;
-  inline isl::checked::union_map compute_divs() const;
-  inline isl::checked::map curry() const;
-  inline isl::checked::basic_set deltas() const;
-  inline isl::checked::basic_map detect_equalities() const;
-  inline isl::checked::set domain() const;
-  inline isl::checked::map domain_factor_domain() const;
-  inline isl::checked::map domain_factor_range() const;
-  inline isl::checked::union_map domain_map() const;
-  inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
-  inline isl::checked::map domain_product(const isl::checked::map &map2) const;
-  inline isl::checked::union_map domain_product(const isl::checked::union_map &umap2) const;
-  inline class size domain_tuple_dim() const;
-  inline isl::checked::id domain_tuple_id() const;
-  inline isl::checked::map eq_at(const isl::checked::multi_pw_aff &mpa) const;
-  inline isl::checked::union_map eq_at(const isl::checked::multi_union_pw_aff &mupa) const;
-  inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
-  inline isl::checked::map extract_map(const isl::checked::space &space) const;
-  inline isl::checked::map factor_domain() const;
-  inline isl::checked::map factor_range() const;
-  inline isl::checked::union_map fixed_power(const isl::checked::val &exp) const;
-  inline isl::checked::union_map fixed_power(long exp) const;
-  inline isl::checked::basic_map flatten() const;
-  inline isl::checked::basic_map flatten_domain() const;
-  inline isl::checked::basic_map flatten_range() const;
-  inline stat foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const;
-  inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
-  inline isl::checked::basic_map gist(isl::checked::basic_map context) const;
-  inline isl::checked::map gist(const isl::checked::map &context) const;
-  inline isl::checked::union_map gist(const isl::checked::union_map &context) const;
-  inline isl::checked::map gist_domain(const isl::checked::set &context) const;
-  inline isl::checked::union_map gist_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::union_map gist_params(const isl::checked::set &set) const;
-  inline isl::checked::union_map gist_range(const isl::checked::union_set &uset) const;
-  inline boolean has_domain_tuple_id() const;
-  inline boolean has_range_tuple_id() const;
-  inline isl::checked::basic_map intersect(isl::checked::basic_map bmap2) const;
-  inline isl::checked::map intersect(const isl::checked::map &map2) const;
-  inline isl::checked::union_map intersect(const isl::checked::union_map &umap2) const;
-  inline isl::checked::basic_map intersect_domain(isl::checked::basic_set bset) const;
-  inline isl::checked::map intersect_domain(const isl::checked::set &set) const;
-  inline isl::checked::union_map intersect_domain(const isl::checked::space &space) const;
-  inline isl::checked::union_map intersect_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::basic_map intersect_domain(const isl::checked::point &bset) const;
-  inline isl::checked::map intersect_domain_factor_domain(const isl::checked::map &factor) const;
-  inline isl::checked::union_map intersect_domain_factor_domain(const isl::checked::union_map &factor) const;
-  inline isl::checked::map intersect_domain_factor_range(const isl::checked::map &factor) const;
-  inline isl::checked::union_map intersect_domain_factor_range(const isl::checked::union_map &factor) const;
-  inline isl::checked::map intersect_params(const isl::checked::set &params) const;
-  inline isl::checked::basic_map intersect_range(isl::checked::basic_set bset) const;
-  inline isl::checked::map intersect_range(const isl::checked::set &set) const;
-  inline isl::checked::union_map intersect_range(const isl::checked::space &space) const;
-  inline isl::checked::union_map intersect_range(const isl::checked::union_set &uset) const;
-  inline isl::checked::basic_map intersect_range(const isl::checked::point &bset) const;
-  inline isl::checked::map intersect_range_factor_domain(const isl::checked::map &factor) const;
-  inline isl::checked::union_map intersect_range_factor_domain(const isl::checked::union_map &factor) const;
-  inline isl::checked::map intersect_range_factor_range(const isl::checked::map &factor) const;
-  inline isl::checked::union_map intersect_range_factor_range(const isl::checked::union_map &factor) const;
-  inline boolean is_bijective() const;
-  inline boolean is_disjoint(const isl::checked::map &map2) const;
-  inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
-  inline boolean is_empty() const;
-  inline boolean is_equal(const isl::checked::basic_map &bmap2) const;
-  inline boolean is_equal(const isl::checked::map &map2) const;
-  inline boolean is_equal(const isl::checked::union_map &umap2) const;
-  inline boolean is_injective() const;
-  inline boolean is_single_valued() const;
-  inline boolean is_strict_subset(const isl::checked::map &map2) const;
-  inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
-  inline boolean is_subset(const isl::checked::basic_map &bmap2) const;
-  inline boolean is_subset(const isl::checked::map &map2) const;
-  inline boolean is_subset(const isl::checked::union_map &umap2) const;
-  inline boolean isa_map() const;
-  inline isl::checked::map lex_ge_at(const isl::checked::multi_pw_aff &mpa) const;
-  inline isl::checked::map lex_gt_at(const isl::checked::multi_pw_aff &mpa) const;
-  inline isl::checked::map lex_le_at(const isl::checked::multi_pw_aff &mpa) const;
-  inline isl::checked::map lex_lt_at(const isl::checked::multi_pw_aff &mpa) const;
-  inline isl::checked::map lexmax() const;
-  inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
-  inline isl::checked::map lexmin() const;
-  inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
-  inline isl::checked::map lower_bound(const isl::checked::multi_pw_aff &lower) const;
-  inline isl::checked::map_list map_list() const;
-  inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
-  inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
-  inline class size n_basic_map() const;
-  inline isl::checked::basic_map polyhedral_hull() const;
-  inline isl::checked::map preimage_domain(const isl::checked::multi_aff &ma) const;
-  inline isl::checked::map preimage_domain(const isl::checked::multi_pw_aff &mpa) const;
-  inline isl::checked::map preimage_domain(const isl::checked::pw_multi_aff &pma) const;
-  inline isl::checked::union_map preimage_domain(const isl::checked::union_pw_multi_aff &upma) const;
-  inline isl::checked::map preimage_range(const isl::checked::multi_aff &ma) const;
-  inline isl::checked::map preimage_range(const isl::checked::pw_multi_aff &pma) const;
-  inline isl::checked::union_map preimage_range(const isl::checked::union_pw_multi_aff &upma) const;
-  inline isl::checked::map product(const isl::checked::map &map2) const;
-  inline isl::checked::union_map product(const isl::checked::union_map &umap2) const;
-  inline isl::checked::map project_out_all_params() const;
-  inline isl::checked::set range() const;
-  inline isl::checked::map range_factor_domain() const;
-  inline isl::checked::map range_factor_range() const;
-  inline isl::checked::fixed_box range_lattice_tile() const;
-  inline isl::checked::union_map range_map() const;
-  inline isl::checked::map range_product(const isl::checked::map &map2) const;
-  inline isl::checked::union_map range_product(const isl::checked::union_map &umap2) const;
-  inline isl::checked::map range_reverse() const;
-  inline isl::checked::fixed_box range_simple_fixed_box_hull() const;
-  inline class size range_tuple_dim() const;
-  inline isl::checked::id range_tuple_id() const;
-  inline isl::checked::basic_map reverse() const;
-  inline isl::checked::basic_map sample() const;
-  inline isl::checked::map set_domain_tuple(const isl::checked::id &id) const;
-  inline isl::checked::map set_domain_tuple(const std::string &id) const;
-  inline isl::checked::map set_range_tuple(const isl::checked::id &id) const;
-  inline isl::checked::map set_range_tuple(const std::string &id) const;
-  inline isl::checked::space space() const;
-  inline isl::checked::map subtract(const isl::checked::map &map2) const;
-  inline isl::checked::union_map subtract(const isl::checked::union_map &umap2) const;
-  inline isl::checked::union_map subtract_domain(const isl::checked::union_set &dom) const;
-  inline isl::checked::union_map subtract_range(const isl::checked::union_set &dom) const;
-  inline isl::checked::map_list to_list() const;
-  inline isl::checked::union_map to_union_map() const;
-  inline isl::checked::map uncurry() const;
-  inline isl::checked::map unite(isl::checked::basic_map bmap2) const;
-  inline isl::checked::map unite(const isl::checked::map &map2) const;
-  inline isl::checked::union_map unite(const isl::checked::union_map &umap2) const;
-  inline isl::checked::basic_map unshifted_simple_hull() const;
-  inline isl::checked::map upper_bound(const isl::checked::multi_pw_aff &upper) const;
-  inline isl::checked::set wrap() const;
-  inline isl::checked::map zip() const;
-};
-
-// declarations for isl::basic_set
-inline basic_set manage(__isl_take isl_basic_set *ptr);
-inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
-
-class basic_set {
-  friend inline basic_set manage(__isl_take isl_basic_set *ptr);
-  friend inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
-
-protected:
-  isl_basic_set *ptr = nullptr;
-
-  inline explicit basic_set(__isl_take isl_basic_set *ptr);
-
-public:
-  inline /* implicit */ basic_set();
-  inline /* implicit */ basic_set(const basic_set &obj);
-  inline /* implicit */ basic_set(isl::checked::point pnt);
-  inline explicit basic_set(isl::checked::ctx ctx, const std::string &str);
-  inline basic_set &operator=(basic_set obj);
-  inline ~basic_set();
-  inline __isl_give isl_basic_set *copy() const &;
-  inline __isl_give isl_basic_set *copy() && = delete;
-  inline __isl_keep isl_basic_set *get() const;
-  inline __isl_give isl_basic_set *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::basic_set affine_hull() const;
-  inline isl::checked::basic_set apply(isl::checked::basic_map bmap) const;
-  inline isl::checked::set apply(const isl::checked::map &map) const;
-  inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
-  inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::checked::set as_set() const;
-  inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::set coalesce() const;
-  inline isl::checked::set complement() const;
-  inline isl::checked::union_set compute_divs() const;
-  inline isl::checked::basic_set detect_equalities() const;
-  inline isl::checked::val dim_max_val(int pos) const;
-  inline isl::checked::val dim_min_val(int pos) const;
-  inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
-  inline isl::checked::set extract_set(const isl::checked::space &space) const;
-  inline isl::checked::basic_set flatten() const;
-  inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
-  inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
-  inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
-  inline isl::checked::basic_set gist(isl::checked::basic_set context) const;
-  inline isl::checked::set gist(const isl::checked::set &context) const;
-  inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
-  inline isl::checked::basic_set gist(const isl::checked::point &context) const;
-  inline isl::checked::union_set gist_params(const isl::checked::set &set) const;
-  inline isl::checked::map identity() const;
-  inline isl::checked::pw_aff indicator_function() const;
-  inline isl::checked::map insert_domain(const isl::checked::space &domain) const;
-  inline isl::checked::basic_set intersect(isl::checked::basic_set bset2) const;
-  inline isl::checked::set intersect(const isl::checked::set &set2) const;
-  inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
-  inline isl::checked::basic_set intersect(const isl::checked::point &bset2) const;
-  inline isl::checked::basic_set intersect_params(isl::checked::basic_set bset2) const;
-  inline isl::checked::set intersect_params(const isl::checked::set &params) const;
-  inline isl::checked::basic_set intersect_params(const isl::checked::point &bset2) const;
-  inline boolean involves_locals() const;
-  inline boolean is_disjoint(const isl::checked::set &set2) const;
-  inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
-  inline boolean is_empty() const;
-  inline boolean is_equal(const isl::checked::basic_set &bset2) const;
-  inline boolean is_equal(const isl::checked::set &set2) const;
-  inline boolean is_equal(const isl::checked::union_set &uset2) const;
-  inline boolean is_equal(const isl::checked::point &bset2) const;
-  inline boolean is_singleton() const;
-  inline boolean is_strict_subset(const isl::checked::set &set2) const;
-  inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
-  inline boolean is_subset(const isl::checked::basic_set &bset2) const;
-  inline boolean is_subset(const isl::checked::set &set2) const;
-  inline boolean is_subset(const isl::checked::union_set &uset2) const;
-  inline boolean is_subset(const isl::checked::point &bset2) const;
-  inline boolean is_wrapping() const;
-  inline boolean isa_set() const;
-  inline isl::checked::set lexmax() const;
-  inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
-  inline isl::checked::set lexmin() const;
-  inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
-  inline isl::checked::set lower_bound(const isl::checked::multi_pw_aff &lower) const;
-  inline isl::checked::set lower_bound(const isl::checked::multi_val &lower) const;
-  inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
-  inline isl::checked::val max_val(const isl::checked::aff &obj) const;
-  inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
-  inline isl::checked::val min_val(const isl::checked::aff &obj) const;
-  inline class size n_basic_set() const;
-  inline isl::checked::basic_set params() const;
-  inline isl::checked::multi_val plain_multi_val_if_fixed() const;
-  inline isl::checked::basic_set polyhedral_hull() const;
-  inline isl::checked::set preimage(const isl::checked::multi_aff &ma) const;
-  inline isl::checked::set preimage(const isl::checked::multi_pw_aff &mpa) const;
-  inline isl::checked::set preimage(const isl::checked::pw_multi_aff &pma) const;
-  inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
-  inline isl::checked::set product(const isl::checked::set &set2) const;
-  inline isl::checked::set project_out_all_params() const;
-  inline isl::checked::set project_out_param(const isl::checked::id &id) const;
-  inline isl::checked::set project_out_param(const std::string &id) const;
-  inline isl::checked::set project_out_param(const isl::checked::id_list &list) const;
-  inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const;
-  inline isl::checked::basic_set sample() const;
-  inline isl::checked::point sample_point() const;
-  inline isl::checked::set_list set_list() const;
-  inline isl::checked::fixed_box simple_fixed_box_hull() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::val stride(int pos) const;
-  inline isl::checked::set subtract(const isl::checked::set &set2) const;
-  inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
-  inline isl::checked::set_list to_list() const;
-  inline isl::checked::set to_set() const;
-  inline isl::checked::union_set to_union_set() const;
-  inline isl::checked::map translation() const;
-  inline class size tuple_dim() const;
-  inline isl::checked::set unbind_params(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::map unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
-  inline isl::checked::set unite(isl::checked::basic_set bset2) const;
-  inline isl::checked::set unite(const isl::checked::set &set2) const;
-  inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
-  inline isl::checked::set unite(const isl::checked::point &bset2) const;
-  inline isl::checked::basic_set unshifted_simple_hull() const;
-  inline isl::checked::map unwrap() const;
-  inline isl::checked::set upper_bound(const isl::checked::multi_pw_aff &upper) const;
-  inline isl::checked::set upper_bound(const isl::checked::multi_val &upper) const;
-};
-
-// declarations for isl::fixed_box
-inline fixed_box manage(__isl_take isl_fixed_box *ptr);
-inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
-
-class fixed_box {
-  friend inline fixed_box manage(__isl_take isl_fixed_box *ptr);
-  friend inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
-
-protected:
-  isl_fixed_box *ptr = nullptr;
-
-  inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
-
-public:
-  inline /* implicit */ fixed_box();
-  inline /* implicit */ fixed_box(const fixed_box &obj);
-  inline fixed_box &operator=(fixed_box obj);
-  inline ~fixed_box();
-  inline __isl_give isl_fixed_box *copy() const &;
-  inline __isl_give isl_fixed_box *copy() && = delete;
-  inline __isl_keep isl_fixed_box *get() const;
-  inline __isl_give isl_fixed_box *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline boolean is_valid() const;
-  inline isl::checked::multi_aff offset() const;
-  inline isl::checked::multi_aff get_offset() const;
-  inline isl::checked::multi_val size() const;
-  inline isl::checked::multi_val get_size() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-};
-
-// declarations for isl::id
-inline id manage(__isl_take isl_id *ptr);
-inline id manage_copy(__isl_keep isl_id *ptr);
-
-class id {
-  friend inline id manage(__isl_take isl_id *ptr);
-  friend inline id manage_copy(__isl_keep isl_id *ptr);
-
-protected:
-  isl_id *ptr = nullptr;
-
-  inline explicit id(__isl_take isl_id *ptr);
-
-public:
-  inline /* implicit */ id();
-  inline /* implicit */ id(const id &obj);
-  inline explicit id(isl::checked::ctx ctx, const std::string &str);
-  inline id &operator=(id obj);
-  inline ~id();
-  inline __isl_give isl_id *copy() const &;
-  inline __isl_give isl_id *copy() && = delete;
-  inline __isl_keep isl_id *get() const;
-  inline __isl_give isl_id *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline std::string name() const;
-  inline std::string get_name() const;
-  inline isl::checked::id_list to_list() const;
-};
-
-// declarations for isl::id_list
-inline id_list manage(__isl_take isl_id_list *ptr);
-inline id_list manage_copy(__isl_keep isl_id_list *ptr);
-
-class id_list {
-  friend inline id_list manage(__isl_take isl_id_list *ptr);
-  friend inline id_list manage_copy(__isl_keep isl_id_list *ptr);
-
-protected:
-  isl_id_list *ptr = nullptr;
-
-  inline explicit id_list(__isl_take isl_id_list *ptr);
-
-public:
-  inline /* implicit */ id_list();
-  inline /* implicit */ id_list(const id_list &obj);
-  inline explicit id_list(isl::checked::ctx ctx, int n);
-  inline explicit id_list(isl::checked::id el);
-  inline explicit id_list(isl::checked::ctx ctx, const std::string &str);
-  inline id_list &operator=(id_list obj);
-  inline ~id_list();
-  inline __isl_give isl_id_list *copy() const &;
-  inline __isl_give isl_id_list *copy() && = delete;
-  inline __isl_keep isl_id_list *get() const;
-  inline __isl_give isl_id_list *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::id_list add(isl::checked::id el) const;
-  inline isl::checked::id_list add(const std::string &el) const;
-  inline isl::checked::id at(int index) const;
-  inline isl::checked::id get_at(int index) const;
-  inline isl::checked::id_list clear() const;
-  inline isl::checked::id_list concat(isl::checked::id_list list2) const;
-  inline isl::checked::id_list drop(unsigned int first, unsigned int n) const;
-  inline stat foreach(const std::function<stat(isl::checked::id)> &fn) const;
-  inline isl::checked::id_list insert(unsigned int pos, isl::checked::id el) const;
-  inline isl::checked::id_list insert(unsigned int pos, const std::string &el) const;
-  inline class size size() const;
-};
-
-// declarations for isl::map
-inline map manage(__isl_take isl_map *ptr);
-inline map manage_copy(__isl_keep isl_map *ptr);
-
-class map {
-  friend inline map manage(__isl_take isl_map *ptr);
-  friend inline map manage_copy(__isl_keep isl_map *ptr);
-
-protected:
-  isl_map *ptr = nullptr;
-
-  inline explicit map(__isl_take isl_map *ptr);
-
-public:
-  inline /* implicit */ map();
-  inline /* implicit */ map(const map &obj);
-  inline /* implicit */ map(isl::checked::basic_map bmap);
-  inline explicit map(isl::checked::ctx ctx, const std::string &str);
-  inline map &operator=(map obj);
-  inline ~map();
-  inline __isl_give isl_map *copy() const &;
-  inline __isl_give isl_map *copy() && = delete;
-  inline __isl_keep isl_map *get() const;
-  inline __isl_give isl_map *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::basic_map affine_hull() const;
-  inline isl::checked::map apply_domain(isl::checked::map map2) const;
-  inline isl::checked::union_map apply_domain(const isl::checked::union_map &umap2) const;
-  inline isl::checked::map apply_domain(const isl::checked::basic_map &map2) const;
-  inline isl::checked::map apply_range(isl::checked::map map2) const;
-  inline isl::checked::union_map apply_range(const isl::checked::union_map &umap2) const;
-  inline isl::checked::map apply_range(const isl::checked::basic_map &map2) const;
-  inline isl::checked::map as_map() const;
-  inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
-  inline isl::checked::set bind_domain(isl::checked::multi_id tuple) const;
-  inline isl::checked::set bind_range(isl::checked::multi_id tuple) const;
-  inline isl::checked::map coalesce() const;
-  inline isl::checked::map complement() const;
-  inline isl::checked::union_map compute_divs() const;
-  inline isl::checked::map curry() const;
-  inline isl::checked::set deltas() const;
-  inline isl::checked::map detect_equalities() const;
-  inline isl::checked::set domain() const;
-  inline isl::checked::map domain_factor_domain() const;
-  inline isl::checked::map domain_factor_range() const;
-  inline isl::checked::union_map domain_map() const;
-  inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
-  inline isl::checked::map domain_product(isl::checked::map map2) const;
-  inline isl::checked::union_map domain_product(const isl::checked::union_map &umap2) const;
-  inline isl::checked::map domain_product(const isl::checked::basic_map &map2) const;
-  inline class size domain_tuple_dim() const;
-  inline isl::checked::id domain_tuple_id() const;
-  inline isl::checked::id get_domain_tuple_id() const;
-  static inline isl::checked::map empty(isl::checked::space space);
-  inline isl::checked::map eq_at(isl::checked::multi_pw_aff mpa) const;
-  inline isl::checked::union_map eq_at(const isl::checked::multi_union_pw_aff &mupa) const;
-  inline isl::checked::map eq_at(const isl::checked::aff &mpa) const;
-  inline isl::checked::map eq_at(const isl::checked::multi_aff &mpa) const;
-  inline isl::checked::map eq_at(const isl::checked::pw_aff &mpa) const;
-  inline isl::checked::map eq_at(const isl::checked::pw_multi_aff &mpa) const;
-  inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
-  inline isl::checked::map extract_map(const isl::checked::space &space) const;
-  inline isl::checked::map factor_domain() const;
-  inline isl::checked::map factor_range() const;
-  inline isl::checked::union_map fixed_power(const isl::checked::val &exp) const;
-  inline isl::checked::union_map fixed_power(long exp) const;
-  inline isl::checked::map flatten() const;
-  inline isl::checked::map flatten_domain() const;
-  inline isl::checked::map flatten_range() const;
-  inline stat foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const;
-  inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
-  inline isl::checked::map gist(isl::checked::map context) const;
-  inline isl::checked::union_map gist(const isl::checked::union_map &context) const;
-  inline isl::checked::map gist(const isl::checked::basic_map &context) const;
-  inline isl::checked::map gist_domain(isl::checked::set context) const;
-  inline isl::checked::union_map gist_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::map gist_domain(const isl::checked::basic_set &context) const;
-  inline isl::checked::map gist_domain(const isl::checked::point &context) const;
-  inline isl::checked::union_map gist_params(const isl::checked::set &set) const;
-  inline isl::checked::union_map gist_range(const isl::checked::union_set &uset) const;
-  inline boolean has_domain_tuple_id() const;
-  inline boolean has_range_tuple_id() const;
-  inline isl::checked::map intersect(isl::checked::map map2) const;
-  inline isl::checked::union_map intersect(const isl::checked::union_map &umap2) const;
-  inline isl::checked::map intersect(const isl::checked::basic_map &map2) const;
-  inline isl::checked::map intersect_domain(isl::checked::set set) const;
-  inline isl::checked::union_map intersect_domain(const isl::checked::space &space) const;
-  inline isl::checked::union_map intersect_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::map intersect_domain(const isl::checked::basic_set &set) const;
-  inline isl::checked::map intersect_domain(const isl::checked::point &set) const;
-  inline isl::checked::map intersect_domain_factor_domain(isl::checked::map factor) const;
-  inline isl::checked::union_map intersect_domain_factor_domain(const isl::checked::union_map &factor) const;
-  inline isl::checked::map intersect_domain_factor_domain(const isl::checked::basic_map &factor) const;
-  inline isl::checked::map intersect_domain_factor_range(isl::checked::map factor) const;
-  inline isl::checked::union_map intersect_domain_factor_range(const isl::checked::union_map &factor) const;
-  inline isl::checked::map intersect_domain_factor_range(const isl::checked::basic_map &factor) const;
-  inline isl::checked::map intersect_params(isl::checked::set params) const;
-  inline isl::checked::map intersect_range(isl::checked::set set) const;
-  inline isl::checked::union_map intersect_range(const isl::checked::space &space) const;
-  inline isl::checked::union_map intersect_range(const isl::checked::union_set &uset) const;
-  inline isl::checked::map intersect_range(const isl::checked::basic_set &set) const;
-  inline isl::checked::map intersect_range(const isl::checked::point &set) const;
-  inline isl::checked::map intersect_range_factor_domain(isl::checked::map factor) const;
-  inline isl::checked::union_map intersect_range_factor_domain(const isl::checked::union_map &factor) const;
-  inline isl::checked::map intersect_range_factor_domain(const isl::checked::basic_map &factor) const;
-  inline isl::checked::map intersect_range_factor_range(isl::checked::map factor) const;
-  inline isl::checked::union_map intersect_range_factor_range(const isl::checked::union_map &factor) const;
-  inline isl::checked::map intersect_range_factor_range(const isl::checked::basic_map &factor) const;
-  inline boolean is_bijective() const;
-  inline boolean is_disjoint(const isl::checked::map &map2) const;
-  inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
-  inline boolean is_disjoint(const isl::checked::basic_map &map2) const;
-  inline boolean is_empty() const;
-  inline boolean is_equal(const isl::checked::map &map2) const;
-  inline boolean is_equal(const isl::checked::union_map &umap2) const;
-  inline boolean is_equal(const isl::checked::basic_map &map2) const;
-  inline boolean is_injective() const;
-  inline boolean is_single_valued() const;
-  inline boolean is_strict_subset(const isl::checked::map &map2) const;
-  inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
-  inline boolean is_strict_subset(const isl::checked::basic_map &map2) const;
-  inline boolean is_subset(const isl::checked::map &map2) const;
-  inline boolean is_subset(const isl::checked::union_map &umap2) const;
-  inline boolean is_subset(const isl::checked::basic_map &map2) const;
-  inline boolean isa_map() const;
-  inline isl::checked::map lex_ge_at(isl::checked::multi_pw_aff mpa) const;
-  inline isl::checked::map lex_gt_at(isl::checked::multi_pw_aff mpa) const;
-  inline isl::checked::map lex_le_at(isl::checked::multi_pw_aff mpa) const;
-  inline isl::checked::map lex_lt_at(isl::checked::multi_pw_aff mpa) const;
-  inline isl::checked::map lexmax() const;
-  inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
-  inline isl::checked::map lexmin() const;
-  inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
-  inline isl::checked::map lower_bound(isl::checked::multi_pw_aff lower) const;
-  inline isl::checked::map_list map_list() const;
-  inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
-  inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
-  inline class size n_basic_map() const;
-  inline isl::checked::basic_map polyhedral_hull() const;
-  inline isl::checked::map preimage_domain(isl::checked::multi_aff ma) const;
-  inline isl::checked::map preimage_domain(isl::checked::multi_pw_aff mpa) const;
-  inline isl::checked::map preimage_domain(isl::checked::pw_multi_aff pma) const;
-  inline isl::checked::union_map preimage_domain(const isl::checked::union_pw_multi_aff &upma) const;
-  inline isl::checked::map preimage_range(isl::checked::multi_aff ma) const;
-  inline isl::checked::map preimage_range(isl::checked::pw_multi_aff pma) const;
-  inline isl::checked::union_map preimage_range(const isl::checked::union_pw_multi_aff &upma) const;
-  inline isl::checked::map product(isl::checked::map map2) const;
-  inline isl::checked::union_map product(const isl::checked::union_map &umap2) const;
-  inline isl::checked::map product(const isl::checked::basic_map &map2) const;
-  inline isl::checked::map project_out_all_params() const;
-  inline isl::checked::set range() const;
-  inline isl::checked::map range_factor_domain() const;
-  inline isl::checked::map range_factor_range() const;
-  inline isl::checked::fixed_box range_lattice_tile() const;
-  inline isl::checked::fixed_box get_range_lattice_tile() const;
-  inline isl::checked::union_map range_map() const;
-  inline isl::checked::map range_product(isl::checked::map map2) const;
-  inline isl::checked::union_map range_product(const isl::checked::union_map &umap2) const;
-  inline isl::checked::map range_product(const isl::checked::basic_map &map2) const;
-  inline isl::checked::map range_reverse() const;
-  inline isl::checked::fixed_box range_simple_fixed_box_hull() const;
-  inline isl::checked::fixed_box get_range_simple_fixed_box_hull() const;
-  inline class size range_tuple_dim() const;
-  inline isl::checked::id range_tuple_id() const;
-  inline isl::checked::id get_range_tuple_id() const;
-  inline isl::checked::map reverse() const;
-  inline isl::checked::basic_map sample() const;
-  inline isl::checked::map set_domain_tuple(isl::checked::id id) const;
-  inline isl::checked::map set_domain_tuple(const std::string &id) const;
-  inline isl::checked::map set_range_tuple(isl::checked::id id) const;
-  inline isl::checked::map set_range_tuple(const std::string &id) const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::map subtract(isl::checked::map map2) const;
-  inline isl::checked::union_map subtract(const isl::checked::union_map &umap2) const;
-  inline isl::checked::map subtract(const isl::checked::basic_map &map2) const;
-  inline isl::checked::union_map subtract_domain(const isl::checked::union_set &dom) const;
-  inline isl::checked::union_map subtract_range(const isl::checked::union_set &dom) const;
-  inline isl::checked::map_list to_list() const;
-  inline isl::checked::union_map to_union_map() const;
-  inline isl::checked::map uncurry() const;
-  inline isl::checked::map unite(isl::checked::map map2) const;
-  inline isl::checked::union_map unite(const isl::checked::union_map &umap2) const;
-  inline isl::checked::map unite(const isl::checked::basic_map &map2) const;
-  static inline isl::checked::map universe(isl::checked::space space);
-  inline isl::checked::basic_map unshifted_simple_hull() const;
-  inline isl::checked::map upper_bound(isl::checked::multi_pw_aff upper) const;
-  inline isl::checked::set wrap() const;
-  inline isl::checked::map zip() const;
-};
-
-// declarations for isl::map_list
-inline map_list manage(__isl_take isl_map_list *ptr);
-inline map_list manage_copy(__isl_keep isl_map_list *ptr);
-
-class map_list {
-  friend inline map_list manage(__isl_take isl_map_list *ptr);
-  friend inline map_list manage_copy(__isl_keep isl_map_list *ptr);
-
-protected:
-  isl_map_list *ptr = nullptr;
-
-  inline explicit map_list(__isl_take isl_map_list *ptr);
-
-public:
-  inline /* implicit */ map_list();
-  inline /* implicit */ map_list(const map_list &obj);
-  inline explicit map_list(isl::checked::ctx ctx, int n);
-  inline explicit map_list(isl::checked::map el);
-  inline explicit map_list(isl::checked::ctx ctx, const std::string &str);
-  inline map_list &operator=(map_list obj);
-  inline ~map_list();
-  inline __isl_give isl_map_list *copy() const &;
-  inline __isl_give isl_map_list *copy() && = delete;
-  inline __isl_keep isl_map_list *get() const;
-  inline __isl_give isl_map_list *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::map_list add(isl::checked::map el) const;
-  inline isl::checked::map at(int index) const;
-  inline isl::checked::map get_at(int index) const;
-  inline isl::checked::map_list clear() const;
-  inline isl::checked::map_list concat(isl::checked::map_list list2) const;
-  inline isl::checked::map_list drop(unsigned int first, unsigned int n) const;
-  inline stat foreach(const std::function<stat(isl::checked::map)> &fn) const;
-  inline isl::checked::map_list insert(unsigned int pos, isl::checked::map el) const;
-  inline class size size() const;
-};
-
-// declarations for isl::multi_aff
-inline multi_aff manage(__isl_take isl_multi_aff *ptr);
-inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
-
-class multi_aff {
-  friend inline multi_aff manage(__isl_take isl_multi_aff *ptr);
-  friend inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
-
-protected:
-  isl_multi_aff *ptr = nullptr;
-
-  inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
-
-public:
-  inline /* implicit */ multi_aff();
-  inline /* implicit */ multi_aff(const multi_aff &obj);
-  inline /* implicit */ multi_aff(isl::checked::aff aff);
-  inline explicit multi_aff(isl::checked::space space, isl::checked::aff_list list);
-  inline explicit multi_aff(isl::checked::ctx ctx, const std::string &str);
-  inline multi_aff &operator=(multi_aff obj);
-  inline ~multi_aff();
-  inline __isl_give isl_multi_aff *copy() const &;
-  inline __isl_give isl_multi_aff *copy() && = delete;
-  inline __isl_keep isl_multi_aff *get() const;
-  inline __isl_give isl_multi_aff *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::multi_aff add(isl::checked::multi_aff multi2) const;
-  inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::multi_aff add(const isl::checked::aff &multi2) const;
-  inline isl::checked::multi_aff add_constant(isl::checked::multi_val mv) const;
-  inline isl::checked::multi_aff add_constant(isl::checked::val v) const;
-  inline isl::checked::multi_aff add_constant(long v) const;
-  inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::map as_map() const;
-  inline isl::checked::multi_aff as_multi_aff() const;
-  inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::checked::set as_set() const;
-  inline isl::checked::union_map as_union_map() const;
-  inline isl::checked::aff at(int pos) const;
-  inline isl::checked::aff get_at(int pos) const;
-  inline isl::checked::basic_set bind(isl::checked::multi_id tuple) const;
-  inline isl::checked::multi_aff bind_domain(isl::checked::multi_id tuple) const;
-  inline isl::checked::multi_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
-  inline isl::checked::pw_multi_aff coalesce() const;
-  inline isl::checked::multi_val constant_multi_val() const;
-  inline isl::checked::multi_val get_constant_multi_val() const;
-  inline isl::checked::set domain() const;
-  static inline isl::checked::multi_aff domain_map(isl::checked::space space);
-  inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
-  inline isl::checked::multi_aff flat_range_product(isl::checked::multi_aff multi2) const;
-  inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::multi_aff flat_range_product(const isl::checked::aff &multi2) const;
-  inline isl::checked::multi_aff floor() const;
-  inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
-  inline isl::checked::multi_aff gist(isl::checked::set context) const;
-  inline isl::checked::union_pw_multi_aff gist(const isl::checked::union_set &context) const;
-  inline isl::checked::multi_aff gist(const isl::checked::basic_set &context) const;
-  inline isl::checked::multi_aff gist(const isl::checked::point &context) const;
-  inline boolean has_range_tuple_id() const;
-  inline isl::checked::multi_aff identity() const;
-  static inline isl::checked::multi_aff identity_on_domain(isl::checked::space space);
-  inline isl::checked::multi_aff insert_domain(isl::checked::space domain) const;
-  inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::set &set) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::space &space) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
-  inline isl::checked::pw_multi_aff intersect_params(const isl::checked::set &set) const;
-  inline boolean involves_locals() const;
-  inline boolean involves_nan() const;
-  inline boolean involves_param(const isl::checked::id &id) const;
-  inline boolean involves_param(const std::string &id) const;
-  inline boolean involves_param(const isl::checked::id_list &list) const;
-  inline boolean isa_multi_aff() const;
-  inline boolean isa_pw_multi_aff() const;
-  inline isl::checked::aff_list list() const;
-  inline isl::checked::aff_list get_list() const;
-  inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_val max_multi_val() const;
-  inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_val min_multi_val() const;
-  static inline isl::checked::multi_aff multi_val_on_domain(isl::checked::space space, isl::checked::multi_val mv);
-  inline class size n_piece() const;
-  inline isl::checked::multi_aff neg() const;
-  inline boolean plain_is_empty() const;
-  inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::aff &multi2) const;
-  inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::multi_aff product(isl::checked::multi_aff multi2) const;
-  inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::multi_aff product(const isl::checked::aff &multi2) const;
-  inline isl::checked::multi_aff pullback(isl::checked::multi_aff ma2) const;
-  inline isl::checked::multi_pw_aff pullback(const isl::checked::multi_pw_aff &mpa2) const;
-  inline isl::checked::pw_multi_aff pullback(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff pullback(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::multi_aff pullback(const isl::checked::aff &ma2) const;
-  inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::checked::pw_multi_aff range_factor_domain() const;
-  inline isl::checked::pw_multi_aff range_factor_range() const;
-  static inline isl::checked::multi_aff range_map(isl::checked::space space);
-  inline isl::checked::multi_aff range_product(isl::checked::multi_aff multi2) const;
-  inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::multi_aff range_product(const isl::checked::aff &multi2) const;
-  inline isl::checked::id range_tuple_id() const;
-  inline isl::checked::id get_range_tuple_id() const;
-  inline isl::checked::multi_aff reset_range_tuple_id() const;
-  inline isl::checked::multi_aff scale(isl::checked::multi_val mv) const;
-  inline isl::checked::multi_aff scale(isl::checked::val v) const;
-  inline isl::checked::multi_aff scale(long v) const;
-  inline isl::checked::multi_aff scale_down(isl::checked::multi_val mv) const;
-  inline isl::checked::multi_aff scale_down(isl::checked::val v) const;
-  inline isl::checked::multi_aff scale_down(long v) const;
-  inline isl::checked::multi_aff set_at(int pos, isl::checked::aff el) const;
-  inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
-  inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
-  inline isl::checked::multi_aff set_range_tuple(isl::checked::id id) const;
-  inline isl::checked::multi_aff set_range_tuple(const std::string &id) const;
-  inline class size size() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::multi_aff sub(isl::checked::multi_aff multi2) const;
-  inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::multi_aff sub(const isl::checked::aff &multi2) const;
-  inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::set &set) const;
-  inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::space &space) const;
-  inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::pw_multi_aff_list to_list() const;
-  inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
-  inline isl::checked::multi_union_pw_aff to_multi_union_pw_aff() const;
-  inline isl::checked::pw_multi_aff to_pw_multi_aff() const;
-  inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
-  inline isl::checked::multi_aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
-  inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
-  inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
-  inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
-  static inline isl::checked::multi_aff zero(isl::checked::space space);
-};
-
-// declarations for isl::multi_id
-inline multi_id manage(__isl_take isl_multi_id *ptr);
-inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
-
-class multi_id {
-  friend inline multi_id manage(__isl_take isl_multi_id *ptr);
-  friend inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
-
-protected:
-  isl_multi_id *ptr = nullptr;
-
-  inline explicit multi_id(__isl_take isl_multi_id *ptr);
-
-public:
-  inline /* implicit */ multi_id();
-  inline /* implicit */ multi_id(const multi_id &obj);
-  inline explicit multi_id(isl::checked::space space, isl::checked::id_list list);
-  inline explicit multi_id(isl::checked::ctx ctx, const std::string &str);
-  inline multi_id &operator=(multi_id obj);
-  inline ~multi_id();
-  inline __isl_give isl_multi_id *copy() const &;
-  inline __isl_give isl_multi_id *copy() && = delete;
-  inline __isl_keep isl_multi_id *get() const;
-  inline __isl_give isl_multi_id *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::id at(int pos) const;
-  inline isl::checked::id get_at(int pos) const;
-  inline isl::checked::multi_id flat_range_product(isl::checked::multi_id multi2) const;
-  inline isl::checked::id_list list() const;
-  inline isl::checked::id_list get_list() const;
-  inline boolean plain_is_equal(const isl::checked::multi_id &multi2) const;
-  inline isl::checked::multi_id range_product(isl::checked::multi_id multi2) const;
-  inline isl::checked::multi_id set_at(int pos, isl::checked::id el) const;
-  inline isl::checked::multi_id set_at(int pos, const std::string &el) const;
-  inline class size size() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-};
-
-// declarations for isl::multi_pw_aff
-inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
-inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
-
-class multi_pw_aff {
-  friend inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
-  friend inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
-
-protected:
-  isl_multi_pw_aff *ptr = nullptr;
-
-  inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
-
-public:
-  inline /* implicit */ multi_pw_aff();
-  inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj);
-  inline /* implicit */ multi_pw_aff(isl::checked::aff aff);
-  inline /* implicit */ multi_pw_aff(isl::checked::multi_aff ma);
-  inline /* implicit */ multi_pw_aff(isl::checked::pw_aff pa);
-  inline explicit multi_pw_aff(isl::checked::space space, isl::checked::pw_aff_list list);
-  inline /* implicit */ multi_pw_aff(isl::checked::pw_multi_aff pma);
-  inline explicit multi_pw_aff(isl::checked::ctx ctx, const std::string &str);
-  inline multi_pw_aff &operator=(multi_pw_aff obj);
-  inline ~multi_pw_aff();
-  inline __isl_give isl_multi_pw_aff *copy() const &;
-  inline __isl_give isl_multi_pw_aff *copy() && = delete;
-  inline __isl_keep isl_multi_pw_aff *get() const;
-  inline __isl_give isl_multi_pw_aff *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::multi_pw_aff add(isl::checked::multi_pw_aff multi2) const;
-  inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::multi_pw_aff add(const isl::checked::aff &multi2) const;
-  inline isl::checked::multi_pw_aff add(const isl::checked::multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff add(const isl::checked::pw_aff &multi2) const;
-  inline isl::checked::multi_pw_aff add(const isl::checked::pw_multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff add_constant(isl::checked::multi_val mv) const;
-  inline isl::checked::multi_pw_aff add_constant(isl::checked::val v) const;
-  inline isl::checked::multi_pw_aff add_constant(long v) const;
-  inline isl::checked::map as_map() const;
-  inline isl::checked::multi_aff as_multi_aff() const;
-  inline isl::checked::set as_set() const;
-  inline isl::checked::pw_aff at(int pos) const;
-  inline isl::checked::pw_aff get_at(int pos) const;
-  inline isl::checked::set bind(isl::checked::multi_id tuple) const;
-  inline isl::checked::multi_pw_aff bind_domain(isl::checked::multi_id tuple) const;
-  inline isl::checked::multi_pw_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
-  inline isl::checked::multi_pw_aff coalesce() const;
-  inline isl::checked::set domain() const;
-  inline isl::checked::multi_pw_aff flat_range_product(isl::checked::multi_pw_aff multi2) const;
-  inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::aff &multi2) const;
-  inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::pw_aff &multi2) const;
-  inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::pw_multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff gist(isl::checked::set set) const;
-  inline isl::checked::multi_union_pw_aff gist(const isl::checked::union_set &context) const;
-  inline isl::checked::multi_pw_aff gist(const isl::checked::basic_set &set) const;
-  inline isl::checked::multi_pw_aff gist(const isl::checked::point &set) const;
-  inline boolean has_range_tuple_id() const;
-  inline isl::checked::multi_pw_aff identity() const;
-  static inline isl::checked::multi_pw_aff identity_on_domain(isl::checked::space space);
-  inline isl::checked::multi_pw_aff insert_domain(isl::checked::space domain) const;
-  inline isl::checked::multi_pw_aff intersect_domain(isl::checked::set domain) const;
-  inline isl::checked::multi_union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::multi_pw_aff intersect_domain(const isl::checked::basic_set &domain) const;
-  inline isl::checked::multi_pw_aff intersect_domain(const isl::checked::point &domain) const;
-  inline isl::checked::multi_pw_aff intersect_params(isl::checked::set set) const;
-  inline boolean involves_nan() const;
-  inline boolean involves_param(const isl::checked::id &id) const;
-  inline boolean involves_param(const std::string &id) const;
-  inline boolean involves_param(const isl::checked::id_list &list) const;
-  inline boolean isa_multi_aff() const;
-  inline isl::checked::pw_aff_list list() const;
-  inline isl::checked::pw_aff_list get_list() const;
-  inline isl::checked::multi_pw_aff max(isl::checked::multi_pw_aff multi2) const;
-  inline isl::checked::multi_val max_multi_val() const;
-  inline isl::checked::multi_pw_aff min(isl::checked::multi_pw_aff multi2) const;
-  inline isl::checked::multi_val min_multi_val() const;
-  inline isl::checked::multi_pw_aff neg() const;
-  inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::pw_aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::pw_multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff product(isl::checked::multi_pw_aff multi2) const;
-  inline isl::checked::multi_pw_aff pullback(isl::checked::multi_aff ma) const;
-  inline isl::checked::multi_pw_aff pullback(isl::checked::multi_pw_aff mpa2) const;
-  inline isl::checked::multi_pw_aff pullback(isl::checked::pw_multi_aff pma) const;
-  inline isl::checked::multi_union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
-  inline isl::checked::multi_pw_aff range_product(isl::checked::multi_pw_aff multi2) const;
-  inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::multi_pw_aff range_product(const isl::checked::aff &multi2) const;
-  inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff range_product(const isl::checked::pw_aff &multi2) const;
-  inline isl::checked::multi_pw_aff range_product(const isl::checked::pw_multi_aff &multi2) const;
-  inline isl::checked::id range_tuple_id() const;
-  inline isl::checked::id get_range_tuple_id() const;
-  inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
-  inline isl::checked::multi_pw_aff scale(isl::checked::multi_val mv) const;
-  inline isl::checked::multi_pw_aff scale(isl::checked::val v) const;
-  inline isl::checked::multi_pw_aff scale(long v) const;
-  inline isl::checked::multi_pw_aff scale_down(isl::checked::multi_val mv) const;
-  inline isl::checked::multi_pw_aff scale_down(isl::checked::val v) const;
-  inline isl::checked::multi_pw_aff scale_down(long v) const;
-  inline isl::checked::multi_pw_aff set_at(int pos, isl::checked::pw_aff el) const;
-  inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
-  inline isl::checked::multi_pw_aff set_range_tuple(isl::checked::id id) const;
-  inline isl::checked::multi_pw_aff set_range_tuple(const std::string &id) const;
-  inline class size size() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::multi_pw_aff sub(isl::checked::multi_pw_aff multi2) const;
-  inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::multi_pw_aff sub(const isl::checked::aff &multi2) const;
-  inline isl::checked::multi_pw_aff sub(const isl::checked::multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff sub(const isl::checked::pw_aff &multi2) const;
-  inline isl::checked::multi_pw_aff sub(const isl::checked::pw_multi_aff &multi2) const;
-  inline isl::checked::multi_pw_aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
-  inline isl::checked::multi_pw_aff union_add(isl::checked::multi_pw_aff mpa2) const;
-  inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
-  inline isl::checked::multi_pw_aff union_add(const isl::checked::aff &mpa2) const;
-  inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_aff &mpa2) const;
-  inline isl::checked::multi_pw_aff union_add(const isl::checked::pw_aff &mpa2) const;
-  inline isl::checked::multi_pw_aff union_add(const isl::checked::pw_multi_aff &mpa2) const;
-  static inline isl::checked::multi_pw_aff zero(isl::checked::space space);
-};
-
-// declarations for isl::multi_union_pw_aff
-inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
-inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
-
-class multi_union_pw_aff {
-  friend inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
-  friend inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
-
-protected:
-  isl_multi_union_pw_aff *ptr = nullptr;
-
-  inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr);
-
-public:
-  inline /* implicit */ multi_union_pw_aff();
-  inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj);
-  inline /* implicit */ multi_union_pw_aff(isl::checked::multi_pw_aff mpa);
-  inline /* implicit */ multi_union_pw_aff(isl::checked::union_pw_aff upa);
-  inline explicit multi_union_pw_aff(isl::checked::space space, isl::checked::union_pw_aff_list list);
-  inline explicit multi_union_pw_aff(isl::checked::ctx ctx, const std::string &str);
-  inline multi_union_pw_aff &operator=(multi_union_pw_aff obj);
-  inline ~multi_union_pw_aff();
-  inline __isl_give isl_multi_union_pw_aff *copy() const &;
-  inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
-  inline __isl_keep isl_multi_union_pw_aff *get() const;
-  inline __isl_give isl_multi_union_pw_aff *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::multi_union_pw_aff add(isl::checked::multi_union_pw_aff multi2) const;
-  inline isl::checked::union_pw_aff at(int pos) const;
-  inline isl::checked::union_pw_aff get_at(int pos) const;
-  inline isl::checked::union_set bind(isl::checked::multi_id tuple) const;
-  inline isl::checked::multi_union_pw_aff coalesce() const;
-  inline isl::checked::union_set domain() const;
-  inline isl::checked::multi_union_pw_aff flat_range_product(isl::checked::multi_union_pw_aff multi2) const;
-  inline isl::checked::multi_union_pw_aff gist(isl::checked::union_set context) const;
-  inline boolean has_range_tuple_id() const;
-  inline isl::checked::multi_union_pw_aff intersect_domain(isl::checked::union_set uset) const;
-  inline isl::checked::multi_union_pw_aff intersect_params(isl::checked::set params) const;
-  inline boolean involves_nan() const;
-  inline isl::checked::union_pw_aff_list list() const;
-  inline isl::checked::union_pw_aff_list get_list() const;
-  inline isl::checked::multi_union_pw_aff neg() const;
-  inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff pullback(isl::checked::union_pw_multi_aff upma) const;
-  inline isl::checked::multi_union_pw_aff range_product(isl::checked::multi_union_pw_aff multi2) const;
-  inline isl::checked::id range_tuple_id() const;
-  inline isl::checked::id get_range_tuple_id() const;
-  inline isl::checked::multi_union_pw_aff reset_range_tuple_id() const;
-  inline isl::checked::multi_union_pw_aff scale(isl::checked::multi_val mv) const;
-  inline isl::checked::multi_union_pw_aff scale(isl::checked::val v) const;
-  inline isl::checked::multi_union_pw_aff scale(long v) const;
-  inline isl::checked::multi_union_pw_aff scale_down(isl::checked::multi_val mv) const;
-  inline isl::checked::multi_union_pw_aff scale_down(isl::checked::val v) const;
-  inline isl::checked::multi_union_pw_aff scale_down(long v) const;
-  inline isl::checked::multi_union_pw_aff set_at(int pos, isl::checked::union_pw_aff el) const;
-  inline isl::checked::multi_union_pw_aff set_range_tuple(isl::checked::id id) const;
-  inline isl::checked::multi_union_pw_aff set_range_tuple(const std::string &id) const;
-  inline class size size() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::multi_union_pw_aff sub(isl::checked::multi_union_pw_aff multi2) const;
-  inline isl::checked::multi_union_pw_aff union_add(isl::checked::multi_union_pw_aff mupa2) const;
-  static inline isl::checked::multi_union_pw_aff zero(isl::checked::space space);
-};
-
-// declarations for isl::multi_val
-inline multi_val manage(__isl_take isl_multi_val *ptr);
-inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
-
-class multi_val {
-  friend inline multi_val manage(__isl_take isl_multi_val *ptr);
-  friend inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
-
-protected:
-  isl_multi_val *ptr = nullptr;
-
-  inline explicit multi_val(__isl_take isl_multi_val *ptr);
-
-public:
-  inline /* implicit */ multi_val();
-  inline /* implicit */ multi_val(const multi_val &obj);
-  inline explicit multi_val(isl::checked::space space, isl::checked::val_list list);
-  inline explicit multi_val(isl::checked::ctx ctx, const std::string &str);
-  inline multi_val &operator=(multi_val obj);
-  inline ~multi_val();
-  inline __isl_give isl_multi_val *copy() const &;
-  inline __isl_give isl_multi_val *copy() && = delete;
-  inline __isl_keep isl_multi_val *get() const;
-  inline __isl_give isl_multi_val *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::multi_val add(isl::checked::multi_val multi2) const;
-  inline isl::checked::multi_val add(isl::checked::val v) const;
-  inline isl::checked::multi_val add(long v) const;
-  inline isl::checked::val at(int pos) const;
-  inline isl::checked::val get_at(int pos) const;
-  inline isl::checked::multi_val flat_range_product(isl::checked::multi_val multi2) const;
-  inline boolean has_range_tuple_id() const;
-  inline boolean involves_nan() const;
-  inline isl::checked::val_list list() const;
-  inline isl::checked::val_list get_list() const;
-  inline isl::checked::multi_val max(isl::checked::multi_val multi2) const;
-  inline isl::checked::multi_val min(isl::checked::multi_val multi2) const;
-  inline isl::checked::multi_val neg() const;
-  inline boolean plain_is_equal(const isl::checked::multi_val &multi2) const;
-  inline isl::checked::multi_val product(isl::checked::multi_val multi2) const;
-  inline isl::checked::multi_val range_product(isl::checked::multi_val multi2) const;
-  inline isl::checked::id range_tuple_id() const;
-  inline isl::checked::id get_range_tuple_id() const;
-  inline isl::checked::multi_val reset_range_tuple_id() const;
-  inline isl::checked::multi_val scale(isl::checked::multi_val mv) const;
-  inline isl::checked::multi_val scale(isl::checked::val v) const;
-  inline isl::checked::multi_val scale(long v) const;
-  inline isl::checked::multi_val scale_down(isl::checked::multi_val mv) const;
-  inline isl::checked::multi_val scale_down(isl::checked::val v) const;
-  inline isl::checked::multi_val scale_down(long v) const;
-  inline isl::checked::multi_val set_at(int pos, isl::checked::val el) const;
-  inline isl::checked::multi_val set_at(int pos, long el) const;
-  inline isl::checked::multi_val set_range_tuple(isl::checked::id id) const;
-  inline isl::checked::multi_val set_range_tuple(const std::string &id) const;
-  inline class size size() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::multi_val sub(isl::checked::multi_val multi2) const;
-  static inline isl::checked::multi_val zero(isl::checked::space space);
-};
-
-// declarations for isl::point
-inline point manage(__isl_take isl_point *ptr);
-inline point manage_copy(__isl_keep isl_point *ptr);
-
-class point {
-  friend inline point manage(__isl_take isl_point *ptr);
-  friend inline point manage_copy(__isl_keep isl_point *ptr);
-
-protected:
-  isl_point *ptr = nullptr;
-
-  inline explicit point(__isl_take isl_point *ptr);
-
-public:
-  inline /* implicit */ point();
-  inline /* implicit */ point(const point &obj);
-  inline point &operator=(point obj);
-  inline ~point();
-  inline __isl_give isl_point *copy() const &;
-  inline __isl_give isl_point *copy() && = delete;
-  inline __isl_keep isl_point *get() const;
-  inline __isl_give isl_point *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::basic_set affine_hull() const;
-  inline isl::checked::basic_set apply(const isl::checked::basic_map &bmap) const;
-  inline isl::checked::set apply(const isl::checked::map &map) const;
-  inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
-  inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::checked::set as_set() const;
-  inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::set coalesce() const;
-  inline isl::checked::set complement() const;
-  inline isl::checked::union_set compute_divs() const;
-  inline isl::checked::basic_set detect_equalities() const;
-  inline isl::checked::val dim_max_val(int pos) const;
-  inline isl::checked::val dim_min_val(int pos) const;
-  inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
-  inline isl::checked::set extract_set(const isl::checked::space &space) const;
-  inline isl::checked::basic_set flatten() const;
-  inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
-  inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
-  inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
-  inline isl::checked::basic_set gist(const isl::checked::basic_set &context) const;
-  inline isl::checked::set gist(const isl::checked::set &context) const;
-  inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
-  inline isl::checked::union_set gist_params(const isl::checked::set &set) const;
-  inline isl::checked::map identity() const;
-  inline isl::checked::pw_aff indicator_function() const;
-  inline isl::checked::map insert_domain(const isl::checked::space &domain) const;
-  inline isl::checked::basic_set intersect(const isl::checked::basic_set &bset2) const;
-  inline isl::checked::set intersect(const isl::checked::set &set2) const;
-  inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
-  inline isl::checked::basic_set intersect_params(const isl::checked::basic_set &bset2) const;
-  inline isl::checked::set intersect_params(const isl::checked::set &params) const;
-  inline boolean involves_locals() const;
-  inline boolean is_disjoint(const isl::checked::set &set2) const;
-  inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
-  inline boolean is_empty() const;
-  inline boolean is_equal(const isl::checked::basic_set &bset2) const;
-  inline boolean is_equal(const isl::checked::set &set2) const;
-  inline boolean is_equal(const isl::checked::union_set &uset2) const;
-  inline boolean is_singleton() const;
-  inline boolean is_strict_subset(const isl::checked::set &set2) const;
-  inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
-  inline boolean is_subset(const isl::checked::basic_set &bset2) const;
-  inline boolean is_subset(const isl::checked::set &set2) const;
-  inline boolean is_subset(const isl::checked::union_set &uset2) const;
-  inline boolean is_wrapping() const;
-  inline boolean isa_set() const;
-  inline isl::checked::set lexmax() const;
-  inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
-  inline isl::checked::set lexmin() const;
-  inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
-  inline isl::checked::set lower_bound(const isl::checked::multi_pw_aff &lower) const;
-  inline isl::checked::set lower_bound(const isl::checked::multi_val &lower) const;
-  inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
-  inline isl::checked::val max_val(const isl::checked::aff &obj) const;
-  inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
-  inline isl::checked::val min_val(const isl::checked::aff &obj) const;
-  inline isl::checked::multi_val multi_val() const;
-  inline isl::checked::multi_val get_multi_val() const;
-  inline class size n_basic_set() const;
-  inline isl::checked::basic_set params() const;
-  inline isl::checked::multi_val plain_multi_val_if_fixed() const;
-  inline isl::checked::basic_set polyhedral_hull() const;
-  inline isl::checked::set preimage(const isl::checked::multi_aff &ma) const;
-  inline isl::checked::set preimage(const isl::checked::multi_pw_aff &mpa) const;
-  inline isl::checked::set preimage(const isl::checked::pw_multi_aff &pma) const;
-  inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
-  inline isl::checked::set product(const isl::checked::set &set2) const;
-  inline isl::checked::set project_out_all_params() const;
-  inline isl::checked::set project_out_param(const isl::checked::id &id) const;
-  inline isl::checked::set project_out_param(const std::string &id) const;
-  inline isl::checked::set project_out_param(const isl::checked::id_list &list) const;
-  inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const;
-  inline isl::checked::basic_set sample() const;
-  inline isl::checked::point sample_point() const;
-  inline isl::checked::set_list set_list() const;
-  inline isl::checked::fixed_box simple_fixed_box_hull() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::val stride(int pos) const;
-  inline isl::checked::set subtract(const isl::checked::set &set2) const;
-  inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
-  inline isl::checked::set_list to_list() const;
-  inline isl::checked::set to_set() const;
-  inline isl::checked::union_set to_union_set() const;
-  inline isl::checked::map translation() const;
-  inline class size tuple_dim() const;
-  inline isl::checked::set unbind_params(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::map unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
-  inline isl::checked::set unite(const isl::checked::basic_set &bset2) const;
-  inline isl::checked::set unite(const isl::checked::set &set2) const;
-  inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
-  inline isl::checked::basic_set unshifted_simple_hull() const;
-  inline isl::checked::map unwrap() const;
-  inline isl::checked::set upper_bound(const isl::checked::multi_pw_aff &upper) const;
-  inline isl::checked::set upper_bound(const isl::checked::multi_val &upper) const;
-};
-
-// declarations for isl::pw_aff
-inline pw_aff manage(__isl_take isl_pw_aff *ptr);
-inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
-
-class pw_aff {
-  friend inline pw_aff manage(__isl_take isl_pw_aff *ptr);
-  friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
-
-protected:
-  isl_pw_aff *ptr = nullptr;
-
-  inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
-
-public:
-  inline /* implicit */ pw_aff();
-  inline /* implicit */ pw_aff(const pw_aff &obj);
-  inline /* implicit */ pw_aff(isl::checked::aff aff);
-  inline explicit pw_aff(isl::checked::ctx ctx, const std::string &str);
-  inline pw_aff &operator=(pw_aff obj);
-  inline ~pw_aff();
-  inline __isl_give isl_pw_aff *copy() const &;
-  inline __isl_give isl_pw_aff *copy() && = delete;
-  inline __isl_keep isl_pw_aff *get() const;
-  inline __isl_give isl_pw_aff *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_aff add(isl::checked::pw_aff pwaff2) const;
-  inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_aff add(const isl::checked::union_pw_aff &upa2) const;
-  inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_aff add(const isl::checked::aff &pwaff2) const;
-  inline isl::checked::pw_aff add_constant(isl::checked::val v) const;
-  inline isl::checked::pw_aff add_constant(long v) const;
-  inline isl::checked::pw_multi_aff add_constant(const isl::checked::multi_val &mv) const;
-  inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::aff as_aff() const;
-  inline isl::checked::map as_map() const;
-  inline isl::checked::multi_aff as_multi_aff() const;
-  inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::checked::set as_set() const;
-  inline isl::checked::union_map as_union_map() const;
-  inline isl::checked::pw_aff at(int pos) const;
-  inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::set bind(isl::checked::id id) const;
-  inline isl::checked::set bind(const std::string &id) const;
-  inline isl::checked::pw_aff bind_domain(isl::checked::multi_id tuple) const;
-  inline isl::checked::pw_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
-  inline isl::checked::pw_aff ceil() const;
-  inline isl::checked::pw_aff coalesce() const;
-  inline isl::checked::pw_aff cond(isl::checked::pw_aff pwaff_true, isl::checked::pw_aff pwaff_false) const;
-  inline isl::checked::pw_aff div(isl::checked::pw_aff pa2) const;
-  inline isl::checked::set domain() const;
-  inline isl::checked::set eq_set(isl::checked::pw_aff pwaff2) const;
-  inline isl::checked::val eval(isl::checked::point pnt) const;
-  inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
-  inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_aff floor() const;
-  inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
-  inline isl::checked::set ge_set(isl::checked::pw_aff pwaff2) const;
-  inline isl::checked::pw_aff gist(isl::checked::set context) const;
-  inline isl::checked::union_pw_aff gist(const isl::checked::union_set &context) const;
-  inline isl::checked::pw_aff gist(const isl::checked::basic_set &context) const;
-  inline isl::checked::pw_aff gist(const isl::checked::point &context) const;
-  inline isl::checked::set gt_set(isl::checked::pw_aff pwaff2) const;
-  inline boolean has_range_tuple_id() const;
-  inline isl::checked::multi_pw_aff identity() const;
-  inline isl::checked::pw_aff insert_domain(isl::checked::space domain) const;
-  inline isl::checked::pw_aff intersect_domain(isl::checked::set set) const;
-  inline isl::checked::union_pw_aff intersect_domain(const isl::checked::space &space) const;
-  inline isl::checked::union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::pw_aff intersect_domain(const isl::checked::basic_set &set) const;
-  inline isl::checked::pw_aff intersect_domain(const isl::checked::point &set) const;
-  inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::union_pw_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
-  inline isl::checked::pw_aff intersect_params(isl::checked::set set) const;
-  inline boolean involves_locals() const;
-  inline boolean involves_nan() const;
-  inline boolean involves_param(const isl::checked::id &id) const;
-  inline boolean involves_param(const std::string &id) const;
-  inline boolean involves_param(const isl::checked::id_list &list) const;
-  inline boolean isa_aff() const;
-  inline boolean isa_multi_aff() const;
-  inline boolean isa_pw_multi_aff() const;
-  inline isl::checked::set le_set(isl::checked::pw_aff pwaff2) const;
-  inline isl::checked::pw_aff_list list() const;
-  inline isl::checked::set lt_set(isl::checked::pw_aff pwaff2) const;
-  inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::pw_aff max(isl::checked::pw_aff pwaff2) const;
-  inline isl::checked::pw_aff max(const isl::checked::aff &pwaff2) const;
-  inline isl::checked::multi_val max_multi_val() const;
-  inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::pw_aff min(isl::checked::pw_aff pwaff2) const;
-  inline isl::checked::pw_aff min(const isl::checked::aff &pwaff2) const;
-  inline isl::checked::multi_val min_multi_val() const;
-  inline isl::checked::pw_aff mod(isl::checked::val mod) const;
-  inline isl::checked::pw_aff mod(long mod) const;
-  inline isl::checked::pw_aff mul(isl::checked::pw_aff pwaff2) const;
-  inline class size n_piece() const;
-  inline isl::checked::set ne_set(isl::checked::pw_aff pwaff2) const;
-  inline isl::checked::pw_aff neg() const;
-  static inline isl::checked::pw_aff param_on_domain(isl::checked::set domain, isl::checked::id id);
-  inline boolean plain_is_empty() const;
-  inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::pw_aff pullback(isl::checked::multi_aff ma) const;
-  inline isl::checked::pw_aff pullback(isl::checked::multi_pw_aff mpa) const;
-  inline isl::checked::pw_aff pullback(isl::checked::pw_multi_aff pma) const;
-  inline isl::checked::union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
-  inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::checked::pw_multi_aff range_factor_domain() const;
-  inline isl::checked::pw_multi_aff range_factor_range() const;
-  inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::id range_tuple_id() const;
-  inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
-  inline isl::checked::multi_pw_aff scale(const isl::checked::multi_val &mv) const;
-  inline isl::checked::pw_aff scale(isl::checked::val v) const;
-  inline isl::checked::pw_aff scale(long v) const;
-  inline isl::checked::multi_pw_aff scale_down(const isl::checked::multi_val &mv) const;
-  inline isl::checked::pw_aff scale_down(isl::checked::val f) const;
-  inline isl::checked::pw_aff scale_down(long f) const;
-  inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
-  inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
-  inline isl::checked::pw_multi_aff set_range_tuple(const isl::checked::id &id) const;
-  inline isl::checked::pw_multi_aff set_range_tuple(const std::string &id) const;
-  inline class size size() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_aff sub(isl::checked::pw_aff pwaff2) const;
-  inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_aff sub(const isl::checked::union_pw_aff &upa2) const;
-  inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_aff sub(const isl::checked::aff &pwaff2) const;
-  inline isl::checked::pw_aff subtract_domain(isl::checked::set set) const;
-  inline isl::checked::union_pw_aff subtract_domain(const isl::checked::space &space) const;
-  inline isl::checked::union_pw_aff subtract_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::pw_aff subtract_domain(const isl::checked::basic_set &set) const;
-  inline isl::checked::pw_aff subtract_domain(const isl::checked::point &set) const;
-  inline isl::checked::pw_aff tdiv_q(isl::checked::pw_aff pa2) const;
-  inline isl::checked::pw_aff tdiv_r(isl::checked::pw_aff pa2) const;
-  inline isl::checked::pw_aff_list to_list() const;
-  inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
-  inline isl::checked::union_pw_aff to_union_pw_aff() const;
-  inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
-  inline isl::checked::multi_pw_aff unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
-  inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
-  inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
-  inline isl::checked::pw_aff union_add(isl::checked::pw_aff pwaff2) const;
-  inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
-  inline isl::checked::union_pw_aff union_add(const isl::checked::union_pw_aff &upa2) const;
-  inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_aff union_add(const isl::checked::aff &pwaff2) const;
-};
-
-// declarations for isl::pw_aff_list
-inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
-inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
-
-class pw_aff_list {
-  friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
-  friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
-
-protected:
-  isl_pw_aff_list *ptr = nullptr;
-
-  inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
-
-public:
-  inline /* implicit */ pw_aff_list();
-  inline /* implicit */ pw_aff_list(const pw_aff_list &obj);
-  inline explicit pw_aff_list(isl::checked::ctx ctx, int n);
-  inline explicit pw_aff_list(isl::checked::pw_aff el);
-  inline explicit pw_aff_list(isl::checked::ctx ctx, const std::string &str);
-  inline pw_aff_list &operator=(pw_aff_list obj);
-  inline ~pw_aff_list();
-  inline __isl_give isl_pw_aff_list *copy() const &;
-  inline __isl_give isl_pw_aff_list *copy() && = delete;
-  inline __isl_keep isl_pw_aff_list *get() const;
-  inline __isl_give isl_pw_aff_list *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::pw_aff_list add(isl::checked::pw_aff el) const;
-  inline isl::checked::pw_aff at(int index) const;
-  inline isl::checked::pw_aff get_at(int index) const;
-  inline isl::checked::pw_aff_list clear() const;
-  inline isl::checked::pw_aff_list concat(isl::checked::pw_aff_list list2) const;
-  inline isl::checked::pw_aff_list drop(unsigned int first, unsigned int n) const;
-  inline stat foreach(const std::function<stat(isl::checked::pw_aff)> &fn) const;
-  inline isl::checked::pw_aff_list insert(unsigned int pos, isl::checked::pw_aff el) const;
-  inline class size size() const;
-};
-
-// declarations for isl::pw_multi_aff
-inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
-inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
-
-class pw_multi_aff {
-  friend inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
-  friend inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
-
-protected:
-  isl_pw_multi_aff *ptr = nullptr;
-
-  inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
-
-public:
-  inline /* implicit */ pw_multi_aff();
-  inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj);
-  inline /* implicit */ pw_multi_aff(isl::checked::multi_aff ma);
-  inline /* implicit */ pw_multi_aff(isl::checked::pw_aff pa);
-  inline explicit pw_multi_aff(isl::checked::ctx ctx, const std::string &str);
-  inline pw_multi_aff &operator=(pw_multi_aff obj);
-  inline ~pw_multi_aff();
-  inline __isl_give isl_pw_multi_aff *copy() const &;
-  inline __isl_give isl_pw_multi_aff *copy() && = delete;
-  inline __isl_keep isl_pw_multi_aff *get() const;
-  inline __isl_give isl_pw_multi_aff *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff add(isl::checked::pw_multi_aff pma2) const;
-  inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_multi_aff add(const isl::checked::multi_aff &pma2) const;
-  inline isl::checked::pw_multi_aff add(const isl::checked::pw_aff &pma2) const;
-  inline isl::checked::pw_multi_aff add_constant(isl::checked::multi_val mv) const;
-  inline isl::checked::pw_multi_aff add_constant(isl::checked::val v) const;
-  inline isl::checked::pw_multi_aff add_constant(long v) const;
-  inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::map as_map() const;
-  inline isl::checked::multi_aff as_multi_aff() const;
-  inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::checked::set as_set() const;
-  inline isl::checked::union_map as_union_map() const;
-  inline isl::checked::pw_aff at(int pos) const;
-  inline isl::checked::pw_aff get_at(int pos) const;
-  inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::pw_multi_aff bind_domain(isl::checked::multi_id tuple) const;
-  inline isl::checked::pw_multi_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
-  inline isl::checked::pw_multi_aff coalesce() const;
-  inline isl::checked::set domain() const;
-  static inline isl::checked::pw_multi_aff domain_map(isl::checked::space space);
-  inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
-  inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff flat_range_product(isl::checked::pw_multi_aff pma2) const;
-  inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::multi_aff &pma2) const;
-  inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_aff &pma2) const;
-  inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
-  inline isl::checked::pw_multi_aff gist(isl::checked::set set) const;
-  inline isl::checked::union_pw_multi_aff gist(const isl::checked::union_set &context) const;
-  inline isl::checked::pw_multi_aff gist(const isl::checked::basic_set &set) const;
-  inline isl::checked::pw_multi_aff gist(const isl::checked::point &set) const;
-  inline boolean has_range_tuple_id() const;
-  inline isl::checked::multi_pw_aff identity() const;
-  static inline isl::checked::pw_multi_aff identity_on_domain(isl::checked::space space);
-  inline isl::checked::pw_multi_aff insert_domain(isl::checked::space domain) const;
-  inline isl::checked::pw_multi_aff intersect_domain(isl::checked::set set) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::space &space) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::basic_set &set) const;
-  inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::point &set) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
-  inline isl::checked::pw_multi_aff intersect_params(isl::checked::set set) const;
-  inline boolean involves_locals() const;
-  inline boolean involves_nan() const;
-  inline boolean involves_param(const isl::checked::id &id) const;
-  inline boolean involves_param(const std::string &id) const;
-  inline boolean involves_param(const isl::checked::id_list &list) const;
-  inline boolean isa_multi_aff() const;
-  inline boolean isa_pw_multi_aff() const;
-  inline isl::checked::pw_aff_list list() const;
-  inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_val max_multi_val() const;
-  inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_val min_multi_val() const;
-  static inline isl::checked::pw_multi_aff multi_val_on_domain(isl::checked::set domain, isl::checked::multi_val mv);
-  inline class size n_piece() const;
-  inline isl::checked::multi_pw_aff neg() const;
-  inline boolean plain_is_empty() const;
-  inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
-  inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(isl::checked::pw_multi_aff pma2) const;
-  inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::multi_aff &pma2) const;
-  inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_aff &pma2) const;
-  inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff product(isl::checked::pw_multi_aff pma2) const;
-  inline isl::checked::pw_multi_aff product(const isl::checked::multi_aff &pma2) const;
-  inline isl::checked::pw_multi_aff product(const isl::checked::pw_aff &pma2) const;
-  inline isl::checked::multi_pw_aff pullback(const isl::checked::multi_pw_aff &mpa2) const;
-  inline isl::checked::pw_multi_aff pullback(isl::checked::multi_aff ma) const;
-  inline isl::checked::pw_multi_aff pullback(isl::checked::pw_multi_aff pma2) const;
-  inline isl::checked::union_pw_multi_aff pullback(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::checked::pw_multi_aff range_factor_domain() const;
-  inline isl::checked::pw_multi_aff range_factor_range() const;
-  static inline isl::checked::pw_multi_aff range_map(isl::checked::space space);
-  inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff range_product(isl::checked::pw_multi_aff pma2) const;
-  inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_multi_aff range_product(const isl::checked::multi_aff &pma2) const;
-  inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_aff &pma2) const;
-  inline isl::checked::id range_tuple_id() const;
-  inline isl::checked::id get_range_tuple_id() const;
-  inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
-  inline isl::checked::multi_pw_aff scale(const isl::checked::multi_val &mv) const;
-  inline isl::checked::pw_multi_aff scale(isl::checked::val v) const;
-  inline isl::checked::pw_multi_aff scale(long v) const;
-  inline isl::checked::multi_pw_aff scale_down(const isl::checked::multi_val &mv) const;
-  inline isl::checked::pw_multi_aff scale_down(isl::checked::val v) const;
-  inline isl::checked::pw_multi_aff scale_down(long v) const;
-  inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
-  inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
-  inline isl::checked::pw_multi_aff set_range_tuple(isl::checked::id id) const;
-  inline isl::checked::pw_multi_aff set_range_tuple(const std::string &id) const;
-  inline class size size() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
-  inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::pw_multi_aff sub(isl::checked::pw_multi_aff pma2) const;
-  inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_multi_aff sub(const isl::checked::multi_aff &pma2) const;
-  inline isl::checked::pw_multi_aff sub(const isl::checked::pw_aff &pma2) const;
-  inline isl::checked::pw_multi_aff subtract_domain(isl::checked::set set) const;
-  inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::space &space) const;
-  inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::union_set &uset) const;
-  inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::basic_set &set) const;
-  inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::point &set) const;
-  inline isl::checked::pw_multi_aff_list to_list() const;
-  inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
-  inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
-  inline isl::checked::multi_pw_aff unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
-  inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
-  inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
-  inline isl::checked::pw_multi_aff union_add(isl::checked::pw_multi_aff pma2) const;
-  inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::pw_multi_aff union_add(const isl::checked::multi_aff &pma2) const;
-  inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_aff &pma2) const;
-  static inline isl::checked::pw_multi_aff zero(isl::checked::space space);
-};
-
-// declarations for isl::pw_multi_aff_list
-inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
-inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
-
-class pw_multi_aff_list {
-  friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
-  friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
-
-protected:
-  isl_pw_multi_aff_list *ptr = nullptr;
-
-  inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr);
-
-public:
-  inline /* implicit */ pw_multi_aff_list();
-  inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj);
-  inline explicit pw_multi_aff_list(isl::checked::ctx ctx, int n);
-  inline explicit pw_multi_aff_list(isl::checked::pw_multi_aff el);
-  inline explicit pw_multi_aff_list(isl::checked::ctx ctx, const std::string &str);
-  inline pw_multi_aff_list &operator=(pw_multi_aff_list obj);
-  inline ~pw_multi_aff_list();
-  inline __isl_give isl_pw_multi_aff_list *copy() const &;
-  inline __isl_give isl_pw_multi_aff_list *copy() && = delete;
-  inline __isl_keep isl_pw_multi_aff_list *get() const;
-  inline __isl_give isl_pw_multi_aff_list *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::pw_multi_aff_list add(isl::checked::pw_multi_aff el) const;
-  inline isl::checked::pw_multi_aff at(int index) const;
-  inline isl::checked::pw_multi_aff get_at(int index) const;
-  inline isl::checked::pw_multi_aff_list clear() const;
-  inline isl::checked::pw_multi_aff_list concat(isl::checked::pw_multi_aff_list list2) const;
-  inline isl::checked::pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
-  inline stat foreach(const std::function<stat(isl::checked::pw_multi_aff)> &fn) const;
-  inline isl::checked::pw_multi_aff_list insert(unsigned int pos, isl::checked::pw_multi_aff el) const;
-  inline class size size() const;
-};
-
-// declarations for isl::schedule
-inline schedule manage(__isl_take isl_schedule *ptr);
-inline schedule manage_copy(__isl_keep isl_schedule *ptr);
-
-class schedule {
-  friend inline schedule manage(__isl_take isl_schedule *ptr);
-  friend inline schedule manage_copy(__isl_keep isl_schedule *ptr);
-
-protected:
-  isl_schedule *ptr = nullptr;
-
-  inline explicit schedule(__isl_take isl_schedule *ptr);
-
-public:
-  inline /* implicit */ schedule();
-  inline /* implicit */ schedule(const schedule &obj);
-  inline explicit schedule(isl::checked::ctx ctx, const std::string &str);
-  inline schedule &operator=(schedule obj);
-  inline ~schedule();
-  inline __isl_give isl_schedule *copy() const &;
-  inline __isl_give isl_schedule *copy() && = delete;
-  inline __isl_keep isl_schedule *get() const;
-  inline __isl_give isl_schedule *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_set domain() const;
-  inline isl::checked::union_set get_domain() const;
-  static inline isl::checked::schedule from_domain(isl::checked::union_set domain);
-  inline isl::checked::union_map map() const;
-  inline isl::checked::union_map get_map() const;
-  inline isl::checked::schedule pullback(isl::checked::union_pw_multi_aff upma) const;
-  inline isl::checked::schedule_node root() const;
-  inline isl::checked::schedule_node get_root() const;
-};
-
-// declarations for isl::schedule_constraints
-inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
-inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
-
-class schedule_constraints {
-  friend inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
-  friend inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
-
-protected:
-  isl_schedule_constraints *ptr = nullptr;
-
-  inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
-
-public:
-  inline /* implicit */ schedule_constraints();
-  inline /* implicit */ schedule_constraints(const schedule_constraints &obj);
-  inline explicit schedule_constraints(isl::checked::ctx ctx, const std::string &str);
-  inline schedule_constraints &operator=(schedule_constraints obj);
-  inline ~schedule_constraints();
-  inline __isl_give isl_schedule_constraints *copy() const &;
-  inline __isl_give isl_schedule_constraints *copy() && = delete;
-  inline __isl_keep isl_schedule_constraints *get() const;
-  inline __isl_give isl_schedule_constraints *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_map coincidence() const;
-  inline isl::checked::union_map get_coincidence() const;
-  inline isl::checked::schedule compute_schedule() const;
-  inline isl::checked::union_map conditional_validity() const;
-  inline isl::checked::union_map get_conditional_validity() const;
-  inline isl::checked::union_map conditional_validity_condition() const;
-  inline isl::checked::union_map get_conditional_validity_condition() const;
-  inline isl::checked::set context() const;
-  inline isl::checked::set get_context() const;
-  inline isl::checked::union_set domain() const;
-  inline isl::checked::union_set get_domain() const;
-  static inline isl::checked::schedule_constraints on_domain(isl::checked::union_set domain);
-  inline isl::checked::union_map proximity() const;
-  inline isl::checked::union_map get_proximity() const;
-  inline isl::checked::schedule_constraints set_coincidence(isl::checked::union_map coincidence) const;
-  inline isl::checked::schedule_constraints set_conditional_validity(isl::checked::union_map condition, isl::checked::union_map validity) const;
-  inline isl::checked::schedule_constraints set_context(isl::checked::set context) const;
-  inline isl::checked::schedule_constraints set_proximity(isl::checked::union_map proximity) const;
-  inline isl::checked::schedule_constraints set_validity(isl::checked::union_map validity) const;
-  inline isl::checked::union_map validity() const;
-  inline isl::checked::union_map get_validity() const;
-};
-
-// declarations for isl::schedule_node
-inline schedule_node manage(__isl_take isl_schedule_node *ptr);
-inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
-
-class schedule_node {
-  friend inline schedule_node manage(__isl_take isl_schedule_node *ptr);
-  friend inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
-
-protected:
-  isl_schedule_node *ptr = nullptr;
-
-  inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node();
-  inline /* implicit */ schedule_node(const schedule_node &obj);
-  inline schedule_node &operator=(schedule_node obj);
-  inline ~schedule_node();
-  inline __isl_give isl_schedule_node *copy() const &;
-  inline __isl_give isl_schedule_node *copy() && = delete;
-  inline __isl_keep isl_schedule_node *get() const;
-  inline __isl_give isl_schedule_node *release();
-  inline bool is_null() const;
-private:
-  template <typename T,
-          typename = typename std::enable_if<std::is_same<
-                  const decltype(isl_schedule_node_get_type(NULL)),
-                  const T>::value>::type>
-  inline boolean isa_type(T subtype) const;
-public:
-  template <class T> inline boolean isa() const;
-  template <class T> inline T as() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::schedule_node ancestor(int generation) const;
-  inline class size ancestor_child_position(const isl::checked::schedule_node &ancestor) const;
-  inline class size get_ancestor_child_position(const isl::checked::schedule_node &ancestor) const;
-  inline isl::checked::schedule_node child(int pos) const;
-  inline class size child_position() const;
-  inline class size get_child_position() const;
-  inline boolean every_descendant(const std::function<boolean(isl::checked::schedule_node)> &test) const;
-  inline isl::checked::schedule_node first_child() const;
-  inline stat foreach_ancestor_top_down(const std::function<stat(isl::checked::schedule_node)> &fn) const;
-  inline stat foreach_descendant_top_down(const std::function<boolean(isl::checked::schedule_node)> &fn) const;
-  static inline isl::checked::schedule_node from_domain(isl::checked::union_set domain);
-  static inline isl::checked::schedule_node from_extension(isl::checked::union_map extension);
-  inline isl::checked::schedule_node graft_after(isl::checked::schedule_node graft) const;
-  inline isl::checked::schedule_node graft_before(isl::checked::schedule_node graft) const;
-  inline boolean has_children() const;
-  inline boolean has_next_sibling() const;
-  inline boolean has_parent() const;
-  inline boolean has_previous_sibling() const;
-  inline isl::checked::schedule_node insert_context(isl::checked::set context) const;
-  inline isl::checked::schedule_node insert_filter(isl::checked::union_set filter) const;
-  inline isl::checked::schedule_node insert_guard(isl::checked::set context) const;
-  inline isl::checked::schedule_node insert_mark(isl::checked::id mark) const;
-  inline isl::checked::schedule_node insert_mark(const std::string &mark) const;
-  inline isl::checked::schedule_node insert_partial_schedule(isl::checked::multi_union_pw_aff schedule) const;
-  inline isl::checked::schedule_node insert_sequence(isl::checked::union_set_list filters) const;
-  inline isl::checked::schedule_node insert_set(isl::checked::union_set_list filters) const;
-  inline boolean is_equal(const isl::checked::schedule_node &node2) const;
-  inline boolean is_subtree_anchored() const;
-  inline isl::checked::schedule_node map_descendant_bottom_up(const std::function<isl::checked::schedule_node(isl::checked::schedule_node)> &fn) const;
-  inline class size n_children() const;
-  inline isl::checked::schedule_node next_sibling() const;
-  inline isl::checked::schedule_node order_after(isl::checked::union_set filter) const;
-  inline isl::checked::schedule_node order_before(isl::checked::union_set filter) const;
-  inline isl::checked::schedule_node parent() const;
-  inline isl::checked::multi_union_pw_aff prefix_schedule_multi_union_pw_aff() const;
-  inline isl::checked::multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
-  inline isl::checked::union_map prefix_schedule_union_map() const;
-  inline isl::checked::union_map get_prefix_schedule_union_map() const;
-  inline isl::checked::union_pw_multi_aff prefix_schedule_union_pw_multi_aff() const;
-  inline isl::checked::union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
-  inline isl::checked::schedule_node previous_sibling() const;
-  inline isl::checked::schedule_node root() const;
-  inline isl::checked::schedule schedule() const;
-  inline isl::checked::schedule get_schedule() const;
-  inline isl::checked::schedule_node shared_ancestor(const isl::checked::schedule_node &node2) const;
-  inline isl::checked::schedule_node get_shared_ancestor(const isl::checked::schedule_node &node2) const;
-  inline class size tree_depth() const;
-  inline class size get_tree_depth() const;
-};
-
-// declarations for isl::schedule_node_band
-
-class schedule_node_band : public schedule_node {
-  template <class T>
-  friend boolean schedule_node::isa() const;
-  friend schedule_node_band schedule_node::as<schedule_node_band>() const;
-  static const auto type = isl_schedule_node_band;
-
-protected:
-  inline explicit schedule_node_band(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_band();
-  inline /* implicit */ schedule_node_band(const schedule_node_band &obj);
-  inline schedule_node_band &operator=(schedule_node_band obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_set ast_build_options() const;
-  inline isl::checked::union_set get_ast_build_options() const;
-  inline isl::checked::set ast_isolate_option() const;
-  inline isl::checked::set get_ast_isolate_option() const;
-  inline boolean member_get_coincident(int pos) const;
-  inline schedule_node_band member_set_coincident(int pos, int coincident) const;
-  inline schedule_node_band mod(isl::checked::multi_val mv) const;
-  inline class size n_member() const;
-  inline isl::checked::multi_union_pw_aff partial_schedule() const;
-  inline isl::checked::multi_union_pw_aff get_partial_schedule() const;
-  inline boolean permutable() const;
-  inline boolean get_permutable() const;
-  inline schedule_node_band scale(isl::checked::multi_val mv) const;
-  inline schedule_node_band scale_down(isl::checked::multi_val mv) const;
-  inline schedule_node_band set_ast_build_options(isl::checked::union_set options) const;
-  inline schedule_node_band set_permutable(int permutable) const;
-  inline schedule_node_band shift(isl::checked::multi_union_pw_aff shift) const;
-  inline schedule_node_band split(int pos) const;
-  inline schedule_node_band tile(isl::checked::multi_val sizes) const;
-  inline schedule_node_band member_set_ast_loop_default(int pos) const;
-  inline schedule_node_band member_set_ast_loop_atomic(int pos) const;
-  inline schedule_node_band member_set_ast_loop_unroll(int pos) const;
-  inline schedule_node_band member_set_ast_loop_separate(int pos) const;
-};
-
-// declarations for isl::schedule_node_context
-
-class schedule_node_context : public schedule_node {
-  template <class T>
-  friend boolean schedule_node::isa() const;
-  friend schedule_node_context schedule_node::as<schedule_node_context>() const;
-  static const auto type = isl_schedule_node_context;
-
-protected:
-  inline explicit schedule_node_context(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_context();
-  inline /* implicit */ schedule_node_context(const schedule_node_context &obj);
-  inline schedule_node_context &operator=(schedule_node_context obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::set context() const;
-  inline isl::checked::set get_context() const;
-};
-
-// declarations for isl::schedule_node_domain
-
-class schedule_node_domain : public schedule_node {
-  template <class T>
-  friend boolean schedule_node::isa() const;
-  friend schedule_node_domain schedule_node::as<schedule_node_domain>() const;
-  static const auto type = isl_schedule_node_domain;
-
-protected:
-  inline explicit schedule_node_domain(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_domain();
-  inline /* implicit */ schedule_node_domain(const schedule_node_domain &obj);
-  inline schedule_node_domain &operator=(schedule_node_domain obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_set domain() const;
-  inline isl::checked::union_set get_domain() const;
-};
-
-// declarations for isl::schedule_node_expansion
-
-class schedule_node_expansion : public schedule_node {
-  template <class T>
-  friend boolean schedule_node::isa() const;
-  friend schedule_node_expansion schedule_node::as<schedule_node_expansion>() const;
-  static const auto type = isl_schedule_node_expansion;
-
-protected:
-  inline explicit schedule_node_expansion(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_expansion();
-  inline /* implicit */ schedule_node_expansion(const schedule_node_expansion &obj);
-  inline schedule_node_expansion &operator=(schedule_node_expansion obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_pw_multi_aff contraction() const;
-  inline isl::checked::union_pw_multi_aff get_contraction() const;
-  inline isl::checked::union_map expansion() const;
-  inline isl::checked::union_map get_expansion() const;
-};
-
-// declarations for isl::schedule_node_extension
-
-class schedule_node_extension : public schedule_node {
-  template <class T>
-  friend boolean schedule_node::isa() const;
-  friend schedule_node_extension schedule_node::as<schedule_node_extension>() const;
-  static const auto type = isl_schedule_node_extension;
-
-protected:
-  inline explicit schedule_node_extension(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_extension();
-  inline /* implicit */ schedule_node_extension(const schedule_node_extension &obj);
-  inline schedule_node_extension &operator=(schedule_node_extension obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_map extension() const;
-  inline isl::checked::union_map get_extension() const;
-};
-
-// declarations for isl::schedule_node_filter
-
-class schedule_node_filter : public schedule_node {
-  template <class T>
-  friend boolean schedule_node::isa() const;
-  friend schedule_node_filter schedule_node::as<schedule_node_filter>() const;
-  static const auto type = isl_schedule_node_filter;
-
-protected:
-  inline explicit schedule_node_filter(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_filter();
-  inline /* implicit */ schedule_node_filter(const schedule_node_filter &obj);
-  inline schedule_node_filter &operator=(schedule_node_filter obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_set filter() const;
-  inline isl::checked::union_set get_filter() const;
-};
-
-// declarations for isl::schedule_node_guard
-
-class schedule_node_guard : public schedule_node {
-  template <class T>
-  friend boolean schedule_node::isa() const;
-  friend schedule_node_guard schedule_node::as<schedule_node_guard>() const;
-  static const auto type = isl_schedule_node_guard;
-
-protected:
-  inline explicit schedule_node_guard(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_guard();
-  inline /* implicit */ schedule_node_guard(const schedule_node_guard &obj);
-  inline schedule_node_guard &operator=(schedule_node_guard obj);
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::set guard() const;
-  inline isl::checked::set get_guard() const;
-};
-
-// declarations for isl::schedule_node_leaf
-
-class schedule_node_leaf : public schedule_node {
-  template <class T>
-  friend boolean schedule_node::isa() const;
-  friend schedule_node_leaf schedule_node::as<schedule_node_leaf>() const;
-  static const auto type = isl_schedule_node_leaf;
-
-protected:
-  inline explicit schedule_node_leaf(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_leaf();
-  inline /* implicit */ schedule_node_leaf(const schedule_node_leaf &obj);
-  inline schedule_node_leaf &operator=(schedule_node_leaf obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::schedule_node_mark
-
-class schedule_node_mark : public schedule_node {
-  template <class T>
-  friend boolean schedule_node::isa() const;
-  friend schedule_node_mark schedule_node::as<schedule_node_mark>() const;
-  static const auto type = isl_schedule_node_mark;
-
-protected:
-  inline explicit schedule_node_mark(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_mark();
-  inline /* implicit */ schedule_node_mark(const schedule_node_mark &obj);
-  inline schedule_node_mark &operator=(schedule_node_mark obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::schedule_node_sequence
-
-class schedule_node_sequence : public schedule_node {
-  template <class T>
-  friend boolean schedule_node::isa() const;
-  friend schedule_node_sequence schedule_node::as<schedule_node_sequence>() const;
-  static const auto type = isl_schedule_node_sequence;
-
-protected:
-  inline explicit schedule_node_sequence(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_sequence();
-  inline /* implicit */ schedule_node_sequence(const schedule_node_sequence &obj);
-  inline schedule_node_sequence &operator=(schedule_node_sequence obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::schedule_node_set
-
-class schedule_node_set : public schedule_node {
-  template <class T>
-  friend boolean schedule_node::isa() const;
-  friend schedule_node_set schedule_node::as<schedule_node_set>() const;
-  static const auto type = isl_schedule_node_set;
-
-protected:
-  inline explicit schedule_node_set(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_set();
-  inline /* implicit */ schedule_node_set(const schedule_node_set &obj);
-  inline schedule_node_set &operator=(schedule_node_set obj);
-  inline isl::checked::ctx ctx() const;
-
-};
-
-// declarations for isl::set
-inline set manage(__isl_take isl_set *ptr);
-inline set manage_copy(__isl_keep isl_set *ptr);
-
-class set {
-  friend inline set manage(__isl_take isl_set *ptr);
-  friend inline set manage_copy(__isl_keep isl_set *ptr);
-
-protected:
-  isl_set *ptr = nullptr;
-
-  inline explicit set(__isl_take isl_set *ptr);
-
-public:
-  inline /* implicit */ set();
-  inline /* implicit */ set(const set &obj);
-  inline /* implicit */ set(isl::checked::basic_set bset);
-  inline /* implicit */ set(isl::checked::point pnt);
-  inline explicit set(isl::checked::ctx ctx, const std::string &str);
-  inline set &operator=(set obj);
-  inline ~set();
-  inline __isl_give isl_set *copy() const &;
-  inline __isl_give isl_set *copy() && = delete;
-  inline __isl_keep isl_set *get() const;
-  inline __isl_give isl_set *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::basic_set affine_hull() const;
-  inline isl::checked::set apply(isl::checked::map map) const;
-  inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
-  inline isl::checked::set apply(const isl::checked::basic_map &map) const;
-  inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::checked::set as_set() const;
-  inline isl::checked::set bind(isl::checked::multi_id tuple) const;
-  inline isl::checked::set coalesce() const;
-  inline isl::checked::set complement() const;
-  inline isl::checked::union_set compute_divs() const;
-  inline isl::checked::set detect_equalities() const;
-  inline isl::checked::val dim_max_val(int pos) const;
-  inline isl::checked::val dim_min_val(int pos) const;
-  static inline isl::checked::set empty(isl::checked::space space);
-  inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
-  inline isl::checked::set extract_set(const isl::checked::space &space) const;
-  inline isl::checked::set flatten() const;
-  inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
-  inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
-  inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
-  inline isl::checked::set gist(isl::checked::set context) const;
-  inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
-  inline isl::checked::set gist(const isl::checked::basic_set &context) const;
-  inline isl::checked::set gist(const isl::checked::point &context) const;
-  inline isl::checked::union_set gist_params(const isl::checked::set &set) const;
-  inline isl::checked::map identity() const;
-  inline isl::checked::pw_aff indicator_function() const;
-  inline isl::checked::map insert_domain(isl::checked::space domain) const;
-  inline isl::checked::set intersect(isl::checked::set set2) const;
-  inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
-  inline isl::checked::set intersect(const isl::checked::basic_set &set2) const;
-  inline isl::checked::set intersect(const isl::checked::point &set2) const;
-  inline isl::checked::set intersect_params(isl::checked::set params) const;
-  inline boolean involves_locals() const;
-  inline boolean is_disjoint(const isl::checked::set &set2) const;
-  inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
-  inline boolean is_disjoint(const isl::checked::basic_set &set2) const;
-  inline boolean is_disjoint(const isl::checked::point &set2) const;
-  inline boolean is_empty() const;
-  inline boolean is_equal(const isl::checked::set &set2) const;
-  inline boolean is_equal(const isl::checked::union_set &uset2) const;
-  inline boolean is_equal(const isl::checked::basic_set &set2) const;
-  inline boolean is_equal(const isl::checked::point &set2) const;
-  inline boolean is_singleton() const;
-  inline boolean is_strict_subset(const isl::checked::set &set2) const;
-  inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
-  inline boolean is_strict_subset(const isl::checked::basic_set &set2) const;
-  inline boolean is_strict_subset(const isl::checked::point &set2) const;
-  inline boolean is_subset(const isl::checked::set &set2) const;
-  inline boolean is_subset(const isl::checked::union_set &uset2) const;
-  inline boolean is_subset(const isl::checked::basic_set &set2) const;
-  inline boolean is_subset(const isl::checked::point &set2) const;
-  inline boolean is_wrapping() const;
-  inline boolean isa_set() const;
-  inline isl::checked::set lexmax() const;
-  inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
-  inline isl::checked::set lexmin() const;
-  inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
-  inline isl::checked::set lower_bound(isl::checked::multi_pw_aff lower) const;
-  inline isl::checked::set lower_bound(isl::checked::multi_val lower) const;
-  inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
-  inline isl::checked::val max_val(const isl::checked::aff &obj) const;
-  inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
-  inline isl::checked::val min_val(const isl::checked::aff &obj) const;
-  inline class size n_basic_set() const;
-  inline isl::checked::set params() const;
-  inline isl::checked::multi_val plain_multi_val_if_fixed() const;
-  inline isl::checked::multi_val get_plain_multi_val_if_fixed() const;
-  inline isl::checked::basic_set polyhedral_hull() const;
-  inline isl::checked::set preimage(isl::checked::multi_aff ma) const;
-  inline isl::checked::set preimage(isl::checked::multi_pw_aff mpa) const;
-  inline isl::checked::set preimage(isl::checked::pw_multi_aff pma) const;
-  inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
-  inline isl::checked::set product(isl::checked::set set2) const;
-  inline isl::checked::set project_out_all_params() const;
-  inline isl::checked::set project_out_param(isl::checked::id id) const;
-  inline isl::checked::set project_out_param(const std::string &id) const;
-  inline isl::checked::set project_out_param(isl::checked::id_list list) const;
-  inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(isl::checked::multi_val mv) const;
-  inline isl::checked::basic_set sample() const;
-  inline isl::checked::point sample_point() const;
-  inline isl::checked::set_list set_list() const;
-  inline isl::checked::fixed_box simple_fixed_box_hull() const;
-  inline isl::checked::fixed_box get_simple_fixed_box_hull() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::val stride(int pos) const;
-  inline isl::checked::val get_stride(int pos) const;
-  inline isl::checked::set subtract(isl::checked::set set2) const;
-  inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
-  inline isl::checked::set subtract(const isl::checked::basic_set &set2) const;
-  inline isl::checked::set subtract(const isl::checked::point &set2) const;
-  inline isl::checked::set_list to_list() const;
-  inline isl::checked::union_set to_union_set() const;
-  inline isl::checked::map translation() const;
-  inline class size tuple_dim() const;
-  inline isl::checked::set unbind_params(isl::checked::multi_id tuple) const;
-  inline isl::checked::map unbind_params_insert_domain(isl::checked::multi_id domain) const;
-  inline isl::checked::set unite(isl::checked::set set2) const;
-  inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
-  inline isl::checked::set unite(const isl::checked::basic_set &set2) const;
-  inline isl::checked::set unite(const isl::checked::point &set2) const;
-  static inline isl::checked::set universe(isl::checked::space space);
-  inline isl::checked::basic_set unshifted_simple_hull() const;
-  inline isl::checked::map unwrap() const;
-  inline isl::checked::set upper_bound(isl::checked::multi_pw_aff upper) const;
-  inline isl::checked::set upper_bound(isl::checked::multi_val upper) const;
-};
-
-// declarations for isl::set_list
-inline set_list manage(__isl_take isl_set_list *ptr);
-inline set_list manage_copy(__isl_keep isl_set_list *ptr);
-
-class set_list {
-  friend inline set_list manage(__isl_take isl_set_list *ptr);
-  friend inline set_list manage_copy(__isl_keep isl_set_list *ptr);
-
-protected:
-  isl_set_list *ptr = nullptr;
-
-  inline explicit set_list(__isl_take isl_set_list *ptr);
-
-public:
-  inline /* implicit */ set_list();
-  inline /* implicit */ set_list(const set_list &obj);
-  inline explicit set_list(isl::checked::ctx ctx, int n);
-  inline explicit set_list(isl::checked::set el);
-  inline explicit set_list(isl::checked::ctx ctx, const std::string &str);
-  inline set_list &operator=(set_list obj);
-  inline ~set_list();
-  inline __isl_give isl_set_list *copy() const &;
-  inline __isl_give isl_set_list *copy() && = delete;
-  inline __isl_keep isl_set_list *get() const;
-  inline __isl_give isl_set_list *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::set_list add(isl::checked::set el) const;
-  inline isl::checked::set at(int index) const;
-  inline isl::checked::set get_at(int index) const;
-  inline isl::checked::set_list clear() const;
-  inline isl::checked::set_list concat(isl::checked::set_list list2) const;
-  inline isl::checked::set_list drop(unsigned int first, unsigned int n) const;
-  inline stat foreach(const std::function<stat(isl::checked::set)> &fn) const;
-  inline isl::checked::set_list insert(unsigned int pos, isl::checked::set el) const;
-  inline class size size() const;
-};
-
-// declarations for isl::space
-inline space manage(__isl_take isl_space *ptr);
-inline space manage_copy(__isl_keep isl_space *ptr);
-
-class space {
-  friend inline space manage(__isl_take isl_space *ptr);
-  friend inline space manage_copy(__isl_keep isl_space *ptr);
-
-protected:
-  isl_space *ptr = nullptr;
-
-  inline explicit space(__isl_take isl_space *ptr);
-
-public:
-  inline /* implicit */ space();
-  inline /* implicit */ space(const space &obj);
-  inline space &operator=(space obj);
-  inline ~space();
-  inline __isl_give isl_space *copy() const &;
-  inline __isl_give isl_space *copy() && = delete;
-  inline __isl_keep isl_space *get() const;
-  inline __isl_give isl_space *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::space add_named_tuple(isl::checked::id tuple_id, unsigned int dim) const;
-  inline isl::checked::space add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
-  inline isl::checked::space add_param(isl::checked::id id) const;
-  inline isl::checked::space add_param(const std::string &id) const;
-  inline isl::checked::space add_unnamed_tuple(unsigned int dim) const;
-  inline isl::checked::space curry() const;
-  inline isl::checked::space domain() const;
-  inline isl::checked::multi_aff domain_map_multi_aff() const;
-  inline isl::checked::pw_multi_aff domain_map_pw_multi_aff() const;
-  inline isl::checked::id domain_tuple_id() const;
-  inline isl::checked::id get_domain_tuple_id() const;
-  inline isl::checked::space flatten_domain() const;
-  inline isl::checked::space flatten_range() const;
-  inline boolean has_domain_tuple_id() const;
-  inline boolean has_range_tuple_id() const;
-  inline isl::checked::multi_aff identity_multi_aff_on_domain() const;
-  inline isl::checked::multi_pw_aff identity_multi_pw_aff_on_domain() const;
-  inline isl::checked::pw_multi_aff identity_pw_multi_aff_on_domain() const;
-  inline boolean is_equal(const isl::checked::space &space2) const;
-  inline boolean is_wrapping() const;
-  inline isl::checked::space map_from_set() const;
-  inline isl::checked::multi_aff multi_aff(isl::checked::aff_list list) const;
-  inline isl::checked::multi_aff multi_aff_on_domain(isl::checked::multi_val mv) const;
-  inline isl::checked::multi_id multi_id(isl::checked::id_list list) const;
-  inline isl::checked::multi_pw_aff multi_pw_aff(isl::checked::pw_aff_list list) const;
-  inline isl::checked::multi_union_pw_aff multi_union_pw_aff(isl::checked::union_pw_aff_list list) const;
-  inline isl::checked::multi_val multi_val(isl::checked::val_list list) const;
-  inline isl::checked::aff param_aff_on_domain(isl::checked::id id) const;
-  inline isl::checked::aff param_aff_on_domain(const std::string &id) const;
-  inline isl::checked::space params() const;
-  inline isl::checked::space product(isl::checked::space right) const;
-  inline isl::checked::space range() const;
-  inline isl::checked::multi_aff range_map_multi_aff() const;
-  inline isl::checked::pw_multi_aff range_map_pw_multi_aff() const;
-  inline isl::checked::space range_reverse() const;
-  inline isl::checked::id range_tuple_id() const;
-  inline isl::checked::id get_range_tuple_id() const;
-  inline isl::checked::space reverse() const;
-  inline isl::checked::space set_domain_tuple(isl::checked::id id) const;
-  inline isl::checked::space set_domain_tuple(const std::string &id) const;
-  inline isl::checked::space set_range_tuple(isl::checked::id id) const;
-  inline isl::checked::space set_range_tuple(const std::string &id) const;
-  inline isl::checked::space uncurry() const;
-  static inline isl::checked::space unit(isl::checked::ctx ctx);
-  inline isl::checked::map universe_map() const;
-  inline isl::checked::set universe_set() const;
-  inline isl::checked::space unwrap() const;
-  inline isl::checked::space wrap() const;
-  inline isl::checked::aff zero_aff_on_domain() const;
-  inline isl::checked::multi_aff zero_multi_aff() const;
-  inline isl::checked::multi_pw_aff zero_multi_pw_aff() const;
-  inline isl::checked::multi_union_pw_aff zero_multi_union_pw_aff() const;
-  inline isl::checked::multi_val zero_multi_val() const;
-};
-
-// declarations for isl::union_access_info
-inline union_access_info manage(__isl_take isl_union_access_info *ptr);
-inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
-
-class union_access_info {
-  friend inline union_access_info manage(__isl_take isl_union_access_info *ptr);
-  friend inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
-
-protected:
-  isl_union_access_info *ptr = nullptr;
-
-  inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
-
-public:
-  inline /* implicit */ union_access_info();
-  inline /* implicit */ union_access_info(const union_access_info &obj);
-  inline explicit union_access_info(isl::checked::union_map sink);
-  inline union_access_info &operator=(union_access_info obj);
-  inline ~union_access_info();
-  inline __isl_give isl_union_access_info *copy() const &;
-  inline __isl_give isl_union_access_info *copy() && = delete;
-  inline __isl_keep isl_union_access_info *get() const;
-  inline __isl_give isl_union_access_info *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_flow compute_flow() const;
-  inline isl::checked::union_access_info set_kill(isl::checked::union_map kill) const;
-  inline isl::checked::union_access_info set_may_source(isl::checked::union_map may_source) const;
-  inline isl::checked::union_access_info set_must_source(isl::checked::union_map must_source) const;
-  inline isl::checked::union_access_info set_schedule(isl::checked::schedule schedule) const;
-  inline isl::checked::union_access_info set_schedule_map(isl::checked::union_map schedule_map) const;
-};
-
-// declarations for isl::union_flow
-inline union_flow manage(__isl_take isl_union_flow *ptr);
-inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
-
-class union_flow {
-  friend inline union_flow manage(__isl_take isl_union_flow *ptr);
-  friend inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
-
-protected:
-  isl_union_flow *ptr = nullptr;
-
-  inline explicit union_flow(__isl_take isl_union_flow *ptr);
-
-public:
-  inline /* implicit */ union_flow();
-  inline /* implicit */ union_flow(const union_flow &obj);
-  inline union_flow &operator=(union_flow obj);
-  inline ~union_flow();
-  inline __isl_give isl_union_flow *copy() const &;
-  inline __isl_give isl_union_flow *copy() && = delete;
-  inline __isl_keep isl_union_flow *get() const;
-  inline __isl_give isl_union_flow *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_map full_may_dependence() const;
-  inline isl::checked::union_map get_full_may_dependence() const;
-  inline isl::checked::union_map full_must_dependence() const;
-  inline isl::checked::union_map get_full_must_dependence() const;
-  inline isl::checked::union_map may_dependence() const;
-  inline isl::checked::union_map get_may_dependence() const;
-  inline isl::checked::union_map may_no_source() const;
-  inline isl::checked::union_map get_may_no_source() const;
-  inline isl::checked::union_map must_dependence() const;
-  inline isl::checked::union_map get_must_dependence() const;
-  inline isl::checked::union_map must_no_source() const;
-  inline isl::checked::union_map get_must_no_source() const;
-};
-
-// declarations for isl::union_map
-inline union_map manage(__isl_take isl_union_map *ptr);
-inline union_map manage_copy(__isl_keep isl_union_map *ptr);
-
-class union_map {
-  friend inline union_map manage(__isl_take isl_union_map *ptr);
-  friend inline union_map manage_copy(__isl_keep isl_union_map *ptr);
-
-protected:
-  isl_union_map *ptr = nullptr;
-
-  inline explicit union_map(__isl_take isl_union_map *ptr);
-
-public:
-  inline /* implicit */ union_map();
-  inline /* implicit */ union_map(const union_map &obj);
-  inline /* implicit */ union_map(isl::checked::basic_map bmap);
-  inline /* implicit */ union_map(isl::checked::map map);
-  inline explicit union_map(isl::checked::ctx ctx, const std::string &str);
-  inline union_map &operator=(union_map obj);
-  inline ~union_map();
-  inline __isl_give isl_union_map *copy() const &;
-  inline __isl_give isl_union_map *copy() && = delete;
-  inline __isl_keep isl_union_map *get() const;
-  inline __isl_give isl_union_map *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_map affine_hull() const;
-  inline isl::checked::union_map apply_domain(isl::checked::union_map umap2) const;
-  inline isl::checked::union_map apply_range(isl::checked::union_map umap2) const;
-  inline isl::checked::map as_map() const;
-  inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
-  inline isl::checked::union_set bind_range(isl::checked::multi_id tuple) const;
-  inline isl::checked::union_map coalesce() const;
-  inline isl::checked::union_map compute_divs() const;
-  inline isl::checked::union_map curry() const;
-  inline isl::checked::union_set deltas() const;
-  inline isl::checked::union_map detect_equalities() const;
-  inline isl::checked::union_set domain() const;
-  inline isl::checked::union_map domain_factor_domain() const;
-  inline isl::checked::union_map domain_factor_range() const;
-  inline isl::checked::union_map domain_map() const;
-  inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
-  inline isl::checked::union_map domain_product(isl::checked::union_map umap2) const;
-  static inline isl::checked::union_map empty(isl::checked::ctx ctx);
-  inline isl::checked::union_map eq_at(isl::checked::multi_union_pw_aff mupa) const;
-  inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
-  inline isl::checked::map extract_map(isl::checked::space space) const;
-  inline isl::checked::union_map factor_domain() const;
-  inline isl::checked::union_map factor_range() const;
-  inline isl::checked::union_map fixed_power(isl::checked::val exp) const;
-  inline isl::checked::union_map fixed_power(long exp) const;
-  inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
-  static inline isl::checked::union_map from(isl::checked::multi_union_pw_aff mupa);
-  static inline isl::checked::union_map from(isl::checked::union_pw_multi_aff upma);
-  static inline isl::checked::union_map from_domain(isl::checked::union_set uset);
-  static inline isl::checked::union_map from_domain_and_range(isl::checked::union_set domain, isl::checked::union_set range);
-  static inline isl::checked::union_map from_range(isl::checked::union_set uset);
-  inline isl::checked::union_map gist(isl::checked::union_map context) const;
-  inline isl::checked::union_map gist_domain(isl::checked::union_set uset) const;
-  inline isl::checked::union_map gist_params(isl::checked::set set) const;
-  inline isl::checked::union_map gist_range(isl::checked::union_set uset) const;
-  inline isl::checked::union_map intersect(isl::checked::union_map umap2) const;
-  inline isl::checked::union_map intersect_domain(isl::checked::space space) const;
-  inline isl::checked::union_map intersect_domain(isl::checked::union_set uset) const;
-  inline isl::checked::union_map intersect_domain_factor_domain(isl::checked::union_map factor) const;
-  inline isl::checked::union_map intersect_domain_factor_range(isl::checked::union_map factor) const;
-  inline isl::checked::union_map intersect_params(isl::checked::set set) const;
-  inline isl::checked::union_map intersect_range(isl::checked::space space) const;
-  inline isl::checked::union_map intersect_range(isl::checked::union_set uset) const;
-  inline isl::checked::union_map intersect_range_factor_domain(isl::checked::union_map factor) const;
-  inline isl::checked::union_map intersect_range_factor_range(isl::checked::union_map factor) const;
-  inline boolean is_bijective() const;
-  inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
-  inline boolean is_empty() const;
-  inline boolean is_equal(const isl::checked::union_map &umap2) const;
-  inline boolean is_injective() const;
-  inline boolean is_single_valued() const;
-  inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
-  inline boolean is_subset(const isl::checked::union_map &umap2) const;
-  inline boolean isa_map() const;
-  inline isl::checked::union_map lexmax() const;
-  inline isl::checked::union_map lexmin() const;
-  inline isl::checked::map_list map_list() const;
-  inline isl::checked::map_list get_map_list() const;
-  inline isl::checked::union_map polyhedral_hull() const;
-  inline isl::checked::union_map preimage_domain(isl::checked::multi_aff ma) const;
-  inline isl::checked::union_map preimage_domain(isl::checked::multi_pw_aff mpa) const;
-  inline isl::checked::union_map preimage_domain(isl::checked::pw_multi_aff pma) const;
-  inline isl::checked::union_map preimage_domain(isl::checked::union_pw_multi_aff upma) const;
-  inline isl::checked::union_map preimage_range(isl::checked::multi_aff ma) const;
-  inline isl::checked::union_map preimage_range(isl::checked::pw_multi_aff pma) const;
-  inline isl::checked::union_map preimage_range(isl::checked::union_pw_multi_aff upma) const;
-  inline isl::checked::union_map product(isl::checked::union_map umap2) const;
-  inline isl::checked::union_map project_out_all_params() const;
-  inline isl::checked::union_set range() const;
-  inline isl::checked::union_map range_factor_domain() const;
-  inline isl::checked::union_map range_factor_range() const;
-  inline isl::checked::union_map range_map() const;
-  inline isl::checked::union_map range_product(isl::checked::union_map umap2) const;
-  inline isl::checked::union_map range_reverse() const;
-  inline isl::checked::union_map reverse() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::union_map subtract(isl::checked::union_map umap2) const;
-  inline isl::checked::union_map subtract_domain(isl::checked::union_set dom) const;
-  inline isl::checked::union_map subtract_range(isl::checked::union_set dom) const;
-  inline isl::checked::union_map uncurry() const;
-  inline isl::checked::union_map unite(isl::checked::union_map umap2) const;
-  inline isl::checked::union_map universe() const;
-  inline isl::checked::union_set wrap() const;
-  inline isl::checked::union_map zip() const;
-};
-
-// declarations for isl::union_pw_aff
-inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
-inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
-
-class union_pw_aff {
-  friend inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
-  friend inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
-
-protected:
-  isl_union_pw_aff *ptr = nullptr;
-
-  inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
-
-public:
-  inline /* implicit */ union_pw_aff();
-  inline /* implicit */ union_pw_aff(const union_pw_aff &obj);
-  inline /* implicit */ union_pw_aff(isl::checked::aff aff);
-  inline /* implicit */ union_pw_aff(isl::checked::pw_aff pa);
-  inline explicit union_pw_aff(isl::checked::ctx ctx, const std::string &str);
-  inline union_pw_aff &operator=(union_pw_aff obj);
-  inline ~union_pw_aff();
-  inline __isl_give isl_union_pw_aff *copy() const &;
-  inline __isl_give isl_union_pw_aff *copy() && = delete;
-  inline __isl_keep isl_union_pw_aff *get() const;
-  inline __isl_give isl_union_pw_aff *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::union_pw_aff add(isl::checked::union_pw_aff upa2) const;
-  inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::union_pw_aff add(const isl::checked::aff &upa2) const;
-  inline isl::checked::union_pw_aff add(const isl::checked::pw_aff &upa2) const;
-  inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::checked::union_map as_union_map() const;
-  inline isl::checked::union_pw_aff at(int pos) const;
-  inline isl::checked::union_set bind(const isl::checked::multi_id &tuple) const;
-  inline isl::checked::union_set bind(isl::checked::id id) const;
-  inline isl::checked::union_set bind(const std::string &id) const;
-  inline isl::checked::union_pw_aff coalesce() const;
-  inline isl::checked::union_set domain() const;
-  inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
-  inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::union_pw_aff gist(isl::checked::union_set context) const;
-  inline boolean has_range_tuple_id() const;
-  inline isl::checked::union_pw_aff intersect_domain(isl::checked::space space) const;
-  inline isl::checked::union_pw_aff intersect_domain(isl::checked::union_set uset) const;
-  inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(isl::checked::union_set uset) const;
-  inline isl::checked::union_pw_aff intersect_domain_wrapped_range(isl::checked::union_set uset) const;
-  inline isl::checked::union_pw_aff intersect_params(isl::checked::set set) const;
-  inline boolean involves_locals() const;
-  inline boolean involves_nan() const;
-  inline boolean isa_pw_multi_aff() const;
-  inline isl::checked::union_pw_aff_list list() const;
-  inline isl::checked::multi_union_pw_aff neg() const;
-  inline boolean plain_is_empty() const;
-  inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::union_pw_aff pullback(isl::checked::union_pw_multi_aff upma) const;
-  inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::checked::union_pw_multi_aff range_factor_domain() const;
-  inline isl::checked::union_pw_multi_aff range_factor_range() const;
-  inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::id range_tuple_id() const;
-  inline isl::checked::multi_union_pw_aff reset_range_tuple_id() const;
-  inline isl::checked::multi_union_pw_aff scale(const isl::checked::multi_val &mv) const;
-  inline isl::checked::multi_union_pw_aff scale(const isl::checked::val &v) const;
-  inline isl::checked::multi_union_pw_aff scale(long v) const;
-  inline isl::checked::multi_union_pw_aff scale_down(const isl::checked::multi_val &mv) const;
-  inline isl::checked::multi_union_pw_aff scale_down(const isl::checked::val &v) const;
-  inline isl::checked::multi_union_pw_aff scale_down(long v) const;
-  inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
-  inline isl::checked::multi_union_pw_aff set_range_tuple(const isl::checked::id &id) const;
-  inline isl::checked::multi_union_pw_aff set_range_tuple(const std::string &id) const;
-  inline class size size() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
-  inline isl::checked::union_pw_aff sub(isl::checked::union_pw_aff upa2) const;
-  inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::union_pw_aff sub(const isl::checked::aff &upa2) const;
-  inline isl::checked::union_pw_aff sub(const isl::checked::pw_aff &upa2) const;
-  inline isl::checked::union_pw_aff subtract_domain(isl::checked::space space) const;
-  inline isl::checked::union_pw_aff subtract_domain(isl::checked::union_set uset) const;
-  inline isl::checked::union_pw_aff_list to_list() const;
-  inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
-  inline isl::checked::union_pw_aff union_add(isl::checked::union_pw_aff upa2) const;
-  inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
-  inline isl::checked::union_pw_aff union_add(const isl::checked::aff &upa2) const;
-  inline isl::checked::union_pw_aff union_add(const isl::checked::pw_aff &upa2) const;
-};
-
-// declarations for isl::union_pw_aff_list
-inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
-inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
-
-class union_pw_aff_list {
-  friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
-  friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
-
-protected:
-  isl_union_pw_aff_list *ptr = nullptr;
-
-  inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
-
-public:
-  inline /* implicit */ union_pw_aff_list();
-  inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj);
-  inline explicit union_pw_aff_list(isl::checked::ctx ctx, int n);
-  inline explicit union_pw_aff_list(isl::checked::union_pw_aff el);
-  inline explicit union_pw_aff_list(isl::checked::ctx ctx, const std::string &str);
-  inline union_pw_aff_list &operator=(union_pw_aff_list obj);
-  inline ~union_pw_aff_list();
-  inline __isl_give isl_union_pw_aff_list *copy() const &;
-  inline __isl_give isl_union_pw_aff_list *copy() && = delete;
-  inline __isl_keep isl_union_pw_aff_list *get() const;
-  inline __isl_give isl_union_pw_aff_list *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_pw_aff_list add(isl::checked::union_pw_aff el) const;
-  inline isl::checked::union_pw_aff at(int index) const;
-  inline isl::checked::union_pw_aff get_at(int index) const;
-  inline isl::checked::union_pw_aff_list clear() const;
-  inline isl::checked::union_pw_aff_list concat(isl::checked::union_pw_aff_list list2) const;
-  inline isl::checked::union_pw_aff_list drop(unsigned int first, unsigned int n) const;
-  inline stat foreach(const std::function<stat(isl::checked::union_pw_aff)> &fn) const;
-  inline isl::checked::union_pw_aff_list insert(unsigned int pos, isl::checked::union_pw_aff el) const;
-  inline class size size() const;
-};
-
-// declarations for isl::union_pw_multi_aff
-inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
-inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
-
-class union_pw_multi_aff {
-  friend inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
-  friend inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
-
-protected:
-  isl_union_pw_multi_aff *ptr = nullptr;
-
-  inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr);
-
-public:
-  inline /* implicit */ union_pw_multi_aff();
-  inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj);
-  inline /* implicit */ union_pw_multi_aff(isl::checked::multi_aff ma);
-  inline /* implicit */ union_pw_multi_aff(isl::checked::pw_multi_aff pma);
-  inline /* implicit */ union_pw_multi_aff(isl::checked::union_pw_aff upa);
-  inline explicit union_pw_multi_aff(isl::checked::ctx ctx, const std::string &str);
-  inline union_pw_multi_aff &operator=(union_pw_multi_aff obj);
-  inline ~union_pw_multi_aff();
-  inline __isl_give isl_union_pw_multi_aff *copy() const &;
-  inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
-  inline __isl_keep isl_union_pw_multi_aff *get() const;
-  inline __isl_give isl_union_pw_multi_aff *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_pw_multi_aff add(isl::checked::union_pw_multi_aff upma2) const;
-  inline isl::checked::union_pw_multi_aff apply(isl::checked::union_pw_multi_aff upma2) const;
-  inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::checked::union_map as_union_map() const;
-  inline isl::checked::union_pw_multi_aff coalesce() const;
-  inline isl::checked::union_set domain() const;
-  static inline isl::checked::union_pw_multi_aff empty(isl::checked::ctx ctx);
-  inline isl::checked::pw_multi_aff extract_pw_multi_aff(isl::checked::space space) const;
-  inline isl::checked::union_pw_multi_aff flat_range_product(isl::checked::union_pw_multi_aff upma2) const;
-  inline isl::checked::union_pw_multi_aff gist(isl::checked::union_set context) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain(isl::checked::space space) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain(isl::checked::union_set uset) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(isl::checked::union_set uset) const;
-  inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(isl::checked::union_set uset) const;
-  inline isl::checked::union_pw_multi_aff intersect_params(isl::checked::set set) const;
-  inline boolean involves_locals() const;
-  inline boolean isa_pw_multi_aff() const;
-  inline boolean plain_is_empty() const;
-  inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(isl::checked::union_pw_multi_aff upma2) const;
-  inline isl::checked::union_pw_multi_aff pullback(isl::checked::union_pw_multi_aff upma2) const;
-  inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::checked::pw_multi_aff_list get_pw_multi_aff_list() const;
-  inline isl::checked::union_pw_multi_aff range_factor_domain() const;
-  inline isl::checked::union_pw_multi_aff range_factor_range() const;
-  inline isl::checked::union_pw_multi_aff range_product(isl::checked::union_pw_multi_aff upma2) const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::union_pw_multi_aff sub(isl::checked::union_pw_multi_aff upma2) const;
-  inline isl::checked::union_pw_multi_aff subtract_domain(isl::checked::space space) const;
-  inline isl::checked::union_pw_multi_aff subtract_domain(isl::checked::union_set uset) const;
-  inline isl::checked::union_pw_multi_aff union_add(isl::checked::union_pw_multi_aff upma2) const;
-};
-
-// declarations for isl::union_set
-inline union_set manage(__isl_take isl_union_set *ptr);
-inline union_set manage_copy(__isl_keep isl_union_set *ptr);
-
-class union_set {
-  friend inline union_set manage(__isl_take isl_union_set *ptr);
-  friend inline union_set manage_copy(__isl_keep isl_union_set *ptr);
-
-protected:
-  isl_union_set *ptr = nullptr;
-
-  inline explicit union_set(__isl_take isl_union_set *ptr);
-
-public:
-  inline /* implicit */ union_set();
-  inline /* implicit */ union_set(const union_set &obj);
-  inline /* implicit */ union_set(isl::checked::basic_set bset);
-  inline /* implicit */ union_set(isl::checked::point pnt);
-  inline /* implicit */ union_set(isl::checked::set set);
-  inline explicit union_set(isl::checked::ctx ctx, const std::string &str);
-  inline union_set &operator=(union_set obj);
-  inline ~union_set();
-  inline __isl_give isl_union_set *copy() const &;
-  inline __isl_give isl_union_set *copy() && = delete;
-  inline __isl_keep isl_union_set *get() const;
-  inline __isl_give isl_union_set *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_set affine_hull() const;
-  inline isl::checked::union_set apply(isl::checked::union_map umap) const;
-  inline isl::checked::set as_set() const;
-  inline isl::checked::union_set coalesce() const;
-  inline isl::checked::union_set compute_divs() const;
-  inline isl::checked::union_set detect_equalities() const;
-  static inline isl::checked::union_set empty(isl::checked::ctx ctx);
-  inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
-  inline isl::checked::set extract_set(isl::checked::space space) const;
-  inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
-  inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
-  inline isl::checked::union_set gist(isl::checked::union_set context) const;
-  inline isl::checked::union_set gist_params(isl::checked::set set) const;
-  inline isl::checked::union_map identity() const;
-  inline isl::checked::union_set intersect(isl::checked::union_set uset2) const;
-  inline isl::checked::union_set intersect_params(isl::checked::set set) const;
-  inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
-  inline boolean is_empty() const;
-  inline boolean is_equal(const isl::checked::union_set &uset2) const;
-  inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
-  inline boolean is_subset(const isl::checked::union_set &uset2) const;
-  inline boolean isa_set() const;
-  inline isl::checked::union_set lexmax() const;
-  inline isl::checked::union_set lexmin() const;
-  inline isl::checked::union_set polyhedral_hull() const;
-  inline isl::checked::union_set preimage(isl::checked::multi_aff ma) const;
-  inline isl::checked::union_set preimage(isl::checked::pw_multi_aff pma) const;
-  inline isl::checked::union_set preimage(isl::checked::union_pw_multi_aff upma) const;
-  inline isl::checked::point sample_point() const;
-  inline isl::checked::set_list set_list() const;
-  inline isl::checked::set_list get_set_list() const;
-  inline isl::checked::space space() const;
-  inline isl::checked::space get_space() const;
-  inline isl::checked::union_set subtract(isl::checked::union_set uset2) const;
-  inline isl::checked::union_set_list to_list() const;
-  inline isl::checked::union_set unite(isl::checked::union_set uset2) const;
-  inline isl::checked::union_set universe() const;
-  inline isl::checked::union_map unwrap() const;
-};
-
-// declarations for isl::union_set_list
-inline union_set_list manage(__isl_take isl_union_set_list *ptr);
-inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
-
-class union_set_list {
-  friend inline union_set_list manage(__isl_take isl_union_set_list *ptr);
-  friend inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
-
-protected:
-  isl_union_set_list *ptr = nullptr;
-
-  inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
-
-public:
-  inline /* implicit */ union_set_list();
-  inline /* implicit */ union_set_list(const union_set_list &obj);
-  inline explicit union_set_list(isl::checked::ctx ctx, int n);
-  inline explicit union_set_list(isl::checked::union_set el);
-  inline explicit union_set_list(isl::checked::ctx ctx, const std::string &str);
-  inline union_set_list &operator=(union_set_list obj);
-  inline ~union_set_list();
-  inline __isl_give isl_union_set_list *copy() const &;
-  inline __isl_give isl_union_set_list *copy() && = delete;
-  inline __isl_keep isl_union_set_list *get() const;
-  inline __isl_give isl_union_set_list *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::union_set_list add(isl::checked::union_set el) const;
-  inline isl::checked::union_set at(int index) const;
-  inline isl::checked::union_set get_at(int index) const;
-  inline isl::checked::union_set_list clear() const;
-  inline isl::checked::union_set_list concat(isl::checked::union_set_list list2) const;
-  inline isl::checked::union_set_list drop(unsigned int first, unsigned int n) const;
-  inline stat foreach(const std::function<stat(isl::checked::union_set)> &fn) const;
-  inline isl::checked::union_set_list insert(unsigned int pos, isl::checked::union_set el) const;
-  inline class size size() const;
-};
-
-// declarations for isl::val
-inline val manage(__isl_take isl_val *ptr);
-inline val manage_copy(__isl_keep isl_val *ptr);
-
-class val {
-  friend inline val manage(__isl_take isl_val *ptr);
-  friend inline val manage_copy(__isl_keep isl_val *ptr);
-
-protected:
-  isl_val *ptr = nullptr;
-
-  inline explicit val(__isl_take isl_val *ptr);
-
-public:
-  inline /* implicit */ val();
-  inline /* implicit */ val(const val &obj);
-  inline explicit val(isl::checked::ctx ctx, long i);
-  inline explicit val(isl::checked::ctx ctx, const std::string &str);
-  inline val &operator=(val obj);
-  inline ~val();
-  inline __isl_give isl_val *copy() const &;
-  inline __isl_give isl_val *copy() && = delete;
-  inline __isl_keep isl_val *get() const;
-  inline __isl_give isl_val *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::val abs() const;
-  inline boolean abs_eq(const isl::checked::val &v2) const;
-  inline boolean abs_eq(long v2) const;
-  inline isl::checked::val add(isl::checked::val v2) const;
-  inline isl::checked::val add(long v2) const;
-  inline isl::checked::val ceil() const;
-  inline int cmp_si(long i) const;
-  inline long den_si() const;
-  inline long get_den_si() const;
-  inline isl::checked::val div(isl::checked::val v2) const;
-  inline isl::checked::val div(long v2) const;
-  inline boolean eq(const isl::checked::val &v2) const;
-  inline boolean eq(long v2) const;
-  inline isl::checked::val floor() const;
-  inline isl::checked::val gcd(isl::checked::val v2) const;
-  inline isl::checked::val gcd(long v2) const;
-  inline boolean ge(const isl::checked::val &v2) const;
-  inline boolean ge(long v2) const;
-  inline boolean gt(const isl::checked::val &v2) const;
-  inline boolean gt(long v2) const;
-  static inline isl::checked::val infty(isl::checked::ctx ctx);
-  inline isl::checked::val inv() const;
-  inline boolean is_divisible_by(const isl::checked::val &v2) const;
-  inline boolean is_divisible_by(long v2) const;
-  inline boolean is_infty() const;
-  inline boolean is_int() const;
-  inline boolean is_nan() const;
-  inline boolean is_neg() const;
-  inline boolean is_neginfty() const;
-  inline boolean is_negone() const;
-  inline boolean is_nonneg() const;
-  inline boolean is_nonpos() const;
-  inline boolean is_one() const;
-  inline boolean is_pos() const;
-  inline boolean is_rat() const;
-  inline boolean is_zero() const;
-  inline boolean le(const isl::checked::val &v2) const;
-  inline boolean le(long v2) const;
-  inline boolean lt(const isl::checked::val &v2) const;
-  inline boolean lt(long v2) const;
-  inline isl::checked::val max(isl::checked::val v2) const;
-  inline isl::checked::val max(long v2) const;
-  inline isl::checked::val min(isl::checked::val v2) const;
-  inline isl::checked::val min(long v2) const;
-  inline isl::checked::val mod(isl::checked::val v2) const;
-  inline isl::checked::val mod(long v2) const;
-  inline isl::checked::val mul(isl::checked::val v2) const;
-  inline isl::checked::val mul(long v2) const;
-  static inline isl::checked::val nan(isl::checked::ctx ctx);
-  inline boolean ne(const isl::checked::val &v2) const;
-  inline boolean ne(long v2) const;
-  inline isl::checked::val neg() const;
-  static inline isl::checked::val neginfty(isl::checked::ctx ctx);
-  static inline isl::checked::val negone(isl::checked::ctx ctx);
-  inline long num_si() const;
-  inline long get_num_si() const;
-  static inline isl::checked::val one(isl::checked::ctx ctx);
-  inline isl::checked::val pow2() const;
-  inline int sgn() const;
-  inline isl::checked::val sub(isl::checked::val v2) const;
-  inline isl::checked::val sub(long v2) const;
-  inline isl::checked::val_list to_list() const;
-  inline isl::checked::val trunc() const;
-  static inline isl::checked::val zero(isl::checked::ctx ctx);
-};
-
-// declarations for isl::val_list
-inline val_list manage(__isl_take isl_val_list *ptr);
-inline val_list manage_copy(__isl_keep isl_val_list *ptr);
-
-class val_list {
-  friend inline val_list manage(__isl_take isl_val_list *ptr);
-  friend inline val_list manage_copy(__isl_keep isl_val_list *ptr);
-
-protected:
-  isl_val_list *ptr = nullptr;
-
-  inline explicit val_list(__isl_take isl_val_list *ptr);
-
-public:
-  inline /* implicit */ val_list();
-  inline /* implicit */ val_list(const val_list &obj);
-  inline explicit val_list(isl::checked::ctx ctx, int n);
-  inline explicit val_list(isl::checked::val el);
-  inline explicit val_list(isl::checked::ctx ctx, const std::string &str);
-  inline val_list &operator=(val_list obj);
-  inline ~val_list();
-  inline __isl_give isl_val_list *copy() const &;
-  inline __isl_give isl_val_list *copy() && = delete;
-  inline __isl_keep isl_val_list *get() const;
-  inline __isl_give isl_val_list *release();
-  inline bool is_null() const;
-  inline isl::checked::ctx ctx() const;
-
-  inline isl::checked::val_list add(isl::checked::val el) const;
-  inline isl::checked::val_list add(long el) const;
-  inline isl::checked::val at(int index) const;
-  inline isl::checked::val get_at(int index) const;
-  inline isl::checked::val_list clear() const;
-  inline isl::checked::val_list concat(isl::checked::val_list list2) const;
-  inline isl::checked::val_list drop(unsigned int first, unsigned int n) const;
-  inline stat foreach(const std::function<stat(isl::checked::val)> &fn) const;
-  inline isl::checked::val_list insert(unsigned int pos, isl::checked::val el) const;
-  inline isl::checked::val_list insert(unsigned int pos, long el) const;
-  inline class size size() const;
-};
-
-// implementations for isl::aff
-aff manage(__isl_take isl_aff *ptr) {
-  return aff(ptr);
-}
-aff manage_copy(__isl_keep isl_aff *ptr) {
-  ptr = isl_aff_copy(ptr);
-  return aff(ptr);
-}
-
-aff::aff()
-    : ptr(nullptr) {}
-
-aff::aff(const aff &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-aff::aff(__isl_take isl_aff *ptr)
-    : ptr(ptr) {}
-
-aff::aff(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-aff &aff::operator=(aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-aff::~aff() {
-  if (ptr)
-    isl_aff_free(ptr);
-}
-
-__isl_give isl_aff *aff::copy() const & {
-  return isl_aff_copy(ptr);
-}
-
-__isl_keep isl_aff *aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_aff *aff::release() {
-  isl_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx aff::ctx() const {
-  return isl::checked::ctx(isl_aff_get_ctx(ptr));
-}
-
-isl::checked::aff aff::add(isl::checked::aff aff2) const
-{
-  auto res = isl_aff_add(copy(), aff2.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff aff::add(const isl::checked::multi_aff &multi2) const
-{
-  return isl::checked::multi_aff(*this).add(multi2);
-}
-
-isl::checked::multi_pw_aff aff::add(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).add(multi2);
-}
-
-isl::checked::multi_union_pw_aff aff::add(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).add(multi2);
-}
-
-isl::checked::pw_aff aff::add(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).add(pwaff2);
-}
-
-isl::checked::pw_multi_aff aff::add(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_aff(*this).add(pma2);
-}
-
-isl::checked::union_pw_aff aff::add(const isl::checked::union_pw_aff &upa2) const
-{
-  return isl::checked::pw_aff(*this).add(upa2);
-}
-
-isl::checked::union_pw_multi_aff aff::add(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_aff(*this).add(upma2);
-}
-
-isl::checked::aff aff::add_constant(isl::checked::val v) const
-{
-  auto res = isl_aff_add_constant_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::aff aff::add_constant(long v) const
-{
-  return this->add_constant(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_aff aff::add_constant(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::multi_aff(*this).add_constant(mv);
-}
-
-isl::checked::union_pw_multi_aff aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_aff(*this).apply(upma2);
-}
-
-isl::checked::aff aff::as_aff() const
-{
-  return isl::checked::pw_aff(*this).as_aff();
-}
-
-isl::checked::map aff::as_map() const
-{
-  return isl::checked::pw_aff(*this).as_map();
-}
-
-isl::checked::multi_aff aff::as_multi_aff() const
-{
-  return isl::checked::pw_aff(*this).as_multi_aff();
-}
-
-isl::checked::multi_union_pw_aff aff::as_multi_union_pw_aff() const
-{
-  return isl::checked::pw_aff(*this).as_multi_union_pw_aff();
-}
-
-isl::checked::pw_multi_aff aff::as_pw_multi_aff() const
-{
-  return isl::checked::pw_aff(*this).as_pw_multi_aff();
-}
-
-isl::checked::set aff::as_set() const
-{
-  return isl::checked::multi_aff(*this).as_set();
-}
-
-isl::checked::union_map aff::as_union_map() const
-{
-  return isl::checked::pw_aff(*this).as_union_map();
-}
-
-isl::checked::aff aff::at(int pos) const
-{
-  return isl::checked::multi_aff(*this).at(pos);
-}
-
-isl::checked::basic_set aff::bind(isl::checked::id id) const
-{
-  auto res = isl_aff_bind_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::basic_set aff::bind(const std::string &id) const
-{
-  return this->bind(isl::checked::id(ctx(), id));
-}
-
-isl::checked::basic_set aff::bind(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::multi_aff(*this).bind(tuple);
-}
-
-isl::checked::pw_aff aff::bind_domain(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::pw_aff(*this).bind_domain(tuple);
-}
-
-isl::checked::pw_aff aff::bind_domain_wrapped_domain(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::pw_aff(*this).bind_domain_wrapped_domain(tuple);
-}
-
-isl::checked::aff aff::ceil() const
-{
-  auto res = isl_aff_ceil(copy());
-  return manage(res);
-}
-
-isl::checked::pw_aff aff::coalesce() const
-{
-  return isl::checked::pw_aff(*this).coalesce();
-}
-
-isl::checked::pw_aff aff::cond(const isl::checked::pw_aff &pwaff_true, const isl::checked::pw_aff &pwaff_false) const
-{
-  return isl::checked::pw_aff(*this).cond(pwaff_true, pwaff_false);
-}
-
-isl::checked::multi_val aff::constant_multi_val() const
-{
-  return isl::checked::multi_aff(*this).constant_multi_val();
-}
-
-isl::checked::val aff::constant_val() const
-{
-  auto res = isl_aff_get_constant_val(get());
-  return manage(res);
-}
-
-isl::checked::val aff::get_constant_val() const
-{
-  return constant_val();
-}
-
-isl::checked::aff aff::div(isl::checked::aff aff2) const
-{
-  auto res = isl_aff_div(copy(), aff2.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff aff::div(const isl::checked::pw_aff &pa2) const
-{
-  return isl::checked::pw_aff(*this).div(pa2);
-}
-
-isl::checked::set aff::domain() const
-{
-  return isl::checked::pw_aff(*this).domain();
-}
-
-isl::checked::set aff::eq_set(isl::checked::aff aff2) const
-{
-  auto res = isl_aff_eq_set(copy(), aff2.release());
-  return manage(res);
-}
-
-isl::checked::set aff::eq_set(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).eq_set(pwaff2);
-}
-
-isl::checked::val aff::eval(isl::checked::point pnt) const
-{
-  auto res = isl_aff_eval(copy(), pnt.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff aff::extract_pw_multi_aff(const isl::checked::space &space) const
-{
-  return isl::checked::pw_aff(*this).extract_pw_multi_aff(space);
-}
-
-isl::checked::multi_aff aff::flat_range_product(const isl::checked::multi_aff &multi2) const
-{
-  return isl::checked::multi_aff(*this).flat_range_product(multi2);
-}
-
-isl::checked::multi_pw_aff aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::checked::multi_union_pw_aff aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::checked::pw_multi_aff aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_aff(*this).flat_range_product(pma2);
-}
-
-isl::checked::union_pw_multi_aff aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_aff(*this).flat_range_product(upma2);
-}
-
-isl::checked::aff aff::floor() const
-{
-  auto res = isl_aff_floor(copy());
-  return manage(res);
-}
-
-stat aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
-{
-  return isl::checked::pw_aff(*this).foreach_piece(fn);
-}
-
-isl::checked::set aff::ge_set(isl::checked::aff aff2) const
-{
-  auto res = isl_aff_ge_set(copy(), aff2.release());
-  return manage(res);
-}
-
-isl::checked::set aff::ge_set(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).ge_set(pwaff2);
-}
-
-isl::checked::aff aff::gist(isl::checked::set context) const
-{
-  auto res = isl_aff_gist(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff aff::gist(const isl::checked::union_set &context) const
-{
-  return isl::checked::pw_aff(*this).gist(context);
-}
-
-isl::checked::aff aff::gist(const isl::checked::basic_set &context) const
-{
-  return this->gist(isl::checked::set(context));
-}
-
-isl::checked::aff aff::gist(const isl::checked::point &context) const
-{
-  return this->gist(isl::checked::set(context));
-}
-
-isl::checked::set aff::gt_set(isl::checked::aff aff2) const
-{
-  auto res = isl_aff_gt_set(copy(), aff2.release());
-  return manage(res);
-}
-
-isl::checked::set aff::gt_set(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).gt_set(pwaff2);
-}
-
-boolean aff::has_range_tuple_id() const
-{
-  return isl::checked::multi_aff(*this).has_range_tuple_id();
-}
-
-isl::checked::multi_aff aff::identity() const
-{
-  return isl::checked::multi_aff(*this).identity();
-}
-
-isl::checked::pw_aff aff::insert_domain(const isl::checked::space &domain) const
-{
-  return isl::checked::pw_aff(*this).insert_domain(domain);
-}
-
-isl::checked::pw_aff aff::intersect_domain(const isl::checked::set &set) const
-{
-  return isl::checked::pw_aff(*this).intersect_domain(set);
-}
-
-isl::checked::union_pw_aff aff::intersect_domain(const isl::checked::space &space) const
-{
-  return isl::checked::pw_aff(*this).intersect_domain(space);
-}
-
-isl::checked::union_pw_aff aff::intersect_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::pw_aff(*this).intersect_domain(uset);
-}
-
-isl::checked::union_pw_aff aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::pw_aff(*this).intersect_domain_wrapped_domain(uset);
-}
-
-isl::checked::union_pw_aff aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
-{
-  return isl::checked::pw_aff(*this).intersect_domain_wrapped_range(uset);
-}
-
-isl::checked::pw_aff aff::intersect_params(const isl::checked::set &set) const
-{
-  return isl::checked::pw_aff(*this).intersect_params(set);
-}
-
-boolean aff::involves_locals() const
-{
-  return isl::checked::multi_aff(*this).involves_locals();
-}
-
-boolean aff::involves_nan() const
-{
-  return isl::checked::multi_aff(*this).involves_nan();
-}
-
-boolean aff::involves_param(const isl::checked::id &id) const
-{
-  return isl::checked::pw_aff(*this).involves_param(id);
-}
-
-boolean aff::involves_param(const std::string &id) const
-{
-  return this->involves_param(isl::checked::id(ctx(), id));
-}
-
-boolean aff::involves_param(const isl::checked::id_list &list) const
-{
-  return isl::checked::pw_aff(*this).involves_param(list);
-}
-
-boolean aff::is_cst() const
-{
-  auto res = isl_aff_is_cst(get());
-  return manage(res);
-}
-
-boolean aff::isa_aff() const
-{
-  return isl::checked::pw_aff(*this).isa_aff();
-}
-
-boolean aff::isa_multi_aff() const
-{
-  return isl::checked::pw_aff(*this).isa_multi_aff();
-}
-
-boolean aff::isa_pw_multi_aff() const
-{
-  return isl::checked::pw_aff(*this).isa_pw_multi_aff();
-}
-
-isl::checked::set aff::le_set(isl::checked::aff aff2) const
-{
-  auto res = isl_aff_le_set(copy(), aff2.release());
-  return manage(res);
-}
-
-isl::checked::set aff::le_set(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).le_set(pwaff2);
-}
-
-isl::checked::aff_list aff::list() const
-{
-  return isl::checked::multi_aff(*this).list();
-}
-
-isl::checked::set aff::lt_set(isl::checked::aff aff2) const
-{
-  auto res = isl_aff_lt_set(copy(), aff2.release());
-  return manage(res);
-}
-
-isl::checked::set aff::lt_set(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).lt_set(pwaff2);
-}
-
-isl::checked::multi_pw_aff aff::max(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).max(multi2);
-}
-
-isl::checked::pw_aff aff::max(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).max(pwaff2);
-}
-
-isl::checked::multi_val aff::max_multi_val() const
-{
-  return isl::checked::pw_aff(*this).max_multi_val();
-}
-
-isl::checked::multi_pw_aff aff::min(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).min(multi2);
-}
-
-isl::checked::pw_aff aff::min(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).min(pwaff2);
-}
-
-isl::checked::multi_val aff::min_multi_val() const
-{
-  return isl::checked::pw_aff(*this).min_multi_val();
-}
-
-isl::checked::aff aff::mod(isl::checked::val mod) const
-{
-  auto res = isl_aff_mod_val(copy(), mod.release());
-  return manage(res);
-}
-
-isl::checked::aff aff::mod(long mod) const
-{
-  return this->mod(isl::checked::val(ctx(), mod));
-}
-
-isl::checked::aff aff::mul(isl::checked::aff aff2) const
-{
-  auto res = isl_aff_mul(copy(), aff2.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff aff::mul(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).mul(pwaff2);
-}
-
-class size aff::n_piece() const
-{
-  return isl::checked::pw_aff(*this).n_piece();
-}
-
-isl::checked::set aff::ne_set(isl::checked::aff aff2) const
-{
-  auto res = isl_aff_ne_set(copy(), aff2.release());
-  return manage(res);
-}
-
-isl::checked::set aff::ne_set(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).ne_set(pwaff2);
-}
-
-isl::checked::aff aff::neg() const
-{
-  auto res = isl_aff_neg(copy());
-  return manage(res);
-}
-
-boolean aff::plain_is_empty() const
-{
-  return isl::checked::pw_aff(*this).plain_is_empty();
-}
-
-boolean aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
-{
-  return isl::checked::multi_aff(*this).plain_is_equal(multi2);
-}
-
-boolean aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).plain_is_equal(multi2);
-}
-
-boolean aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).plain_is_equal(multi2);
-}
-
-isl::checked::pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_aff(*this).preimage_domain_wrapped_domain(pma2);
-}
-
-isl::checked::union_pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_aff(*this).preimage_domain_wrapped_domain(upma2);
-}
-
-isl::checked::multi_aff aff::product(const isl::checked::multi_aff &multi2) const
-{
-  return isl::checked::multi_aff(*this).product(multi2);
-}
-
-isl::checked::multi_pw_aff aff::product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).product(multi2);
-}
-
-isl::checked::pw_multi_aff aff::product(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_aff(*this).product(pma2);
-}
-
-isl::checked::aff aff::pullback(isl::checked::multi_aff ma) const
-{
-  auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff aff::pullback(const isl::checked::multi_pw_aff &mpa) const
-{
-  return isl::checked::pw_aff(*this).pullback(mpa);
-}
-
-isl::checked::pw_aff aff::pullback(const isl::checked::pw_multi_aff &pma) const
-{
-  return isl::checked::pw_aff(*this).pullback(pma);
-}
-
-isl::checked::union_pw_aff aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
-{
-  return isl::checked::pw_aff(*this).pullback(upma);
-}
-
-isl::checked::aff aff::pullback(const isl::checked::aff &ma) const
-{
-  return this->pullback(isl::checked::multi_aff(ma));
-}
-
-isl::checked::pw_multi_aff_list aff::pw_multi_aff_list() const
-{
-  return isl::checked::pw_aff(*this).pw_multi_aff_list();
-}
-
-isl::checked::pw_multi_aff aff::range_factor_domain() const
-{
-  return isl::checked::pw_aff(*this).range_factor_domain();
-}
-
-isl::checked::pw_multi_aff aff::range_factor_range() const
-{
-  return isl::checked::pw_aff(*this).range_factor_range();
-}
-
-isl::checked::multi_aff aff::range_product(const isl::checked::multi_aff &multi2) const
-{
-  return isl::checked::multi_aff(*this).range_product(multi2);
-}
-
-isl::checked::multi_pw_aff aff::range_product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).range_product(multi2);
-}
-
-isl::checked::multi_union_pw_aff aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).range_product(multi2);
-}
-
-isl::checked::pw_multi_aff aff::range_product(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_aff(*this).range_product(pma2);
-}
-
-isl::checked::union_pw_multi_aff aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_aff(*this).range_product(upma2);
-}
-
-isl::checked::id aff::range_tuple_id() const
-{
-  return isl::checked::multi_aff(*this).range_tuple_id();
-}
-
-isl::checked::multi_aff aff::reset_range_tuple_id() const
-{
-  return isl::checked::multi_aff(*this).reset_range_tuple_id();
-}
-
-isl::checked::aff aff::scale(isl::checked::val v) const
-{
-  auto res = isl_aff_scale_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::aff aff::scale(long v) const
-{
-  return this->scale(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_aff aff::scale(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::multi_aff(*this).scale(mv);
-}
-
-isl::checked::aff aff::scale_down(isl::checked::val v) const
-{
-  auto res = isl_aff_scale_down_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::aff aff::scale_down(long v) const
-{
-  return this->scale_down(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_aff aff::scale_down(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::multi_aff(*this).scale_down(mv);
-}
-
-isl::checked::multi_aff aff::set_at(int pos, const isl::checked::aff &el) const
-{
-  return isl::checked::multi_aff(*this).set_at(pos, el);
-}
-
-isl::checked::multi_pw_aff aff::set_at(int pos, const isl::checked::pw_aff &el) const
-{
-  return isl::checked::pw_aff(*this).set_at(pos, el);
-}
-
-isl::checked::multi_union_pw_aff aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
-{
-  return isl::checked::pw_aff(*this).set_at(pos, el);
-}
-
-isl::checked::multi_aff aff::set_range_tuple(const isl::checked::id &id) const
-{
-  return isl::checked::multi_aff(*this).set_range_tuple(id);
-}
-
-isl::checked::multi_aff aff::set_range_tuple(const std::string &id) const
-{
-  return this->set_range_tuple(isl::checked::id(ctx(), id));
-}
-
-class size aff::size() const
-{
-  return isl::checked::multi_aff(*this).size();
-}
-
-isl::checked::space aff::space() const
-{
-  return isl::checked::pw_aff(*this).space();
-}
-
-isl::checked::aff aff::sub(isl::checked::aff aff2) const
-{
-  auto res = isl_aff_sub(copy(), aff2.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff aff::sub(const isl::checked::multi_aff &multi2) const
-{
-  return isl::checked::multi_aff(*this).sub(multi2);
-}
-
-isl::checked::multi_pw_aff aff::sub(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).sub(multi2);
-}
-
-isl::checked::multi_union_pw_aff aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::pw_aff(*this).sub(multi2);
-}
-
-isl::checked::pw_aff aff::sub(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).sub(pwaff2);
-}
-
-isl::checked::pw_multi_aff aff::sub(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_aff(*this).sub(pma2);
-}
-
-isl::checked::union_pw_aff aff::sub(const isl::checked::union_pw_aff &upa2) const
-{
-  return isl::checked::pw_aff(*this).sub(upa2);
-}
-
-isl::checked::union_pw_multi_aff aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_aff(*this).sub(upma2);
-}
-
-isl::checked::pw_aff aff::subtract_domain(const isl::checked::set &set) const
-{
-  return isl::checked::pw_aff(*this).subtract_domain(set);
-}
-
-isl::checked::union_pw_aff aff::subtract_domain(const isl::checked::space &space) const
-{
-  return isl::checked::pw_aff(*this).subtract_domain(space);
-}
-
-isl::checked::union_pw_aff aff::subtract_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::pw_aff(*this).subtract_domain(uset);
-}
-
-isl::checked::pw_aff aff::tdiv_q(const isl::checked::pw_aff &pa2) const
-{
-  return isl::checked::pw_aff(*this).tdiv_q(pa2);
-}
-
-isl::checked::pw_aff aff::tdiv_r(const isl::checked::pw_aff &pa2) const
-{
-  return isl::checked::pw_aff(*this).tdiv_r(pa2);
-}
-
-isl::checked::aff_list aff::to_list() const
-{
-  auto res = isl_aff_to_list(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff aff::to_multi_pw_aff() const
-{
-  return isl::checked::multi_aff(*this).to_multi_pw_aff();
-}
-
-isl::checked::multi_union_pw_aff aff::to_multi_union_pw_aff() const
-{
-  return isl::checked::multi_aff(*this).to_multi_union_pw_aff();
-}
-
-isl::checked::pw_multi_aff aff::to_pw_multi_aff() const
-{
-  return isl::checked::multi_aff(*this).to_pw_multi_aff();
-}
-
-isl::checked::union_pw_aff aff::to_union_pw_aff() const
-{
-  return isl::checked::pw_aff(*this).to_union_pw_aff();
-}
-
-isl::checked::union_pw_multi_aff aff::to_union_pw_multi_aff() const
-{
-  return isl::checked::pw_aff(*this).to_union_pw_multi_aff();
-}
-
-isl::checked::aff aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
-{
-  auto res = isl_aff_unbind_params_insert_domain(copy(), domain.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
-{
-  return isl::checked::pw_aff(*this).union_add(mpa2);
-}
-
-isl::checked::multi_union_pw_aff aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
-{
-  return isl::checked::pw_aff(*this).union_add(mupa2);
-}
-
-isl::checked::pw_aff aff::union_add(const isl::checked::pw_aff &pwaff2) const
-{
-  return isl::checked::pw_aff(*this).union_add(pwaff2);
-}
-
-isl::checked::pw_multi_aff aff::union_add(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_aff(*this).union_add(pma2);
-}
-
-isl::checked::union_pw_aff aff::union_add(const isl::checked::union_pw_aff &upa2) const
-{
-  return isl::checked::pw_aff(*this).union_add(upa2);
-}
-
-isl::checked::union_pw_multi_aff aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_aff(*this).union_add(upma2);
-}
-
-isl::checked::aff aff::zero_on_domain(isl::checked::space space)
-{
-  auto res = isl_aff_zero_on_domain_space(space.release());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const aff &obj)
-{
-  char *str = isl_aff_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::aff_list
-aff_list manage(__isl_take isl_aff_list *ptr) {
-  return aff_list(ptr);
-}
-aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
-  ptr = isl_aff_list_copy(ptr);
-  return aff_list(ptr);
-}
-
-aff_list::aff_list()
-    : ptr(nullptr) {}
-
-aff_list::aff_list(const aff_list &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-aff_list::aff_list(__isl_take isl_aff_list *ptr)
-    : ptr(ptr) {}
-
-aff_list::aff_list(isl::checked::ctx ctx, int n)
-{
-  auto res = isl_aff_list_alloc(ctx.release(), n);
-  ptr = res;
-}
-
-aff_list::aff_list(isl::checked::aff el)
-{
-  auto res = isl_aff_list_from_aff(el.release());
-  ptr = res;
-}
-
-aff_list::aff_list(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_aff_list_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-aff_list &aff_list::operator=(aff_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-aff_list::~aff_list() {
-  if (ptr)
-    isl_aff_list_free(ptr);
-}
-
-__isl_give isl_aff_list *aff_list::copy() const & {
-  return isl_aff_list_copy(ptr);
-}
-
-__isl_keep isl_aff_list *aff_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_aff_list *aff_list::release() {
-  isl_aff_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool aff_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx aff_list::ctx() const {
-  return isl::checked::ctx(isl_aff_list_get_ctx(ptr));
-}
-
-isl::checked::aff_list aff_list::add(isl::checked::aff el) const
-{
-  auto res = isl_aff_list_add(copy(), el.release());
-  return manage(res);
-}
-
-isl::checked::aff aff_list::at(int index) const
-{
-  auto res = isl_aff_list_get_at(get(), index);
-  return manage(res);
-}
-
-isl::checked::aff aff_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::checked::aff_list aff_list::clear() const
-{
-  auto res = isl_aff_list_clear(copy());
-  return manage(res);
-}
-
-isl::checked::aff_list aff_list::concat(isl::checked::aff_list list2) const
-{
-  auto res = isl_aff_list_concat(copy(), list2.release());
-  return manage(res);
-}
-
-isl::checked::aff_list aff_list::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl_aff_list_drop(copy(), first, n);
-  return manage(res);
-}
-
-stat aff_list::foreach(const std::function<stat(isl::checked::aff)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::aff)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::aff_list aff_list::insert(unsigned int pos, isl::checked::aff el) const
-{
-  auto res = isl_aff_list_insert(copy(), pos, el.release());
-  return manage(res);
-}
-
-class size aff_list::size() const
-{
-  auto res = isl_aff_list_size(get());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const aff_list &obj)
-{
-  char *str = isl_aff_list_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_build
-ast_build manage(__isl_take isl_ast_build *ptr) {
-  return ast_build(ptr);
-}
-ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
-  ptr = isl_ast_build_copy(ptr);
-  return ast_build(ptr);
-}
-
-ast_build::ast_build()
-    : ptr(nullptr) {}
-
-ast_build::ast_build(const ast_build &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-  copy_callbacks(obj);
-}
-
-ast_build::ast_build(__isl_take isl_ast_build *ptr)
-    : ptr(ptr) {}
-
-ast_build::ast_build(isl::checked::ctx ctx)
-{
-  auto res = isl_ast_build_alloc(ctx.release());
-  ptr = res;
-}
-
-ast_build &ast_build::operator=(ast_build obj) {
-  std::swap(this->ptr, obj.ptr);
-  copy_callbacks(obj);
-  return *this;
-}
-
-ast_build::~ast_build() {
-  if (ptr)
-    isl_ast_build_free(ptr);
-}
-
-__isl_give isl_ast_build *ast_build::copy() const & {
-  return isl_ast_build_copy(ptr);
-}
-
-__isl_keep isl_ast_build *ast_build::get() const {
-  return ptr;
-}
-
-__isl_give isl_ast_build *ast_build::release() {
-  if (at_each_domain_data)
-    isl_die(ctx().get(), isl_error_invalid, "cannot release object with persistent callbacks", return nullptr);
-  isl_ast_build *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool ast_build::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx ast_build::ctx() const {
-  return isl::checked::ctx(isl_ast_build_get_ctx(ptr));
-}
-
-ast_build &ast_build::copy_callbacks(const ast_build &obj)
-{
-  at_each_domain_data = obj.at_each_domain_data;
-  return *this;
-}
-
-isl_ast_node *ast_build::at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2)
-{
-  auto *data = static_cast<struct at_each_domain_data *>(arg_2);
-  auto ret = (data->func)(manage(arg_0), manage_copy(arg_1));
-  return ret.release();
-}
-
-void ast_build::set_at_each_domain_data(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn)
-{
-  at_each_domain_data = std::make_shared<struct at_each_domain_data>();
-  at_each_domain_data->func = fn;
-  ptr = isl_ast_build_set_at_each_domain(ptr, &at_each_domain, at_each_domain_data.get());
-}
-
-isl::checked::ast_build ast_build::set_at_each_domain(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn) const
-{
-  auto copy = *this;
-  copy.set_at_each_domain_data(fn);
-  return copy;
-}
-
-isl::checked::ast_expr ast_build::access_from(isl::checked::multi_pw_aff mpa) const
-{
-  auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_build::access_from(isl::checked::pw_multi_aff pma) const
-{
-  auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_build::call_from(isl::checked::multi_pw_aff mpa) const
-{
-  auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_build::call_from(isl::checked::pw_multi_aff pma) const
-{
-  auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_build::expr_from(isl::checked::pw_aff pa) const
-{
-  auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_build::expr_from(isl::checked::set set) const
-{
-  auto res = isl_ast_build_expr_from_set(get(), set.release());
-  return manage(res);
-}
-
-isl::checked::ast_build ast_build::from_context(isl::checked::set set)
-{
-  auto res = isl_ast_build_from_context(set.release());
-  return manage(res);
-}
-
-isl::checked::ast_node ast_build::node_from(isl::checked::schedule schedule) const
-{
-  auto res = isl_ast_build_node_from_schedule(get(), schedule.release());
-  return manage(res);
-}
-
-isl::checked::ast_node ast_build::node_from_schedule_map(isl::checked::union_map schedule) const
-{
-  auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release());
-  return manage(res);
-}
-
-isl::checked::union_map ast_build::schedule() const
-{
-  auto res = isl_ast_build_get_schedule(get());
-  return manage(res);
-}
-
-isl::checked::union_map ast_build::get_schedule() const
-{
-  return schedule();
-}
-
-// implementations for isl::ast_expr
-ast_expr manage(__isl_take isl_ast_expr *ptr) {
-  return ast_expr(ptr);
-}
-ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
-  ptr = isl_ast_expr_copy(ptr);
-  return ast_expr(ptr);
-}
-
-ast_expr::ast_expr()
-    : ptr(nullptr) {}
-
-ast_expr::ast_expr(const ast_expr &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
-    : ptr(ptr) {}
-
-ast_expr &ast_expr::operator=(ast_expr obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-ast_expr::~ast_expr() {
-  if (ptr)
-    isl_ast_expr_free(ptr);
-}
-
-__isl_give isl_ast_expr *ast_expr::copy() const & {
-  return isl_ast_expr_copy(ptr);
-}
-
-__isl_keep isl_ast_expr *ast_expr::get() const {
-  return ptr;
-}
-
-__isl_give isl_ast_expr *ast_expr::release() {
-  isl_ast_expr *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool ast_expr::is_null() const {
-  return ptr == nullptr;
-}
-
-template <typename T, typename>
-boolean ast_expr::isa_type(T subtype) const
-{
-  if (is_null())
-    return boolean();
-  return isl_ast_expr_get_type(get()) == subtype;
-}
-template <class T>
-boolean ast_expr::isa() const
-{
-  return isa_type<decltype(T::type)>(T::type);
-}
-template <class T>
-T ast_expr::as() const
-{
- if (isa<T>().is_false())
-    isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
-  return T(copy());
-}
-
-isl::checked::ctx ast_expr::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-std::string ast_expr::to_C_str() const
-{
-  auto res = isl_ast_expr_to_C_str(get());
-  std::string tmp(res);
-  free(res);
-  return tmp;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_id
-ast_expr_id::ast_expr_id()
-    : ast_expr() {}
-
-ast_expr_id::ast_expr_id(const ast_expr_id &obj)
-    : ast_expr(obj)
-{
-}
-
-ast_expr_id::ast_expr_id(__isl_take isl_ast_expr *ptr)
-    : ast_expr(ptr) {}
-
-ast_expr_id &ast_expr_id::operator=(ast_expr_id obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_id::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-isl::checked::id ast_expr_id::id() const
-{
-  auto res = isl_ast_expr_id_get_id(get());
-  return manage(res);
-}
-
-isl::checked::id ast_expr_id::get_id() const
-{
-  return id();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_id &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_int
-ast_expr_int::ast_expr_int()
-    : ast_expr() {}
-
-ast_expr_int::ast_expr_int(const ast_expr_int &obj)
-    : ast_expr(obj)
-{
-}
-
-ast_expr_int::ast_expr_int(__isl_take isl_ast_expr *ptr)
-    : ast_expr(ptr) {}
-
-ast_expr_int &ast_expr_int::operator=(ast_expr_int obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_int::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-isl::checked::val ast_expr_int::val() const
-{
-  auto res = isl_ast_expr_int_get_val(get());
-  return manage(res);
-}
-
-isl::checked::val ast_expr_int::get_val() const
-{
-  return val();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_int &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op
-ast_expr_op::ast_expr_op()
-    : ast_expr() {}
-
-ast_expr_op::ast_expr_op(const ast_expr_op &obj)
-    : ast_expr(obj)
-{
-}
-
-ast_expr_op::ast_expr_op(__isl_take isl_ast_expr *ptr)
-    : ast_expr(ptr) {}
-
-ast_expr_op &ast_expr_op::operator=(ast_expr_op obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-template <typename T, typename>
-boolean ast_expr_op::isa_type(T subtype) const
-{
-  if (is_null())
-    return boolean();
-  return isl_ast_expr_op_get_type(get()) == subtype;
-}
-template <class T>
-boolean ast_expr_op::isa() const
-{
-  return isa_type<decltype(T::type)>(T::type);
-}
-template <class T>
-T ast_expr_op::as() const
-{
- if (isa<T>().is_false())
-    isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
-  return T(copy());
-}
-
-isl::checked::ctx ast_expr_op::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-isl::checked::ast_expr ast_expr_op::arg(int pos) const
-{
-  auto res = isl_ast_expr_op_get_arg(get(), pos);
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_expr_op::get_arg(int pos) const
-{
-  return arg(pos);
-}
-
-class size ast_expr_op::n_arg() const
-{
-  auto res = isl_ast_expr_op_get_n_arg(get());
-  return manage(res);
-}
-
-class size ast_expr_op::get_n_arg() const
-{
-  return n_arg();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_access
-ast_expr_op_access::ast_expr_op_access()
-    : ast_expr_op() {}
-
-ast_expr_op_access::ast_expr_op_access(const ast_expr_op_access &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_access::ast_expr_op_access(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_access &ast_expr_op_access::operator=(ast_expr_op_access obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_access::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_access &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_add
-ast_expr_op_add::ast_expr_op_add()
-    : ast_expr_op() {}
-
-ast_expr_op_add::ast_expr_op_add(const ast_expr_op_add &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_add::ast_expr_op_add(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_add &ast_expr_op_add::operator=(ast_expr_op_add obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_add::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_add &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_address_of
-ast_expr_op_address_of::ast_expr_op_address_of()
-    : ast_expr_op() {}
-
-ast_expr_op_address_of::ast_expr_op_address_of(const ast_expr_op_address_of &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_address_of::ast_expr_op_address_of(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_address_of &ast_expr_op_address_of::operator=(ast_expr_op_address_of obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_address_of::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_address_of &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_and
-ast_expr_op_and::ast_expr_op_and()
-    : ast_expr_op() {}
-
-ast_expr_op_and::ast_expr_op_and(const ast_expr_op_and &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_and::ast_expr_op_and(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_and &ast_expr_op_and::operator=(ast_expr_op_and obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_and::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_and_then
-ast_expr_op_and_then::ast_expr_op_and_then()
-    : ast_expr_op() {}
-
-ast_expr_op_and_then::ast_expr_op_and_then(const ast_expr_op_and_then &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_and_then::ast_expr_op_and_then(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_and_then &ast_expr_op_and_then::operator=(ast_expr_op_and_then obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_and_then::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and_then &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_call
-ast_expr_op_call::ast_expr_op_call()
-    : ast_expr_op() {}
-
-ast_expr_op_call::ast_expr_op_call(const ast_expr_op_call &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_call::ast_expr_op_call(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_call &ast_expr_op_call::operator=(ast_expr_op_call obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_call::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_call &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_cond
-ast_expr_op_cond::ast_expr_op_cond()
-    : ast_expr_op() {}
-
-ast_expr_op_cond::ast_expr_op_cond(const ast_expr_op_cond &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_cond::ast_expr_op_cond(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_cond &ast_expr_op_cond::operator=(ast_expr_op_cond obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_cond::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_cond &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_div
-ast_expr_op_div::ast_expr_op_div()
-    : ast_expr_op() {}
-
-ast_expr_op_div::ast_expr_op_div(const ast_expr_op_div &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_div::ast_expr_op_div(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_div &ast_expr_op_div::operator=(ast_expr_op_div obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_div::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_div &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_eq
-ast_expr_op_eq::ast_expr_op_eq()
-    : ast_expr_op() {}
-
-ast_expr_op_eq::ast_expr_op_eq(const ast_expr_op_eq &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_eq::ast_expr_op_eq(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_eq &ast_expr_op_eq::operator=(ast_expr_op_eq obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_eq::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_eq &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_fdiv_q
-ast_expr_op_fdiv_q::ast_expr_op_fdiv_q()
-    : ast_expr_op() {}
-
-ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_fdiv_q &ast_expr_op_fdiv_q::operator=(ast_expr_op_fdiv_q obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_fdiv_q::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_fdiv_q &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_ge
-ast_expr_op_ge::ast_expr_op_ge()
-    : ast_expr_op() {}
-
-ast_expr_op_ge::ast_expr_op_ge(const ast_expr_op_ge &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_ge::ast_expr_op_ge(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_ge &ast_expr_op_ge::operator=(ast_expr_op_ge obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_ge::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_ge &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_gt
-ast_expr_op_gt::ast_expr_op_gt()
-    : ast_expr_op() {}
-
-ast_expr_op_gt::ast_expr_op_gt(const ast_expr_op_gt &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_gt::ast_expr_op_gt(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_gt &ast_expr_op_gt::operator=(ast_expr_op_gt obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_gt::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_gt &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_le
-ast_expr_op_le::ast_expr_op_le()
-    : ast_expr_op() {}
-
-ast_expr_op_le::ast_expr_op_le(const ast_expr_op_le &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_le::ast_expr_op_le(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_le &ast_expr_op_le::operator=(ast_expr_op_le obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_le::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_le &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_lt
-ast_expr_op_lt::ast_expr_op_lt()
-    : ast_expr_op() {}
-
-ast_expr_op_lt::ast_expr_op_lt(const ast_expr_op_lt &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_lt::ast_expr_op_lt(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_lt &ast_expr_op_lt::operator=(ast_expr_op_lt obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_lt::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_lt &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_max
-ast_expr_op_max::ast_expr_op_max()
-    : ast_expr_op() {}
-
-ast_expr_op_max::ast_expr_op_max(const ast_expr_op_max &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_max::ast_expr_op_max(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_max &ast_expr_op_max::operator=(ast_expr_op_max obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_max::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_max &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_member
-ast_expr_op_member::ast_expr_op_member()
-    : ast_expr_op() {}
-
-ast_expr_op_member::ast_expr_op_member(const ast_expr_op_member &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_member::ast_expr_op_member(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_member &ast_expr_op_member::operator=(ast_expr_op_member obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_member::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_member &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_min
-ast_expr_op_min::ast_expr_op_min()
-    : ast_expr_op() {}
-
-ast_expr_op_min::ast_expr_op_min(const ast_expr_op_min &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_min::ast_expr_op_min(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_min &ast_expr_op_min::operator=(ast_expr_op_min obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_min::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_min &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_minus
-ast_expr_op_minus::ast_expr_op_minus()
-    : ast_expr_op() {}
-
-ast_expr_op_minus::ast_expr_op_minus(const ast_expr_op_minus &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_minus::ast_expr_op_minus(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_minus &ast_expr_op_minus::operator=(ast_expr_op_minus obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_minus::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_minus &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_mul
-ast_expr_op_mul::ast_expr_op_mul()
-    : ast_expr_op() {}
-
-ast_expr_op_mul::ast_expr_op_mul(const ast_expr_op_mul &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_mul::ast_expr_op_mul(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_mul &ast_expr_op_mul::operator=(ast_expr_op_mul obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_mul::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_mul &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_or
-ast_expr_op_or::ast_expr_op_or()
-    : ast_expr_op() {}
-
-ast_expr_op_or::ast_expr_op_or(const ast_expr_op_or &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_or::ast_expr_op_or(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_or &ast_expr_op_or::operator=(ast_expr_op_or obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_or::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_or_else
-ast_expr_op_or_else::ast_expr_op_or_else()
-    : ast_expr_op() {}
-
-ast_expr_op_or_else::ast_expr_op_or_else(const ast_expr_op_or_else &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_or_else::ast_expr_op_or_else(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_or_else &ast_expr_op_or_else::operator=(ast_expr_op_or_else obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_or_else::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or_else &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_pdiv_q
-ast_expr_op_pdiv_q::ast_expr_op_pdiv_q()
-    : ast_expr_op() {}
-
-ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_pdiv_q &ast_expr_op_pdiv_q::operator=(ast_expr_op_pdiv_q obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_pdiv_q::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_q &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_pdiv_r
-ast_expr_op_pdiv_r::ast_expr_op_pdiv_r()
-    : ast_expr_op() {}
-
-ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_pdiv_r &ast_expr_op_pdiv_r::operator=(ast_expr_op_pdiv_r obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_pdiv_r::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_r &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_select
-ast_expr_op_select::ast_expr_op_select()
-    : ast_expr_op() {}
-
-ast_expr_op_select::ast_expr_op_select(const ast_expr_op_select &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_select::ast_expr_op_select(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_select &ast_expr_op_select::operator=(ast_expr_op_select obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_select::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_select &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_sub
-ast_expr_op_sub::ast_expr_op_sub()
-    : ast_expr_op() {}
-
-ast_expr_op_sub::ast_expr_op_sub(const ast_expr_op_sub &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_sub::ast_expr_op_sub(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_sub &ast_expr_op_sub::operator=(ast_expr_op_sub obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_sub::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_sub &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_zdiv_r
-ast_expr_op_zdiv_r::ast_expr_op_zdiv_r()
-    : ast_expr_op() {}
-
-ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_zdiv_r &ast_expr_op_zdiv_r::operator=(ast_expr_op_zdiv_r obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_expr_op_zdiv_r::ctx() const {
-  return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_zdiv_r &obj)
-{
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node
-ast_node manage(__isl_take isl_ast_node *ptr) {
-  return ast_node(ptr);
-}
-ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
-  ptr = isl_ast_node_copy(ptr);
-  return ast_node(ptr);
-}
-
-ast_node::ast_node()
-    : ptr(nullptr) {}
-
-ast_node::ast_node(const ast_node &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-ast_node::ast_node(__isl_take isl_ast_node *ptr)
-    : ptr(ptr) {}
-
-ast_node &ast_node::operator=(ast_node obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-ast_node::~ast_node() {
-  if (ptr)
-    isl_ast_node_free(ptr);
-}
-
-__isl_give isl_ast_node *ast_node::copy() const & {
-  return isl_ast_node_copy(ptr);
-}
-
-__isl_keep isl_ast_node *ast_node::get() const {
-  return ptr;
-}
-
-__isl_give isl_ast_node *ast_node::release() {
-  isl_ast_node *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool ast_node::is_null() const {
-  return ptr == nullptr;
-}
-
-template <typename T, typename>
-boolean ast_node::isa_type(T subtype) const
-{
-  if (is_null())
-    return boolean();
-  return isl_ast_node_get_type(get()) == subtype;
-}
-template <class T>
-boolean ast_node::isa() const
-{
-  return isa_type<decltype(T::type)>(T::type);
-}
-template <class T>
-T ast_node::as() const
-{
- if (isa<T>().is_false())
-    isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
-  return T(copy());
-}
-
-isl::checked::ctx ast_node::ctx() const {
-  return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-std::string ast_node::to_C_str() const
-{
-  auto res = isl_ast_node_to_C_str(get());
-  std::string tmp(res);
-  free(res);
-  return tmp;
-}
-
-isl::checked::ast_node_list ast_node::to_list() const
-{
-  auto res = isl_ast_node_to_list(copy());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node &obj)
-{
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_block
-ast_node_block::ast_node_block()
-    : ast_node() {}
-
-ast_node_block::ast_node_block(const ast_node_block &obj)
-    : ast_node(obj)
-{
-}
-
-ast_node_block::ast_node_block(__isl_take isl_ast_node *ptr)
-    : ast_node(ptr) {}
-
-ast_node_block &ast_node_block::operator=(ast_node_block obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_node_block::ctx() const {
-  return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-isl::checked::ast_node_list ast_node_block::children() const
-{
-  auto res = isl_ast_node_block_get_children(get());
-  return manage(res);
-}
-
-isl::checked::ast_node_list ast_node_block::get_children() const
-{
-  return children();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_block &obj)
-{
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_for
-ast_node_for::ast_node_for()
-    : ast_node() {}
-
-ast_node_for::ast_node_for(const ast_node_for &obj)
-    : ast_node(obj)
-{
-}
-
-ast_node_for::ast_node_for(__isl_take isl_ast_node *ptr)
-    : ast_node(ptr) {}
-
-ast_node_for &ast_node_for::operator=(ast_node_for obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_node_for::ctx() const {
-  return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-isl::checked::ast_node ast_node_for::body() const
-{
-  auto res = isl_ast_node_for_get_body(get());
-  return manage(res);
-}
-
-isl::checked::ast_node ast_node_for::get_body() const
-{
-  return body();
-}
-
-isl::checked::ast_expr ast_node_for::cond() const
-{
-  auto res = isl_ast_node_for_get_cond(get());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_node_for::get_cond() const
-{
-  return cond();
-}
-
-isl::checked::ast_expr ast_node_for::inc() const
-{
-  auto res = isl_ast_node_for_get_inc(get());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_node_for::get_inc() const
-{
-  return inc();
-}
-
-isl::checked::ast_expr ast_node_for::init() const
-{
-  auto res = isl_ast_node_for_get_init(get());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_node_for::get_init() const
-{
-  return init();
-}
-
-boolean ast_node_for::is_degenerate() const
-{
-  auto res = isl_ast_node_for_is_degenerate(get());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_node_for::iterator() const
-{
-  auto res = isl_ast_node_for_get_iterator(get());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_node_for::get_iterator() const
-{
-  return iterator();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_for &obj)
-{
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_if
-ast_node_if::ast_node_if()
-    : ast_node() {}
-
-ast_node_if::ast_node_if(const ast_node_if &obj)
-    : ast_node(obj)
-{
-}
-
-ast_node_if::ast_node_if(__isl_take isl_ast_node *ptr)
-    : ast_node(ptr) {}
-
-ast_node_if &ast_node_if::operator=(ast_node_if obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_node_if::ctx() const {
-  return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-isl::checked::ast_expr ast_node_if::cond() const
-{
-  auto res = isl_ast_node_if_get_cond(get());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_node_if::get_cond() const
-{
-  return cond();
-}
-
-isl::checked::ast_node ast_node_if::else_node() const
-{
-  auto res = isl_ast_node_if_get_else_node(get());
-  return manage(res);
-}
-
-isl::checked::ast_node ast_node_if::get_else_node() const
-{
-  return else_node();
-}
-
-boolean ast_node_if::has_else_node() const
-{
-  auto res = isl_ast_node_if_has_else_node(get());
-  return manage(res);
-}
-
-isl::checked::ast_node ast_node_if::then_node() const
-{
-  auto res = isl_ast_node_if_get_then_node(get());
-  return manage(res);
-}
-
-isl::checked::ast_node ast_node_if::get_then_node() const
-{
-  return then_node();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_if &obj)
-{
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_list
-ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
-  return ast_node_list(ptr);
-}
-ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
-  ptr = isl_ast_node_list_copy(ptr);
-  return ast_node_list(ptr);
-}
-
-ast_node_list::ast_node_list()
-    : ptr(nullptr) {}
-
-ast_node_list::ast_node_list(const ast_node_list &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
-    : ptr(ptr) {}
-
-ast_node_list::ast_node_list(isl::checked::ctx ctx, int n)
-{
-  auto res = isl_ast_node_list_alloc(ctx.release(), n);
-  ptr = res;
-}
-
-ast_node_list::ast_node_list(isl::checked::ast_node el)
-{
-  auto res = isl_ast_node_list_from_ast_node(el.release());
-  ptr = res;
-}
-
-ast_node_list &ast_node_list::operator=(ast_node_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-ast_node_list::~ast_node_list() {
-  if (ptr)
-    isl_ast_node_list_free(ptr);
-}
-
-__isl_give isl_ast_node_list *ast_node_list::copy() const & {
-  return isl_ast_node_list_copy(ptr);
-}
-
-__isl_keep isl_ast_node_list *ast_node_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_ast_node_list *ast_node_list::release() {
-  isl_ast_node_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool ast_node_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx ast_node_list::ctx() const {
-  return isl::checked::ctx(isl_ast_node_list_get_ctx(ptr));
-}
-
-isl::checked::ast_node_list ast_node_list::add(isl::checked::ast_node el) const
-{
-  auto res = isl_ast_node_list_add(copy(), el.release());
-  return manage(res);
-}
-
-isl::checked::ast_node ast_node_list::at(int index) const
-{
-  auto res = isl_ast_node_list_get_at(get(), index);
-  return manage(res);
-}
-
-isl::checked::ast_node ast_node_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::checked::ast_node_list ast_node_list::clear() const
-{
-  auto res = isl_ast_node_list_clear(copy());
-  return manage(res);
-}
-
-isl::checked::ast_node_list ast_node_list::concat(isl::checked::ast_node_list list2) const
-{
-  auto res = isl_ast_node_list_concat(copy(), list2.release());
-  return manage(res);
-}
-
-isl::checked::ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl_ast_node_list_drop(copy(), first, n);
-  return manage(res);
-}
-
-stat ast_node_list::foreach(const std::function<stat(isl::checked::ast_node)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::ast_node)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::ast_node_list ast_node_list::insert(unsigned int pos, isl::checked::ast_node el) const
-{
-  auto res = isl_ast_node_list_insert(copy(), pos, el.release());
-  return manage(res);
-}
-
-class size ast_node_list::size() const
-{
-  auto res = isl_ast_node_list_size(get());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_list &obj)
-{
-  char *str = isl_ast_node_list_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_mark
-ast_node_mark::ast_node_mark()
-    : ast_node() {}
-
-ast_node_mark::ast_node_mark(const ast_node_mark &obj)
-    : ast_node(obj)
-{
-}
-
-ast_node_mark::ast_node_mark(__isl_take isl_ast_node *ptr)
-    : ast_node(ptr) {}
-
-ast_node_mark &ast_node_mark::operator=(ast_node_mark obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_node_mark::ctx() const {
-  return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-isl::checked::id ast_node_mark::id() const
-{
-  auto res = isl_ast_node_mark_get_id(get());
-  return manage(res);
-}
-
-isl::checked::id ast_node_mark::get_id() const
-{
-  return id();
-}
-
-isl::checked::ast_node ast_node_mark::node() const
-{
-  auto res = isl_ast_node_mark_get_node(get());
-  return manage(res);
-}
-
-isl::checked::ast_node ast_node_mark::get_node() const
-{
-  return node();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_mark &obj)
-{
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_user
-ast_node_user::ast_node_user()
-    : ast_node() {}
-
-ast_node_user::ast_node_user(const ast_node_user &obj)
-    : ast_node(obj)
-{
-}
-
-ast_node_user::ast_node_user(__isl_take isl_ast_node *ptr)
-    : ast_node(ptr) {}
-
-ast_node_user &ast_node_user::operator=(ast_node_user obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx ast_node_user::ctx() const {
-  return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-isl::checked::ast_expr ast_node_user::expr() const
-{
-  auto res = isl_ast_node_user_get_expr(get());
-  return manage(res);
-}
-
-isl::checked::ast_expr ast_node_user::get_expr() const
-{
-  return expr();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_user &obj)
-{
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::basic_map
-basic_map manage(__isl_take isl_basic_map *ptr) {
-  return basic_map(ptr);
-}
-basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
-  ptr = isl_basic_map_copy(ptr);
-  return basic_map(ptr);
-}
-
-basic_map::basic_map()
-    : ptr(nullptr) {}
-
-basic_map::basic_map(const basic_map &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-basic_map::basic_map(__isl_take isl_basic_map *ptr)
-    : ptr(ptr) {}
-
-basic_map::basic_map(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-basic_map &basic_map::operator=(basic_map obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-basic_map::~basic_map() {
-  if (ptr)
-    isl_basic_map_free(ptr);
-}
-
-__isl_give isl_basic_map *basic_map::copy() const & {
-  return isl_basic_map_copy(ptr);
-}
-
-__isl_keep isl_basic_map *basic_map::get() const {
-  return ptr;
-}
-
-__isl_give isl_basic_map *basic_map::release() {
-  isl_basic_map *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool basic_map::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx basic_map::ctx() const {
-  return isl::checked::ctx(isl_basic_map_get_ctx(ptr));
-}
-
-isl::checked::basic_map basic_map::affine_hull() const
-{
-  auto res = isl_basic_map_affine_hull(copy());
-  return manage(res);
-}
-
-isl::checked::basic_map basic_map::apply_domain(isl::checked::basic_map bmap2) const
-{
-  auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
-  return manage(res);
-}
-
-isl::checked::map basic_map::apply_domain(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).apply_domain(map2);
-}
-
-isl::checked::union_map basic_map::apply_domain(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).apply_domain(umap2);
-}
-
-isl::checked::basic_map basic_map::apply_range(isl::checked::basic_map bmap2) const
-{
-  auto res = isl_basic_map_apply_range(copy(), bmap2.release());
-  return manage(res);
-}
-
-isl::checked::map basic_map::apply_range(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).apply_range(map2);
-}
-
-isl::checked::union_map basic_map::apply_range(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).apply_range(umap2);
-}
-
-isl::checked::map basic_map::as_map() const
-{
-  return isl::checked::map(*this).as_map();
-}
-
-isl::checked::multi_union_pw_aff basic_map::as_multi_union_pw_aff() const
-{
-  return isl::checked::map(*this).as_multi_union_pw_aff();
-}
-
-isl::checked::pw_multi_aff basic_map::as_pw_multi_aff() const
-{
-  return isl::checked::map(*this).as_pw_multi_aff();
-}
-
-isl::checked::union_pw_multi_aff basic_map::as_union_pw_multi_aff() const
-{
-  return isl::checked::map(*this).as_union_pw_multi_aff();
-}
-
-isl::checked::set basic_map::bind_domain(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::map(*this).bind_domain(tuple);
-}
-
-isl::checked::set basic_map::bind_range(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::map(*this).bind_range(tuple);
-}
-
-isl::checked::map basic_map::coalesce() const
-{
-  return isl::checked::map(*this).coalesce();
-}
-
-isl::checked::map basic_map::complement() const
-{
-  return isl::checked::map(*this).complement();
-}
-
-isl::checked::union_map basic_map::compute_divs() const
-{
-  return isl::checked::map(*this).compute_divs();
-}
-
-isl::checked::map basic_map::curry() const
-{
-  return isl::checked::map(*this).curry();
-}
-
-isl::checked::basic_set basic_map::deltas() const
-{
-  auto res = isl_basic_map_deltas(copy());
-  return manage(res);
-}
-
-isl::checked::basic_map basic_map::detect_equalities() const
-{
-  auto res = isl_basic_map_detect_equalities(copy());
-  return manage(res);
-}
-
-isl::checked::set basic_map::domain() const
-{
-  return isl::checked::map(*this).domain();
-}
-
-isl::checked::map basic_map::domain_factor_domain() const
-{
-  return isl::checked::map(*this).domain_factor_domain();
-}
-
-isl::checked::map basic_map::domain_factor_range() const
-{
-  return isl::checked::map(*this).domain_factor_range();
-}
-
-isl::checked::union_map basic_map::domain_map() const
-{
-  return isl::checked::map(*this).domain_map();
-}
-
-isl::checked::union_pw_multi_aff basic_map::domain_map_union_pw_multi_aff() const
-{
-  return isl::checked::map(*this).domain_map_union_pw_multi_aff();
-}
-
-isl::checked::map basic_map::domain_product(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).domain_product(map2);
-}
-
-isl::checked::union_map basic_map::domain_product(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).domain_product(umap2);
-}
-
-class size basic_map::domain_tuple_dim() const
-{
-  return isl::checked::map(*this).domain_tuple_dim();
-}
-
-isl::checked::id basic_map::domain_tuple_id() const
-{
-  return isl::checked::map(*this).domain_tuple_id();
-}
-
-isl::checked::map basic_map::eq_at(const isl::checked::multi_pw_aff &mpa) const
-{
-  return isl::checked::map(*this).eq_at(mpa);
-}
-
-isl::checked::union_map basic_map::eq_at(const isl::checked::multi_union_pw_aff &mupa) const
-{
-  return isl::checked::map(*this).eq_at(mupa);
-}
-
-boolean basic_map::every_map(const std::function<boolean(isl::checked::map)> &test) const
-{
-  return isl::checked::map(*this).every_map(test);
-}
-
-isl::checked::map basic_map::extract_map(const isl::checked::space &space) const
-{
-  return isl::checked::map(*this).extract_map(space);
-}
-
-isl::checked::map basic_map::factor_domain() const
-{
-  return isl::checked::map(*this).factor_domain();
-}
-
-isl::checked::map basic_map::factor_range() const
-{
-  return isl::checked::map(*this).factor_range();
-}
-
-isl::checked::union_map basic_map::fixed_power(const isl::checked::val &exp) const
-{
-  return isl::checked::map(*this).fixed_power(exp);
-}
-
-isl::checked::union_map basic_map::fixed_power(long exp) const
-{
-  return this->fixed_power(isl::checked::val(ctx(), exp));
-}
-
-isl::checked::basic_map basic_map::flatten() const
-{
-  auto res = isl_basic_map_flatten(copy());
-  return manage(res);
-}
-
-isl::checked::basic_map basic_map::flatten_domain() const
-{
-  auto res = isl_basic_map_flatten_domain(copy());
-  return manage(res);
-}
-
-isl::checked::basic_map basic_map::flatten_range() const
-{
-  auto res = isl_basic_map_flatten_range(copy());
-  return manage(res);
-}
-
-stat basic_map::foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const
-{
-  return isl::checked::map(*this).foreach_basic_map(fn);
-}
-
-stat basic_map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
-{
-  return isl::checked::map(*this).foreach_map(fn);
-}
-
-isl::checked::basic_map basic_map::gist(isl::checked::basic_map context) const
-{
-  auto res = isl_basic_map_gist(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::map basic_map::gist(const isl::checked::map &context) const
-{
-  return isl::checked::map(*this).gist(context);
-}
-
-isl::checked::union_map basic_map::gist(const isl::checked::union_map &context) const
-{
-  return isl::checked::map(*this).gist(context);
-}
-
-isl::checked::map basic_map::gist_domain(const isl::checked::set &context) const
-{
-  return isl::checked::map(*this).gist_domain(context);
-}
-
-isl::checked::union_map basic_map::gist_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::map(*this).gist_domain(uset);
-}
-
-isl::checked::union_map basic_map::gist_params(const isl::checked::set &set) const
-{
-  return isl::checked::map(*this).gist_params(set);
-}
-
-isl::checked::union_map basic_map::gist_range(const isl::checked::union_set &uset) const
-{
-  return isl::checked::map(*this).gist_range(uset);
-}
-
-boolean basic_map::has_domain_tuple_id() const
-{
-  return isl::checked::map(*this).has_domain_tuple_id();
-}
-
-boolean basic_map::has_range_tuple_id() const
-{
-  return isl::checked::map(*this).has_range_tuple_id();
-}
-
-isl::checked::basic_map basic_map::intersect(isl::checked::basic_map bmap2) const
-{
-  auto res = isl_basic_map_intersect(copy(), bmap2.release());
-  return manage(res);
-}
-
-isl::checked::map basic_map::intersect(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).intersect(map2);
-}
-
-isl::checked::union_map basic_map::intersect(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).intersect(umap2);
-}
-
-isl::checked::basic_map basic_map::intersect_domain(isl::checked::basic_set bset) const
-{
-  auto res = isl_basic_map_intersect_domain(copy(), bset.release());
-  return manage(res);
-}
-
-isl::checked::map basic_map::intersect_domain(const isl::checked::set &set) const
-{
-  return isl::checked::map(*this).intersect_domain(set);
-}
-
-isl::checked::union_map basic_map::intersect_domain(const isl::checked::space &space) const
-{
-  return isl::checked::map(*this).intersect_domain(space);
-}
-
-isl::checked::union_map basic_map::intersect_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::map(*this).intersect_domain(uset);
-}
-
-isl::checked::basic_map basic_map::intersect_domain(const isl::checked::point &bset) const
-{
-  return this->intersect_domain(isl::checked::basic_set(bset));
-}
-
-isl::checked::map basic_map::intersect_domain_factor_domain(const isl::checked::map &factor) const
-{
-  return isl::checked::map(*this).intersect_domain_factor_domain(factor);
-}
-
-isl::checked::union_map basic_map::intersect_domain_factor_domain(const isl::checked::union_map &factor) const
-{
-  return isl::checked::map(*this).intersect_domain_factor_domain(factor);
-}
-
-isl::checked::map basic_map::intersect_domain_factor_range(const isl::checked::map &factor) const
-{
-  return isl::checked::map(*this).intersect_domain_factor_range(factor);
-}
-
-isl::checked::union_map basic_map::intersect_domain_factor_range(const isl::checked::union_map &factor) const
-{
-  return isl::checked::map(*this).intersect_domain_factor_range(factor);
-}
-
-isl::checked::map basic_map::intersect_params(const isl::checked::set &params) const
-{
-  return isl::checked::map(*this).intersect_params(params);
-}
-
-isl::checked::basic_map basic_map::intersect_range(isl::checked::basic_set bset) const
-{
-  auto res = isl_basic_map_intersect_range(copy(), bset.release());
-  return manage(res);
-}
-
-isl::checked::map basic_map::intersect_range(const isl::checked::set &set) const
-{
-  return isl::checked::map(*this).intersect_range(set);
-}
-
-isl::checked::union_map basic_map::intersect_range(const isl::checked::space &space) const
-{
-  return isl::checked::map(*this).intersect_range(space);
-}
-
-isl::checked::union_map basic_map::intersect_range(const isl::checked::union_set &uset) const
-{
-  return isl::checked::map(*this).intersect_range(uset);
-}
-
-isl::checked::basic_map basic_map::intersect_range(const isl::checked::point &bset) const
-{
-  return this->intersect_range(isl::checked::basic_set(bset));
-}
-
-isl::checked::map basic_map::intersect_range_factor_domain(const isl::checked::map &factor) const
-{
-  return isl::checked::map(*this).intersect_range_factor_domain(factor);
-}
-
-isl::checked::union_map basic_map::intersect_range_factor_domain(const isl::checked::union_map &factor) const
-{
-  return isl::checked::map(*this).intersect_range_factor_domain(factor);
-}
-
-isl::checked::map basic_map::intersect_range_factor_range(const isl::checked::map &factor) const
-{
-  return isl::checked::map(*this).intersect_range_factor_range(factor);
-}
-
-isl::checked::union_map basic_map::intersect_range_factor_range(const isl::checked::union_map &factor) const
-{
-  return isl::checked::map(*this).intersect_range_factor_range(factor);
-}
-
-boolean basic_map::is_bijective() const
-{
-  return isl::checked::map(*this).is_bijective();
-}
-
-boolean basic_map::is_disjoint(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).is_disjoint(map2);
-}
-
-boolean basic_map::is_disjoint(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).is_disjoint(umap2);
-}
-
-boolean basic_map::is_empty() const
-{
-  auto res = isl_basic_map_is_empty(get());
-  return manage(res);
-}
-
-boolean basic_map::is_equal(const isl::checked::basic_map &bmap2) const
-{
-  auto res = isl_basic_map_is_equal(get(), bmap2.get());
-  return manage(res);
-}
-
-boolean basic_map::is_equal(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).is_equal(map2);
-}
-
-boolean basic_map::is_equal(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).is_equal(umap2);
-}
-
-boolean basic_map::is_injective() const
-{
-  return isl::checked::map(*this).is_injective();
-}
-
-boolean basic_map::is_single_valued() const
-{
-  return isl::checked::map(*this).is_single_valued();
-}
-
-boolean basic_map::is_strict_subset(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).is_strict_subset(map2);
-}
-
-boolean basic_map::is_strict_subset(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).is_strict_subset(umap2);
-}
-
-boolean basic_map::is_subset(const isl::checked::basic_map &bmap2) const
-{
-  auto res = isl_basic_map_is_subset(get(), bmap2.get());
-  return manage(res);
-}
-
-boolean basic_map::is_subset(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).is_subset(map2);
-}
-
-boolean basic_map::is_subset(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).is_subset(umap2);
-}
-
-boolean basic_map::isa_map() const
-{
-  return isl::checked::map(*this).isa_map();
-}
-
-isl::checked::map basic_map::lex_ge_at(const isl::checked::multi_pw_aff &mpa) const
-{
-  return isl::checked::map(*this).lex_ge_at(mpa);
-}
-
-isl::checked::map basic_map::lex_gt_at(const isl::checked::multi_pw_aff &mpa) const
-{
-  return isl::checked::map(*this).lex_gt_at(mpa);
-}
-
-isl::checked::map basic_map::lex_le_at(const isl::checked::multi_pw_aff &mpa) const
-{
-  return isl::checked::map(*this).lex_le_at(mpa);
-}
-
-isl::checked::map basic_map::lex_lt_at(const isl::checked::multi_pw_aff &mpa) const
-{
-  return isl::checked::map(*this).lex_lt_at(mpa);
-}
-
-isl::checked::map basic_map::lexmax() const
-{
-  auto res = isl_basic_map_lexmax(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff basic_map::lexmax_pw_multi_aff() const
-{
-  return isl::checked::map(*this).lexmax_pw_multi_aff();
-}
-
-isl::checked::map basic_map::lexmin() const
-{
-  auto res = isl_basic_map_lexmin(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff basic_map::lexmin_pw_multi_aff() const
-{
-  return isl::checked::map(*this).lexmin_pw_multi_aff();
-}
-
-isl::checked::map basic_map::lower_bound(const isl::checked::multi_pw_aff &lower) const
-{
-  return isl::checked::map(*this).lower_bound(lower);
-}
-
-isl::checked::map_list basic_map::map_list() const
-{
-  return isl::checked::map(*this).map_list();
-}
-
-isl::checked::multi_pw_aff basic_map::max_multi_pw_aff() const
-{
-  return isl::checked::map(*this).max_multi_pw_aff();
-}
-
-isl::checked::multi_pw_aff basic_map::min_multi_pw_aff() const
-{
-  return isl::checked::map(*this).min_multi_pw_aff();
-}
-
-class size basic_map::n_basic_map() const
-{
-  return isl::checked::map(*this).n_basic_map();
-}
-
-isl::checked::basic_map basic_map::polyhedral_hull() const
-{
-  return isl::checked::map(*this).polyhedral_hull();
-}
-
-isl::checked::map basic_map::preimage_domain(const isl::checked::multi_aff &ma) const
-{
-  return isl::checked::map(*this).preimage_domain(ma);
-}
-
-isl::checked::map basic_map::preimage_domain(const isl::checked::multi_pw_aff &mpa) const
-{
-  return isl::checked::map(*this).preimage_domain(mpa);
-}
-
-isl::checked::map basic_map::preimage_domain(const isl::checked::pw_multi_aff &pma) const
-{
-  return isl::checked::map(*this).preimage_domain(pma);
-}
-
-isl::checked::union_map basic_map::preimage_domain(const isl::checked::union_pw_multi_aff &upma) const
-{
-  return isl::checked::map(*this).preimage_domain(upma);
-}
-
-isl::checked::map basic_map::preimage_range(const isl::checked::multi_aff &ma) const
-{
-  return isl::checked::map(*this).preimage_range(ma);
-}
-
-isl::checked::map basic_map::preimage_range(const isl::checked::pw_multi_aff &pma) const
-{
-  return isl::checked::map(*this).preimage_range(pma);
-}
-
-isl::checked::union_map basic_map::preimage_range(const isl::checked::union_pw_multi_aff &upma) const
-{
-  return isl::checked::map(*this).preimage_range(upma);
-}
-
-isl::checked::map basic_map::product(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).product(map2);
-}
-
-isl::checked::union_map basic_map::product(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).product(umap2);
-}
-
-isl::checked::map basic_map::project_out_all_params() const
-{
-  return isl::checked::map(*this).project_out_all_params();
-}
-
-isl::checked::set basic_map::range() const
-{
-  return isl::checked::map(*this).range();
-}
-
-isl::checked::map basic_map::range_factor_domain() const
-{
-  return isl::checked::map(*this).range_factor_domain();
-}
-
-isl::checked::map basic_map::range_factor_range() const
-{
-  return isl::checked::map(*this).range_factor_range();
-}
-
-isl::checked::fixed_box basic_map::range_lattice_tile() const
-{
-  return isl::checked::map(*this).range_lattice_tile();
-}
-
-isl::checked::union_map basic_map::range_map() const
-{
-  return isl::checked::map(*this).range_map();
-}
-
-isl::checked::map basic_map::range_product(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).range_product(map2);
-}
-
-isl::checked::union_map basic_map::range_product(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).range_product(umap2);
-}
-
-isl::checked::map basic_map::range_reverse() const
-{
-  return isl::checked::map(*this).range_reverse();
-}
-
-isl::checked::fixed_box basic_map::range_simple_fixed_box_hull() const
-{
-  return isl::checked::map(*this).range_simple_fixed_box_hull();
-}
-
-class size basic_map::range_tuple_dim() const
-{
-  return isl::checked::map(*this).range_tuple_dim();
-}
-
-isl::checked::id basic_map::range_tuple_id() const
-{
-  return isl::checked::map(*this).range_tuple_id();
-}
-
-isl::checked::basic_map basic_map::reverse() const
-{
-  auto res = isl_basic_map_reverse(copy());
-  return manage(res);
-}
-
-isl::checked::basic_map basic_map::sample() const
-{
-  auto res = isl_basic_map_sample(copy());
-  return manage(res);
-}
-
-isl::checked::map basic_map::set_domain_tuple(const isl::checked::id &id) const
-{
-  return isl::checked::map(*this).set_domain_tuple(id);
-}
-
-isl::checked::map basic_map::set_domain_tuple(const std::string &id) const
-{
-  return this->set_domain_tuple(isl::checked::id(ctx(), id));
-}
-
-isl::checked::map basic_map::set_range_tuple(const isl::checked::id &id) const
-{
-  return isl::checked::map(*this).set_range_tuple(id);
-}
-
-isl::checked::map basic_map::set_range_tuple(const std::string &id) const
-{
-  return this->set_range_tuple(isl::checked::id(ctx(), id));
-}
-
-isl::checked::space basic_map::space() const
-{
-  return isl::checked::map(*this).space();
-}
-
-isl::checked::map basic_map::subtract(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).subtract(map2);
-}
-
-isl::checked::union_map basic_map::subtract(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).subtract(umap2);
-}
-
-isl::checked::union_map basic_map::subtract_domain(const isl::checked::union_set &dom) const
-{
-  return isl::checked::map(*this).subtract_domain(dom);
-}
-
-isl::checked::union_map basic_map::subtract_range(const isl::checked::union_set &dom) const
-{
-  return isl::checked::map(*this).subtract_range(dom);
-}
-
-isl::checked::map_list basic_map::to_list() const
-{
-  return isl::checked::map(*this).to_list();
-}
-
-isl::checked::union_map basic_map::to_union_map() const
-{
-  return isl::checked::map(*this).to_union_map();
-}
-
-isl::checked::map basic_map::uncurry() const
-{
-  return isl::checked::map(*this).uncurry();
-}
-
-isl::checked::map basic_map::unite(isl::checked::basic_map bmap2) const
-{
-  auto res = isl_basic_map_union(copy(), bmap2.release());
-  return manage(res);
-}
-
-isl::checked::map basic_map::unite(const isl::checked::map &map2) const
-{
-  return isl::checked::map(*this).unite(map2);
-}
-
-isl::checked::union_map basic_map::unite(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::map(*this).unite(umap2);
-}
-
-isl::checked::basic_map basic_map::unshifted_simple_hull() const
-{
-  return isl::checked::map(*this).unshifted_simple_hull();
-}
-
-isl::checked::map basic_map::upper_bound(const isl::checked::multi_pw_aff &upper) const
-{
-  return isl::checked::map(*this).upper_bound(upper);
-}
-
-isl::checked::set basic_map::wrap() const
-{
-  return isl::checked::map(*this).wrap();
-}
-
-isl::checked::map basic_map::zip() const
-{
-  return isl::checked::map(*this).zip();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const basic_map &obj)
-{
-  char *str = isl_basic_map_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::basic_set
-basic_set manage(__isl_take isl_basic_set *ptr) {
-  return basic_set(ptr);
-}
-basic_set manage_copy(__isl_keep isl_basic_set *ptr) {
-  ptr = isl_basic_set_copy(ptr);
-  return basic_set(ptr);
-}
-
-basic_set::basic_set()
-    : ptr(nullptr) {}
-
-basic_set::basic_set(const basic_set &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-basic_set::basic_set(__isl_take isl_basic_set *ptr)
-    : ptr(ptr) {}
-
-basic_set::basic_set(isl::checked::point pnt)
-{
-  auto res = isl_basic_set_from_point(pnt.release());
-  ptr = res;
-}
-
-basic_set::basic_set(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-basic_set &basic_set::operator=(basic_set obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-basic_set::~basic_set() {
-  if (ptr)
-    isl_basic_set_free(ptr);
-}
-
-__isl_give isl_basic_set *basic_set::copy() const & {
-  return isl_basic_set_copy(ptr);
-}
-
-__isl_keep isl_basic_set *basic_set::get() const {
-  return ptr;
-}
-
-__isl_give isl_basic_set *basic_set::release() {
-  isl_basic_set *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool basic_set::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx basic_set::ctx() const {
-  return isl::checked::ctx(isl_basic_set_get_ctx(ptr));
-}
-
-isl::checked::basic_set basic_set::affine_hull() const
-{
-  auto res = isl_basic_set_affine_hull(copy());
-  return manage(res);
-}
-
-isl::checked::basic_set basic_set::apply(isl::checked::basic_map bmap) const
-{
-  auto res = isl_basic_set_apply(copy(), bmap.release());
-  return manage(res);
-}
-
-isl::checked::set basic_set::apply(const isl::checked::map &map) const
-{
-  return isl::checked::set(*this).apply(map);
-}
-
-isl::checked::union_set basic_set::apply(const isl::checked::union_map &umap) const
-{
-  return isl::checked::set(*this).apply(umap);
-}
-
-isl::checked::pw_multi_aff basic_set::as_pw_multi_aff() const
-{
-  return isl::checked::set(*this).as_pw_multi_aff();
-}
-
-isl::checked::set basic_set::as_set() const
-{
-  return isl::checked::set(*this).as_set();
-}
-
-isl::checked::set basic_set::bind(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::set(*this).bind(tuple);
-}
-
-isl::checked::set basic_set::coalesce() const
-{
-  return isl::checked::set(*this).coalesce();
-}
-
-isl::checked::set basic_set::complement() const
-{
-  return isl::checked::set(*this).complement();
-}
-
-isl::checked::union_set basic_set::compute_divs() const
-{
-  return isl::checked::set(*this).compute_divs();
-}
-
-isl::checked::basic_set basic_set::detect_equalities() const
-{
-  auto res = isl_basic_set_detect_equalities(copy());
-  return manage(res);
-}
-
-isl::checked::val basic_set::dim_max_val(int pos) const
-{
-  auto res = isl_basic_set_dim_max_val(copy(), pos);
-  return manage(res);
-}
-
-isl::checked::val basic_set::dim_min_val(int pos) const
-{
-  return isl::checked::set(*this).dim_min_val(pos);
-}
-
-boolean basic_set::every_set(const std::function<boolean(isl::checked::set)> &test) const
-{
-  return isl::checked::set(*this).every_set(test);
-}
-
-isl::checked::set basic_set::extract_set(const isl::checked::space &space) const
-{
-  return isl::checked::set(*this).extract_set(space);
-}
-
-isl::checked::basic_set basic_set::flatten() const
-{
-  auto res = isl_basic_set_flatten(copy());
-  return manage(res);
-}
-
-stat basic_set::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
-{
-  return isl::checked::set(*this).foreach_basic_set(fn);
-}
-
-stat basic_set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
-{
-  return isl::checked::set(*this).foreach_point(fn);
-}
-
-stat basic_set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
-{
-  return isl::checked::set(*this).foreach_set(fn);
-}
-
-isl::checked::basic_set basic_set::gist(isl::checked::basic_set context) const
-{
-  auto res = isl_basic_set_gist(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::set basic_set::gist(const isl::checked::set &context) const
-{
-  return isl::checked::set(*this).gist(context);
-}
-
-isl::checked::union_set basic_set::gist(const isl::checked::union_set &context) const
-{
-  return isl::checked::set(*this).gist(context);
-}
-
-isl::checked::basic_set basic_set::gist(const isl::checked::point &context) const
-{
-  return this->gist(isl::checked::basic_set(context));
-}
-
-isl::checked::union_set basic_set::gist_params(const isl::checked::set &set) const
-{
-  return isl::checked::set(*this).gist_params(set);
-}
-
-isl::checked::map basic_set::identity() const
-{
-  return isl::checked::set(*this).identity();
-}
-
-isl::checked::pw_aff basic_set::indicator_function() const
-{
-  return isl::checked::set(*this).indicator_function();
-}
-
-isl::checked::map basic_set::insert_domain(const isl::checked::space &domain) const
-{
-  return isl::checked::set(*this).insert_domain(domain);
-}
-
-isl::checked::basic_set basic_set::intersect(isl::checked::basic_set bset2) const
-{
-  auto res = isl_basic_set_intersect(copy(), bset2.release());
-  return manage(res);
-}
-
-isl::checked::set basic_set::intersect(const isl::checked::set &set2) const
-{
-  return isl::checked::set(*this).intersect(set2);
-}
-
-isl::checked::union_set basic_set::intersect(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::set(*this).intersect(uset2);
-}
-
-isl::checked::basic_set basic_set::intersect(const isl::checked::point &bset2) const
-{
-  return this->intersect(isl::checked::basic_set(bset2));
-}
-
-isl::checked::basic_set basic_set::intersect_params(isl::checked::basic_set bset2) const
-{
-  auto res = isl_basic_set_intersect_params(copy(), bset2.release());
-  return manage(res);
-}
-
-isl::checked::set basic_set::intersect_params(const isl::checked::set &params) const
-{
-  return isl::checked::set(*this).intersect_params(params);
-}
-
-isl::checked::basic_set basic_set::intersect_params(const isl::checked::point &bset2) const
-{
-  return this->intersect_params(isl::checked::basic_set(bset2));
-}
-
-boolean basic_set::involves_locals() const
-{
-  return isl::checked::set(*this).involves_locals();
-}
-
-boolean basic_set::is_disjoint(const isl::checked::set &set2) const
-{
-  return isl::checked::set(*this).is_disjoint(set2);
-}
-
-boolean basic_set::is_disjoint(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::set(*this).is_disjoint(uset2);
-}
-
-boolean basic_set::is_empty() const
-{
-  auto res = isl_basic_set_is_empty(get());
-  return manage(res);
-}
-
-boolean basic_set::is_equal(const isl::checked::basic_set &bset2) const
-{
-  auto res = isl_basic_set_is_equal(get(), bset2.get());
-  return manage(res);
-}
-
-boolean basic_set::is_equal(const isl::checked::set &set2) const
-{
-  return isl::checked::set(*this).is_equal(set2);
-}
-
-boolean basic_set::is_equal(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::set(*this).is_equal(uset2);
-}
-
-boolean basic_set::is_equal(const isl::checked::point &bset2) const
-{
-  return this->is_equal(isl::checked::basic_set(bset2));
-}
-
-boolean basic_set::is_singleton() const
-{
-  return isl::checked::set(*this).is_singleton();
-}
-
-boolean basic_set::is_strict_subset(const isl::checked::set &set2) const
-{
-  return isl::checked::set(*this).is_strict_subset(set2);
-}
-
-boolean basic_set::is_strict_subset(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::set(*this).is_strict_subset(uset2);
-}
-
-boolean basic_set::is_subset(const isl::checked::basic_set &bset2) const
-{
-  auto res = isl_basic_set_is_subset(get(), bset2.get());
-  return manage(res);
-}
-
-boolean basic_set::is_subset(const isl::checked::set &set2) const
-{
-  return isl::checked::set(*this).is_subset(set2);
-}
-
-boolean basic_set::is_subset(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::set(*this).is_subset(uset2);
-}
-
-boolean basic_set::is_subset(const isl::checked::point &bset2) const
-{
-  return this->is_subset(isl::checked::basic_set(bset2));
-}
-
-boolean basic_set::is_wrapping() const
-{
-  auto res = isl_basic_set_is_wrapping(get());
-  return manage(res);
-}
-
-boolean basic_set::isa_set() const
-{
-  return isl::checked::set(*this).isa_set();
-}
-
-isl::checked::set basic_set::lexmax() const
-{
-  auto res = isl_basic_set_lexmax(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff basic_set::lexmax_pw_multi_aff() const
-{
-  return isl::checked::set(*this).lexmax_pw_multi_aff();
-}
-
-isl::checked::set basic_set::lexmin() const
-{
-  auto res = isl_basic_set_lexmin(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff basic_set::lexmin_pw_multi_aff() const
-{
-  return isl::checked::set(*this).lexmin_pw_multi_aff();
-}
-
-isl::checked::set basic_set::lower_bound(const isl::checked::multi_pw_aff &lower) const
-{
-  return isl::checked::set(*this).lower_bound(lower);
-}
-
-isl::checked::set basic_set::lower_bound(const isl::checked::multi_val &lower) const
-{
-  return isl::checked::set(*this).lower_bound(lower);
-}
-
-isl::checked::multi_pw_aff basic_set::max_multi_pw_aff() const
-{
-  return isl::checked::set(*this).max_multi_pw_aff();
-}
-
-isl::checked::val basic_set::max_val(const isl::checked::aff &obj) const
-{
-  return isl::checked::set(*this).max_val(obj);
-}
-
-isl::checked::multi_pw_aff basic_set::min_multi_pw_aff() const
-{
-  return isl::checked::set(*this).min_multi_pw_aff();
-}
-
-isl::checked::val basic_set::min_val(const isl::checked::aff &obj) const
-{
-  return isl::checked::set(*this).min_val(obj);
-}
-
-class size basic_set::n_basic_set() const
-{
-  return isl::checked::set(*this).n_basic_set();
-}
-
-isl::checked::basic_set basic_set::params() const
-{
-  auto res = isl_basic_set_params(copy());
-  return manage(res);
-}
-
-isl::checked::multi_val basic_set::plain_multi_val_if_fixed() const
-{
-  return isl::checked::set(*this).plain_multi_val_if_fixed();
-}
-
-isl::checked::basic_set basic_set::polyhedral_hull() const
-{
-  return isl::checked::set(*this).polyhedral_hull();
-}
-
-isl::checked::set basic_set::preimage(const isl::checked::multi_aff &ma) const
-{
-  return isl::checked::set(*this).preimage(ma);
-}
-
-isl::checked::set basic_set::preimage(const isl::checked::multi_pw_aff &mpa) const
-{
-  return isl::checked::set(*this).preimage(mpa);
-}
-
-isl::checked::set basic_set::preimage(const isl::checked::pw_multi_aff &pma) const
-{
-  return isl::checked::set(*this).preimage(pma);
-}
-
-isl::checked::union_set basic_set::preimage(const isl::checked::union_pw_multi_aff &upma) const
-{
-  return isl::checked::set(*this).preimage(upma);
-}
-
-isl::checked::set basic_set::product(const isl::checked::set &set2) const
-{
-  return isl::checked::set(*this).product(set2);
-}
-
-isl::checked::set basic_set::project_out_all_params() const
-{
-  return isl::checked::set(*this).project_out_all_params();
-}
-
-isl::checked::set basic_set::project_out_param(const isl::checked::id &id) const
-{
-  return isl::checked::set(*this).project_out_param(id);
-}
-
-isl::checked::set basic_set::project_out_param(const std::string &id) const
-{
-  return this->project_out_param(isl::checked::id(ctx(), id));
-}
-
-isl::checked::set basic_set::project_out_param(const isl::checked::id_list &list) const
-{
-  return isl::checked::set(*this).project_out_param(list);
-}
-
-isl::checked::pw_multi_aff basic_set::pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::set(*this).pw_multi_aff_on_domain(mv);
-}
-
-isl::checked::basic_set basic_set::sample() const
-{
-  auto res = isl_basic_set_sample(copy());
-  return manage(res);
-}
-
-isl::checked::point basic_set::sample_point() const
-{
-  auto res = isl_basic_set_sample_point(copy());
-  return manage(res);
-}
-
-isl::checked::set_list basic_set::set_list() const
-{
-  return isl::checked::set(*this).set_list();
-}
-
-isl::checked::fixed_box basic_set::simple_fixed_box_hull() const
-{
-  return isl::checked::set(*this).simple_fixed_box_hull();
-}
-
-isl::checked::space basic_set::space() const
-{
-  return isl::checked::set(*this).space();
-}
-
-isl::checked::val basic_set::stride(int pos) const
-{
-  return isl::checked::set(*this).stride(pos);
-}
-
-isl::checked::set basic_set::subtract(const isl::checked::set &set2) const
-{
-  return isl::checked::set(*this).subtract(set2);
-}
-
-isl::checked::union_set basic_set::subtract(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::set(*this).subtract(uset2);
-}
-
-isl::checked::set_list basic_set::to_list() const
-{
-  return isl::checked::set(*this).to_list();
-}
-
-isl::checked::set basic_set::to_set() const
-{
-  auto res = isl_basic_set_to_set(copy());
-  return manage(res);
-}
-
-isl::checked::union_set basic_set::to_union_set() const
-{
-  return isl::checked::set(*this).to_union_set();
-}
-
-isl::checked::map basic_set::translation() const
-{
-  return isl::checked::set(*this).translation();
-}
-
-class size basic_set::tuple_dim() const
-{
-  return isl::checked::set(*this).tuple_dim();
-}
-
-isl::checked::set basic_set::unbind_params(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::set(*this).unbind_params(tuple);
-}
-
-isl::checked::map basic_set::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
-{
-  return isl::checked::set(*this).unbind_params_insert_domain(domain);
-}
-
-isl::checked::set basic_set::unite(isl::checked::basic_set bset2) const
-{
-  auto res = isl_basic_set_union(copy(), bset2.release());
-  return manage(res);
-}
-
-isl::checked::set basic_set::unite(const isl::checked::set &set2) const
-{
-  return isl::checked::set(*this).unite(set2);
-}
-
-isl::checked::union_set basic_set::unite(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::set(*this).unite(uset2);
-}
-
-isl::checked::set basic_set::unite(const isl::checked::point &bset2) const
-{
-  return this->unite(isl::checked::basic_set(bset2));
-}
-
-isl::checked::basic_set basic_set::unshifted_simple_hull() const
-{
-  return isl::checked::set(*this).unshifted_simple_hull();
-}
-
-isl::checked::map basic_set::unwrap() const
-{
-  return isl::checked::set(*this).unwrap();
-}
-
-isl::checked::set basic_set::upper_bound(const isl::checked::multi_pw_aff &upper) const
-{
-  return isl::checked::set(*this).upper_bound(upper);
-}
-
-isl::checked::set basic_set::upper_bound(const isl::checked::multi_val &upper) const
-{
-  return isl::checked::set(*this).upper_bound(upper);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const basic_set &obj)
-{
-  char *str = isl_basic_set_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::fixed_box
-fixed_box manage(__isl_take isl_fixed_box *ptr) {
-  return fixed_box(ptr);
-}
-fixed_box manage_copy(__isl_keep isl_fixed_box *ptr) {
-  ptr = isl_fixed_box_copy(ptr);
-  return fixed_box(ptr);
-}
-
-fixed_box::fixed_box()
-    : ptr(nullptr) {}
-
-fixed_box::fixed_box(const fixed_box &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-fixed_box::fixed_box(__isl_take isl_fixed_box *ptr)
-    : ptr(ptr) {}
-
-fixed_box &fixed_box::operator=(fixed_box obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-fixed_box::~fixed_box() {
-  if (ptr)
-    isl_fixed_box_free(ptr);
-}
-
-__isl_give isl_fixed_box *fixed_box::copy() const & {
-  return isl_fixed_box_copy(ptr);
-}
-
-__isl_keep isl_fixed_box *fixed_box::get() const {
-  return ptr;
-}
-
-__isl_give isl_fixed_box *fixed_box::release() {
-  isl_fixed_box *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool fixed_box::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx fixed_box::ctx() const {
-  return isl::checked::ctx(isl_fixed_box_get_ctx(ptr));
-}
-
-boolean fixed_box::is_valid() const
-{
-  auto res = isl_fixed_box_is_valid(get());
-  return manage(res);
-}
-
-isl::checked::multi_aff fixed_box::offset() const
-{
-  auto res = isl_fixed_box_get_offset(get());
-  return manage(res);
-}
-
-isl::checked::multi_aff fixed_box::get_offset() const
-{
-  return offset();
-}
-
-isl::checked::multi_val fixed_box::size() const
-{
-  auto res = isl_fixed_box_get_size(get());
-  return manage(res);
-}
-
-isl::checked::multi_val fixed_box::get_size() const
-{
-  return size();
-}
-
-isl::checked::space fixed_box::space() const
-{
-  auto res = isl_fixed_box_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space fixed_box::get_space() const
-{
-  return space();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const fixed_box &obj)
-{
-  char *str = isl_fixed_box_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::id
-id manage(__isl_take isl_id *ptr) {
-  return id(ptr);
-}
-id manage_copy(__isl_keep isl_id *ptr) {
-  ptr = isl_id_copy(ptr);
-  return id(ptr);
-}
-
-id::id()
-    : ptr(nullptr) {}
-
-id::id(const id &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-id::id(__isl_take isl_id *ptr)
-    : ptr(ptr) {}
-
-id::id(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_id_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-id &id::operator=(id obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-id::~id() {
-  if (ptr)
-    isl_id_free(ptr);
-}
-
-__isl_give isl_id *id::copy() const & {
-  return isl_id_copy(ptr);
-}
-
-__isl_keep isl_id *id::get() const {
-  return ptr;
-}
-
-__isl_give isl_id *id::release() {
-  isl_id *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool id::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx id::ctx() const {
-  return isl::checked::ctx(isl_id_get_ctx(ptr));
-}
-
-std::string id::name() const
-{
-  auto res = isl_id_get_name(get());
-  std::string tmp(res);
-  return tmp;
-}
-
-std::string id::get_name() const
-{
-  return name();
-}
-
-isl::checked::id_list id::to_list() const
-{
-  auto res = isl_id_to_list(copy());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const id &obj)
-{
-  char *str = isl_id_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::id_list
-id_list manage(__isl_take isl_id_list *ptr) {
-  return id_list(ptr);
-}
-id_list manage_copy(__isl_keep isl_id_list *ptr) {
-  ptr = isl_id_list_copy(ptr);
-  return id_list(ptr);
-}
-
-id_list::id_list()
-    : ptr(nullptr) {}
-
-id_list::id_list(const id_list &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-id_list::id_list(__isl_take isl_id_list *ptr)
-    : ptr(ptr) {}
-
-id_list::id_list(isl::checked::ctx ctx, int n)
-{
-  auto res = isl_id_list_alloc(ctx.release(), n);
-  ptr = res;
-}
-
-id_list::id_list(isl::checked::id el)
-{
-  auto res = isl_id_list_from_id(el.release());
-  ptr = res;
-}
-
-id_list::id_list(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_id_list_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-id_list &id_list::operator=(id_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-id_list::~id_list() {
-  if (ptr)
-    isl_id_list_free(ptr);
-}
-
-__isl_give isl_id_list *id_list::copy() const & {
-  return isl_id_list_copy(ptr);
-}
-
-__isl_keep isl_id_list *id_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_id_list *id_list::release() {
-  isl_id_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool id_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx id_list::ctx() const {
-  return isl::checked::ctx(isl_id_list_get_ctx(ptr));
-}
-
-isl::checked::id_list id_list::add(isl::checked::id el) const
-{
-  auto res = isl_id_list_add(copy(), el.release());
-  return manage(res);
-}
-
-isl::checked::id_list id_list::add(const std::string &el) const
-{
-  return this->add(isl::checked::id(ctx(), el));
-}
-
-isl::checked::id id_list::at(int index) const
-{
-  auto res = isl_id_list_get_at(get(), index);
-  return manage(res);
-}
-
-isl::checked::id id_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::checked::id_list id_list::clear() const
-{
-  auto res = isl_id_list_clear(copy());
-  return manage(res);
-}
-
-isl::checked::id_list id_list::concat(isl::checked::id_list list2) const
-{
-  auto res = isl_id_list_concat(copy(), list2.release());
-  return manage(res);
-}
-
-isl::checked::id_list id_list::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl_id_list_drop(copy(), first, n);
-  return manage(res);
-}
-
-stat id_list::foreach(const std::function<stat(isl::checked::id)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::id)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::id_list id_list::insert(unsigned int pos, isl::checked::id el) const
-{
-  auto res = isl_id_list_insert(copy(), pos, el.release());
-  return manage(res);
-}
-
-isl::checked::id_list id_list::insert(unsigned int pos, const std::string &el) const
-{
-  return this->insert(pos, isl::checked::id(ctx(), el));
-}
-
-class size id_list::size() const
-{
-  auto res = isl_id_list_size(get());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const id_list &obj)
-{
-  char *str = isl_id_list_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::map
-map manage(__isl_take isl_map *ptr) {
-  return map(ptr);
-}
-map manage_copy(__isl_keep isl_map *ptr) {
-  ptr = isl_map_copy(ptr);
-  return map(ptr);
-}
-
-map::map()
-    : ptr(nullptr) {}
-
-map::map(const map &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-map::map(__isl_take isl_map *ptr)
-    : ptr(ptr) {}
-
-map::map(isl::checked::basic_map bmap)
-{
-  auto res = isl_map_from_basic_map(bmap.release());
-  ptr = res;
-}
-
-map::map(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_map_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-map &map::operator=(map obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-map::~map() {
-  if (ptr)
-    isl_map_free(ptr);
-}
-
-__isl_give isl_map *map::copy() const & {
-  return isl_map_copy(ptr);
-}
-
-__isl_keep isl_map *map::get() const {
-  return ptr;
-}
-
-__isl_give isl_map *map::release() {
-  isl_map *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool map::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx map::ctx() const {
-  return isl::checked::ctx(isl_map_get_ctx(ptr));
-}
-
-isl::checked::basic_map map::affine_hull() const
-{
-  auto res = isl_map_affine_hull(copy());
-  return manage(res);
-}
-
-isl::checked::map map::apply_domain(isl::checked::map map2) const
-{
-  auto res = isl_map_apply_domain(copy(), map2.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::apply_domain(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).apply_domain(umap2);
-}
-
-isl::checked::map map::apply_domain(const isl::checked::basic_map &map2) const
-{
-  return this->apply_domain(isl::checked::map(map2));
-}
-
-isl::checked::map map::apply_range(isl::checked::map map2) const
-{
-  auto res = isl_map_apply_range(copy(), map2.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::apply_range(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).apply_range(umap2);
-}
-
-isl::checked::map map::apply_range(const isl::checked::basic_map &map2) const
-{
-  return this->apply_range(isl::checked::map(map2));
-}
-
-isl::checked::map map::as_map() const
-{
-  return isl::checked::union_map(*this).as_map();
-}
-
-isl::checked::multi_union_pw_aff map::as_multi_union_pw_aff() const
-{
-  return isl::checked::union_map(*this).as_multi_union_pw_aff();
-}
-
-isl::checked::pw_multi_aff map::as_pw_multi_aff() const
-{
-  auto res = isl_map_as_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff map::as_union_pw_multi_aff() const
-{
-  return isl::checked::union_map(*this).as_union_pw_multi_aff();
-}
-
-isl::checked::set map::bind_domain(isl::checked::multi_id tuple) const
-{
-  auto res = isl_map_bind_domain(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::set map::bind_range(isl::checked::multi_id tuple) const
-{
-  auto res = isl_map_bind_range(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::map map::coalesce() const
-{
-  auto res = isl_map_coalesce(copy());
-  return manage(res);
-}
-
-isl::checked::map map::complement() const
-{
-  auto res = isl_map_complement(copy());
-  return manage(res);
-}
-
-isl::checked::union_map map::compute_divs() const
-{
-  return isl::checked::union_map(*this).compute_divs();
-}
-
-isl::checked::map map::curry() const
-{
-  auto res = isl_map_curry(copy());
-  return manage(res);
-}
-
-isl::checked::set map::deltas() const
-{
-  auto res = isl_map_deltas(copy());
-  return manage(res);
-}
-
-isl::checked::map map::detect_equalities() const
-{
-  auto res = isl_map_detect_equalities(copy());
-  return manage(res);
-}
-
-isl::checked::set map::domain() const
-{
-  auto res = isl_map_domain(copy());
-  return manage(res);
-}
-
-isl::checked::map map::domain_factor_domain() const
-{
-  auto res = isl_map_domain_factor_domain(copy());
-  return manage(res);
-}
-
-isl::checked::map map::domain_factor_range() const
-{
-  auto res = isl_map_domain_factor_range(copy());
-  return manage(res);
-}
-
-isl::checked::union_map map::domain_map() const
-{
-  return isl::checked::union_map(*this).domain_map();
-}
-
-isl::checked::union_pw_multi_aff map::domain_map_union_pw_multi_aff() const
-{
-  return isl::checked::union_map(*this).domain_map_union_pw_multi_aff();
-}
-
-isl::checked::map map::domain_product(isl::checked::map map2) const
-{
-  auto res = isl_map_domain_product(copy(), map2.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::domain_product(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).domain_product(umap2);
-}
-
-isl::checked::map map::domain_product(const isl::checked::basic_map &map2) const
-{
-  return this->domain_product(isl::checked::map(map2));
-}
-
-class size map::domain_tuple_dim() const
-{
-  auto res = isl_map_domain_tuple_dim(get());
-  return manage(res);
-}
-
-isl::checked::id map::domain_tuple_id() const
-{
-  auto res = isl_map_get_domain_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::id map::get_domain_tuple_id() const
-{
-  return domain_tuple_id();
-}
-
-isl::checked::map map::empty(isl::checked::space space)
-{
-  auto res = isl_map_empty(space.release());
-  return manage(res);
-}
-
-isl::checked::map map::eq_at(isl::checked::multi_pw_aff mpa) const
-{
-  auto res = isl_map_eq_at_multi_pw_aff(copy(), mpa.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::eq_at(const isl::checked::multi_union_pw_aff &mupa) const
-{
-  return isl::checked::union_map(*this).eq_at(mupa);
-}
-
-isl::checked::map map::eq_at(const isl::checked::aff &mpa) const
-{
-  return this->eq_at(isl::checked::multi_pw_aff(mpa));
-}
-
-isl::checked::map map::eq_at(const isl::checked::multi_aff &mpa) const
-{
-  return this->eq_at(isl::checked::multi_pw_aff(mpa));
-}
-
-isl::checked::map map::eq_at(const isl::checked::pw_aff &mpa) const
-{
-  return this->eq_at(isl::checked::multi_pw_aff(mpa));
-}
-
-isl::checked::map map::eq_at(const isl::checked::pw_multi_aff &mpa) const
-{
-  return this->eq_at(isl::checked::multi_pw_aff(mpa));
-}
-
-boolean map::every_map(const std::function<boolean(isl::checked::map)> &test) const
-{
-  return isl::checked::union_map(*this).every_map(test);
-}
-
-isl::checked::map map::extract_map(const isl::checked::space &space) const
-{
-  return isl::checked::union_map(*this).extract_map(space);
-}
-
-isl::checked::map map::factor_domain() const
-{
-  auto res = isl_map_factor_domain(copy());
-  return manage(res);
-}
-
-isl::checked::map map::factor_range() const
-{
-  auto res = isl_map_factor_range(copy());
-  return manage(res);
-}
-
-isl::checked::union_map map::fixed_power(const isl::checked::val &exp) const
-{
-  return isl::checked::union_map(*this).fixed_power(exp);
-}
-
-isl::checked::union_map map::fixed_power(long exp) const
-{
-  return this->fixed_power(isl::checked::val(ctx(), exp));
-}
-
-isl::checked::map map::flatten() const
-{
-  auto res = isl_map_flatten(copy());
-  return manage(res);
-}
-
-isl::checked::map map::flatten_domain() const
-{
-  auto res = isl_map_flatten_domain(copy());
-  return manage(res);
-}
-
-isl::checked::map map::flatten_range() const
-{
-  auto res = isl_map_flatten_range(copy());
-  return manage(res);
-}
-
-stat map::foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::basic_map)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-stat map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
-{
-  return isl::checked::union_map(*this).foreach_map(fn);
-}
-
-isl::checked::map map::gist(isl::checked::map context) const
-{
-  auto res = isl_map_gist(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::gist(const isl::checked::union_map &context) const
-{
-  return isl::checked::union_map(*this).gist(context);
-}
-
-isl::checked::map map::gist(const isl::checked::basic_map &context) const
-{
-  return this->gist(isl::checked::map(context));
-}
-
-isl::checked::map map::gist_domain(isl::checked::set context) const
-{
-  auto res = isl_map_gist_domain(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::gist_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_map(*this).gist_domain(uset);
-}
-
-isl::checked::map map::gist_domain(const isl::checked::basic_set &context) const
-{
-  return this->gist_domain(isl::checked::set(context));
-}
-
-isl::checked::map map::gist_domain(const isl::checked::point &context) const
-{
-  return this->gist_domain(isl::checked::set(context));
-}
-
-isl::checked::union_map map::gist_params(const isl::checked::set &set) const
-{
-  return isl::checked::union_map(*this).gist_params(set);
-}
-
-isl::checked::union_map map::gist_range(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_map(*this).gist_range(uset);
-}
-
-boolean map::has_domain_tuple_id() const
-{
-  auto res = isl_map_has_domain_tuple_id(get());
-  return manage(res);
-}
-
-boolean map::has_range_tuple_id() const
-{
-  auto res = isl_map_has_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::map map::intersect(isl::checked::map map2) const
-{
-  auto res = isl_map_intersect(copy(), map2.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::intersect(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).intersect(umap2);
-}
-
-isl::checked::map map::intersect(const isl::checked::basic_map &map2) const
-{
-  return this->intersect(isl::checked::map(map2));
-}
-
-isl::checked::map map::intersect_domain(isl::checked::set set) const
-{
-  auto res = isl_map_intersect_domain(copy(), set.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::intersect_domain(const isl::checked::space &space) const
-{
-  return isl::checked::union_map(*this).intersect_domain(space);
-}
-
-isl::checked::union_map map::intersect_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_map(*this).intersect_domain(uset);
-}
-
-isl::checked::map map::intersect_domain(const isl::checked::basic_set &set) const
-{
-  return this->intersect_domain(isl::checked::set(set));
-}
-
-isl::checked::map map::intersect_domain(const isl::checked::point &set) const
-{
-  return this->intersect_domain(isl::checked::set(set));
-}
-
-isl::checked::map map::intersect_domain_factor_domain(isl::checked::map factor) const
-{
-  auto res = isl_map_intersect_domain_factor_domain(copy(), factor.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::intersect_domain_factor_domain(const isl::checked::union_map &factor) const
-{
-  return isl::checked::union_map(*this).intersect_domain_factor_domain(factor);
-}
-
-isl::checked::map map::intersect_domain_factor_domain(const isl::checked::basic_map &factor) const
-{
-  return this->intersect_domain_factor_domain(isl::checked::map(factor));
-}
-
-isl::checked::map map::intersect_domain_factor_range(isl::checked::map factor) const
-{
-  auto res = isl_map_intersect_domain_factor_range(copy(), factor.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::intersect_domain_factor_range(const isl::checked::union_map &factor) const
-{
-  return isl::checked::union_map(*this).intersect_domain_factor_range(factor);
-}
-
-isl::checked::map map::intersect_domain_factor_range(const isl::checked::basic_map &factor) const
-{
-  return this->intersect_domain_factor_range(isl::checked::map(factor));
-}
-
-isl::checked::map map::intersect_params(isl::checked::set params) const
-{
-  auto res = isl_map_intersect_params(copy(), params.release());
-  return manage(res);
-}
-
-isl::checked::map map::intersect_range(isl::checked::set set) const
-{
-  auto res = isl_map_intersect_range(copy(), set.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::intersect_range(const isl::checked::space &space) const
-{
-  return isl::checked::union_map(*this).intersect_range(space);
-}
-
-isl::checked::union_map map::intersect_range(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_map(*this).intersect_range(uset);
-}
-
-isl::checked::map map::intersect_range(const isl::checked::basic_set &set) const
-{
-  return this->intersect_range(isl::checked::set(set));
-}
-
-isl::checked::map map::intersect_range(const isl::checked::point &set) const
-{
-  return this->intersect_range(isl::checked::set(set));
-}
-
-isl::checked::map map::intersect_range_factor_domain(isl::checked::map factor) const
-{
-  auto res = isl_map_intersect_range_factor_domain(copy(), factor.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::intersect_range_factor_domain(const isl::checked::union_map &factor) const
-{
-  return isl::checked::union_map(*this).intersect_range_factor_domain(factor);
-}
-
-isl::checked::map map::intersect_range_factor_domain(const isl::checked::basic_map &factor) const
-{
-  return this->intersect_range_factor_domain(isl::checked::map(factor));
-}
-
-isl::checked::map map::intersect_range_factor_range(isl::checked::map factor) const
-{
-  auto res = isl_map_intersect_range_factor_range(copy(), factor.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::intersect_range_factor_range(const isl::checked::union_map &factor) const
-{
-  return isl::checked::union_map(*this).intersect_range_factor_range(factor);
-}
-
-isl::checked::map map::intersect_range_factor_range(const isl::checked::basic_map &factor) const
-{
-  return this->intersect_range_factor_range(isl::checked::map(factor));
-}
-
-boolean map::is_bijective() const
-{
-  auto res = isl_map_is_bijective(get());
-  return manage(res);
-}
-
-boolean map::is_disjoint(const isl::checked::map &map2) const
-{
-  auto res = isl_map_is_disjoint(get(), map2.get());
-  return manage(res);
-}
-
-boolean map::is_disjoint(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).is_disjoint(umap2);
-}
-
-boolean map::is_disjoint(const isl::checked::basic_map &map2) const
-{
-  return this->is_disjoint(isl::checked::map(map2));
-}
-
-boolean map::is_empty() const
-{
-  auto res = isl_map_is_empty(get());
-  return manage(res);
-}
-
-boolean map::is_equal(const isl::checked::map &map2) const
-{
-  auto res = isl_map_is_equal(get(), map2.get());
-  return manage(res);
-}
-
-boolean map::is_equal(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).is_equal(umap2);
-}
-
-boolean map::is_equal(const isl::checked::basic_map &map2) const
-{
-  return this->is_equal(isl::checked::map(map2));
-}
-
-boolean map::is_injective() const
-{
-  auto res = isl_map_is_injective(get());
-  return manage(res);
-}
-
-boolean map::is_single_valued() const
-{
-  auto res = isl_map_is_single_valued(get());
-  return manage(res);
-}
-
-boolean map::is_strict_subset(const isl::checked::map &map2) const
-{
-  auto res = isl_map_is_strict_subset(get(), map2.get());
-  return manage(res);
-}
-
-boolean map::is_strict_subset(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).is_strict_subset(umap2);
-}
-
-boolean map::is_strict_subset(const isl::checked::basic_map &map2) const
-{
-  return this->is_strict_subset(isl::checked::map(map2));
-}
-
-boolean map::is_subset(const isl::checked::map &map2) const
-{
-  auto res = isl_map_is_subset(get(), map2.get());
-  return manage(res);
-}
-
-boolean map::is_subset(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).is_subset(umap2);
-}
-
-boolean map::is_subset(const isl::checked::basic_map &map2) const
-{
-  return this->is_subset(isl::checked::map(map2));
-}
-
-boolean map::isa_map() const
-{
-  return isl::checked::union_map(*this).isa_map();
-}
-
-isl::checked::map map::lex_ge_at(isl::checked::multi_pw_aff mpa) const
-{
-  auto res = isl_map_lex_ge_at_multi_pw_aff(copy(), mpa.release());
-  return manage(res);
-}
-
-isl::checked::map map::lex_gt_at(isl::checked::multi_pw_aff mpa) const
-{
-  auto res = isl_map_lex_gt_at_multi_pw_aff(copy(), mpa.release());
-  return manage(res);
-}
-
-isl::checked::map map::lex_le_at(isl::checked::multi_pw_aff mpa) const
-{
-  auto res = isl_map_lex_le_at_multi_pw_aff(copy(), mpa.release());
-  return manage(res);
-}
-
-isl::checked::map map::lex_lt_at(isl::checked::multi_pw_aff mpa) const
-{
-  auto res = isl_map_lex_lt_at_multi_pw_aff(copy(), mpa.release());
-  return manage(res);
-}
-
-isl::checked::map map::lexmax() const
-{
-  auto res = isl_map_lexmax(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff map::lexmax_pw_multi_aff() const
-{
-  auto res = isl_map_lexmax_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::map map::lexmin() const
-{
-  auto res = isl_map_lexmin(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff map::lexmin_pw_multi_aff() const
-{
-  auto res = isl_map_lexmin_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::map map::lower_bound(isl::checked::multi_pw_aff lower) const
-{
-  auto res = isl_map_lower_bound_multi_pw_aff(copy(), lower.release());
-  return manage(res);
-}
-
-isl::checked::map_list map::map_list() const
-{
-  return isl::checked::union_map(*this).map_list();
-}
-
-isl::checked::multi_pw_aff map::max_multi_pw_aff() const
-{
-  auto res = isl_map_max_multi_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff map::min_multi_pw_aff() const
-{
-  auto res = isl_map_min_multi_pw_aff(copy());
-  return manage(res);
-}
-
-class size map::n_basic_map() const
-{
-  auto res = isl_map_n_basic_map(get());
-  return manage(res);
-}
-
-isl::checked::basic_map map::polyhedral_hull() const
-{
-  auto res = isl_map_polyhedral_hull(copy());
-  return manage(res);
-}
-
-isl::checked::map map::preimage_domain(isl::checked::multi_aff ma) const
-{
-  auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release());
-  return manage(res);
-}
-
-isl::checked::map map::preimage_domain(isl::checked::multi_pw_aff mpa) const
-{
-  auto res = isl_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
-  return manage(res);
-}
-
-isl::checked::map map::preimage_domain(isl::checked::pw_multi_aff pma) const
-{
-  auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::preimage_domain(const isl::checked::union_pw_multi_aff &upma) const
-{
-  return isl::checked::union_map(*this).preimage_domain(upma);
-}
-
-isl::checked::map map::preimage_range(isl::checked::multi_aff ma) const
-{
-  auto res = isl_map_preimage_range_multi_aff(copy(), ma.release());
-  return manage(res);
-}
-
-isl::checked::map map::preimage_range(isl::checked::pw_multi_aff pma) const
-{
-  auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::preimage_range(const isl::checked::union_pw_multi_aff &upma) const
-{
-  return isl::checked::union_map(*this).preimage_range(upma);
-}
-
-isl::checked::map map::product(isl::checked::map map2) const
-{
-  auto res = isl_map_product(copy(), map2.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::product(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).product(umap2);
-}
-
-isl::checked::map map::product(const isl::checked::basic_map &map2) const
-{
-  return this->product(isl::checked::map(map2));
-}
-
-isl::checked::map map::project_out_all_params() const
-{
-  auto res = isl_map_project_out_all_params(copy());
-  return manage(res);
-}
-
-isl::checked::set map::range() const
-{
-  auto res = isl_map_range(copy());
-  return manage(res);
-}
-
-isl::checked::map map::range_factor_domain() const
-{
-  auto res = isl_map_range_factor_domain(copy());
-  return manage(res);
-}
-
-isl::checked::map map::range_factor_range() const
-{
-  auto res = isl_map_range_factor_range(copy());
-  return manage(res);
-}
-
-isl::checked::fixed_box map::range_lattice_tile() const
-{
-  auto res = isl_map_get_range_lattice_tile(get());
-  return manage(res);
-}
-
-isl::checked::fixed_box map::get_range_lattice_tile() const
-{
-  return range_lattice_tile();
-}
-
-isl::checked::union_map map::range_map() const
-{
-  return isl::checked::union_map(*this).range_map();
-}
-
-isl::checked::map map::range_product(isl::checked::map map2) const
-{
-  auto res = isl_map_range_product(copy(), map2.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::range_product(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).range_product(umap2);
-}
-
-isl::checked::map map::range_product(const isl::checked::basic_map &map2) const
-{
-  return this->range_product(isl::checked::map(map2));
-}
-
-isl::checked::map map::range_reverse() const
-{
-  auto res = isl_map_range_reverse(copy());
-  return manage(res);
-}
-
-isl::checked::fixed_box map::range_simple_fixed_box_hull() const
-{
-  auto res = isl_map_get_range_simple_fixed_box_hull(get());
-  return manage(res);
-}
-
-isl::checked::fixed_box map::get_range_simple_fixed_box_hull() const
-{
-  return range_simple_fixed_box_hull();
-}
-
-class size map::range_tuple_dim() const
-{
-  auto res = isl_map_range_tuple_dim(get());
-  return manage(res);
-}
-
-isl::checked::id map::range_tuple_id() const
-{
-  auto res = isl_map_get_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::id map::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::checked::map map::reverse() const
-{
-  auto res = isl_map_reverse(copy());
-  return manage(res);
-}
-
-isl::checked::basic_map map::sample() const
-{
-  auto res = isl_map_sample(copy());
-  return manage(res);
-}
-
-isl::checked::map map::set_domain_tuple(isl::checked::id id) const
-{
-  auto res = isl_map_set_domain_tuple_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::map map::set_domain_tuple(const std::string &id) const
-{
-  return this->set_domain_tuple(isl::checked::id(ctx(), id));
-}
-
-isl::checked::map map::set_range_tuple(isl::checked::id id) const
-{
-  auto res = isl_map_set_range_tuple_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::map map::set_range_tuple(const std::string &id) const
-{
-  return this->set_range_tuple(isl::checked::id(ctx(), id));
-}
-
-isl::checked::space map::space() const
-{
-  auto res = isl_map_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space map::get_space() const
-{
-  return space();
-}
-
-isl::checked::map map::subtract(isl::checked::map map2) const
-{
-  auto res = isl_map_subtract(copy(), map2.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::subtract(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).subtract(umap2);
-}
-
-isl::checked::map map::subtract(const isl::checked::basic_map &map2) const
-{
-  return this->subtract(isl::checked::map(map2));
-}
-
-isl::checked::union_map map::subtract_domain(const isl::checked::union_set &dom) const
-{
-  return isl::checked::union_map(*this).subtract_domain(dom);
-}
-
-isl::checked::union_map map::subtract_range(const isl::checked::union_set &dom) const
-{
-  return isl::checked::union_map(*this).subtract_range(dom);
-}
-
-isl::checked::map_list map::to_list() const
-{
-  auto res = isl_map_to_list(copy());
-  return manage(res);
-}
-
-isl::checked::union_map map::to_union_map() const
-{
-  auto res = isl_map_to_union_map(copy());
-  return manage(res);
-}
-
-isl::checked::map map::uncurry() const
-{
-  auto res = isl_map_uncurry(copy());
-  return manage(res);
-}
-
-isl::checked::map map::unite(isl::checked::map map2) const
-{
-  auto res = isl_map_union(copy(), map2.release());
-  return manage(res);
-}
-
-isl::checked::union_map map::unite(const isl::checked::union_map &umap2) const
-{
-  return isl::checked::union_map(*this).unite(umap2);
-}
-
-isl::checked::map map::unite(const isl::checked::basic_map &map2) const
-{
-  return this->unite(isl::checked::map(map2));
-}
-
-isl::checked::map map::universe(isl::checked::space space)
-{
-  auto res = isl_map_universe(space.release());
-  return manage(res);
-}
-
-isl::checked::basic_map map::unshifted_simple_hull() const
-{
-  auto res = isl_map_unshifted_simple_hull(copy());
-  return manage(res);
-}
-
-isl::checked::map map::upper_bound(isl::checked::multi_pw_aff upper) const
-{
-  auto res = isl_map_upper_bound_multi_pw_aff(copy(), upper.release());
-  return manage(res);
-}
-
-isl::checked::set map::wrap() const
-{
-  auto res = isl_map_wrap(copy());
-  return manage(res);
-}
-
-isl::checked::map map::zip() const
-{
-  auto res = isl_map_zip(copy());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const map &obj)
-{
-  char *str = isl_map_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::map_list
-map_list manage(__isl_take isl_map_list *ptr) {
-  return map_list(ptr);
-}
-map_list manage_copy(__isl_keep isl_map_list *ptr) {
-  ptr = isl_map_list_copy(ptr);
-  return map_list(ptr);
-}
-
-map_list::map_list()
-    : ptr(nullptr) {}
-
-map_list::map_list(const map_list &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-map_list::map_list(__isl_take isl_map_list *ptr)
-    : ptr(ptr) {}
-
-map_list::map_list(isl::checked::ctx ctx, int n)
-{
-  auto res = isl_map_list_alloc(ctx.release(), n);
-  ptr = res;
-}
-
-map_list::map_list(isl::checked::map el)
-{
-  auto res = isl_map_list_from_map(el.release());
-  ptr = res;
-}
-
-map_list::map_list(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_map_list_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-map_list &map_list::operator=(map_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-map_list::~map_list() {
-  if (ptr)
-    isl_map_list_free(ptr);
-}
-
-__isl_give isl_map_list *map_list::copy() const & {
-  return isl_map_list_copy(ptr);
-}
-
-__isl_keep isl_map_list *map_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_map_list *map_list::release() {
-  isl_map_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool map_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx map_list::ctx() const {
-  return isl::checked::ctx(isl_map_list_get_ctx(ptr));
-}
-
-isl::checked::map_list map_list::add(isl::checked::map el) const
-{
-  auto res = isl_map_list_add(copy(), el.release());
-  return manage(res);
-}
-
-isl::checked::map map_list::at(int index) const
-{
-  auto res = isl_map_list_get_at(get(), index);
-  return manage(res);
-}
-
-isl::checked::map map_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::checked::map_list map_list::clear() const
-{
-  auto res = isl_map_list_clear(copy());
-  return manage(res);
-}
-
-isl::checked::map_list map_list::concat(isl::checked::map_list list2) const
-{
-  auto res = isl_map_list_concat(copy(), list2.release());
-  return manage(res);
-}
-
-isl::checked::map_list map_list::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl_map_list_drop(copy(), first, n);
-  return manage(res);
-}
-
-stat map_list::foreach(const std::function<stat(isl::checked::map)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::map)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_map_list_foreach(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::map_list map_list::insert(unsigned int pos, isl::checked::map el) const
-{
-  auto res = isl_map_list_insert(copy(), pos, el.release());
-  return manage(res);
-}
-
-class size map_list::size() const
-{
-  auto res = isl_map_list_size(get());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const map_list &obj)
-{
-  char *str = isl_map_list_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::multi_aff
-multi_aff manage(__isl_take isl_multi_aff *ptr) {
-  return multi_aff(ptr);
-}
-multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) {
-  ptr = isl_multi_aff_copy(ptr);
-  return multi_aff(ptr);
-}
-
-multi_aff::multi_aff()
-    : ptr(nullptr) {}
-
-multi_aff::multi_aff(const multi_aff &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-multi_aff::multi_aff(__isl_take isl_multi_aff *ptr)
-    : ptr(ptr) {}
-
-multi_aff::multi_aff(isl::checked::aff aff)
-{
-  auto res = isl_multi_aff_from_aff(aff.release());
-  ptr = res;
-}
-
-multi_aff::multi_aff(isl::checked::space space, isl::checked::aff_list list)
-{
-  auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
-  ptr = res;
-}
-
-multi_aff::multi_aff(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-multi_aff &multi_aff::operator=(multi_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-multi_aff::~multi_aff() {
-  if (ptr)
-    isl_multi_aff_free(ptr);
-}
-
-__isl_give isl_multi_aff *multi_aff::copy() const & {
-  return isl_multi_aff_copy(ptr);
-}
-
-__isl_keep isl_multi_aff *multi_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_multi_aff *multi_aff::release() {
-  isl_multi_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool multi_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx multi_aff::ctx() const {
-  return isl::checked::ctx(isl_multi_aff_get_ctx(ptr));
-}
-
-isl::checked::multi_aff multi_aff::add(isl::checked::multi_aff multi2) const
-{
-  auto res = isl_multi_aff_add(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_aff::add(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).add(multi2);
-}
-
-isl::checked::multi_union_pw_aff multi_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).add(multi2);
-}
-
-isl::checked::pw_multi_aff multi_aff::add(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).add(pma2);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_multi_aff(*this).add(upma2);
-}
-
-isl::checked::multi_aff multi_aff::add(const isl::checked::aff &multi2) const
-{
-  return this->add(isl::checked::multi_aff(multi2));
-}
-
-isl::checked::multi_aff multi_aff::add_constant(isl::checked::multi_val mv) const
-{
-  auto res = isl_multi_aff_add_constant_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::add_constant(isl::checked::val v) const
-{
-  auto res = isl_multi_aff_add_constant_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::add_constant(long v) const
-{
-  return this->add_constant(isl::checked::val(ctx(), v));
-}
-
-isl::checked::union_pw_multi_aff multi_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_multi_aff(*this).apply(upma2);
-}
-
-isl::checked::map multi_aff::as_map() const
-{
-  auto res = isl_multi_aff_as_map(copy());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::as_multi_aff() const
-{
-  return isl::checked::pw_multi_aff(*this).as_multi_aff();
-}
-
-isl::checked::multi_union_pw_aff multi_aff::as_multi_union_pw_aff() const
-{
-  return isl::checked::pw_multi_aff(*this).as_multi_union_pw_aff();
-}
-
-isl::checked::pw_multi_aff multi_aff::as_pw_multi_aff() const
-{
-  return isl::checked::pw_multi_aff(*this).as_pw_multi_aff();
-}
-
-isl::checked::set multi_aff::as_set() const
-{
-  auto res = isl_multi_aff_as_set(copy());
-  return manage(res);
-}
-
-isl::checked::union_map multi_aff::as_union_map() const
-{
-  return isl::checked::pw_multi_aff(*this).as_union_map();
-}
-
-isl::checked::aff multi_aff::at(int pos) const
-{
-  auto res = isl_multi_aff_get_at(get(), pos);
-  return manage(res);
-}
-
-isl::checked::aff multi_aff::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::checked::basic_set multi_aff::bind(isl::checked::multi_id tuple) const
-{
-  auto res = isl_multi_aff_bind(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::bind_domain(isl::checked::multi_id tuple) const
-{
-  auto res = isl_multi_aff_bind_domain(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
-{
-  auto res = isl_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff multi_aff::coalesce() const
-{
-  return isl::checked::pw_multi_aff(*this).coalesce();
-}
-
-isl::checked::multi_val multi_aff::constant_multi_val() const
-{
-  auto res = isl_multi_aff_get_constant_multi_val(get());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_aff::get_constant_multi_val() const
-{
-  return constant_multi_val();
-}
-
-isl::checked::set multi_aff::domain() const
-{
-  return isl::checked::pw_multi_aff(*this).domain();
-}
-
-isl::checked::multi_aff multi_aff::domain_map(isl::checked::space space)
-{
-  auto res = isl_multi_aff_domain_map(space.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff multi_aff::extract_pw_multi_aff(const isl::checked::space &space) const
-{
-  return isl::checked::pw_multi_aff(*this).extract_pw_multi_aff(space);
-}
-
-isl::checked::multi_aff multi_aff::flat_range_product(isl::checked::multi_aff multi2) const
-{
-  auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
-}
-
-isl::checked::multi_union_pw_aff multi_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
-}
-
-isl::checked::pw_multi_aff multi_aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).flat_range_product(pma2);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_multi_aff(*this).flat_range_product(upma2);
-}
-
-isl::checked::multi_aff multi_aff::flat_range_product(const isl::checked::aff &multi2) const
-{
-  return this->flat_range_product(isl::checked::multi_aff(multi2));
-}
-
-isl::checked::multi_aff multi_aff::floor() const
-{
-  auto res = isl_multi_aff_floor(copy());
-  return manage(res);
-}
-
-stat multi_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
-{
-  return isl::checked::pw_multi_aff(*this).foreach_piece(fn);
-}
-
-isl::checked::multi_aff multi_aff::gist(isl::checked::set context) const
-{
-  auto res = isl_multi_aff_gist(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::gist(const isl::checked::union_set &context) const
-{
-  return isl::checked::pw_multi_aff(*this).gist(context);
-}
-
-isl::checked::multi_aff multi_aff::gist(const isl::checked::basic_set &context) const
-{
-  return this->gist(isl::checked::set(context));
-}
-
-isl::checked::multi_aff multi_aff::gist(const isl::checked::point &context) const
-{
-  return this->gist(isl::checked::set(context));
-}
-
-boolean multi_aff::has_range_tuple_id() const
-{
-  auto res = isl_multi_aff_has_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::identity() const
-{
-  auto res = isl_multi_aff_identity_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::identity_on_domain(isl::checked::space space)
-{
-  auto res = isl_multi_aff_identity_on_domain_space(space.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::insert_domain(isl::checked::space domain) const
-{
-  auto res = isl_multi_aff_insert_domain(copy(), domain.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff multi_aff::intersect_domain(const isl::checked::set &set) const
-{
-  return isl::checked::pw_multi_aff(*this).intersect_domain(set);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::intersect_domain(const isl::checked::space &space) const
-{
-  return isl::checked::pw_multi_aff(*this).intersect_domain(space);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::intersect_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::pw_multi_aff(*this).intersect_domain(uset);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
-{
-  return isl::checked::pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
-}
-
-isl::checked::pw_multi_aff multi_aff::intersect_params(const isl::checked::set &set) const
-{
-  return isl::checked::pw_multi_aff(*this).intersect_params(set);
-}
-
-boolean multi_aff::involves_locals() const
-{
-  auto res = isl_multi_aff_involves_locals(get());
-  return manage(res);
-}
-
-boolean multi_aff::involves_nan() const
-{
-  auto res = isl_multi_aff_involves_nan(get());
-  return manage(res);
-}
-
-boolean multi_aff::involves_param(const isl::checked::id &id) const
-{
-  return isl::checked::pw_multi_aff(*this).involves_param(id);
-}
-
-boolean multi_aff::involves_param(const std::string &id) const
-{
-  return this->involves_param(isl::checked::id(ctx(), id));
-}
-
-boolean multi_aff::involves_param(const isl::checked::id_list &list) const
-{
-  return isl::checked::pw_multi_aff(*this).involves_param(list);
-}
-
-boolean multi_aff::isa_multi_aff() const
-{
-  return isl::checked::pw_multi_aff(*this).isa_multi_aff();
-}
-
-boolean multi_aff::isa_pw_multi_aff() const
-{
-  return isl::checked::pw_multi_aff(*this).isa_pw_multi_aff();
-}
-
-isl::checked::aff_list multi_aff::list() const
-{
-  auto res = isl_multi_aff_get_list(get());
-  return manage(res);
-}
-
-isl::checked::aff_list multi_aff::get_list() const
-{
-  return list();
-}
-
-isl::checked::multi_pw_aff multi_aff::max(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).max(multi2);
-}
-
-isl::checked::multi_val multi_aff::max_multi_val() const
-{
-  return isl::checked::pw_multi_aff(*this).max_multi_val();
-}
-
-isl::checked::multi_pw_aff multi_aff::min(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).min(multi2);
-}
-
-isl::checked::multi_val multi_aff::min_multi_val() const
-{
-  return isl::checked::pw_multi_aff(*this).min_multi_val();
-}
-
-isl::checked::multi_aff multi_aff::multi_val_on_domain(isl::checked::space space, isl::checked::multi_val mv)
-{
-  auto res = isl_multi_aff_multi_val_on_domain_space(space.release(), mv.release());
-  return manage(res);
-}
-
-class size multi_aff::n_piece() const
-{
-  return isl::checked::pw_multi_aff(*this).n_piece();
-}
-
-isl::checked::multi_aff multi_aff::neg() const
-{
-  auto res = isl_multi_aff_neg(copy());
-  return manage(res);
-}
-
-boolean multi_aff::plain_is_empty() const
-{
-  return isl::checked::pw_multi_aff(*this).plain_is_empty();
-}
-
-boolean multi_aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
-{
-  auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
-  return manage(res);
-}
-
-boolean multi_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
-}
-
-boolean multi_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
-}
-
-boolean multi_aff::plain_is_equal(const isl::checked::aff &multi2) const
-{
-  return this->plain_is_equal(isl::checked::multi_aff(multi2));
-}
-
-isl::checked::pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
-}
-
-isl::checked::multi_aff multi_aff::product(isl::checked::multi_aff multi2) const
-{
-  auto res = isl_multi_aff_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_aff::product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).product(multi2);
-}
-
-isl::checked::pw_multi_aff multi_aff::product(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).product(pma2);
-}
-
-isl::checked::multi_aff multi_aff::product(const isl::checked::aff &multi2) const
-{
-  return this->product(isl::checked::multi_aff(multi2));
-}
-
-isl::checked::multi_aff multi_aff::pullback(isl::checked::multi_aff ma2) const
-{
-  auto res = isl_multi_aff_pullback_multi_aff(copy(), ma2.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_aff::pullback(const isl::checked::multi_pw_aff &mpa2) const
-{
-  return isl::checked::pw_multi_aff(*this).pullback(mpa2);
-}
-
-isl::checked::pw_multi_aff multi_aff::pullback(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).pullback(pma2);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::pullback(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_multi_aff(*this).pullback(upma2);
-}
-
-isl::checked::multi_aff multi_aff::pullback(const isl::checked::aff &ma2) const
-{
-  return this->pullback(isl::checked::multi_aff(ma2));
-}
-
-isl::checked::pw_multi_aff_list multi_aff::pw_multi_aff_list() const
-{
-  return isl::checked::pw_multi_aff(*this).pw_multi_aff_list();
-}
-
-isl::checked::pw_multi_aff multi_aff::range_factor_domain() const
-{
-  return isl::checked::pw_multi_aff(*this).range_factor_domain();
-}
-
-isl::checked::pw_multi_aff multi_aff::range_factor_range() const
-{
-  return isl::checked::pw_multi_aff(*this).range_factor_range();
-}
-
-isl::checked::multi_aff multi_aff::range_map(isl::checked::space space)
-{
-  auto res = isl_multi_aff_range_map(space.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::range_product(isl::checked::multi_aff multi2) const
-{
-  auto res = isl_multi_aff_range_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).range_product(multi2);
-}
-
-isl::checked::multi_union_pw_aff multi_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).range_product(multi2);
-}
-
-isl::checked::pw_multi_aff multi_aff::range_product(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).range_product(pma2);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_multi_aff(*this).range_product(upma2);
-}
-
-isl::checked::multi_aff multi_aff::range_product(const isl::checked::aff &multi2) const
-{
-  return this->range_product(isl::checked::multi_aff(multi2));
-}
-
-isl::checked::id multi_aff::range_tuple_id() const
-{
-  auto res = isl_multi_aff_get_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::id multi_aff::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::checked::multi_aff multi_aff::reset_range_tuple_id() const
-{
-  auto res = isl_multi_aff_reset_range_tuple_id(copy());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::scale(isl::checked::multi_val mv) const
-{
-  auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::scale(isl::checked::val v) const
-{
-  auto res = isl_multi_aff_scale_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::scale(long v) const
-{
-  return this->scale(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_aff multi_aff::scale_down(isl::checked::multi_val mv) const
-{
-  auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::scale_down(isl::checked::val v) const
-{
-  auto res = isl_multi_aff_scale_down_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::scale_down(long v) const
-{
-  return this->scale_down(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_aff multi_aff::set_at(int pos, isl::checked::aff el) const
-{
-  auto res = isl_multi_aff_set_at(copy(), pos, el.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_aff::set_at(int pos, const isl::checked::pw_aff &el) const
-{
-  return isl::checked::pw_multi_aff(*this).set_at(pos, el);
-}
-
-isl::checked::multi_union_pw_aff multi_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
-{
-  return isl::checked::pw_multi_aff(*this).set_at(pos, el);
-}
-
-isl::checked::multi_aff multi_aff::set_range_tuple(isl::checked::id id) const
-{
-  auto res = isl_multi_aff_set_range_tuple_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_aff::set_range_tuple(const std::string &id) const
-{
-  return this->set_range_tuple(isl::checked::id(ctx(), id));
-}
-
-class size multi_aff::size() const
-{
-  auto res = isl_multi_aff_size(get());
-  return manage(res);
-}
-
-isl::checked::space multi_aff::space() const
-{
-  auto res = isl_multi_aff_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space multi_aff::get_space() const
-{
-  return space();
-}
-
-isl::checked::multi_aff multi_aff::sub(isl::checked::multi_aff multi2) const
-{
-  auto res = isl_multi_aff_sub(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_aff::sub(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).sub(multi2);
-}
-
-isl::checked::multi_union_pw_aff multi_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).sub(multi2);
-}
-
-isl::checked::pw_multi_aff multi_aff::sub(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).sub(pma2);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_multi_aff(*this).sub(upma2);
-}
-
-isl::checked::multi_aff multi_aff::sub(const isl::checked::aff &multi2) const
-{
-  return this->sub(isl::checked::multi_aff(multi2));
-}
-
-isl::checked::pw_multi_aff multi_aff::subtract_domain(const isl::checked::set &set) const
-{
-  return isl::checked::pw_multi_aff(*this).subtract_domain(set);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::subtract_domain(const isl::checked::space &space) const
-{
-  return isl::checked::pw_multi_aff(*this).subtract_domain(space);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::subtract_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::pw_multi_aff(*this).subtract_domain(uset);
-}
-
-isl::checked::pw_multi_aff_list multi_aff::to_list() const
-{
-  return isl::checked::pw_multi_aff(*this).to_list();
-}
-
-isl::checked::multi_pw_aff multi_aff::to_multi_pw_aff() const
-{
-  auto res = isl_multi_aff_to_multi_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_aff::to_multi_union_pw_aff() const
-{
-  auto res = isl_multi_aff_to_multi_union_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff multi_aff::to_pw_multi_aff() const
-{
-  auto res = isl_multi_aff_to_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::to_union_pw_multi_aff() const
-{
-  return isl::checked::pw_multi_aff(*this).to_union_pw_multi_aff();
-}
-
-isl::checked::multi_aff multi_aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
-{
-  auto res = isl_multi_aff_unbind_params_insert_domain(copy(), domain.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
-{
-  return isl::checked::pw_multi_aff(*this).union_add(mpa2);
-}
-
-isl::checked::multi_union_pw_aff multi_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
-{
-  return isl::checked::pw_multi_aff(*this).union_add(mupa2);
-}
-
-isl::checked::pw_multi_aff multi_aff::union_add(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).union_add(pma2);
-}
-
-isl::checked::union_pw_multi_aff multi_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::pw_multi_aff(*this).union_add(upma2);
-}
-
-isl::checked::multi_aff multi_aff::zero(isl::checked::space space)
-{
-  auto res = isl_multi_aff_zero(space.release());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const multi_aff &obj)
-{
-  char *str = isl_multi_aff_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::multi_id
-multi_id manage(__isl_take isl_multi_id *ptr) {
-  return multi_id(ptr);
-}
-multi_id manage_copy(__isl_keep isl_multi_id *ptr) {
-  ptr = isl_multi_id_copy(ptr);
-  return multi_id(ptr);
-}
-
-multi_id::multi_id()
-    : ptr(nullptr) {}
-
-multi_id::multi_id(const multi_id &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-multi_id::multi_id(__isl_take isl_multi_id *ptr)
-    : ptr(ptr) {}
-
-multi_id::multi_id(isl::checked::space space, isl::checked::id_list list)
-{
-  auto res = isl_multi_id_from_id_list(space.release(), list.release());
-  ptr = res;
-}
-
-multi_id::multi_id(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_multi_id_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-multi_id &multi_id::operator=(multi_id obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-multi_id::~multi_id() {
-  if (ptr)
-    isl_multi_id_free(ptr);
-}
-
-__isl_give isl_multi_id *multi_id::copy() const & {
-  return isl_multi_id_copy(ptr);
-}
-
-__isl_keep isl_multi_id *multi_id::get() const {
-  return ptr;
-}
-
-__isl_give isl_multi_id *multi_id::release() {
-  isl_multi_id *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool multi_id::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx multi_id::ctx() const {
-  return isl::checked::ctx(isl_multi_id_get_ctx(ptr));
-}
-
-isl::checked::id multi_id::at(int pos) const
-{
-  auto res = isl_multi_id_get_at(get(), pos);
-  return manage(res);
-}
-
-isl::checked::id multi_id::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::checked::multi_id multi_id::flat_range_product(isl::checked::multi_id multi2) const
-{
-  auto res = isl_multi_id_flat_range_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::id_list multi_id::list() const
-{
-  auto res = isl_multi_id_get_list(get());
-  return manage(res);
-}
-
-isl::checked::id_list multi_id::get_list() const
-{
-  return list();
-}
-
-boolean multi_id::plain_is_equal(const isl::checked::multi_id &multi2) const
-{
-  auto res = isl_multi_id_plain_is_equal(get(), multi2.get());
-  return manage(res);
-}
-
-isl::checked::multi_id multi_id::range_product(isl::checked::multi_id multi2) const
-{
-  auto res = isl_multi_id_range_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_id multi_id::set_at(int pos, isl::checked::id el) const
-{
-  auto res = isl_multi_id_set_at(copy(), pos, el.release());
-  return manage(res);
-}
-
-isl::checked::multi_id multi_id::set_at(int pos, const std::string &el) const
-{
-  return this->set_at(pos, isl::checked::id(ctx(), el));
-}
-
-class size multi_id::size() const
-{
-  auto res = isl_multi_id_size(get());
-  return manage(res);
-}
-
-isl::checked::space multi_id::space() const
-{
-  auto res = isl_multi_id_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space multi_id::get_space() const
-{
-  return space();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const multi_id &obj)
-{
-  char *str = isl_multi_id_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::multi_pw_aff
-multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) {
-  return multi_pw_aff(ptr);
-}
-multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) {
-  ptr = isl_multi_pw_aff_copy(ptr);
-  return multi_pw_aff(ptr);
-}
-
-multi_pw_aff::multi_pw_aff()
-    : ptr(nullptr) {}
-
-multi_pw_aff::multi_pw_aff(const multi_pw_aff &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr)
-    : ptr(ptr) {}
-
-multi_pw_aff::multi_pw_aff(isl::checked::aff aff)
-{
-  auto res = isl_multi_pw_aff_from_aff(aff.release());
-  ptr = res;
-}
-
-multi_pw_aff::multi_pw_aff(isl::checked::multi_aff ma)
-{
-  auto res = isl_multi_pw_aff_from_multi_aff(ma.release());
-  ptr = res;
-}
-
-multi_pw_aff::multi_pw_aff(isl::checked::pw_aff pa)
-{
-  auto res = isl_multi_pw_aff_from_pw_aff(pa.release());
-  ptr = res;
-}
-
-multi_pw_aff::multi_pw_aff(isl::checked::space space, isl::checked::pw_aff_list list)
-{
-  auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
-  ptr = res;
-}
-
-multi_pw_aff::multi_pw_aff(isl::checked::pw_multi_aff pma)
-{
-  auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release());
-  ptr = res;
-}
-
-multi_pw_aff::multi_pw_aff(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-multi_pw_aff &multi_pw_aff::operator=(multi_pw_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-multi_pw_aff::~multi_pw_aff() {
-  if (ptr)
-    isl_multi_pw_aff_free(ptr);
-}
-
-__isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & {
-  return isl_multi_pw_aff_copy(ptr);
-}
-
-__isl_keep isl_multi_pw_aff *multi_pw_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_multi_pw_aff *multi_pw_aff::release() {
-  isl_multi_pw_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool multi_pw_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx multi_pw_aff::ctx() const {
-  return isl::checked::ctx(isl_multi_pw_aff_get_ctx(ptr));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::add(isl::checked::multi_pw_aff multi2) const
-{
-  auto res = isl_multi_pw_aff_add(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).add(multi2);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::aff &multi2) const
-{
-  return this->add(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::multi_aff &multi2) const
-{
-  return this->add(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::pw_aff &multi2) const
-{
-  return this->add(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::pw_multi_aff &multi2) const
-{
-  return this->add(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::add_constant(isl::checked::multi_val mv) const
-{
-  auto res = isl_multi_pw_aff_add_constant_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::add_constant(isl::checked::val v) const
-{
-  auto res = isl_multi_pw_aff_add_constant_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::add_constant(long v) const
-{
-  return this->add_constant(isl::checked::val(ctx(), v));
-}
-
-isl::checked::map multi_pw_aff::as_map() const
-{
-  auto res = isl_multi_pw_aff_as_map(copy());
-  return manage(res);
-}
-
-isl::checked::multi_aff multi_pw_aff::as_multi_aff() const
-{
-  auto res = isl_multi_pw_aff_as_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::set multi_pw_aff::as_set() const
-{
-  auto res = isl_multi_pw_aff_as_set(copy());
-  return manage(res);
-}
-
-isl::checked::pw_aff multi_pw_aff::at(int pos) const
-{
-  auto res = isl_multi_pw_aff_get_at(get(), pos);
-  return manage(res);
-}
-
-isl::checked::pw_aff multi_pw_aff::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::checked::set multi_pw_aff::bind(isl::checked::multi_id tuple) const
-{
-  auto res = isl_multi_pw_aff_bind(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::bind_domain(isl::checked::multi_id tuple) const
-{
-  auto res = isl_multi_pw_aff_bind_domain(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
-{
-  auto res = isl_multi_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::coalesce() const
-{
-  auto res = isl_multi_pw_aff_coalesce(copy());
-  return manage(res);
-}
-
-isl::checked::set multi_pw_aff::domain() const
-{
-  auto res = isl_multi_pw_aff_domain(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(isl::checked::multi_pw_aff multi2) const
-{
-  auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::aff &multi2) const
-{
-  return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::multi_aff &multi2) const
-{
-  return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::pw_aff &multi2) const
-{
-  return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::pw_multi_aff &multi2) const
-{
-  return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::gist(isl::checked::set set) const
-{
-  auto res = isl_multi_pw_aff_gist(copy(), set.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_pw_aff::gist(const isl::checked::union_set &context) const
-{
-  return isl::checked::multi_union_pw_aff(*this).gist(context);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::gist(const isl::checked::basic_set &set) const
-{
-  return this->gist(isl::checked::set(set));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::gist(const isl::checked::point &set) const
-{
-  return this->gist(isl::checked::set(set));
-}
-
-boolean multi_pw_aff::has_range_tuple_id() const
-{
-  auto res = isl_multi_pw_aff_has_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::identity() const
-{
-  auto res = isl_multi_pw_aff_identity_multi_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::identity_on_domain(isl::checked::space space)
-{
-  auto res = isl_multi_pw_aff_identity_on_domain_space(space.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::insert_domain(isl::checked::space domain) const
-{
-  auto res = isl_multi_pw_aff_insert_domain(copy(), domain.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(isl::checked::set domain) const
-{
-  auto res = isl_multi_pw_aff_intersect_domain(copy(), domain.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_pw_aff::intersect_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::multi_union_pw_aff(*this).intersect_domain(uset);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(const isl::checked::basic_set &domain) const
-{
-  return this->intersect_domain(isl::checked::set(domain));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(const isl::checked::point &domain) const
-{
-  return this->intersect_domain(isl::checked::set(domain));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::intersect_params(isl::checked::set set) const
-{
-  auto res = isl_multi_pw_aff_intersect_params(copy(), set.release());
-  return manage(res);
-}
-
-boolean multi_pw_aff::involves_nan() const
-{
-  auto res = isl_multi_pw_aff_involves_nan(get());
-  return manage(res);
-}
-
-boolean multi_pw_aff::involves_param(const isl::checked::id &id) const
-{
-  auto res = isl_multi_pw_aff_involves_param_id(get(), id.get());
-  return manage(res);
-}
-
-boolean multi_pw_aff::involves_param(const std::string &id) const
-{
-  return this->involves_param(isl::checked::id(ctx(), id));
-}
-
-boolean multi_pw_aff::involves_param(const isl::checked::id_list &list) const
-{
-  auto res = isl_multi_pw_aff_involves_param_id_list(get(), list.get());
-  return manage(res);
-}
-
-boolean multi_pw_aff::isa_multi_aff() const
-{
-  auto res = isl_multi_pw_aff_isa_multi_aff(get());
-  return manage(res);
-}
-
-isl::checked::pw_aff_list multi_pw_aff::list() const
-{
-  auto res = isl_multi_pw_aff_get_list(get());
-  return manage(res);
-}
-
-isl::checked::pw_aff_list multi_pw_aff::get_list() const
-{
-  return list();
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::max(isl::checked::multi_pw_aff multi2) const
-{
-  auto res = isl_multi_pw_aff_max(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_pw_aff::max_multi_val() const
-{
-  auto res = isl_multi_pw_aff_max_multi_val(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::min(isl::checked::multi_pw_aff multi2) const
-{
-  auto res = isl_multi_pw_aff_min(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_pw_aff::min_multi_val() const
-{
-  auto res = isl_multi_pw_aff_min_multi_val(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::neg() const
-{
-  auto res = isl_multi_pw_aff_neg(copy());
-  return manage(res);
-}
-
-boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
-{
-  auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
-  return manage(res);
-}
-
-boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).plain_is_equal(multi2);
-}
-
-boolean multi_pw_aff::plain_is_equal(const isl::checked::aff &multi2) const
-{
-  return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
-}
-
-boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
-{
-  return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
-}
-
-boolean multi_pw_aff::plain_is_equal(const isl::checked::pw_aff &multi2) const
-{
-  return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
-}
-
-boolean multi_pw_aff::plain_is_equal(const isl::checked::pw_multi_aff &multi2) const
-{
-  return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::product(isl::checked::multi_pw_aff multi2) const
-{
-  auto res = isl_multi_pw_aff_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::multi_aff ma) const
-{
-  auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::multi_pw_aff mpa2) const
-{
-  auto res = isl_multi_pw_aff_pullback_multi_pw_aff(copy(), mpa2.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::pw_multi_aff pma) const
-{
-  auto res = isl_multi_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_pw_aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
-{
-  return isl::checked::multi_union_pw_aff(*this).pullback(upma);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::range_product(isl::checked::multi_pw_aff multi2) const
-{
-  auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).range_product(multi2);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::aff &multi2) const
-{
-  return this->range_product(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::multi_aff &multi2) const
-{
-  return this->range_product(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::pw_aff &multi2) const
-{
-  return this->range_product(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::pw_multi_aff &multi2) const
-{
-  return this->range_product(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::id multi_pw_aff::range_tuple_id() const
-{
-  auto res = isl_multi_pw_aff_get_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::id multi_pw_aff::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::reset_range_tuple_id() const
-{
-  auto res = isl_multi_pw_aff_reset_range_tuple_id(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::scale(isl::checked::multi_val mv) const
-{
-  auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::scale(isl::checked::val v) const
-{
-  auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::scale(long v) const
-{
-  return this->scale(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::scale_down(isl::checked::multi_val mv) const
-{
-  auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::scale_down(isl::checked::val v) const
-{
-  auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::scale_down(long v) const
-{
-  return this->scale_down(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::set_at(int pos, isl::checked::pw_aff el) const
-{
-  auto res = isl_multi_pw_aff_set_at(copy(), pos, el.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
-{
-  return isl::checked::multi_union_pw_aff(*this).set_at(pos, el);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::set_range_tuple(isl::checked::id id) const
-{
-  auto res = isl_multi_pw_aff_set_range_tuple_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::set_range_tuple(const std::string &id) const
-{
-  return this->set_range_tuple(isl::checked::id(ctx(), id));
-}
-
-class size multi_pw_aff::size() const
-{
-  auto res = isl_multi_pw_aff_size(get());
-  return manage(res);
-}
-
-isl::checked::space multi_pw_aff::space() const
-{
-  auto res = isl_multi_pw_aff_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space multi_pw_aff::get_space() const
-{
-  return space();
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::sub(isl::checked::multi_pw_aff multi2) const
-{
-  auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).sub(multi2);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::aff &multi2) const
-{
-  return this->sub(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::multi_aff &multi2) const
-{
-  return this->sub(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::pw_aff &multi2) const
-{
-  return this->sub(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::pw_multi_aff &multi2) const
-{
-  return this->sub(isl::checked::multi_pw_aff(multi2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
-{
-  auto res = isl_multi_pw_aff_unbind_params_insert_domain(copy(), domain.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::union_add(isl::checked::multi_pw_aff mpa2) const
-{
-  auto res = isl_multi_pw_aff_union_add(copy(), mpa2.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).union_add(mupa2);
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::aff &mpa2) const
-{
-  return this->union_add(isl::checked::multi_pw_aff(mpa2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::multi_aff &mpa2) const
-{
-  return this->union_add(isl::checked::multi_pw_aff(mpa2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::pw_aff &mpa2) const
-{
-  return this->union_add(isl::checked::multi_pw_aff(mpa2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::pw_multi_aff &mpa2) const
-{
-  return this->union_add(isl::checked::multi_pw_aff(mpa2));
-}
-
-isl::checked::multi_pw_aff multi_pw_aff::zero(isl::checked::space space)
-{
-  auto res = isl_multi_pw_aff_zero(space.release());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const multi_pw_aff &obj)
-{
-  char *str = isl_multi_pw_aff_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::multi_union_pw_aff
-multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) {
-  return multi_union_pw_aff(ptr);
-}
-multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) {
-  ptr = isl_multi_union_pw_aff_copy(ptr);
-  return multi_union_pw_aff(ptr);
-}
-
-multi_union_pw_aff::multi_union_pw_aff()
-    : ptr(nullptr) {}
-
-multi_union_pw_aff::multi_union_pw_aff(const multi_union_pw_aff &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr)
-    : ptr(ptr) {}
-
-multi_union_pw_aff::multi_union_pw_aff(isl::checked::multi_pw_aff mpa)
-{
-  auto res = isl_multi_union_pw_aff_from_multi_pw_aff(mpa.release());
-  ptr = res;
-}
-
-multi_union_pw_aff::multi_union_pw_aff(isl::checked::union_pw_aff upa)
-{
-  auto res = isl_multi_union_pw_aff_from_union_pw_aff(upa.release());
-  ptr = res;
-}
-
-multi_union_pw_aff::multi_union_pw_aff(isl::checked::space space, isl::checked::union_pw_aff_list list)
-{
-  auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
-  ptr = res;
-}
-
-multi_union_pw_aff::multi_union_pw_aff(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-multi_union_pw_aff &multi_union_pw_aff::operator=(multi_union_pw_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-multi_union_pw_aff::~multi_union_pw_aff() {
-  if (ptr)
-    isl_multi_union_pw_aff_free(ptr);
-}
-
-__isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & {
-  return isl_multi_union_pw_aff_copy(ptr);
-}
-
-__isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_multi_union_pw_aff *multi_union_pw_aff::release() {
-  isl_multi_union_pw_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool multi_union_pw_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx multi_union_pw_aff::ctx() const {
-  return isl::checked::ctx(isl_multi_union_pw_aff_get_ctx(ptr));
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::add(isl::checked::multi_union_pw_aff multi2) const
-{
-  auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff multi_union_pw_aff::at(int pos) const
-{
-  auto res = isl_multi_union_pw_aff_get_at(get(), pos);
-  return manage(res);
-}
-
-isl::checked::union_pw_aff multi_union_pw_aff::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::checked::union_set multi_union_pw_aff::bind(isl::checked::multi_id tuple) const
-{
-  auto res = isl_multi_union_pw_aff_bind(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::coalesce() const
-{
-  auto res = isl_multi_union_pw_aff_coalesce(copy());
-  return manage(res);
-}
-
-isl::checked::union_set multi_union_pw_aff::domain() const
-{
-  auto res = isl_multi_union_pw_aff_domain(copy());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::flat_range_product(isl::checked::multi_union_pw_aff multi2) const
-{
-  auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::gist(isl::checked::union_set context) const
-{
-  auto res = isl_multi_union_pw_aff_gist(copy(), context.release());
-  return manage(res);
-}
-
-boolean multi_union_pw_aff::has_range_tuple_id() const
-{
-  auto res = isl_multi_union_pw_aff_has_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::intersect_domain(isl::checked::union_set uset) const
-{
-  auto res = isl_multi_union_pw_aff_intersect_domain(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::intersect_params(isl::checked::set params) const
-{
-  auto res = isl_multi_union_pw_aff_intersect_params(copy(), params.release());
-  return manage(res);
-}
-
-boolean multi_union_pw_aff::involves_nan() const
-{
-  auto res = isl_multi_union_pw_aff_involves_nan(get());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff_list multi_union_pw_aff::list() const
-{
-  auto res = isl_multi_union_pw_aff_get_list(get());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff_list multi_union_pw_aff::get_list() const
-{
-  return list();
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::neg() const
-{
-  auto res = isl_multi_union_pw_aff_neg(copy());
-  return manage(res);
-}
-
-boolean multi_union_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::pullback(isl::checked::union_pw_multi_aff upma) const
-{
-  auto res = isl_multi_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::range_product(isl::checked::multi_union_pw_aff multi2) const
-{
-  auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::id multi_union_pw_aff::range_tuple_id() const
-{
-  auto res = isl_multi_union_pw_aff_get_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::id multi_union_pw_aff::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::reset_range_tuple_id() const
-{
-  auto res = isl_multi_union_pw_aff_reset_range_tuple_id(copy());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(isl::checked::multi_val mv) const
-{
-  auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(isl::checked::val v) const
-{
-  auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(long v) const
-{
-  return this->scale(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::checked::multi_val mv) const
-{
-  auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::checked::val v) const
-{
-  auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(long v) const
-{
-  return this->scale_down(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::set_at(int pos, isl::checked::union_pw_aff el) const
-{
-  auto res = isl_multi_union_pw_aff_set_at(copy(), pos, el.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(isl::checked::id id) const
-{
-  auto res = isl_multi_union_pw_aff_set_range_tuple_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(const std::string &id) const
-{
-  return this->set_range_tuple(isl::checked::id(ctx(), id));
-}
-
-class size multi_union_pw_aff::size() const
-{
-  auto res = isl_multi_union_pw_aff_size(get());
-  return manage(res);
-}
-
-isl::checked::space multi_union_pw_aff::space() const
-{
-  auto res = isl_multi_union_pw_aff_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space multi_union_pw_aff::get_space() const
-{
-  return space();
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::sub(isl::checked::multi_union_pw_aff multi2) const
-{
-  auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::union_add(isl::checked::multi_union_pw_aff mupa2) const
-{
-  auto res = isl_multi_union_pw_aff_union_add(copy(), mupa2.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff multi_union_pw_aff::zero(isl::checked::space space)
-{
-  auto res = isl_multi_union_pw_aff_zero(space.release());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const multi_union_pw_aff &obj)
-{
-  char *str = isl_multi_union_pw_aff_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::multi_val
-multi_val manage(__isl_take isl_multi_val *ptr) {
-  return multi_val(ptr);
-}
-multi_val manage_copy(__isl_keep isl_multi_val *ptr) {
-  ptr = isl_multi_val_copy(ptr);
-  return multi_val(ptr);
-}
-
-multi_val::multi_val()
-    : ptr(nullptr) {}
-
-multi_val::multi_val(const multi_val &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-multi_val::multi_val(__isl_take isl_multi_val *ptr)
-    : ptr(ptr) {}
-
-multi_val::multi_val(isl::checked::space space, isl::checked::val_list list)
-{
-  auto res = isl_multi_val_from_val_list(space.release(), list.release());
-  ptr = res;
-}
-
-multi_val::multi_val(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-multi_val &multi_val::operator=(multi_val obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-multi_val::~multi_val() {
-  if (ptr)
-    isl_multi_val_free(ptr);
-}
-
-__isl_give isl_multi_val *multi_val::copy() const & {
-  return isl_multi_val_copy(ptr);
-}
-
-__isl_keep isl_multi_val *multi_val::get() const {
-  return ptr;
-}
-
-__isl_give isl_multi_val *multi_val::release() {
-  isl_multi_val *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool multi_val::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx multi_val::ctx() const {
-  return isl::checked::ctx(isl_multi_val_get_ctx(ptr));
-}
-
-isl::checked::multi_val multi_val::add(isl::checked::multi_val multi2) const
-{
-  auto res = isl_multi_val_add(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::add(isl::checked::val v) const
-{
-  auto res = isl_multi_val_add_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::add(long v) const
-{
-  return this->add(isl::checked::val(ctx(), v));
-}
-
-isl::checked::val multi_val::at(int pos) const
-{
-  auto res = isl_multi_val_get_at(get(), pos);
-  return manage(res);
-}
-
-isl::checked::val multi_val::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::checked::multi_val multi_val::flat_range_product(isl::checked::multi_val multi2) const
-{
-  auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
-  return manage(res);
-}
-
-boolean multi_val::has_range_tuple_id() const
-{
-  auto res = isl_multi_val_has_range_tuple_id(get());
-  return manage(res);
-}
-
-boolean multi_val::involves_nan() const
-{
-  auto res = isl_multi_val_involves_nan(get());
-  return manage(res);
-}
-
-isl::checked::val_list multi_val::list() const
-{
-  auto res = isl_multi_val_get_list(get());
-  return manage(res);
-}
-
-isl::checked::val_list multi_val::get_list() const
-{
-  return list();
-}
-
-isl::checked::multi_val multi_val::max(isl::checked::multi_val multi2) const
-{
-  auto res = isl_multi_val_max(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::min(isl::checked::multi_val multi2) const
-{
-  auto res = isl_multi_val_min(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::neg() const
-{
-  auto res = isl_multi_val_neg(copy());
-  return manage(res);
-}
-
-boolean multi_val::plain_is_equal(const isl::checked::multi_val &multi2) const
-{
-  auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::product(isl::checked::multi_val multi2) const
-{
-  auto res = isl_multi_val_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::range_product(isl::checked::multi_val multi2) const
-{
-  auto res = isl_multi_val_range_product(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::id multi_val::range_tuple_id() const
-{
-  auto res = isl_multi_val_get_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::id multi_val::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::checked::multi_val multi_val::reset_range_tuple_id() const
-{
-  auto res = isl_multi_val_reset_range_tuple_id(copy());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::scale(isl::checked::multi_val mv) const
-{
-  auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::scale(isl::checked::val v) const
-{
-  auto res = isl_multi_val_scale_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::scale(long v) const
-{
-  return this->scale(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_val multi_val::scale_down(isl::checked::multi_val mv) const
-{
-  auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::scale_down(isl::checked::val v) const
-{
-  auto res = isl_multi_val_scale_down_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::scale_down(long v) const
-{
-  return this->scale_down(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_val multi_val::set_at(int pos, isl::checked::val el) const
-{
-  auto res = isl_multi_val_set_at(copy(), pos, el.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::set_at(int pos, long el) const
-{
-  return this->set_at(pos, isl::checked::val(ctx(), el));
-}
-
-isl::checked::multi_val multi_val::set_range_tuple(isl::checked::id id) const
-{
-  auto res = isl_multi_val_set_range_tuple_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::set_range_tuple(const std::string &id) const
-{
-  return this->set_range_tuple(isl::checked::id(ctx(), id));
-}
-
-class size multi_val::size() const
-{
-  auto res = isl_multi_val_size(get());
-  return manage(res);
-}
-
-isl::checked::space multi_val::space() const
-{
-  auto res = isl_multi_val_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space multi_val::get_space() const
-{
-  return space();
-}
-
-isl::checked::multi_val multi_val::sub(isl::checked::multi_val multi2) const
-{
-  auto res = isl_multi_val_sub(copy(), multi2.release());
-  return manage(res);
-}
-
-isl::checked::multi_val multi_val::zero(isl::checked::space space)
-{
-  auto res = isl_multi_val_zero(space.release());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const multi_val &obj)
-{
-  char *str = isl_multi_val_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::point
-point manage(__isl_take isl_point *ptr) {
-  return point(ptr);
-}
-point manage_copy(__isl_keep isl_point *ptr) {
-  ptr = isl_point_copy(ptr);
-  return point(ptr);
-}
-
-point::point()
-    : ptr(nullptr) {}
-
-point::point(const point &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-point::point(__isl_take isl_point *ptr)
-    : ptr(ptr) {}
-
-point &point::operator=(point obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-point::~point() {
-  if (ptr)
-    isl_point_free(ptr);
-}
-
-__isl_give isl_point *point::copy() const & {
-  return isl_point_copy(ptr);
-}
-
-__isl_keep isl_point *point::get() const {
-  return ptr;
-}
-
-__isl_give isl_point *point::release() {
-  isl_point *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool point::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx point::ctx() const {
-  return isl::checked::ctx(isl_point_get_ctx(ptr));
-}
-
-isl::checked::basic_set point::affine_hull() const
-{
-  return isl::checked::basic_set(*this).affine_hull();
-}
-
-isl::checked::basic_set point::apply(const isl::checked::basic_map &bmap) const
-{
-  return isl::checked::basic_set(*this).apply(bmap);
-}
-
-isl::checked::set point::apply(const isl::checked::map &map) const
-{
-  return isl::checked::basic_set(*this).apply(map);
-}
-
-isl::checked::union_set point::apply(const isl::checked::union_map &umap) const
-{
-  return isl::checked::basic_set(*this).apply(umap);
-}
-
-isl::checked::pw_multi_aff point::as_pw_multi_aff() const
-{
-  return isl::checked::basic_set(*this).as_pw_multi_aff();
-}
-
-isl::checked::set point::as_set() const
-{
-  return isl::checked::basic_set(*this).as_set();
-}
-
-isl::checked::set point::bind(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::basic_set(*this).bind(tuple);
-}
-
-isl::checked::set point::coalesce() const
-{
-  return isl::checked::basic_set(*this).coalesce();
-}
-
-isl::checked::set point::complement() const
-{
-  return isl::checked::basic_set(*this).complement();
-}
-
-isl::checked::union_set point::compute_divs() const
-{
-  return isl::checked::basic_set(*this).compute_divs();
-}
-
-isl::checked::basic_set point::detect_equalities() const
-{
-  return isl::checked::basic_set(*this).detect_equalities();
-}
-
-isl::checked::val point::dim_max_val(int pos) const
-{
-  return isl::checked::basic_set(*this).dim_max_val(pos);
-}
-
-isl::checked::val point::dim_min_val(int pos) const
-{
-  return isl::checked::basic_set(*this).dim_min_val(pos);
-}
-
-boolean point::every_set(const std::function<boolean(isl::checked::set)> &test) const
-{
-  return isl::checked::basic_set(*this).every_set(test);
-}
-
-isl::checked::set point::extract_set(const isl::checked::space &space) const
-{
-  return isl::checked::basic_set(*this).extract_set(space);
-}
-
-isl::checked::basic_set point::flatten() const
-{
-  return isl::checked::basic_set(*this).flatten();
-}
-
-stat point::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
-{
-  return isl::checked::basic_set(*this).foreach_basic_set(fn);
-}
-
-stat point::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
-{
-  return isl::checked::basic_set(*this).foreach_point(fn);
-}
-
-stat point::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
-{
-  return isl::checked::basic_set(*this).foreach_set(fn);
-}
-
-isl::checked::basic_set point::gist(const isl::checked::basic_set &context) const
-{
-  return isl::checked::basic_set(*this).gist(context);
-}
-
-isl::checked::set point::gist(const isl::checked::set &context) const
-{
-  return isl::checked::basic_set(*this).gist(context);
-}
-
-isl::checked::union_set point::gist(const isl::checked::union_set &context) const
-{
-  return isl::checked::basic_set(*this).gist(context);
-}
-
-isl::checked::union_set point::gist_params(const isl::checked::set &set) const
-{
-  return isl::checked::basic_set(*this).gist_params(set);
-}
-
-isl::checked::map point::identity() const
-{
-  return isl::checked::basic_set(*this).identity();
-}
-
-isl::checked::pw_aff point::indicator_function() const
-{
-  return isl::checked::basic_set(*this).indicator_function();
-}
-
-isl::checked::map point::insert_domain(const isl::checked::space &domain) const
-{
-  return isl::checked::basic_set(*this).insert_domain(domain);
-}
-
-isl::checked::basic_set point::intersect(const isl::checked::basic_set &bset2) const
-{
-  return isl::checked::basic_set(*this).intersect(bset2);
-}
-
-isl::checked::set point::intersect(const isl::checked::set &set2) const
-{
-  return isl::checked::basic_set(*this).intersect(set2);
-}
-
-isl::checked::union_set point::intersect(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::basic_set(*this).intersect(uset2);
-}
-
-isl::checked::basic_set point::intersect_params(const isl::checked::basic_set &bset2) const
-{
-  return isl::checked::basic_set(*this).intersect_params(bset2);
-}
-
-isl::checked::set point::intersect_params(const isl::checked::set &params) const
-{
-  return isl::checked::basic_set(*this).intersect_params(params);
-}
-
-boolean point::involves_locals() const
-{
-  return isl::checked::basic_set(*this).involves_locals();
-}
-
-boolean point::is_disjoint(const isl::checked::set &set2) const
-{
-  return isl::checked::basic_set(*this).is_disjoint(set2);
-}
-
-boolean point::is_disjoint(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::basic_set(*this).is_disjoint(uset2);
-}
-
-boolean point::is_empty() const
-{
-  return isl::checked::basic_set(*this).is_empty();
-}
-
-boolean point::is_equal(const isl::checked::basic_set &bset2) const
-{
-  return isl::checked::basic_set(*this).is_equal(bset2);
-}
-
-boolean point::is_equal(const isl::checked::set &set2) const
-{
-  return isl::checked::basic_set(*this).is_equal(set2);
-}
-
-boolean point::is_equal(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::basic_set(*this).is_equal(uset2);
-}
-
-boolean point::is_singleton() const
-{
-  return isl::checked::basic_set(*this).is_singleton();
-}
-
-boolean point::is_strict_subset(const isl::checked::set &set2) const
-{
-  return isl::checked::basic_set(*this).is_strict_subset(set2);
-}
-
-boolean point::is_strict_subset(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::basic_set(*this).is_strict_subset(uset2);
-}
-
-boolean point::is_subset(const isl::checked::basic_set &bset2) const
-{
-  return isl::checked::basic_set(*this).is_subset(bset2);
-}
-
-boolean point::is_subset(const isl::checked::set &set2) const
-{
-  return isl::checked::basic_set(*this).is_subset(set2);
-}
-
-boolean point::is_subset(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::basic_set(*this).is_subset(uset2);
-}
-
-boolean point::is_wrapping() const
-{
-  return isl::checked::basic_set(*this).is_wrapping();
-}
-
-boolean point::isa_set() const
-{
-  return isl::checked::basic_set(*this).isa_set();
-}
-
-isl::checked::set point::lexmax() const
-{
-  return isl::checked::basic_set(*this).lexmax();
-}
-
-isl::checked::pw_multi_aff point::lexmax_pw_multi_aff() const
-{
-  return isl::checked::basic_set(*this).lexmax_pw_multi_aff();
-}
-
-isl::checked::set point::lexmin() const
-{
-  return isl::checked::basic_set(*this).lexmin();
-}
-
-isl::checked::pw_multi_aff point::lexmin_pw_multi_aff() const
-{
-  return isl::checked::basic_set(*this).lexmin_pw_multi_aff();
-}
-
-isl::checked::set point::lower_bound(const isl::checked::multi_pw_aff &lower) const
-{
-  return isl::checked::basic_set(*this).lower_bound(lower);
-}
-
-isl::checked::set point::lower_bound(const isl::checked::multi_val &lower) const
-{
-  return isl::checked::basic_set(*this).lower_bound(lower);
-}
-
-isl::checked::multi_pw_aff point::max_multi_pw_aff() const
-{
-  return isl::checked::basic_set(*this).max_multi_pw_aff();
-}
-
-isl::checked::val point::max_val(const isl::checked::aff &obj) const
-{
-  return isl::checked::basic_set(*this).max_val(obj);
-}
-
-isl::checked::multi_pw_aff point::min_multi_pw_aff() const
-{
-  return isl::checked::basic_set(*this).min_multi_pw_aff();
-}
-
-isl::checked::val point::min_val(const isl::checked::aff &obj) const
-{
-  return isl::checked::basic_set(*this).min_val(obj);
-}
-
-isl::checked::multi_val point::multi_val() const
-{
-  auto res = isl_point_get_multi_val(get());
-  return manage(res);
-}
-
-isl::checked::multi_val point::get_multi_val() const
-{
-  return multi_val();
-}
-
-class size point::n_basic_set() const
-{
-  return isl::checked::basic_set(*this).n_basic_set();
-}
-
-isl::checked::basic_set point::params() const
-{
-  return isl::checked::basic_set(*this).params();
-}
-
-isl::checked::multi_val point::plain_multi_val_if_fixed() const
-{
-  return isl::checked::basic_set(*this).plain_multi_val_if_fixed();
-}
-
-isl::checked::basic_set point::polyhedral_hull() const
-{
-  return isl::checked::basic_set(*this).polyhedral_hull();
-}
-
-isl::checked::set point::preimage(const isl::checked::multi_aff &ma) const
-{
-  return isl::checked::basic_set(*this).preimage(ma);
-}
-
-isl::checked::set point::preimage(const isl::checked::multi_pw_aff &mpa) const
-{
-  return isl::checked::basic_set(*this).preimage(mpa);
-}
-
-isl::checked::set point::preimage(const isl::checked::pw_multi_aff &pma) const
-{
-  return isl::checked::basic_set(*this).preimage(pma);
-}
-
-isl::checked::union_set point::preimage(const isl::checked::union_pw_multi_aff &upma) const
-{
-  return isl::checked::basic_set(*this).preimage(upma);
-}
-
-isl::checked::set point::product(const isl::checked::set &set2) const
-{
-  return isl::checked::basic_set(*this).product(set2);
-}
-
-isl::checked::set point::project_out_all_params() const
-{
-  return isl::checked::basic_set(*this).project_out_all_params();
-}
-
-isl::checked::set point::project_out_param(const isl::checked::id &id) const
-{
-  return isl::checked::basic_set(*this).project_out_param(id);
-}
-
-isl::checked::set point::project_out_param(const std::string &id) const
-{
-  return this->project_out_param(isl::checked::id(ctx(), id));
-}
-
-isl::checked::set point::project_out_param(const isl::checked::id_list &list) const
-{
-  return isl::checked::basic_set(*this).project_out_param(list);
-}
-
-isl::checked::pw_multi_aff point::pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::basic_set(*this).pw_multi_aff_on_domain(mv);
-}
-
-isl::checked::basic_set point::sample() const
-{
-  return isl::checked::basic_set(*this).sample();
-}
-
-isl::checked::point point::sample_point() const
-{
-  return isl::checked::basic_set(*this).sample_point();
-}
-
-isl::checked::set_list point::set_list() const
-{
-  return isl::checked::basic_set(*this).set_list();
-}
-
-isl::checked::fixed_box point::simple_fixed_box_hull() const
-{
-  return isl::checked::basic_set(*this).simple_fixed_box_hull();
-}
-
-isl::checked::space point::space() const
-{
-  return isl::checked::basic_set(*this).space();
-}
-
-isl::checked::val point::stride(int pos) const
-{
-  return isl::checked::basic_set(*this).stride(pos);
-}
-
-isl::checked::set point::subtract(const isl::checked::set &set2) const
-{
-  return isl::checked::basic_set(*this).subtract(set2);
-}
-
-isl::checked::union_set point::subtract(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::basic_set(*this).subtract(uset2);
-}
-
-isl::checked::set_list point::to_list() const
-{
-  return isl::checked::basic_set(*this).to_list();
-}
-
-isl::checked::set point::to_set() const
-{
-  auto res = isl_point_to_set(copy());
-  return manage(res);
-}
-
-isl::checked::union_set point::to_union_set() const
-{
-  return isl::checked::basic_set(*this).to_union_set();
-}
-
-isl::checked::map point::translation() const
-{
-  return isl::checked::basic_set(*this).translation();
-}
-
-class size point::tuple_dim() const
-{
-  return isl::checked::basic_set(*this).tuple_dim();
-}
-
-isl::checked::set point::unbind_params(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::basic_set(*this).unbind_params(tuple);
-}
-
-isl::checked::map point::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
-{
-  return isl::checked::basic_set(*this).unbind_params_insert_domain(domain);
-}
-
-isl::checked::set point::unite(const isl::checked::basic_set &bset2) const
-{
-  return isl::checked::basic_set(*this).unite(bset2);
-}
-
-isl::checked::set point::unite(const isl::checked::set &set2) const
-{
-  return isl::checked::basic_set(*this).unite(set2);
-}
-
-isl::checked::union_set point::unite(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::basic_set(*this).unite(uset2);
-}
-
-isl::checked::basic_set point::unshifted_simple_hull() const
-{
-  return isl::checked::basic_set(*this).unshifted_simple_hull();
-}
-
-isl::checked::map point::unwrap() const
-{
-  return isl::checked::basic_set(*this).unwrap();
-}
-
-isl::checked::set point::upper_bound(const isl::checked::multi_pw_aff &upper) const
-{
-  return isl::checked::basic_set(*this).upper_bound(upper);
-}
-
-isl::checked::set point::upper_bound(const isl::checked::multi_val &upper) const
-{
-  return isl::checked::basic_set(*this).upper_bound(upper);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const point &obj)
-{
-  char *str = isl_point_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::pw_aff
-pw_aff manage(__isl_take isl_pw_aff *ptr) {
-  return pw_aff(ptr);
-}
-pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) {
-  ptr = isl_pw_aff_copy(ptr);
-  return pw_aff(ptr);
-}
-
-pw_aff::pw_aff()
-    : ptr(nullptr) {}
-
-pw_aff::pw_aff(const pw_aff &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-pw_aff::pw_aff(__isl_take isl_pw_aff *ptr)
-    : ptr(ptr) {}
-
-pw_aff::pw_aff(isl::checked::aff aff)
-{
-  auto res = isl_pw_aff_from_aff(aff.release());
-  ptr = res;
-}
-
-pw_aff::pw_aff(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-pw_aff &pw_aff::operator=(pw_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-pw_aff::~pw_aff() {
-  if (ptr)
-    isl_pw_aff_free(ptr);
-}
-
-__isl_give isl_pw_aff *pw_aff::copy() const & {
-  return isl_pw_aff_copy(ptr);
-}
-
-__isl_keep isl_pw_aff *pw_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_pw_aff *pw_aff::release() {
-  isl_pw_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool pw_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx pw_aff::ctx() const {
-  return isl::checked::ctx(isl_pw_aff_get_ctx(ptr));
-}
-
-isl::checked::multi_pw_aff pw_aff::add(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).add(multi2);
-}
-
-isl::checked::multi_union_pw_aff pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::union_pw_aff(*this).add(multi2);
-}
-
-isl::checked::pw_aff pw_aff::add(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_add(copy(), pwaff2.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_aff::add(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).add(pma2);
-}
-
-isl::checked::union_pw_aff pw_aff::add(const isl::checked::union_pw_aff &upa2) const
-{
-  return isl::checked::union_pw_aff(*this).add(upa2);
-}
-
-isl::checked::union_pw_multi_aff pw_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_aff(*this).add(upma2);
-}
-
-isl::checked::pw_aff pw_aff::add(const isl::checked::aff &pwaff2) const
-{
-  return this->add(isl::checked::pw_aff(pwaff2));
-}
-
-isl::checked::pw_aff pw_aff::add_constant(isl::checked::val v) const
-{
-  auto res = isl_pw_aff_add_constant_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::add_constant(long v) const
-{
-  return this->add_constant(isl::checked::val(ctx(), v));
-}
-
-isl::checked::pw_multi_aff pw_aff::add_constant(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::pw_multi_aff(*this).add_constant(mv);
-}
-
-isl::checked::union_pw_multi_aff pw_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_aff(*this).apply(upma2);
-}
-
-isl::checked::aff pw_aff::as_aff() const
-{
-  auto res = isl_pw_aff_as_aff(copy());
-  return manage(res);
-}
-
-isl::checked::map pw_aff::as_map() const
-{
-  auto res = isl_pw_aff_as_map(copy());
-  return manage(res);
-}
-
-isl::checked::multi_aff pw_aff::as_multi_aff() const
-{
-  return isl::checked::pw_multi_aff(*this).as_multi_aff();
-}
-
-isl::checked::multi_union_pw_aff pw_aff::as_multi_union_pw_aff() const
-{
-  return isl::checked::union_pw_aff(*this).as_multi_union_pw_aff();
-}
-
-isl::checked::pw_multi_aff pw_aff::as_pw_multi_aff() const
-{
-  return isl::checked::union_pw_aff(*this).as_pw_multi_aff();
-}
-
-isl::checked::set pw_aff::as_set() const
-{
-  return isl::checked::pw_multi_aff(*this).as_set();
-}
-
-isl::checked::union_map pw_aff::as_union_map() const
-{
-  return isl::checked::union_pw_aff(*this).as_union_map();
-}
-
-isl::checked::pw_aff pw_aff::at(int pos) const
-{
-  return isl::checked::pw_multi_aff(*this).at(pos);
-}
-
-isl::checked::set pw_aff::bind(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::multi_pw_aff(*this).bind(tuple);
-}
-
-isl::checked::set pw_aff::bind(isl::checked::id id) const
-{
-  auto res = isl_pw_aff_bind_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::set pw_aff::bind(const std::string &id) const
-{
-  return this->bind(isl::checked::id(ctx(), id));
-}
-
-isl::checked::pw_aff pw_aff::bind_domain(isl::checked::multi_id tuple) const
-{
-  auto res = isl_pw_aff_bind_domain(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
-{
-  auto res = isl_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::ceil() const
-{
-  auto res = isl_pw_aff_ceil(copy());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::coalesce() const
-{
-  auto res = isl_pw_aff_coalesce(copy());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::cond(isl::checked::pw_aff pwaff_true, isl::checked::pw_aff pwaff_false) const
-{
-  auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::div(isl::checked::pw_aff pa2) const
-{
-  auto res = isl_pw_aff_div(copy(), pa2.release());
-  return manage(res);
-}
-
-isl::checked::set pw_aff::domain() const
-{
-  auto res = isl_pw_aff_domain(copy());
-  return manage(res);
-}
-
-isl::checked::set pw_aff::eq_set(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
-  return manage(res);
-}
-
-isl::checked::val pw_aff::eval(isl::checked::point pnt) const
-{
-  auto res = isl_pw_aff_eval(copy(), pnt.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_aff::extract_pw_multi_aff(const isl::checked::space &space) const
-{
-  return isl::checked::union_pw_aff(*this).extract_pw_multi_aff(space);
-}
-
-isl::checked::multi_pw_aff pw_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
-}
-
-isl::checked::multi_union_pw_aff pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::union_pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::checked::pw_multi_aff pw_aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).flat_range_product(pma2);
-}
-
-isl::checked::union_pw_multi_aff pw_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_aff(*this).flat_range_product(upma2);
-}
-
-isl::checked::pw_aff pw_aff::floor() const
-{
-  auto res = isl_pw_aff_floor(copy());
-  return manage(res);
-}
-
-stat pw_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
-{
-  return isl::checked::pw_multi_aff(*this).foreach_piece(fn);
-}
-
-isl::checked::set pw_aff::ge_set(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::gist(isl::checked::set context) const
-{
-  auto res = isl_pw_aff_gist(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff pw_aff::gist(const isl::checked::union_set &context) const
-{
-  return isl::checked::union_pw_aff(*this).gist(context);
-}
-
-isl::checked::pw_aff pw_aff::gist(const isl::checked::basic_set &context) const
-{
-  return this->gist(isl::checked::set(context));
-}
-
-isl::checked::pw_aff pw_aff::gist(const isl::checked::point &context) const
-{
-  return this->gist(isl::checked::set(context));
-}
-
-isl::checked::set pw_aff::gt_set(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
-  return manage(res);
-}
-
-boolean pw_aff::has_range_tuple_id() const
-{
-  return isl::checked::pw_multi_aff(*this).has_range_tuple_id();
-}
-
-isl::checked::multi_pw_aff pw_aff::identity() const
-{
-  return isl::checked::pw_multi_aff(*this).identity();
-}
-
-isl::checked::pw_aff pw_aff::insert_domain(isl::checked::space domain) const
-{
-  auto res = isl_pw_aff_insert_domain(copy(), domain.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::intersect_domain(isl::checked::set set) const
-{
-  auto res = isl_pw_aff_intersect_domain(copy(), set.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff pw_aff::intersect_domain(const isl::checked::space &space) const
-{
-  return isl::checked::union_pw_aff(*this).intersect_domain(space);
-}
-
-isl::checked::union_pw_aff pw_aff::intersect_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_pw_aff(*this).intersect_domain(uset);
-}
-
-isl::checked::pw_aff pw_aff::intersect_domain(const isl::checked::basic_set &set) const
-{
-  return this->intersect_domain(isl::checked::set(set));
-}
-
-isl::checked::pw_aff pw_aff::intersect_domain(const isl::checked::point &set) const
-{
-  return this->intersect_domain(isl::checked::set(set));
-}
-
-isl::checked::union_pw_aff pw_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_pw_aff(*this).intersect_domain_wrapped_domain(uset);
-}
-
-isl::checked::union_pw_aff pw_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_pw_aff(*this).intersect_domain_wrapped_range(uset);
-}
-
-isl::checked::pw_aff pw_aff::intersect_params(isl::checked::set set) const
-{
-  auto res = isl_pw_aff_intersect_params(copy(), set.release());
-  return manage(res);
-}
-
-boolean pw_aff::involves_locals() const
-{
-  return isl::checked::pw_multi_aff(*this).involves_locals();
-}
-
-boolean pw_aff::involves_nan() const
-{
-  return isl::checked::multi_pw_aff(*this).involves_nan();
-}
-
-boolean pw_aff::involves_param(const isl::checked::id &id) const
-{
-  return isl::checked::pw_multi_aff(*this).involves_param(id);
-}
-
-boolean pw_aff::involves_param(const std::string &id) const
-{
-  return this->involves_param(isl::checked::id(ctx(), id));
-}
-
-boolean pw_aff::involves_param(const isl::checked::id_list &list) const
-{
-  return isl::checked::pw_multi_aff(*this).involves_param(list);
-}
-
-boolean pw_aff::isa_aff() const
-{
-  auto res = isl_pw_aff_isa_aff(get());
-  return manage(res);
-}
-
-boolean pw_aff::isa_multi_aff() const
-{
-  return isl::checked::pw_multi_aff(*this).isa_multi_aff();
-}
-
-boolean pw_aff::isa_pw_multi_aff() const
-{
-  return isl::checked::union_pw_aff(*this).isa_pw_multi_aff();
-}
-
-isl::checked::set pw_aff::le_set(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff_list pw_aff::list() const
-{
-  return isl::checked::multi_pw_aff(*this).list();
-}
-
-isl::checked::set pw_aff::lt_set(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff pw_aff::max(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).max(multi2);
-}
-
-isl::checked::pw_aff pw_aff::max(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_max(copy(), pwaff2.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::max(const isl::checked::aff &pwaff2) const
-{
-  return this->max(isl::checked::pw_aff(pwaff2));
-}
-
-isl::checked::multi_val pw_aff::max_multi_val() const
-{
-  return isl::checked::pw_multi_aff(*this).max_multi_val();
-}
-
-isl::checked::multi_pw_aff pw_aff::min(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).min(multi2);
-}
-
-isl::checked::pw_aff pw_aff::min(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_min(copy(), pwaff2.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::min(const isl::checked::aff &pwaff2) const
-{
-  return this->min(isl::checked::pw_aff(pwaff2));
-}
-
-isl::checked::multi_val pw_aff::min_multi_val() const
-{
-  return isl::checked::pw_multi_aff(*this).min_multi_val();
-}
-
-isl::checked::pw_aff pw_aff::mod(isl::checked::val mod) const
-{
-  auto res = isl_pw_aff_mod_val(copy(), mod.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::mod(long mod) const
-{
-  return this->mod(isl::checked::val(ctx(), mod));
-}
-
-isl::checked::pw_aff pw_aff::mul(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_mul(copy(), pwaff2.release());
-  return manage(res);
-}
-
-class size pw_aff::n_piece() const
-{
-  return isl::checked::pw_multi_aff(*this).n_piece();
-}
-
-isl::checked::set pw_aff::ne_set(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::neg() const
-{
-  auto res = isl_pw_aff_neg(copy());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::param_on_domain(isl::checked::set domain, isl::checked::id id)
-{
-  auto res = isl_pw_aff_param_on_domain_id(domain.release(), id.release());
-  return manage(res);
-}
-
-boolean pw_aff::plain_is_empty() const
-{
-  return isl::checked::union_pw_aff(*this).plain_is_empty();
-}
-
-boolean pw_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
-}
-
-boolean pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::union_pw_aff(*this).plain_is_equal(multi2);
-}
-
-isl::checked::pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
-}
-
-isl::checked::union_pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_aff(*this).preimage_domain_wrapped_domain(upma2);
-}
-
-isl::checked::multi_pw_aff pw_aff::product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).product(multi2);
-}
-
-isl::checked::pw_multi_aff pw_aff::product(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).product(pma2);
-}
-
-isl::checked::pw_aff pw_aff::pullback(isl::checked::multi_aff ma) const
-{
-  auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::pullback(isl::checked::multi_pw_aff mpa) const
-{
-  auto res = isl_pw_aff_pullback_multi_pw_aff(copy(), mpa.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::pullback(isl::checked::pw_multi_aff pma) const
-{
-  auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff pw_aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
-{
-  return isl::checked::union_pw_aff(*this).pullback(upma);
-}
-
-isl::checked::pw_multi_aff_list pw_aff::pw_multi_aff_list() const
-{
-  return isl::checked::union_pw_aff(*this).pw_multi_aff_list();
-}
-
-isl::checked::pw_multi_aff pw_aff::range_factor_domain() const
-{
-  return isl::checked::pw_multi_aff(*this).range_factor_domain();
-}
-
-isl::checked::pw_multi_aff pw_aff::range_factor_range() const
-{
-  return isl::checked::pw_multi_aff(*this).range_factor_range();
-}
-
-isl::checked::multi_pw_aff pw_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).range_product(multi2);
-}
-
-isl::checked::multi_union_pw_aff pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::union_pw_aff(*this).range_product(multi2);
-}
-
-isl::checked::pw_multi_aff pw_aff::range_product(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).range_product(pma2);
-}
-
-isl::checked::union_pw_multi_aff pw_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_aff(*this).range_product(upma2);
-}
-
-isl::checked::id pw_aff::range_tuple_id() const
-{
-  return isl::checked::pw_multi_aff(*this).range_tuple_id();
-}
-
-isl::checked::multi_pw_aff pw_aff::reset_range_tuple_id() const
-{
-  return isl::checked::multi_pw_aff(*this).reset_range_tuple_id();
-}
-
-isl::checked::multi_pw_aff pw_aff::scale(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::multi_pw_aff(*this).scale(mv);
-}
-
-isl::checked::pw_aff pw_aff::scale(isl::checked::val v) const
-{
-  auto res = isl_pw_aff_scale_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::scale(long v) const
-{
-  return this->scale(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_pw_aff pw_aff::scale_down(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::multi_pw_aff(*this).scale_down(mv);
-}
-
-isl::checked::pw_aff pw_aff::scale_down(isl::checked::val f) const
-{
-  auto res = isl_pw_aff_scale_down_val(copy(), f.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::scale_down(long f) const
-{
-  return this->scale_down(isl::checked::val(ctx(), f));
-}
-
-isl::checked::multi_pw_aff pw_aff::set_at(int pos, const isl::checked::pw_aff &el) const
-{
-  return isl::checked::pw_multi_aff(*this).set_at(pos, el);
-}
-
-isl::checked::multi_union_pw_aff pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
-{
-  return isl::checked::union_pw_aff(*this).set_at(pos, el);
-}
-
-isl::checked::pw_multi_aff pw_aff::set_range_tuple(const isl::checked::id &id) const
-{
-  return isl::checked::pw_multi_aff(*this).set_range_tuple(id);
-}
-
-isl::checked::pw_multi_aff pw_aff::set_range_tuple(const std::string &id) const
-{
-  return this->set_range_tuple(isl::checked::id(ctx(), id));
-}
-
-class size pw_aff::size() const
-{
-  return isl::checked::multi_pw_aff(*this).size();
-}
-
-isl::checked::space pw_aff::space() const
-{
-  auto res = isl_pw_aff_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space pw_aff::get_space() const
-{
-  return space();
-}
-
-isl::checked::multi_pw_aff pw_aff::sub(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::pw_multi_aff(*this).sub(multi2);
-}
-
-isl::checked::multi_union_pw_aff pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::union_pw_aff(*this).sub(multi2);
-}
-
-isl::checked::pw_aff pw_aff::sub(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_sub(copy(), pwaff2.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_aff::sub(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).sub(pma2);
-}
-
-isl::checked::union_pw_aff pw_aff::sub(const isl::checked::union_pw_aff &upa2) const
-{
-  return isl::checked::union_pw_aff(*this).sub(upa2);
-}
-
-isl::checked::union_pw_multi_aff pw_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_aff(*this).sub(upma2);
-}
-
-isl::checked::pw_aff pw_aff::sub(const isl::checked::aff &pwaff2) const
-{
-  return this->sub(isl::checked::pw_aff(pwaff2));
-}
-
-isl::checked::pw_aff pw_aff::subtract_domain(isl::checked::set set) const
-{
-  auto res = isl_pw_aff_subtract_domain(copy(), set.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff pw_aff::subtract_domain(const isl::checked::space &space) const
-{
-  return isl::checked::union_pw_aff(*this).subtract_domain(space);
-}
-
-isl::checked::union_pw_aff pw_aff::subtract_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_pw_aff(*this).subtract_domain(uset);
-}
-
-isl::checked::pw_aff pw_aff::subtract_domain(const isl::checked::basic_set &set) const
-{
-  return this->subtract_domain(isl::checked::set(set));
-}
-
-isl::checked::pw_aff pw_aff::subtract_domain(const isl::checked::point &set) const
-{
-  return this->subtract_domain(isl::checked::set(set));
-}
-
-isl::checked::pw_aff pw_aff::tdiv_q(isl::checked::pw_aff pa2) const
-{
-  auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff::tdiv_r(isl::checked::pw_aff pa2) const
-{
-  auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff_list pw_aff::to_list() const
-{
-  auto res = isl_pw_aff_to_list(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff pw_aff::to_multi_pw_aff() const
-{
-  return isl::checked::pw_multi_aff(*this).to_multi_pw_aff();
-}
-
-isl::checked::union_pw_aff pw_aff::to_union_pw_aff() const
-{
-  auto res = isl_pw_aff_to_union_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_aff::to_union_pw_multi_aff() const
-{
-  return isl::checked::pw_multi_aff(*this).to_union_pw_multi_aff();
-}
-
-isl::checked::multi_pw_aff pw_aff::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
-{
-  return isl::checked::pw_multi_aff(*this).unbind_params_insert_domain(domain);
-}
-
-isl::checked::multi_pw_aff pw_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
-{
-  return isl::checked::pw_multi_aff(*this).union_add(mpa2);
-}
-
-isl::checked::multi_union_pw_aff pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
-{
-  return isl::checked::union_pw_aff(*this).union_add(mupa2);
-}
-
-isl::checked::pw_aff pw_aff::union_add(isl::checked::pw_aff pwaff2) const
-{
-  auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_aff::union_add(const isl::checked::pw_multi_aff &pma2) const
-{
-  return isl::checked::pw_multi_aff(*this).union_add(pma2);
-}
-
-isl::checked::union_pw_aff pw_aff::union_add(const isl::checked::union_pw_aff &upa2) const
-{
-  return isl::checked::union_pw_aff(*this).union_add(upa2);
-}
-
-isl::checked::union_pw_multi_aff pw_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_aff(*this).union_add(upma2);
-}
-
-isl::checked::pw_aff pw_aff::union_add(const isl::checked::aff &pwaff2) const
-{
-  return this->union_add(isl::checked::pw_aff(pwaff2));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const pw_aff &obj)
-{
-  char *str = isl_pw_aff_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::pw_aff_list
-pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
-  return pw_aff_list(ptr);
-}
-pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
-  ptr = isl_pw_aff_list_copy(ptr);
-  return pw_aff_list(ptr);
-}
-
-pw_aff_list::pw_aff_list()
-    : ptr(nullptr) {}
-
-pw_aff_list::pw_aff_list(const pw_aff_list &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr)
-    : ptr(ptr) {}
-
-pw_aff_list::pw_aff_list(isl::checked::ctx ctx, int n)
-{
-  auto res = isl_pw_aff_list_alloc(ctx.release(), n);
-  ptr = res;
-}
-
-pw_aff_list::pw_aff_list(isl::checked::pw_aff el)
-{
-  auto res = isl_pw_aff_list_from_pw_aff(el.release());
-  ptr = res;
-}
-
-pw_aff_list::pw_aff_list(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_pw_aff_list_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-pw_aff_list &pw_aff_list::operator=(pw_aff_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-pw_aff_list::~pw_aff_list() {
-  if (ptr)
-    isl_pw_aff_list_free(ptr);
-}
-
-__isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
-  return isl_pw_aff_list_copy(ptr);
-}
-
-__isl_keep isl_pw_aff_list *pw_aff_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_pw_aff_list *pw_aff_list::release() {
-  isl_pw_aff_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool pw_aff_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx pw_aff_list::ctx() const {
-  return isl::checked::ctx(isl_pw_aff_list_get_ctx(ptr));
-}
-
-isl::checked::pw_aff_list pw_aff_list::add(isl::checked::pw_aff el) const
-{
-  auto res = isl_pw_aff_list_add(copy(), el.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff_list::at(int index) const
-{
-  auto res = isl_pw_aff_list_get_at(get(), index);
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_aff_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::checked::pw_aff_list pw_aff_list::clear() const
-{
-  auto res = isl_pw_aff_list_clear(copy());
-  return manage(res);
-}
-
-isl::checked::pw_aff_list pw_aff_list::concat(isl::checked::pw_aff_list list2) const
-{
-  auto res = isl_pw_aff_list_concat(copy(), list2.release());
-  return manage(res);
-}
-
-isl::checked::pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl_pw_aff_list_drop(copy(), first, n);
-  return manage(res);
-}
-
-stat pw_aff_list::foreach(const std::function<stat(isl::checked::pw_aff)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::pw_aff)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::pw_aff_list pw_aff_list::insert(unsigned int pos, isl::checked::pw_aff el) const
-{
-  auto res = isl_pw_aff_list_insert(copy(), pos, el.release());
-  return manage(res);
-}
-
-class size pw_aff_list::size() const
-{
-  auto res = isl_pw_aff_list_size(get());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const pw_aff_list &obj)
-{
-  char *str = isl_pw_aff_list_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::pw_multi_aff
-pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) {
-  return pw_multi_aff(ptr);
-}
-pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) {
-  ptr = isl_pw_multi_aff_copy(ptr);
-  return pw_multi_aff(ptr);
-}
-
-pw_multi_aff::pw_multi_aff()
-    : ptr(nullptr) {}
-
-pw_multi_aff::pw_multi_aff(const pw_multi_aff &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr)
-    : ptr(ptr) {}
-
-pw_multi_aff::pw_multi_aff(isl::checked::multi_aff ma)
-{
-  auto res = isl_pw_multi_aff_from_multi_aff(ma.release());
-  ptr = res;
-}
-
-pw_multi_aff::pw_multi_aff(isl::checked::pw_aff pa)
-{
-  auto res = isl_pw_multi_aff_from_pw_aff(pa.release());
-  ptr = res;
-}
-
-pw_multi_aff::pw_multi_aff(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-pw_multi_aff &pw_multi_aff::operator=(pw_multi_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-pw_multi_aff::~pw_multi_aff() {
-  if (ptr)
-    isl_pw_multi_aff_free(ptr);
-}
-
-__isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & {
-  return isl_pw_multi_aff_copy(ptr);
-}
-
-__isl_keep isl_pw_multi_aff *pw_multi_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_pw_multi_aff *pw_multi_aff::release() {
-  isl_pw_multi_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool pw_multi_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx pw_multi_aff::ctx() const {
-  return isl::checked::ctx(isl_pw_multi_aff_get_ctx(ptr));
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::add(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).add(multi2);
-}
-
-isl::checked::multi_union_pw_aff pw_multi_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).add(multi2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::add(isl::checked::pw_multi_aff pma2) const
-{
-  auto res = isl_pw_multi_aff_add(copy(), pma2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).add(upma2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::add(const isl::checked::multi_aff &pma2) const
-{
-  return this->add(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::add(const isl::checked::pw_aff &pma2) const
-{
-  return this->add(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::add_constant(isl::checked::multi_val mv) const
-{
-  auto res = isl_pw_multi_aff_add_constant_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::add_constant(isl::checked::val v) const
-{
-  auto res = isl_pw_multi_aff_add_constant_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::add_constant(long v) const
-{
-  return this->add_constant(isl::checked::val(ctx(), v));
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).apply(upma2);
-}
-
-isl::checked::map pw_multi_aff::as_map() const
-{
-  auto res = isl_pw_multi_aff_as_map(copy());
-  return manage(res);
-}
-
-isl::checked::multi_aff pw_multi_aff::as_multi_aff() const
-{
-  auto res = isl_pw_multi_aff_as_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff pw_multi_aff::as_multi_union_pw_aff() const
-{
-  return isl::checked::union_pw_multi_aff(*this).as_multi_union_pw_aff();
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::as_pw_multi_aff() const
-{
-  return isl::checked::union_pw_multi_aff(*this).as_pw_multi_aff();
-}
-
-isl::checked::set pw_multi_aff::as_set() const
-{
-  auto res = isl_pw_multi_aff_as_set(copy());
-  return manage(res);
-}
-
-isl::checked::union_map pw_multi_aff::as_union_map() const
-{
-  return isl::checked::union_pw_multi_aff(*this).as_union_map();
-}
-
-isl::checked::pw_aff pw_multi_aff::at(int pos) const
-{
-  auto res = isl_pw_multi_aff_get_at(get(), pos);
-  return manage(res);
-}
-
-isl::checked::pw_aff pw_multi_aff::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::checked::set pw_multi_aff::bind(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::multi_pw_aff(*this).bind(tuple);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::bind_domain(isl::checked::multi_id tuple) const
-{
-  auto res = isl_pw_multi_aff_bind_domain(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
-{
-  auto res = isl_pw_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::coalesce() const
-{
-  auto res = isl_pw_multi_aff_coalesce(copy());
-  return manage(res);
-}
-
-isl::checked::set pw_multi_aff::domain() const
-{
-  auto res = isl_pw_multi_aff_domain(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::domain_map(isl::checked::space space)
-{
-  auto res = isl_pw_multi_aff_domain_map(space.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::extract_pw_multi_aff(const isl::checked::space &space) const
-{
-  return isl::checked::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::checked::multi_union_pw_aff pw_multi_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(isl::checked::pw_multi_aff pma2) const
-{
-  auto res = isl_pw_multi_aff_flat_range_product(copy(), pma2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).flat_range_product(upma2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::multi_aff &pma2) const
-{
-  return this->flat_range_product(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::pw_aff &pma2) const
-{
-  return this->flat_range_product(isl::checked::pw_multi_aff(pma2));
-}
-
-stat pw_multi_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::set, isl::checked::multi_aff)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_2);
-    auto ret = (data->func)(manage(arg_0), manage(arg_1));
-    return ret.release();
-  };
-  auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::gist(isl::checked::set set) const
-{
-  auto res = isl_pw_multi_aff_gist(copy(), set.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::gist(const isl::checked::union_set &context) const
-{
-  return isl::checked::union_pw_multi_aff(*this).gist(context);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::gist(const isl::checked::basic_set &set) const
-{
-  return this->gist(isl::checked::set(set));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::gist(const isl::checked::point &set) const
-{
-  return this->gist(isl::checked::set(set));
-}
-
-boolean pw_multi_aff::has_range_tuple_id() const
-{
-  auto res = isl_pw_multi_aff_has_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::identity() const
-{
-  return isl::checked::multi_pw_aff(*this).identity();
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::identity_on_domain(isl::checked::space space)
-{
-  auto res = isl_pw_multi_aff_identity_on_domain_space(space.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::insert_domain(isl::checked::space domain) const
-{
-  auto res = isl_pw_multi_aff_insert_domain(copy(), domain.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(isl::checked::set set) const
-{
-  auto res = isl_pw_multi_aff_intersect_domain(copy(), set.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::space &space) const
-{
-  return isl::checked::union_pw_multi_aff(*this).intersect_domain(space);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_pw_multi_aff(*this).intersect_domain(uset);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::basic_set &set) const
-{
-  return this->intersect_domain(isl::checked::set(set));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::point &set) const
-{
-  return this->intersect_domain(isl::checked::set(set));
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::intersect_params(isl::checked::set set) const
-{
-  auto res = isl_pw_multi_aff_intersect_params(copy(), set.release());
-  return manage(res);
-}
-
-boolean pw_multi_aff::involves_locals() const
-{
-  auto res = isl_pw_multi_aff_involves_locals(get());
-  return manage(res);
-}
-
-boolean pw_multi_aff::involves_nan() const
-{
-  return isl::checked::multi_pw_aff(*this).involves_nan();
-}
-
-boolean pw_multi_aff::involves_param(const isl::checked::id &id) const
-{
-  return isl::checked::multi_pw_aff(*this).involves_param(id);
-}
-
-boolean pw_multi_aff::involves_param(const std::string &id) const
-{
-  return this->involves_param(isl::checked::id(ctx(), id));
-}
-
-boolean pw_multi_aff::involves_param(const isl::checked::id_list &list) const
-{
-  return isl::checked::multi_pw_aff(*this).involves_param(list);
-}
-
-boolean pw_multi_aff::isa_multi_aff() const
-{
-  auto res = isl_pw_multi_aff_isa_multi_aff(get());
-  return manage(res);
-}
-
-boolean pw_multi_aff::isa_pw_multi_aff() const
-{
-  return isl::checked::union_pw_multi_aff(*this).isa_pw_multi_aff();
-}
-
-isl::checked::pw_aff_list pw_multi_aff::list() const
-{
-  return isl::checked::multi_pw_aff(*this).list();
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::max(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).max(multi2);
-}
-
-isl::checked::multi_val pw_multi_aff::max_multi_val() const
-{
-  auto res = isl_pw_multi_aff_max_multi_val(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::min(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).min(multi2);
-}
-
-isl::checked::multi_val pw_multi_aff::min_multi_val() const
-{
-  auto res = isl_pw_multi_aff_min_multi_val(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::multi_val_on_domain(isl::checked::set domain, isl::checked::multi_val mv)
-{
-  auto res = isl_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
-  return manage(res);
-}
-
-class size pw_multi_aff::n_piece() const
-{
-  auto res = isl_pw_multi_aff_n_piece(get());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::neg() const
-{
-  return isl::checked::multi_pw_aff(*this).neg();
-}
-
-boolean pw_multi_aff::plain_is_empty() const
-{
-  return isl::checked::union_pw_multi_aff(*this).plain_is_empty();
-}
-
-boolean pw_multi_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).plain_is_equal(multi2);
-}
-
-boolean pw_multi_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).plain_is_equal(multi2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(isl::checked::pw_multi_aff pma2) const
-{
-  auto res = isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff(copy(), pma2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::multi_aff &pma2) const
-{
-  return this->preimage_domain_wrapped_domain(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::pw_aff &pma2) const
-{
-  return this->preimage_domain_wrapped_domain(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).product(multi2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::product(isl::checked::pw_multi_aff pma2) const
-{
-  auto res = isl_pw_multi_aff_product(copy(), pma2.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::product(const isl::checked::multi_aff &pma2) const
-{
-  return this->product(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::product(const isl::checked::pw_aff &pma2) const
-{
-  return this->product(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::pullback(const isl::checked::multi_pw_aff &mpa2) const
-{
-  return isl::checked::multi_pw_aff(*this).pullback(mpa2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::pullback(isl::checked::multi_aff ma) const
-{
-  auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::pullback(isl::checked::pw_multi_aff pma2) const
-{
-  auto res = isl_pw_multi_aff_pullback_pw_multi_aff(copy(), pma2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::pullback(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).pullback(upma2);
-}
-
-isl::checked::pw_multi_aff_list pw_multi_aff::pw_multi_aff_list() const
-{
-  return isl::checked::union_pw_multi_aff(*this).pw_multi_aff_list();
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::range_factor_domain() const
-{
-  auto res = isl_pw_multi_aff_range_factor_domain(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::range_factor_range() const
-{
-  auto res = isl_pw_multi_aff_range_factor_range(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::range_map(isl::checked::space space)
-{
-  auto res = isl_pw_multi_aff_range_map(space.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).range_product(multi2);
-}
-
-isl::checked::multi_union_pw_aff pw_multi_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).range_product(multi2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::range_product(isl::checked::pw_multi_aff pma2) const
-{
-  auto res = isl_pw_multi_aff_range_product(copy(), pma2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).range_product(upma2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::range_product(const isl::checked::multi_aff &pma2) const
-{
-  return this->range_product(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::range_product(const isl::checked::pw_aff &pma2) const
-{
-  return this->range_product(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::id pw_multi_aff::range_tuple_id() const
-{
-  auto res = isl_pw_multi_aff_get_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::id pw_multi_aff::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::reset_range_tuple_id() const
-{
-  return isl::checked::multi_pw_aff(*this).reset_range_tuple_id();
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::scale(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::multi_pw_aff(*this).scale(mv);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::scale(isl::checked::val v) const
-{
-  auto res = isl_pw_multi_aff_scale_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::scale(long v) const
-{
-  return this->scale(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::scale_down(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::multi_pw_aff(*this).scale_down(mv);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::scale_down(isl::checked::val v) const
-{
-  auto res = isl_pw_multi_aff_scale_down_val(copy(), v.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::scale_down(long v) const
-{
-  return this->scale_down(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::set_at(int pos, const isl::checked::pw_aff &el) const
-{
-  return isl::checked::multi_pw_aff(*this).set_at(pos, el);
-}
-
-isl::checked::multi_union_pw_aff pw_multi_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
-{
-  return isl::checked::multi_pw_aff(*this).set_at(pos, el);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::set_range_tuple(isl::checked::id id) const
-{
-  auto res = isl_pw_multi_aff_set_range_tuple_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::set_range_tuple(const std::string &id) const
-{
-  return this->set_range_tuple(isl::checked::id(ctx(), id));
-}
-
-class size pw_multi_aff::size() const
-{
-  return isl::checked::multi_pw_aff(*this).size();
-}
-
-isl::checked::space pw_multi_aff::space() const
-{
-  auto res = isl_pw_multi_aff_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space pw_multi_aff::get_space() const
-{
-  return space();
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::sub(const isl::checked::multi_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).sub(multi2);
-}
-
-isl::checked::multi_union_pw_aff pw_multi_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_pw_aff(*this).sub(multi2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::sub(isl::checked::pw_multi_aff pma2) const
-{
-  auto res = isl_pw_multi_aff_sub(copy(), pma2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).sub(upma2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::sub(const isl::checked::multi_aff &pma2) const
-{
-  return this->sub(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::sub(const isl::checked::pw_aff &pma2) const
-{
-  return this->sub(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(isl::checked::set set) const
-{
-  auto res = isl_pw_multi_aff_subtract_domain(copy(), set.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::space &space) const
-{
-  return isl::checked::union_pw_multi_aff(*this).subtract_domain(space);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::union_set &uset) const
-{
-  return isl::checked::union_pw_multi_aff(*this).subtract_domain(uset);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::basic_set &set) const
-{
-  return this->subtract_domain(isl::checked::set(set));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::point &set) const
-{
-  return this->subtract_domain(isl::checked::set(set));
-}
-
-isl::checked::pw_multi_aff_list pw_multi_aff::to_list() const
-{
-  auto res = isl_pw_multi_aff_to_list(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::to_multi_pw_aff() const
-{
-  auto res = isl_pw_multi_aff_to_multi_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::to_union_pw_multi_aff() const
-{
-  auto res = isl_pw_multi_aff_to_union_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
-{
-  return isl::checked::multi_pw_aff(*this).unbind_params_insert_domain(domain);
-}
-
-isl::checked::multi_pw_aff pw_multi_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
-{
-  return isl::checked::multi_pw_aff(*this).union_add(mpa2);
-}
-
-isl::checked::multi_union_pw_aff pw_multi_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
-{
-  return isl::checked::multi_pw_aff(*this).union_add(mupa2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::union_add(isl::checked::pw_multi_aff pma2) const
-{
-  auto res = isl_pw_multi_aff_union_add(copy(), pma2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff pw_multi_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).union_add(upma2);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::union_add(const isl::checked::multi_aff &pma2) const
-{
-  return this->union_add(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::union_add(const isl::checked::pw_aff &pma2) const
-{
-  return this->union_add(isl::checked::pw_multi_aff(pma2));
-}
-
-isl::checked::pw_multi_aff pw_multi_aff::zero(isl::checked::space space)
-{
-  auto res = isl_pw_multi_aff_zero(space.release());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff &obj)
-{
-  char *str = isl_pw_multi_aff_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::pw_multi_aff_list
-pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
-  return pw_multi_aff_list(ptr);
-}
-pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) {
-  ptr = isl_pw_multi_aff_list_copy(ptr);
-  return pw_multi_aff_list(ptr);
-}
-
-pw_multi_aff_list::pw_multi_aff_list()
-    : ptr(nullptr) {}
-
-pw_multi_aff_list::pw_multi_aff_list(const pw_multi_aff_list &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-pw_multi_aff_list::pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr)
-    : ptr(ptr) {}
-
-pw_multi_aff_list::pw_multi_aff_list(isl::checked::ctx ctx, int n)
-{
-  auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n);
-  ptr = res;
-}
-
-pw_multi_aff_list::pw_multi_aff_list(isl::checked::pw_multi_aff el)
-{
-  auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release());
-  ptr = res;
-}
-
-pw_multi_aff_list::pw_multi_aff_list(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_pw_multi_aff_list_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-pw_multi_aff_list &pw_multi_aff_list::operator=(pw_multi_aff_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-pw_multi_aff_list::~pw_multi_aff_list() {
-  if (ptr)
-    isl_pw_multi_aff_list_free(ptr);
-}
-
-__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
-  return isl_pw_multi_aff_list_copy(ptr);
-}
-
-__isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() {
-  isl_pw_multi_aff_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool pw_multi_aff_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx pw_multi_aff_list::ctx() const {
-  return isl::checked::ctx(isl_pw_multi_aff_list_get_ctx(ptr));
-}
-
-isl::checked::pw_multi_aff_list pw_multi_aff_list::add(isl::checked::pw_multi_aff el) const
-{
-  auto res = isl_pw_multi_aff_list_add(copy(), el.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff_list::at(int index) const
-{
-  auto res = isl_pw_multi_aff_list_get_at(get(), index);
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff pw_multi_aff_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::checked::pw_multi_aff_list pw_multi_aff_list::clear() const
-{
-  auto res = isl_pw_multi_aff_list_clear(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff_list pw_multi_aff_list::concat(isl::checked::pw_multi_aff_list list2) const
-{
-  auto res = isl_pw_multi_aff_list_concat(copy(), list2.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl_pw_multi_aff_list_drop(copy(), first, n);
-  return manage(res);
-}
-
-stat pw_multi_aff_list::foreach(const std::function<stat(isl::checked::pw_multi_aff)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::pw_multi_aff)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff_list pw_multi_aff_list::insert(unsigned int pos, isl::checked::pw_multi_aff el) const
-{
-  auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release());
-  return manage(res);
-}
-
-class size pw_multi_aff_list::size() const
-{
-  auto res = isl_pw_multi_aff_list_size(get());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff_list &obj)
-{
-  char *str = isl_pw_multi_aff_list_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule
-schedule manage(__isl_take isl_schedule *ptr) {
-  return schedule(ptr);
-}
-schedule manage_copy(__isl_keep isl_schedule *ptr) {
-  ptr = isl_schedule_copy(ptr);
-  return schedule(ptr);
-}
-
-schedule::schedule()
-    : ptr(nullptr) {}
-
-schedule::schedule(const schedule &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-schedule::schedule(__isl_take isl_schedule *ptr)
-    : ptr(ptr) {}
-
-schedule::schedule(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-schedule &schedule::operator=(schedule obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-schedule::~schedule() {
-  if (ptr)
-    isl_schedule_free(ptr);
-}
-
-__isl_give isl_schedule *schedule::copy() const & {
-  return isl_schedule_copy(ptr);
-}
-
-__isl_keep isl_schedule *schedule::get() const {
-  return ptr;
-}
-
-__isl_give isl_schedule *schedule::release() {
-  isl_schedule *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool schedule::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx schedule::ctx() const {
-  return isl::checked::ctx(isl_schedule_get_ctx(ptr));
-}
-
-isl::checked::union_set schedule::domain() const
-{
-  auto res = isl_schedule_get_domain(get());
-  return manage(res);
-}
-
-isl::checked::union_set schedule::get_domain() const
-{
-  return domain();
-}
-
-isl::checked::schedule schedule::from_domain(isl::checked::union_set domain)
-{
-  auto res = isl_schedule_from_domain(domain.release());
-  return manage(res);
-}
-
-isl::checked::union_map schedule::map() const
-{
-  auto res = isl_schedule_get_map(get());
-  return manage(res);
-}
-
-isl::checked::union_map schedule::get_map() const
-{
-  return map();
-}
-
-isl::checked::schedule schedule::pullback(isl::checked::union_pw_multi_aff upma) const
-{
-  auto res = isl_schedule_pullback_union_pw_multi_aff(copy(), upma.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule::root() const
-{
-  auto res = isl_schedule_get_root(get());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule::get_root() const
-{
-  return root();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule &obj)
-{
-  char *str = isl_schedule_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_constraints
-schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) {
-  return schedule_constraints(ptr);
-}
-schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) {
-  ptr = isl_schedule_constraints_copy(ptr);
-  return schedule_constraints(ptr);
-}
-
-schedule_constraints::schedule_constraints()
-    : ptr(nullptr) {}
-
-schedule_constraints::schedule_constraints(const schedule_constraints &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr)
-    : ptr(ptr) {}
-
-schedule_constraints::schedule_constraints(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-schedule_constraints &schedule_constraints::operator=(schedule_constraints obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-schedule_constraints::~schedule_constraints() {
-  if (ptr)
-    isl_schedule_constraints_free(ptr);
-}
-
-__isl_give isl_schedule_constraints *schedule_constraints::copy() const & {
-  return isl_schedule_constraints_copy(ptr);
-}
-
-__isl_keep isl_schedule_constraints *schedule_constraints::get() const {
-  return ptr;
-}
-
-__isl_give isl_schedule_constraints *schedule_constraints::release() {
-  isl_schedule_constraints *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool schedule_constraints::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx schedule_constraints::ctx() const {
-  return isl::checked::ctx(isl_schedule_constraints_get_ctx(ptr));
-}
-
-isl::checked::union_map schedule_constraints::coincidence() const
-{
-  auto res = isl_schedule_constraints_get_coincidence(get());
-  return manage(res);
-}
-
-isl::checked::union_map schedule_constraints::get_coincidence() const
-{
-  return coincidence();
-}
-
-isl::checked::schedule schedule_constraints::compute_schedule() const
-{
-  auto res = isl_schedule_constraints_compute_schedule(copy());
-  return manage(res);
-}
-
-isl::checked::union_map schedule_constraints::conditional_validity() const
-{
-  auto res = isl_schedule_constraints_get_conditional_validity(get());
-  return manage(res);
-}
-
-isl::checked::union_map schedule_constraints::get_conditional_validity() const
-{
-  return conditional_validity();
-}
-
-isl::checked::union_map schedule_constraints::conditional_validity_condition() const
-{
-  auto res = isl_schedule_constraints_get_conditional_validity_condition(get());
-  return manage(res);
-}
-
-isl::checked::union_map schedule_constraints::get_conditional_validity_condition() const
-{
-  return conditional_validity_condition();
-}
-
-isl::checked::set schedule_constraints::context() const
-{
-  auto res = isl_schedule_constraints_get_context(get());
-  return manage(res);
-}
-
-isl::checked::set schedule_constraints::get_context() const
-{
-  return context();
-}
-
-isl::checked::union_set schedule_constraints::domain() const
-{
-  auto res = isl_schedule_constraints_get_domain(get());
-  return manage(res);
-}
-
-isl::checked::union_set schedule_constraints::get_domain() const
-{
-  return domain();
-}
-
-isl::checked::schedule_constraints schedule_constraints::on_domain(isl::checked::union_set domain)
-{
-  auto res = isl_schedule_constraints_on_domain(domain.release());
-  return manage(res);
-}
-
-isl::checked::union_map schedule_constraints::proximity() const
-{
-  auto res = isl_schedule_constraints_get_proximity(get());
-  return manage(res);
-}
-
-isl::checked::union_map schedule_constraints::get_proximity() const
-{
-  return proximity();
-}
-
-isl::checked::schedule_constraints schedule_constraints::set_coincidence(isl::checked::union_map coincidence) const
-{
-  auto res = isl_schedule_constraints_set_coincidence(copy(), coincidence.release());
-  return manage(res);
-}
-
-isl::checked::schedule_constraints schedule_constraints::set_conditional_validity(isl::checked::union_map condition, isl::checked::union_map validity) const
-{
-  auto res = isl_schedule_constraints_set_conditional_validity(copy(), condition.release(), validity.release());
-  return manage(res);
-}
-
-isl::checked::schedule_constraints schedule_constraints::set_context(isl::checked::set context) const
-{
-  auto res = isl_schedule_constraints_set_context(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::schedule_constraints schedule_constraints::set_proximity(isl::checked::union_map proximity) const
-{
-  auto res = isl_schedule_constraints_set_proximity(copy(), proximity.release());
-  return manage(res);
-}
-
-isl::checked::schedule_constraints schedule_constraints::set_validity(isl::checked::union_map validity) const
-{
-  auto res = isl_schedule_constraints_set_validity(copy(), validity.release());
-  return manage(res);
-}
-
-isl::checked::union_map schedule_constraints::validity() const
-{
-  auto res = isl_schedule_constraints_get_validity(get());
-  return manage(res);
-}
-
-isl::checked::union_map schedule_constraints::get_validity() const
-{
-  return validity();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_constraints &obj)
-{
-  char *str = isl_schedule_constraints_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node
-schedule_node manage(__isl_take isl_schedule_node *ptr) {
-  return schedule_node(ptr);
-}
-schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) {
-  ptr = isl_schedule_node_copy(ptr);
-  return schedule_node(ptr);
-}
-
-schedule_node::schedule_node()
-    : ptr(nullptr) {}
-
-schedule_node::schedule_node(const schedule_node &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-schedule_node::schedule_node(__isl_take isl_schedule_node *ptr)
-    : ptr(ptr) {}
-
-schedule_node &schedule_node::operator=(schedule_node obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-schedule_node::~schedule_node() {
-  if (ptr)
-    isl_schedule_node_free(ptr);
-}
-
-__isl_give isl_schedule_node *schedule_node::copy() const & {
-  return isl_schedule_node_copy(ptr);
-}
-
-__isl_keep isl_schedule_node *schedule_node::get() const {
-  return ptr;
-}
-
-__isl_give isl_schedule_node *schedule_node::release() {
-  isl_schedule_node *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool schedule_node::is_null() const {
-  return ptr == nullptr;
-}
-
-template <typename T, typename>
-boolean schedule_node::isa_type(T subtype) const
-{
-  if (is_null())
-    return boolean();
-  return isl_schedule_node_get_type(get()) == subtype;
-}
-template <class T>
-boolean schedule_node::isa() const
-{
-  return isa_type<decltype(T::type)>(T::type);
-}
-template <class T>
-T schedule_node::as() const
-{
- if (isa<T>().is_false())
-    isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
-  return T(copy());
-}
-
-isl::checked::ctx schedule_node::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::checked::schedule_node schedule_node::ancestor(int generation) const
-{
-  auto res = isl_schedule_node_ancestor(copy(), generation);
-  return manage(res);
-}
-
-class size schedule_node::ancestor_child_position(const isl::checked::schedule_node &ancestor) const
-{
-  auto res = isl_schedule_node_get_ancestor_child_position(get(), ancestor.get());
-  return manage(res);
-}
-
-class size schedule_node::get_ancestor_child_position(const isl::checked::schedule_node &ancestor) const
-{
-  return ancestor_child_position(ancestor);
-}
-
-isl::checked::schedule_node schedule_node::child(int pos) const
-{
-  auto res = isl_schedule_node_child(copy(), pos);
-  return manage(res);
-}
-
-class size schedule_node::child_position() const
-{
-  auto res = isl_schedule_node_get_child_position(get());
-  return manage(res);
-}
-
-class size schedule_node::get_child_position() const
-{
-  return child_position();
-}
-
-boolean schedule_node::every_descendant(const std::function<boolean(isl::checked::schedule_node)> &test) const
-{
-  struct test_data {
-    std::function<boolean(isl::checked::schedule_node)> func;
-  } test_data = { test };
-  auto test_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
-    auto *data = static_cast<struct test_data *>(arg_1);
-    auto ret = (data->func)(manage_copy(arg_0));
-    return ret.release();
-  };
-  auto res = isl_schedule_node_every_descendant(get(), test_lambda, &test_data);
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::first_child() const
-{
-  auto res = isl_schedule_node_first_child(copy());
-  return manage(res);
-}
-
-stat schedule_node::foreach_ancestor_top_down(const std::function<stat(isl::checked::schedule_node)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::schedule_node)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage_copy(arg_0));
-    return ret.release();
-  };
-  auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-stat schedule_node::foreach_descendant_top_down(const std::function<boolean(isl::checked::schedule_node)> &fn) const
-{
-  struct fn_data {
-    std::function<boolean(isl::checked::schedule_node)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage_copy(arg_0));
-    return ret.release();
-  };
-  auto res = isl_schedule_node_foreach_descendant_top_down(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::from_domain(isl::checked::union_set domain)
-{
-  auto res = isl_schedule_node_from_domain(domain.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::from_extension(isl::checked::union_map extension)
-{
-  auto res = isl_schedule_node_from_extension(extension.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::graft_after(isl::checked::schedule_node graft) const
-{
-  auto res = isl_schedule_node_graft_after(copy(), graft.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::graft_before(isl::checked::schedule_node graft) const
-{
-  auto res = isl_schedule_node_graft_before(copy(), graft.release());
-  return manage(res);
-}
-
-boolean schedule_node::has_children() const
-{
-  auto res = isl_schedule_node_has_children(get());
-  return manage(res);
-}
-
-boolean schedule_node::has_next_sibling() const
-{
-  auto res = isl_schedule_node_has_next_sibling(get());
-  return manage(res);
-}
-
-boolean schedule_node::has_parent() const
-{
-  auto res = isl_schedule_node_has_parent(get());
-  return manage(res);
-}
-
-boolean schedule_node::has_previous_sibling() const
-{
-  auto res = isl_schedule_node_has_previous_sibling(get());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::insert_context(isl::checked::set context) const
-{
-  auto res = isl_schedule_node_insert_context(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::insert_filter(isl::checked::union_set filter) const
-{
-  auto res = isl_schedule_node_insert_filter(copy(), filter.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::insert_guard(isl::checked::set context) const
-{
-  auto res = isl_schedule_node_insert_guard(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::insert_mark(isl::checked::id mark) const
-{
-  auto res = isl_schedule_node_insert_mark(copy(), mark.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::insert_mark(const std::string &mark) const
-{
-  return this->insert_mark(isl::checked::id(ctx(), mark));
-}
-
-isl::checked::schedule_node schedule_node::insert_partial_schedule(isl::checked::multi_union_pw_aff schedule) const
-{
-  auto res = isl_schedule_node_insert_partial_schedule(copy(), schedule.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::insert_sequence(isl::checked::union_set_list filters) const
-{
-  auto res = isl_schedule_node_insert_sequence(copy(), filters.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::insert_set(isl::checked::union_set_list filters) const
-{
-  auto res = isl_schedule_node_insert_set(copy(), filters.release());
-  return manage(res);
-}
-
-boolean schedule_node::is_equal(const isl::checked::schedule_node &node2) const
-{
-  auto res = isl_schedule_node_is_equal(get(), node2.get());
-  return manage(res);
-}
-
-boolean schedule_node::is_subtree_anchored() const
-{
-  auto res = isl_schedule_node_is_subtree_anchored(get());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::map_descendant_bottom_up(const std::function<isl::checked::schedule_node(isl::checked::schedule_node)> &fn) const
-{
-  struct fn_data {
-    std::function<isl::checked::schedule_node(isl::checked::schedule_node)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_schedule_node * {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_schedule_node_map_descendant_bottom_up(copy(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-class size schedule_node::n_children() const
-{
-  auto res = isl_schedule_node_n_children(get());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::next_sibling() const
-{
-  auto res = isl_schedule_node_next_sibling(copy());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::order_after(isl::checked::union_set filter) const
-{
-  auto res = isl_schedule_node_order_after(copy(), filter.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::order_before(isl::checked::union_set filter) const
-{
-  auto res = isl_schedule_node_order_before(copy(), filter.release());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::parent() const
-{
-  auto res = isl_schedule_node_parent(copy());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff schedule_node::prefix_schedule_multi_union_pw_aff() const
-{
-  auto res = isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(get());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff schedule_node::get_prefix_schedule_multi_union_pw_aff() const
-{
-  return prefix_schedule_multi_union_pw_aff();
-}
-
-isl::checked::union_map schedule_node::prefix_schedule_union_map() const
-{
-  auto res = isl_schedule_node_get_prefix_schedule_union_map(get());
-  return manage(res);
-}
-
-isl::checked::union_map schedule_node::get_prefix_schedule_union_map() const
-{
-  return prefix_schedule_union_map();
-}
-
-isl::checked::union_pw_multi_aff schedule_node::prefix_schedule_union_pw_multi_aff() const
-{
-  auto res = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(get());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff schedule_node::get_prefix_schedule_union_pw_multi_aff() const
-{
-  return prefix_schedule_union_pw_multi_aff();
-}
-
-isl::checked::schedule_node schedule_node::previous_sibling() const
-{
-  auto res = isl_schedule_node_previous_sibling(copy());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::root() const
-{
-  auto res = isl_schedule_node_root(copy());
-  return manage(res);
-}
-
-isl::checked::schedule schedule_node::schedule() const
-{
-  auto res = isl_schedule_node_get_schedule(get());
-  return manage(res);
-}
-
-isl::checked::schedule schedule_node::get_schedule() const
-{
-  return schedule();
-}
-
-isl::checked::schedule_node schedule_node::shared_ancestor(const isl::checked::schedule_node &node2) const
-{
-  auto res = isl_schedule_node_get_shared_ancestor(get(), node2.get());
-  return manage(res);
-}
-
-isl::checked::schedule_node schedule_node::get_shared_ancestor(const isl::checked::schedule_node &node2) const
-{
-  return shared_ancestor(node2);
-}
-
-class size schedule_node::tree_depth() const
-{
-  auto res = isl_schedule_node_get_tree_depth(get());
-  return manage(res);
-}
-
-class size schedule_node::get_tree_depth() const
-{
-  return tree_depth();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_band
-schedule_node_band::schedule_node_band()
-    : schedule_node() {}
-
-schedule_node_band::schedule_node_band(const schedule_node_band &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_band::schedule_node_band(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_band &schedule_node_band::operator=(schedule_node_band obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx schedule_node_band::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::checked::union_set schedule_node_band::ast_build_options() const
-{
-  auto res = isl_schedule_node_band_get_ast_build_options(get());
-  return manage(res);
-}
-
-isl::checked::union_set schedule_node_band::get_ast_build_options() const
-{
-  return ast_build_options();
-}
-
-isl::checked::set schedule_node_band::ast_isolate_option() const
-{
-  auto res = isl_schedule_node_band_get_ast_isolate_option(get());
-  return manage(res);
-}
-
-isl::checked::set schedule_node_band::get_ast_isolate_option() const
-{
-  return ast_isolate_option();
-}
-
-boolean schedule_node_band::member_get_coincident(int pos) const
-{
-  auto res = isl_schedule_node_band_member_get_coincident(get(), pos);
-  return manage(res);
-}
-
-schedule_node_band schedule_node_band::member_set_coincident(int pos, int coincident) const
-{
-  auto res = isl_schedule_node_band_member_set_coincident(copy(), pos, coincident);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::mod(isl::checked::multi_val mv) const
-{
-  auto res = isl_schedule_node_band_mod(copy(), mv.release());
-  return manage(res).as<schedule_node_band>();
-}
-
-class size schedule_node_band::n_member() const
-{
-  auto res = isl_schedule_node_band_n_member(get());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff schedule_node_band::partial_schedule() const
-{
-  auto res = isl_schedule_node_band_get_partial_schedule(get());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff schedule_node_band::get_partial_schedule() const
-{
-  return partial_schedule();
-}
-
-boolean schedule_node_band::permutable() const
-{
-  auto res = isl_schedule_node_band_get_permutable(get());
-  return manage(res);
-}
-
-boolean schedule_node_band::get_permutable() const
-{
-  return permutable();
-}
-
-schedule_node_band schedule_node_band::scale(isl::checked::multi_val mv) const
-{
-  auto res = isl_schedule_node_band_scale(copy(), mv.release());
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::scale_down(isl::checked::multi_val mv) const
-{
-  auto res = isl_schedule_node_band_scale_down(copy(), mv.release());
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::set_ast_build_options(isl::checked::union_set options) const
-{
-  auto res = isl_schedule_node_band_set_ast_build_options(copy(), options.release());
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::set_permutable(int permutable) const
-{
-  auto res = isl_schedule_node_band_set_permutable(copy(), permutable);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::shift(isl::checked::multi_union_pw_aff shift) const
-{
-  auto res = isl_schedule_node_band_shift(copy(), shift.release());
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::split(int pos) const
-{
-  auto res = isl_schedule_node_band_split(copy(), pos);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::tile(isl::checked::multi_val sizes) const
-{
-  auto res = isl_schedule_node_band_tile(copy(), sizes.release());
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::member_set_ast_loop_default(int pos) const
-{
-  auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_default);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::member_set_ast_loop_atomic(int pos) const
-{
-  auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_atomic);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::member_set_ast_loop_unroll(int pos) const
-{
-  auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_unroll);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::member_set_ast_loop_separate(int pos) const
-{
-  auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_separate);
-  return manage(res).as<schedule_node_band>();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_band &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_context
-schedule_node_context::schedule_node_context()
-    : schedule_node() {}
-
-schedule_node_context::schedule_node_context(const schedule_node_context &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_context::schedule_node_context(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_context &schedule_node_context::operator=(schedule_node_context obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx schedule_node_context::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::checked::set schedule_node_context::context() const
-{
-  auto res = isl_schedule_node_context_get_context(get());
-  return manage(res);
-}
-
-isl::checked::set schedule_node_context::get_context() const
-{
-  return context();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_context &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_domain
-schedule_node_domain::schedule_node_domain()
-    : schedule_node() {}
-
-schedule_node_domain::schedule_node_domain(const schedule_node_domain &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_domain::schedule_node_domain(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_domain &schedule_node_domain::operator=(schedule_node_domain obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx schedule_node_domain::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::checked::union_set schedule_node_domain::domain() const
-{
-  auto res = isl_schedule_node_domain_get_domain(get());
-  return manage(res);
-}
-
-isl::checked::union_set schedule_node_domain::get_domain() const
-{
-  return domain();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_domain &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_expansion
-schedule_node_expansion::schedule_node_expansion()
-    : schedule_node() {}
-
-schedule_node_expansion::schedule_node_expansion(const schedule_node_expansion &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_expansion::schedule_node_expansion(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_expansion &schedule_node_expansion::operator=(schedule_node_expansion obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx schedule_node_expansion::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::checked::union_pw_multi_aff schedule_node_expansion::contraction() const
-{
-  auto res = isl_schedule_node_expansion_get_contraction(get());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff schedule_node_expansion::get_contraction() const
-{
-  return contraction();
-}
-
-isl::checked::union_map schedule_node_expansion::expansion() const
-{
-  auto res = isl_schedule_node_expansion_get_expansion(get());
-  return manage(res);
-}
-
-isl::checked::union_map schedule_node_expansion::get_expansion() const
-{
-  return expansion();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_expansion &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_extension
-schedule_node_extension::schedule_node_extension()
-    : schedule_node() {}
-
-schedule_node_extension::schedule_node_extension(const schedule_node_extension &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_extension::schedule_node_extension(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_extension &schedule_node_extension::operator=(schedule_node_extension obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx schedule_node_extension::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::checked::union_map schedule_node_extension::extension() const
-{
-  auto res = isl_schedule_node_extension_get_extension(get());
-  return manage(res);
-}
-
-isl::checked::union_map schedule_node_extension::get_extension() const
-{
-  return extension();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_extension &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_filter
-schedule_node_filter::schedule_node_filter()
-    : schedule_node() {}
-
-schedule_node_filter::schedule_node_filter(const schedule_node_filter &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_filter::schedule_node_filter(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_filter &schedule_node_filter::operator=(schedule_node_filter obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx schedule_node_filter::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::checked::union_set schedule_node_filter::filter() const
-{
-  auto res = isl_schedule_node_filter_get_filter(get());
-  return manage(res);
-}
-
-isl::checked::union_set schedule_node_filter::get_filter() const
-{
-  return filter();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_filter &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_guard
-schedule_node_guard::schedule_node_guard()
-    : schedule_node() {}
-
-schedule_node_guard::schedule_node_guard(const schedule_node_guard &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_guard::schedule_node_guard(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_guard &schedule_node_guard::operator=(schedule_node_guard obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx schedule_node_guard::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::checked::set schedule_node_guard::guard() const
-{
-  auto res = isl_schedule_node_guard_get_guard(get());
-  return manage(res);
-}
-
-isl::checked::set schedule_node_guard::get_guard() const
-{
-  return guard();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_guard &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_leaf
-schedule_node_leaf::schedule_node_leaf()
-    : schedule_node() {}
-
-schedule_node_leaf::schedule_node_leaf(const schedule_node_leaf &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_leaf::schedule_node_leaf(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_leaf &schedule_node_leaf::operator=(schedule_node_leaf obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx schedule_node_leaf::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_leaf &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_mark
-schedule_node_mark::schedule_node_mark()
-    : schedule_node() {}
-
-schedule_node_mark::schedule_node_mark(const schedule_node_mark &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_mark::schedule_node_mark(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_mark &schedule_node_mark::operator=(schedule_node_mark obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx schedule_node_mark::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_mark &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_sequence
-schedule_node_sequence::schedule_node_sequence()
-    : schedule_node() {}
-
-schedule_node_sequence::schedule_node_sequence(const schedule_node_sequence &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_sequence::schedule_node_sequence(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_sequence &schedule_node_sequence::operator=(schedule_node_sequence obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx schedule_node_sequence::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_sequence &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_set
-schedule_node_set::schedule_node_set()
-    : schedule_node() {}
-
-schedule_node_set::schedule_node_set(const schedule_node_set &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_set::schedule_node_set(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_set &schedule_node_set::operator=(schedule_node_set obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::checked::ctx schedule_node_set::ctx() const {
-  return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_set &obj)
-{
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::set
-set manage(__isl_take isl_set *ptr) {
-  return set(ptr);
-}
-set manage_copy(__isl_keep isl_set *ptr) {
-  ptr = isl_set_copy(ptr);
-  return set(ptr);
-}
-
-set::set()
-    : ptr(nullptr) {}
-
-set::set(const set &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-set::set(__isl_take isl_set *ptr)
-    : ptr(ptr) {}
-
-set::set(isl::checked::basic_set bset)
-{
-  auto res = isl_set_from_basic_set(bset.release());
-  ptr = res;
-}
-
-set::set(isl::checked::point pnt)
-{
-  auto res = isl_set_from_point(pnt.release());
-  ptr = res;
-}
-
-set::set(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_set_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-set &set::operator=(set obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-set::~set() {
-  if (ptr)
-    isl_set_free(ptr);
-}
-
-__isl_give isl_set *set::copy() const & {
-  return isl_set_copy(ptr);
-}
-
-__isl_keep isl_set *set::get() const {
-  return ptr;
-}
-
-__isl_give isl_set *set::release() {
-  isl_set *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool set::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx set::ctx() const {
-  return isl::checked::ctx(isl_set_get_ctx(ptr));
-}
-
-isl::checked::basic_set set::affine_hull() const
-{
-  auto res = isl_set_affine_hull(copy());
-  return manage(res);
-}
-
-isl::checked::set set::apply(isl::checked::map map) const
-{
-  auto res = isl_set_apply(copy(), map.release());
-  return manage(res);
-}
-
-isl::checked::union_set set::apply(const isl::checked::union_map &umap) const
-{
-  return isl::checked::union_set(*this).apply(umap);
-}
-
-isl::checked::set set::apply(const isl::checked::basic_map &map) const
-{
-  return this->apply(isl::checked::map(map));
-}
-
-isl::checked::pw_multi_aff set::as_pw_multi_aff() const
-{
-  auto res = isl_set_as_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::set set::as_set() const
-{
-  return isl::checked::union_set(*this).as_set();
-}
-
-isl::checked::set set::bind(isl::checked::multi_id tuple) const
-{
-  auto res = isl_set_bind(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::set set::coalesce() const
-{
-  auto res = isl_set_coalesce(copy());
-  return manage(res);
-}
-
-isl::checked::set set::complement() const
-{
-  auto res = isl_set_complement(copy());
-  return manage(res);
-}
-
-isl::checked::union_set set::compute_divs() const
-{
-  return isl::checked::union_set(*this).compute_divs();
-}
-
-isl::checked::set set::detect_equalities() const
-{
-  auto res = isl_set_detect_equalities(copy());
-  return manage(res);
-}
-
-isl::checked::val set::dim_max_val(int pos) const
-{
-  auto res = isl_set_dim_max_val(copy(), pos);
-  return manage(res);
-}
-
-isl::checked::val set::dim_min_val(int pos) const
-{
-  auto res = isl_set_dim_min_val(copy(), pos);
-  return manage(res);
-}
-
-isl::checked::set set::empty(isl::checked::space space)
-{
-  auto res = isl_set_empty(space.release());
-  return manage(res);
-}
-
-boolean set::every_set(const std::function<boolean(isl::checked::set)> &test) const
-{
-  return isl::checked::union_set(*this).every_set(test);
-}
-
-isl::checked::set set::extract_set(const isl::checked::space &space) const
-{
-  return isl::checked::union_set(*this).extract_set(space);
-}
-
-isl::checked::set set::flatten() const
-{
-  auto res = isl_set_flatten(copy());
-  return manage(res);
-}
-
-stat set::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::basic_set)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-stat set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::point)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_set_foreach_point(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-stat set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
-{
-  return isl::checked::union_set(*this).foreach_set(fn);
-}
-
-isl::checked::set set::gist(isl::checked::set context) const
-{
-  auto res = isl_set_gist(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::union_set set::gist(const isl::checked::union_set &context) const
-{
-  return isl::checked::union_set(*this).gist(context);
-}
-
-isl::checked::set set::gist(const isl::checked::basic_set &context) const
-{
-  return this->gist(isl::checked::set(context));
-}
-
-isl::checked::set set::gist(const isl::checked::point &context) const
-{
-  return this->gist(isl::checked::set(context));
-}
-
-isl::checked::union_set set::gist_params(const isl::checked::set &set) const
-{
-  return isl::checked::union_set(*this).gist_params(set);
-}
-
-isl::checked::map set::identity() const
-{
-  auto res = isl_set_identity(copy());
-  return manage(res);
-}
-
-isl::checked::pw_aff set::indicator_function() const
-{
-  auto res = isl_set_indicator_function(copy());
-  return manage(res);
-}
-
-isl::checked::map set::insert_domain(isl::checked::space domain) const
-{
-  auto res = isl_set_insert_domain(copy(), domain.release());
-  return manage(res);
-}
-
-isl::checked::set set::intersect(isl::checked::set set2) const
-{
-  auto res = isl_set_intersect(copy(), set2.release());
-  return manage(res);
-}
-
-isl::checked::union_set set::intersect(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::union_set(*this).intersect(uset2);
-}
-
-isl::checked::set set::intersect(const isl::checked::basic_set &set2) const
-{
-  return this->intersect(isl::checked::set(set2));
-}
-
-isl::checked::set set::intersect(const isl::checked::point &set2) const
-{
-  return this->intersect(isl::checked::set(set2));
-}
-
-isl::checked::set set::intersect_params(isl::checked::set params) const
-{
-  auto res = isl_set_intersect_params(copy(), params.release());
-  return manage(res);
-}
-
-boolean set::involves_locals() const
-{
-  auto res = isl_set_involves_locals(get());
-  return manage(res);
-}
-
-boolean set::is_disjoint(const isl::checked::set &set2) const
-{
-  auto res = isl_set_is_disjoint(get(), set2.get());
-  return manage(res);
-}
-
-boolean set::is_disjoint(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::union_set(*this).is_disjoint(uset2);
-}
-
-boolean set::is_disjoint(const isl::checked::basic_set &set2) const
-{
-  return this->is_disjoint(isl::checked::set(set2));
-}
-
-boolean set::is_disjoint(const isl::checked::point &set2) const
-{
-  return this->is_disjoint(isl::checked::set(set2));
-}
-
-boolean set::is_empty() const
-{
-  auto res = isl_set_is_empty(get());
-  return manage(res);
-}
-
-boolean set::is_equal(const isl::checked::set &set2) const
-{
-  auto res = isl_set_is_equal(get(), set2.get());
-  return manage(res);
-}
-
-boolean set::is_equal(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::union_set(*this).is_equal(uset2);
-}
-
-boolean set::is_equal(const isl::checked::basic_set &set2) const
-{
-  return this->is_equal(isl::checked::set(set2));
-}
-
-boolean set::is_equal(const isl::checked::point &set2) const
-{
-  return this->is_equal(isl::checked::set(set2));
-}
-
-boolean set::is_singleton() const
-{
-  auto res = isl_set_is_singleton(get());
-  return manage(res);
-}
-
-boolean set::is_strict_subset(const isl::checked::set &set2) const
-{
-  auto res = isl_set_is_strict_subset(get(), set2.get());
-  return manage(res);
-}
-
-boolean set::is_strict_subset(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::union_set(*this).is_strict_subset(uset2);
-}
-
-boolean set::is_strict_subset(const isl::checked::basic_set &set2) const
-{
-  return this->is_strict_subset(isl::checked::set(set2));
-}
-
-boolean set::is_strict_subset(const isl::checked::point &set2) const
-{
-  return this->is_strict_subset(isl::checked::set(set2));
-}
-
-boolean set::is_subset(const isl::checked::set &set2) const
-{
-  auto res = isl_set_is_subset(get(), set2.get());
-  return manage(res);
-}
-
-boolean set::is_subset(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::union_set(*this).is_subset(uset2);
-}
-
-boolean set::is_subset(const isl::checked::basic_set &set2) const
-{
-  return this->is_subset(isl::checked::set(set2));
-}
-
-boolean set::is_subset(const isl::checked::point &set2) const
-{
-  return this->is_subset(isl::checked::set(set2));
-}
-
-boolean set::is_wrapping() const
-{
-  auto res = isl_set_is_wrapping(get());
-  return manage(res);
-}
-
-boolean set::isa_set() const
-{
-  return isl::checked::union_set(*this).isa_set();
-}
-
-isl::checked::set set::lexmax() const
-{
-  auto res = isl_set_lexmax(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff set::lexmax_pw_multi_aff() const
-{
-  auto res = isl_set_lexmax_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::set set::lexmin() const
-{
-  auto res = isl_set_lexmin(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff set::lexmin_pw_multi_aff() const
-{
-  auto res = isl_set_lexmin_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::set set::lower_bound(isl::checked::multi_pw_aff lower) const
-{
-  auto res = isl_set_lower_bound_multi_pw_aff(copy(), lower.release());
-  return manage(res);
-}
-
-isl::checked::set set::lower_bound(isl::checked::multi_val lower) const
-{
-  auto res = isl_set_lower_bound_multi_val(copy(), lower.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff set::max_multi_pw_aff() const
-{
-  auto res = isl_set_max_multi_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::val set::max_val(const isl::checked::aff &obj) const
-{
-  auto res = isl_set_max_val(get(), obj.get());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff set::min_multi_pw_aff() const
-{
-  auto res = isl_set_min_multi_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::val set::min_val(const isl::checked::aff &obj) const
-{
-  auto res = isl_set_min_val(get(), obj.get());
-  return manage(res);
-}
-
-class size set::n_basic_set() const
-{
-  auto res = isl_set_n_basic_set(get());
-  return manage(res);
-}
-
-isl::checked::set set::params() const
-{
-  auto res = isl_set_params(copy());
-  return manage(res);
-}
-
-isl::checked::multi_val set::plain_multi_val_if_fixed() const
-{
-  auto res = isl_set_get_plain_multi_val_if_fixed(get());
-  return manage(res);
-}
-
-isl::checked::multi_val set::get_plain_multi_val_if_fixed() const
-{
-  return plain_multi_val_if_fixed();
-}
-
-isl::checked::basic_set set::polyhedral_hull() const
-{
-  auto res = isl_set_polyhedral_hull(copy());
-  return manage(res);
-}
-
-isl::checked::set set::preimage(isl::checked::multi_aff ma) const
-{
-  auto res = isl_set_preimage_multi_aff(copy(), ma.release());
-  return manage(res);
-}
-
-isl::checked::set set::preimage(isl::checked::multi_pw_aff mpa) const
-{
-  auto res = isl_set_preimage_multi_pw_aff(copy(), mpa.release());
-  return manage(res);
-}
-
-isl::checked::set set::preimage(isl::checked::pw_multi_aff pma) const
-{
-  auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release());
-  return manage(res);
-}
-
-isl::checked::union_set set::preimage(const isl::checked::union_pw_multi_aff &upma) const
-{
-  return isl::checked::union_set(*this).preimage(upma);
-}
-
-isl::checked::set set::product(isl::checked::set set2) const
-{
-  auto res = isl_set_product(copy(), set2.release());
-  return manage(res);
-}
-
-isl::checked::set set::project_out_all_params() const
-{
-  auto res = isl_set_project_out_all_params(copy());
-  return manage(res);
-}
-
-isl::checked::set set::project_out_param(isl::checked::id id) const
-{
-  auto res = isl_set_project_out_param_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::set set::project_out_param(const std::string &id) const
-{
-  return this->project_out_param(isl::checked::id(ctx(), id));
-}
-
-isl::checked::set set::project_out_param(isl::checked::id_list list) const
-{
-  auto res = isl_set_project_out_param_id_list(copy(), list.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff set::pw_multi_aff_on_domain(isl::checked::multi_val mv) const
-{
-  auto res = isl_set_pw_multi_aff_on_domain_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::basic_set set::sample() const
-{
-  auto res = isl_set_sample(copy());
-  return manage(res);
-}
-
-isl::checked::point set::sample_point() const
-{
-  auto res = isl_set_sample_point(copy());
-  return manage(res);
-}
-
-isl::checked::set_list set::set_list() const
-{
-  return isl::checked::union_set(*this).set_list();
-}
-
-isl::checked::fixed_box set::simple_fixed_box_hull() const
-{
-  auto res = isl_set_get_simple_fixed_box_hull(get());
-  return manage(res);
-}
-
-isl::checked::fixed_box set::get_simple_fixed_box_hull() const
-{
-  return simple_fixed_box_hull();
-}
-
-isl::checked::space set::space() const
-{
-  auto res = isl_set_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space set::get_space() const
-{
-  return space();
-}
-
-isl::checked::val set::stride(int pos) const
-{
-  auto res = isl_set_get_stride(get(), pos);
-  return manage(res);
-}
-
-isl::checked::val set::get_stride(int pos) const
-{
-  return stride(pos);
-}
-
-isl::checked::set set::subtract(isl::checked::set set2) const
-{
-  auto res = isl_set_subtract(copy(), set2.release());
-  return manage(res);
-}
-
-isl::checked::union_set set::subtract(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::union_set(*this).subtract(uset2);
-}
-
-isl::checked::set set::subtract(const isl::checked::basic_set &set2) const
-{
-  return this->subtract(isl::checked::set(set2));
-}
-
-isl::checked::set set::subtract(const isl::checked::point &set2) const
-{
-  return this->subtract(isl::checked::set(set2));
-}
-
-isl::checked::set_list set::to_list() const
-{
-  auto res = isl_set_to_list(copy());
-  return manage(res);
-}
-
-isl::checked::union_set set::to_union_set() const
-{
-  auto res = isl_set_to_union_set(copy());
-  return manage(res);
-}
-
-isl::checked::map set::translation() const
-{
-  auto res = isl_set_translation(copy());
-  return manage(res);
-}
-
-class size set::tuple_dim() const
-{
-  auto res = isl_set_tuple_dim(get());
-  return manage(res);
-}
-
-isl::checked::set set::unbind_params(isl::checked::multi_id tuple) const
-{
-  auto res = isl_set_unbind_params(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::map set::unbind_params_insert_domain(isl::checked::multi_id domain) const
-{
-  auto res = isl_set_unbind_params_insert_domain(copy(), domain.release());
-  return manage(res);
-}
-
-isl::checked::set set::unite(isl::checked::set set2) const
-{
-  auto res = isl_set_union(copy(), set2.release());
-  return manage(res);
-}
-
-isl::checked::union_set set::unite(const isl::checked::union_set &uset2) const
-{
-  return isl::checked::union_set(*this).unite(uset2);
-}
-
-isl::checked::set set::unite(const isl::checked::basic_set &set2) const
-{
-  return this->unite(isl::checked::set(set2));
-}
-
-isl::checked::set set::unite(const isl::checked::point &set2) const
-{
-  return this->unite(isl::checked::set(set2));
-}
-
-isl::checked::set set::universe(isl::checked::space space)
-{
-  auto res = isl_set_universe(space.release());
-  return manage(res);
-}
-
-isl::checked::basic_set set::unshifted_simple_hull() const
-{
-  auto res = isl_set_unshifted_simple_hull(copy());
-  return manage(res);
-}
-
-isl::checked::map set::unwrap() const
-{
-  auto res = isl_set_unwrap(copy());
-  return manage(res);
-}
-
-isl::checked::set set::upper_bound(isl::checked::multi_pw_aff upper) const
-{
-  auto res = isl_set_upper_bound_multi_pw_aff(copy(), upper.release());
-  return manage(res);
-}
-
-isl::checked::set set::upper_bound(isl::checked::multi_val upper) const
-{
-  auto res = isl_set_upper_bound_multi_val(copy(), upper.release());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const set &obj)
-{
-  char *str = isl_set_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::set_list
-set_list manage(__isl_take isl_set_list *ptr) {
-  return set_list(ptr);
-}
-set_list manage_copy(__isl_keep isl_set_list *ptr) {
-  ptr = isl_set_list_copy(ptr);
-  return set_list(ptr);
-}
-
-set_list::set_list()
-    : ptr(nullptr) {}
-
-set_list::set_list(const set_list &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-set_list::set_list(__isl_take isl_set_list *ptr)
-    : ptr(ptr) {}
-
-set_list::set_list(isl::checked::ctx ctx, int n)
-{
-  auto res = isl_set_list_alloc(ctx.release(), n);
-  ptr = res;
-}
-
-set_list::set_list(isl::checked::set el)
-{
-  auto res = isl_set_list_from_set(el.release());
-  ptr = res;
-}
-
-set_list::set_list(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_set_list_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-set_list &set_list::operator=(set_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-set_list::~set_list() {
-  if (ptr)
-    isl_set_list_free(ptr);
-}
-
-__isl_give isl_set_list *set_list::copy() const & {
-  return isl_set_list_copy(ptr);
-}
-
-__isl_keep isl_set_list *set_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_set_list *set_list::release() {
-  isl_set_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool set_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx set_list::ctx() const {
-  return isl::checked::ctx(isl_set_list_get_ctx(ptr));
-}
-
-isl::checked::set_list set_list::add(isl::checked::set el) const
-{
-  auto res = isl_set_list_add(copy(), el.release());
-  return manage(res);
-}
-
-isl::checked::set set_list::at(int index) const
-{
-  auto res = isl_set_list_get_at(get(), index);
-  return manage(res);
-}
-
-isl::checked::set set_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::checked::set_list set_list::clear() const
-{
-  auto res = isl_set_list_clear(copy());
-  return manage(res);
-}
-
-isl::checked::set_list set_list::concat(isl::checked::set_list list2) const
-{
-  auto res = isl_set_list_concat(copy(), list2.release());
-  return manage(res);
-}
-
-isl::checked::set_list set_list::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl_set_list_drop(copy(), first, n);
-  return manage(res);
-}
-
-stat set_list::foreach(const std::function<stat(isl::checked::set)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::set)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_set_list_foreach(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::set_list set_list::insert(unsigned int pos, isl::checked::set el) const
-{
-  auto res = isl_set_list_insert(copy(), pos, el.release());
-  return manage(res);
-}
-
-class size set_list::size() const
-{
-  auto res = isl_set_list_size(get());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const set_list &obj)
-{
-  char *str = isl_set_list_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::space
-space manage(__isl_take isl_space *ptr) {
-  return space(ptr);
-}
-space manage_copy(__isl_keep isl_space *ptr) {
-  ptr = isl_space_copy(ptr);
-  return space(ptr);
-}
-
-space::space()
-    : ptr(nullptr) {}
-
-space::space(const space &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-space::space(__isl_take isl_space *ptr)
-    : ptr(ptr) {}
-
-space &space::operator=(space obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-space::~space() {
-  if (ptr)
-    isl_space_free(ptr);
-}
-
-__isl_give isl_space *space::copy() const & {
-  return isl_space_copy(ptr);
-}
-
-__isl_keep isl_space *space::get() const {
-  return ptr;
-}
-
-__isl_give isl_space *space::release() {
-  isl_space *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool space::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx space::ctx() const {
-  return isl::checked::ctx(isl_space_get_ctx(ptr));
-}
-
-isl::checked::space space::add_named_tuple(isl::checked::id tuple_id, unsigned int dim) const
-{
-  auto res = isl_space_add_named_tuple_id_ui(copy(), tuple_id.release(), dim);
-  return manage(res);
-}
-
-isl::checked::space space::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
-{
-  return this->add_named_tuple(isl::checked::id(ctx(), tuple_id), dim);
-}
-
-isl::checked::space space::add_param(isl::checked::id id) const
-{
-  auto res = isl_space_add_param_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::space space::add_param(const std::string &id) const
-{
-  return this->add_param(isl::checked::id(ctx(), id));
-}
-
-isl::checked::space space::add_unnamed_tuple(unsigned int dim) const
-{
-  auto res = isl_space_add_unnamed_tuple_ui(copy(), dim);
-  return manage(res);
-}
-
-isl::checked::space space::curry() const
-{
-  auto res = isl_space_curry(copy());
-  return manage(res);
-}
-
-isl::checked::space space::domain() const
-{
-  auto res = isl_space_domain(copy());
-  return manage(res);
-}
-
-isl::checked::multi_aff space::domain_map_multi_aff() const
-{
-  auto res = isl_space_domain_map_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff space::domain_map_pw_multi_aff() const
-{
-  auto res = isl_space_domain_map_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::id space::domain_tuple_id() const
-{
-  auto res = isl_space_get_domain_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::id space::get_domain_tuple_id() const
-{
-  return domain_tuple_id();
-}
-
-isl::checked::space space::flatten_domain() const
-{
-  auto res = isl_space_flatten_domain(copy());
-  return manage(res);
-}
-
-isl::checked::space space::flatten_range() const
-{
-  auto res = isl_space_flatten_range(copy());
-  return manage(res);
-}
-
-boolean space::has_domain_tuple_id() const
-{
-  auto res = isl_space_has_domain_tuple_id(get());
-  return manage(res);
-}
-
-boolean space::has_range_tuple_id() const
-{
-  auto res = isl_space_has_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::multi_aff space::identity_multi_aff_on_domain() const
-{
-  auto res = isl_space_identity_multi_aff_on_domain(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff space::identity_multi_pw_aff_on_domain() const
-{
-  auto res = isl_space_identity_multi_pw_aff_on_domain(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff space::identity_pw_multi_aff_on_domain() const
-{
-  auto res = isl_space_identity_pw_multi_aff_on_domain(copy());
-  return manage(res);
-}
-
-boolean space::is_equal(const isl::checked::space &space2) const
-{
-  auto res = isl_space_is_equal(get(), space2.get());
-  return manage(res);
-}
-
-boolean space::is_wrapping() const
-{
-  auto res = isl_space_is_wrapping(get());
-  return manage(res);
-}
-
-isl::checked::space space::map_from_set() const
-{
-  auto res = isl_space_map_from_set(copy());
-  return manage(res);
-}
-
-isl::checked::multi_aff space::multi_aff(isl::checked::aff_list list) const
-{
-  auto res = isl_space_multi_aff(copy(), list.release());
-  return manage(res);
-}
-
-isl::checked::multi_aff space::multi_aff_on_domain(isl::checked::multi_val mv) const
-{
-  auto res = isl_space_multi_aff_on_domain_multi_val(copy(), mv.release());
-  return manage(res);
-}
-
-isl::checked::multi_id space::multi_id(isl::checked::id_list list) const
-{
-  auto res = isl_space_multi_id(copy(), list.release());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff space::multi_pw_aff(isl::checked::pw_aff_list list) const
-{
-  auto res = isl_space_multi_pw_aff(copy(), list.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff space::multi_union_pw_aff(isl::checked::union_pw_aff_list list) const
-{
-  auto res = isl_space_multi_union_pw_aff(copy(), list.release());
-  return manage(res);
-}
-
-isl::checked::multi_val space::multi_val(isl::checked::val_list list) const
-{
-  auto res = isl_space_multi_val(copy(), list.release());
-  return manage(res);
-}
-
-isl::checked::aff space::param_aff_on_domain(isl::checked::id id) const
-{
-  auto res = isl_space_param_aff_on_domain_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::aff space::param_aff_on_domain(const std::string &id) const
-{
-  return this->param_aff_on_domain(isl::checked::id(ctx(), id));
-}
-
-isl::checked::space space::params() const
-{
-  auto res = isl_space_params(copy());
-  return manage(res);
-}
-
-isl::checked::space space::product(isl::checked::space right) const
-{
-  auto res = isl_space_product(copy(), right.release());
-  return manage(res);
-}
-
-isl::checked::space space::range() const
-{
-  auto res = isl_space_range(copy());
-  return manage(res);
-}
-
-isl::checked::multi_aff space::range_map_multi_aff() const
-{
-  auto res = isl_space_range_map_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff space::range_map_pw_multi_aff() const
-{
-  auto res = isl_space_range_map_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::space space::range_reverse() const
-{
-  auto res = isl_space_range_reverse(copy());
-  return manage(res);
-}
-
-isl::checked::id space::range_tuple_id() const
-{
-  auto res = isl_space_get_range_tuple_id(get());
-  return manage(res);
-}
-
-isl::checked::id space::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::checked::space space::reverse() const
-{
-  auto res = isl_space_reverse(copy());
-  return manage(res);
-}
-
-isl::checked::space space::set_domain_tuple(isl::checked::id id) const
-{
-  auto res = isl_space_set_domain_tuple_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::space space::set_domain_tuple(const std::string &id) const
-{
-  return this->set_domain_tuple(isl::checked::id(ctx(), id));
-}
-
-isl::checked::space space::set_range_tuple(isl::checked::id id) const
-{
-  auto res = isl_space_set_range_tuple_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::space space::set_range_tuple(const std::string &id) const
-{
-  return this->set_range_tuple(isl::checked::id(ctx(), id));
-}
-
-isl::checked::space space::uncurry() const
-{
-  auto res = isl_space_uncurry(copy());
-  return manage(res);
-}
-
-isl::checked::space space::unit(isl::checked::ctx ctx)
-{
-  auto res = isl_space_unit(ctx.release());
-  return manage(res);
-}
-
-isl::checked::map space::universe_map() const
-{
-  auto res = isl_space_universe_map(copy());
-  return manage(res);
-}
-
-isl::checked::set space::universe_set() const
-{
-  auto res = isl_space_universe_set(copy());
-  return manage(res);
-}
-
-isl::checked::space space::unwrap() const
-{
-  auto res = isl_space_unwrap(copy());
-  return manage(res);
-}
-
-isl::checked::space space::wrap() const
-{
-  auto res = isl_space_wrap(copy());
-  return manage(res);
-}
-
-isl::checked::aff space::zero_aff_on_domain() const
-{
-  auto res = isl_space_zero_aff_on_domain(copy());
-  return manage(res);
-}
-
-isl::checked::multi_aff space::zero_multi_aff() const
-{
-  auto res = isl_space_zero_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::multi_pw_aff space::zero_multi_pw_aff() const
-{
-  auto res = isl_space_zero_multi_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff space::zero_multi_union_pw_aff() const
-{
-  auto res = isl_space_zero_multi_union_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::multi_val space::zero_multi_val() const
-{
-  auto res = isl_space_zero_multi_val(copy());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const space &obj)
-{
-  char *str = isl_space_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_access_info
-union_access_info manage(__isl_take isl_union_access_info *ptr) {
-  return union_access_info(ptr);
-}
-union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) {
-  ptr = isl_union_access_info_copy(ptr);
-  return union_access_info(ptr);
-}
-
-union_access_info::union_access_info()
-    : ptr(nullptr) {}
-
-union_access_info::union_access_info(const union_access_info &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-union_access_info::union_access_info(__isl_take isl_union_access_info *ptr)
-    : ptr(ptr) {}
-
-union_access_info::union_access_info(isl::checked::union_map sink)
-{
-  auto res = isl_union_access_info_from_sink(sink.release());
-  ptr = res;
-}
-
-union_access_info &union_access_info::operator=(union_access_info obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_access_info::~union_access_info() {
-  if (ptr)
-    isl_union_access_info_free(ptr);
-}
-
-__isl_give isl_union_access_info *union_access_info::copy() const & {
-  return isl_union_access_info_copy(ptr);
-}
-
-__isl_keep isl_union_access_info *union_access_info::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_access_info *union_access_info::release() {
-  isl_union_access_info *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_access_info::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx union_access_info::ctx() const {
-  return isl::checked::ctx(isl_union_access_info_get_ctx(ptr));
-}
-
-isl::checked::union_flow union_access_info::compute_flow() const
-{
-  auto res = isl_union_access_info_compute_flow(copy());
-  return manage(res);
-}
-
-isl::checked::union_access_info union_access_info::set_kill(isl::checked::union_map kill) const
-{
-  auto res = isl_union_access_info_set_kill(copy(), kill.release());
-  return manage(res);
-}
-
-isl::checked::union_access_info union_access_info::set_may_source(isl::checked::union_map may_source) const
-{
-  auto res = isl_union_access_info_set_may_source(copy(), may_source.release());
-  return manage(res);
-}
-
-isl::checked::union_access_info union_access_info::set_must_source(isl::checked::union_map must_source) const
-{
-  auto res = isl_union_access_info_set_must_source(copy(), must_source.release());
-  return manage(res);
-}
-
-isl::checked::union_access_info union_access_info::set_schedule(isl::checked::schedule schedule) const
-{
-  auto res = isl_union_access_info_set_schedule(copy(), schedule.release());
-  return manage(res);
-}
-
-isl::checked::union_access_info union_access_info::set_schedule_map(isl::checked::union_map schedule_map) const
-{
-  auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_access_info &obj)
-{
-  char *str = isl_union_access_info_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_flow
-union_flow manage(__isl_take isl_union_flow *ptr) {
-  return union_flow(ptr);
-}
-union_flow manage_copy(__isl_keep isl_union_flow *ptr) {
-  ptr = isl_union_flow_copy(ptr);
-  return union_flow(ptr);
-}
-
-union_flow::union_flow()
-    : ptr(nullptr) {}
-
-union_flow::union_flow(const union_flow &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-union_flow::union_flow(__isl_take isl_union_flow *ptr)
-    : ptr(ptr) {}
-
-union_flow &union_flow::operator=(union_flow obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_flow::~union_flow() {
-  if (ptr)
-    isl_union_flow_free(ptr);
-}
-
-__isl_give isl_union_flow *union_flow::copy() const & {
-  return isl_union_flow_copy(ptr);
-}
-
-__isl_keep isl_union_flow *union_flow::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_flow *union_flow::release() {
-  isl_union_flow *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_flow::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx union_flow::ctx() const {
-  return isl::checked::ctx(isl_union_flow_get_ctx(ptr));
-}
-
-isl::checked::union_map union_flow::full_may_dependence() const
-{
-  auto res = isl_union_flow_get_full_may_dependence(get());
-  return manage(res);
-}
-
-isl::checked::union_map union_flow::get_full_may_dependence() const
-{
-  return full_may_dependence();
-}
-
-isl::checked::union_map union_flow::full_must_dependence() const
-{
-  auto res = isl_union_flow_get_full_must_dependence(get());
-  return manage(res);
-}
-
-isl::checked::union_map union_flow::get_full_must_dependence() const
-{
-  return full_must_dependence();
-}
-
-isl::checked::union_map union_flow::may_dependence() const
-{
-  auto res = isl_union_flow_get_may_dependence(get());
-  return manage(res);
-}
-
-isl::checked::union_map union_flow::get_may_dependence() const
-{
-  return may_dependence();
-}
-
-isl::checked::union_map union_flow::may_no_source() const
-{
-  auto res = isl_union_flow_get_may_no_source(get());
-  return manage(res);
-}
-
-isl::checked::union_map union_flow::get_may_no_source() const
-{
-  return may_no_source();
-}
-
-isl::checked::union_map union_flow::must_dependence() const
-{
-  auto res = isl_union_flow_get_must_dependence(get());
-  return manage(res);
-}
-
-isl::checked::union_map union_flow::get_must_dependence() const
-{
-  return must_dependence();
-}
-
-isl::checked::union_map union_flow::must_no_source() const
-{
-  auto res = isl_union_flow_get_must_no_source(get());
-  return manage(res);
-}
-
-isl::checked::union_map union_flow::get_must_no_source() const
-{
-  return must_no_source();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_flow &obj)
-{
-  char *str = isl_union_flow_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_map
-union_map manage(__isl_take isl_union_map *ptr) {
-  return union_map(ptr);
-}
-union_map manage_copy(__isl_keep isl_union_map *ptr) {
-  ptr = isl_union_map_copy(ptr);
-  return union_map(ptr);
-}
-
-union_map::union_map()
-    : ptr(nullptr) {}
-
-union_map::union_map(const union_map &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-union_map::union_map(__isl_take isl_union_map *ptr)
-    : ptr(ptr) {}
-
-union_map::union_map(isl::checked::basic_map bmap)
-{
-  auto res = isl_union_map_from_basic_map(bmap.release());
-  ptr = res;
-}
-
-union_map::union_map(isl::checked::map map)
-{
-  auto res = isl_union_map_from_map(map.release());
-  ptr = res;
-}
-
-union_map::union_map(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_union_map_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-union_map &union_map::operator=(union_map obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_map::~union_map() {
-  if (ptr)
-    isl_union_map_free(ptr);
-}
-
-__isl_give isl_union_map *union_map::copy() const & {
-  return isl_union_map_copy(ptr);
-}
-
-__isl_keep isl_union_map *union_map::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_map *union_map::release() {
-  isl_union_map *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_map::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx union_map::ctx() const {
-  return isl::checked::ctx(isl_union_map_get_ctx(ptr));
-}
-
-isl::checked::union_map union_map::affine_hull() const
-{
-  auto res = isl_union_map_affine_hull(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::apply_domain(isl::checked::union_map umap2) const
-{
-  auto res = isl_union_map_apply_domain(copy(), umap2.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::apply_range(isl::checked::union_map umap2) const
-{
-  auto res = isl_union_map_apply_range(copy(), umap2.release());
-  return manage(res);
-}
-
-isl::checked::map union_map::as_map() const
-{
-  auto res = isl_union_map_as_map(copy());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff union_map::as_multi_union_pw_aff() const
-{
-  auto res = isl_union_map_as_multi_union_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_map::as_union_pw_multi_aff() const
-{
-  auto res = isl_union_map_as_union_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_map::bind_range(isl::checked::multi_id tuple) const
-{
-  auto res = isl_union_map_bind_range(copy(), tuple.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::coalesce() const
-{
-  auto res = isl_union_map_coalesce(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::compute_divs() const
-{
-  auto res = isl_union_map_compute_divs(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::curry() const
-{
-  auto res = isl_union_map_curry(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_map::deltas() const
-{
-  auto res = isl_union_map_deltas(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::detect_equalities() const
-{
-  auto res = isl_union_map_detect_equalities(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_map::domain() const
-{
-  auto res = isl_union_map_domain(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::domain_factor_domain() const
-{
-  auto res = isl_union_map_domain_factor_domain(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::domain_factor_range() const
-{
-  auto res = isl_union_map_domain_factor_range(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::domain_map() const
-{
-  auto res = isl_union_map_domain_map(copy());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_map::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl_union_map_domain_map_union_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::domain_product(isl::checked::union_map umap2) const
-{
-  auto res = isl_union_map_domain_product(copy(), umap2.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::empty(isl::checked::ctx ctx)
-{
-  auto res = isl_union_map_empty_ctx(ctx.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::eq_at(isl::checked::multi_union_pw_aff mupa) const
-{
-  auto res = isl_union_map_eq_at_multi_union_pw_aff(copy(), mupa.release());
-  return manage(res);
-}
-
-boolean union_map::every_map(const std::function<boolean(isl::checked::map)> &test) const
-{
-  struct test_data {
-    std::function<boolean(isl::checked::map)> func;
-  } test_data = { test };
-  auto test_lambda = [](isl_map *arg_0, void *arg_1) -> isl_bool {
-    auto *data = static_cast<struct test_data *>(arg_1);
-    auto ret = (data->func)(manage_copy(arg_0));
-    return ret.release();
-  };
-  auto res = isl_union_map_every_map(get(), test_lambda, &test_data);
-  return manage(res);
-}
-
-isl::checked::map union_map::extract_map(isl::checked::space space) const
-{
-  auto res = isl_union_map_extract_map(get(), space.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::factor_domain() const
-{
-  auto res = isl_union_map_factor_domain(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::factor_range() const
-{
-  auto res = isl_union_map_factor_range(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::fixed_power(isl::checked::val exp) const
-{
-  auto res = isl_union_map_fixed_power_val(copy(), exp.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::fixed_power(long exp) const
-{
-  return this->fixed_power(isl::checked::val(ctx(), exp));
-}
-
-stat union_map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::map)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::union_map union_map::from(isl::checked::multi_union_pw_aff mupa)
-{
-  auto res = isl_union_map_from_multi_union_pw_aff(mupa.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::from(isl::checked::union_pw_multi_aff upma)
-{
-  auto res = isl_union_map_from_union_pw_multi_aff(upma.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::from_domain(isl::checked::union_set uset)
-{
-  auto res = isl_union_map_from_domain(uset.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::from_domain_and_range(isl::checked::union_set domain, isl::checked::union_set range)
-{
-  auto res = isl_union_map_from_domain_and_range(domain.release(), range.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::from_range(isl::checked::union_set uset)
-{
-  auto res = isl_union_map_from_range(uset.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::gist(isl::checked::union_map context) const
-{
-  auto res = isl_union_map_gist(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::gist_domain(isl::checked::union_set uset) const
-{
-  auto res = isl_union_map_gist_domain(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::gist_params(isl::checked::set set) const
-{
-  auto res = isl_union_map_gist_params(copy(), set.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::gist_range(isl::checked::union_set uset) const
-{
-  auto res = isl_union_map_gist_range(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::intersect(isl::checked::union_map umap2) const
-{
-  auto res = isl_union_map_intersect(copy(), umap2.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::intersect_domain(isl::checked::space space) const
-{
-  auto res = isl_union_map_intersect_domain_space(copy(), space.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::intersect_domain(isl::checked::union_set uset) const
-{
-  auto res = isl_union_map_intersect_domain_union_set(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::intersect_domain_factor_domain(isl::checked::union_map factor) const
-{
-  auto res = isl_union_map_intersect_domain_factor_domain(copy(), factor.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::intersect_domain_factor_range(isl::checked::union_map factor) const
-{
-  auto res = isl_union_map_intersect_domain_factor_range(copy(), factor.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::intersect_params(isl::checked::set set) const
-{
-  auto res = isl_union_map_intersect_params(copy(), set.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::intersect_range(isl::checked::space space) const
-{
-  auto res = isl_union_map_intersect_range_space(copy(), space.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::intersect_range(isl::checked::union_set uset) const
-{
-  auto res = isl_union_map_intersect_range_union_set(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::intersect_range_factor_domain(isl::checked::union_map factor) const
-{
-  auto res = isl_union_map_intersect_range_factor_domain(copy(), factor.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::intersect_range_factor_range(isl::checked::union_map factor) const
-{
-  auto res = isl_union_map_intersect_range_factor_range(copy(), factor.release());
-  return manage(res);
-}
-
-boolean union_map::is_bijective() const
-{
-  auto res = isl_union_map_is_bijective(get());
-  return manage(res);
-}
-
-boolean union_map::is_disjoint(const isl::checked::union_map &umap2) const
-{
-  auto res = isl_union_map_is_disjoint(get(), umap2.get());
-  return manage(res);
-}
-
-boolean union_map::is_empty() const
-{
-  auto res = isl_union_map_is_empty(get());
-  return manage(res);
-}
-
-boolean union_map::is_equal(const isl::checked::union_map &umap2) const
-{
-  auto res = isl_union_map_is_equal(get(), umap2.get());
-  return manage(res);
-}
-
-boolean union_map::is_injective() const
-{
-  auto res = isl_union_map_is_injective(get());
-  return manage(res);
-}
-
-boolean union_map::is_single_valued() const
-{
-  auto res = isl_union_map_is_single_valued(get());
-  return manage(res);
-}
-
-boolean union_map::is_strict_subset(const isl::checked::union_map &umap2) const
-{
-  auto res = isl_union_map_is_strict_subset(get(), umap2.get());
-  return manage(res);
-}
-
-boolean union_map::is_subset(const isl::checked::union_map &umap2) const
-{
-  auto res = isl_union_map_is_subset(get(), umap2.get());
-  return manage(res);
-}
-
-boolean union_map::isa_map() const
-{
-  auto res = isl_union_map_isa_map(get());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::lexmax() const
-{
-  auto res = isl_union_map_lexmax(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::lexmin() const
-{
-  auto res = isl_union_map_lexmin(copy());
-  return manage(res);
-}
-
-isl::checked::map_list union_map::map_list() const
-{
-  auto res = isl_union_map_get_map_list(get());
-  return manage(res);
-}
-
-isl::checked::map_list union_map::get_map_list() const
-{
-  return map_list();
-}
-
-isl::checked::union_map union_map::polyhedral_hull() const
-{
-  auto res = isl_union_map_polyhedral_hull(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::preimage_domain(isl::checked::multi_aff ma) const
-{
-  auto res = isl_union_map_preimage_domain_multi_aff(copy(), ma.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::preimage_domain(isl::checked::multi_pw_aff mpa) const
-{
-  auto res = isl_union_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::preimage_domain(isl::checked::pw_multi_aff pma) const
-{
-  auto res = isl_union_map_preimage_domain_pw_multi_aff(copy(), pma.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::preimage_domain(isl::checked::union_pw_multi_aff upma) const
-{
-  auto res = isl_union_map_preimage_domain_union_pw_multi_aff(copy(), upma.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::preimage_range(isl::checked::multi_aff ma) const
-{
-  auto res = isl_union_map_preimage_range_multi_aff(copy(), ma.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::preimage_range(isl::checked::pw_multi_aff pma) const
-{
-  auto res = isl_union_map_preimage_range_pw_multi_aff(copy(), pma.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::preimage_range(isl::checked::union_pw_multi_aff upma) const
-{
-  auto res = isl_union_map_preimage_range_union_pw_multi_aff(copy(), upma.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::product(isl::checked::union_map umap2) const
-{
-  auto res = isl_union_map_product(copy(), umap2.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::project_out_all_params() const
-{
-  auto res = isl_union_map_project_out_all_params(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_map::range() const
-{
-  auto res = isl_union_map_range(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::range_factor_domain() const
-{
-  auto res = isl_union_map_range_factor_domain(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::range_factor_range() const
-{
-  auto res = isl_union_map_range_factor_range(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::range_map() const
-{
-  auto res = isl_union_map_range_map(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::range_product(isl::checked::union_map umap2) const
-{
-  auto res = isl_union_map_range_product(copy(), umap2.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::range_reverse() const
-{
-  auto res = isl_union_map_range_reverse(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::reverse() const
-{
-  auto res = isl_union_map_reverse(copy());
-  return manage(res);
-}
-
-isl::checked::space union_map::space() const
-{
-  auto res = isl_union_map_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space union_map::get_space() const
-{
-  return space();
-}
-
-isl::checked::union_map union_map::subtract(isl::checked::union_map umap2) const
-{
-  auto res = isl_union_map_subtract(copy(), umap2.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::subtract_domain(isl::checked::union_set dom) const
-{
-  auto res = isl_union_map_subtract_domain(copy(), dom.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::subtract_range(isl::checked::union_set dom) const
-{
-  auto res = isl_union_map_subtract_range(copy(), dom.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::uncurry() const
-{
-  auto res = isl_union_map_uncurry(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::unite(isl::checked::union_map umap2) const
-{
-  auto res = isl_union_map_union(copy(), umap2.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::universe() const
-{
-  auto res = isl_union_map_universe(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_map::wrap() const
-{
-  auto res = isl_union_map_wrap(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_map::zip() const
-{
-  auto res = isl_union_map_zip(copy());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_map &obj)
-{
-  char *str = isl_union_map_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_pw_aff
-union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) {
-  return union_pw_aff(ptr);
-}
-union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) {
-  ptr = isl_union_pw_aff_copy(ptr);
-  return union_pw_aff(ptr);
-}
-
-union_pw_aff::union_pw_aff()
-    : ptr(nullptr) {}
-
-union_pw_aff::union_pw_aff(const union_pw_aff &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr)
-    : ptr(ptr) {}
-
-union_pw_aff::union_pw_aff(isl::checked::aff aff)
-{
-  auto res = isl_union_pw_aff_from_aff(aff.release());
-  ptr = res;
-}
-
-union_pw_aff::union_pw_aff(isl::checked::pw_aff pa)
-{
-  auto res = isl_union_pw_aff_from_pw_aff(pa.release());
-  ptr = res;
-}
-
-union_pw_aff::union_pw_aff(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_union_pw_aff_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-union_pw_aff &union_pw_aff::operator=(union_pw_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_pw_aff::~union_pw_aff() {
-  if (ptr)
-    isl_union_pw_aff_free(ptr);
-}
-
-__isl_give isl_union_pw_aff *union_pw_aff::copy() const & {
-  return isl_union_pw_aff_copy(ptr);
-}
-
-__isl_keep isl_union_pw_aff *union_pw_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_pw_aff *union_pw_aff::release() {
-  isl_union_pw_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_pw_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx union_pw_aff::ctx() const {
-  return isl::checked::ctx(isl_union_pw_aff_get_ctx(ptr));
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).add(multi2);
-}
-
-isl::checked::union_pw_aff union_pw_aff::add(isl::checked::union_pw_aff upa2) const
-{
-  auto res = isl_union_pw_aff_add(copy(), upa2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).add(upma2);
-}
-
-isl::checked::union_pw_aff union_pw_aff::add(const isl::checked::aff &upa2) const
-{
-  return this->add(isl::checked::union_pw_aff(upa2));
-}
-
-isl::checked::union_pw_aff union_pw_aff::add(const isl::checked::pw_aff &upa2) const
-{
-  return this->add(isl::checked::union_pw_aff(upa2));
-}
-
-isl::checked::union_pw_multi_aff union_pw_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).apply(upma2);
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::as_multi_union_pw_aff() const
-{
-  return isl::checked::union_pw_multi_aff(*this).as_multi_union_pw_aff();
-}
-
-isl::checked::pw_multi_aff union_pw_aff::as_pw_multi_aff() const
-{
-  return isl::checked::union_pw_multi_aff(*this).as_pw_multi_aff();
-}
-
-isl::checked::union_map union_pw_aff::as_union_map() const
-{
-  return isl::checked::union_pw_multi_aff(*this).as_union_map();
-}
-
-isl::checked::union_pw_aff union_pw_aff::at(int pos) const
-{
-  return isl::checked::multi_union_pw_aff(*this).at(pos);
-}
-
-isl::checked::union_set union_pw_aff::bind(const isl::checked::multi_id &tuple) const
-{
-  return isl::checked::multi_union_pw_aff(*this).bind(tuple);
-}
-
-isl::checked::union_set union_pw_aff::bind(isl::checked::id id) const
-{
-  auto res = isl_union_pw_aff_bind_id(copy(), id.release());
-  return manage(res);
-}
-
-isl::checked::union_set union_pw_aff::bind(const std::string &id) const
-{
-  return this->bind(isl::checked::id(ctx(), id));
-}
-
-isl::checked::union_pw_aff union_pw_aff::coalesce() const
-{
-  auto res = isl_union_pw_aff_coalesce(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_pw_aff::domain() const
-{
-  auto res = isl_union_pw_aff_domain(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff union_pw_aff::extract_pw_multi_aff(const isl::checked::space &space) const
-{
-  return isl::checked::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::checked::union_pw_multi_aff union_pw_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).flat_range_product(upma2);
-}
-
-isl::checked::union_pw_aff union_pw_aff::gist(isl::checked::union_set context) const
-{
-  auto res = isl_union_pw_aff_gist(copy(), context.release());
-  return manage(res);
-}
-
-boolean union_pw_aff::has_range_tuple_id() const
-{
-  return isl::checked::multi_union_pw_aff(*this).has_range_tuple_id();
-}
-
-isl::checked::union_pw_aff union_pw_aff::intersect_domain(isl::checked::space space) const
-{
-  auto res = isl_union_pw_aff_intersect_domain_space(copy(), space.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff union_pw_aff::intersect_domain(isl::checked::union_set uset) const
-{
-  auto res = isl_union_pw_aff_intersect_domain_union_set(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff union_pw_aff::intersect_domain_wrapped_domain(isl::checked::union_set uset) const
-{
-  auto res = isl_union_pw_aff_intersect_domain_wrapped_domain(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff union_pw_aff::intersect_domain_wrapped_range(isl::checked::union_set uset) const
-{
-  auto res = isl_union_pw_aff_intersect_domain_wrapped_range(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff union_pw_aff::intersect_params(isl::checked::set set) const
-{
-  auto res = isl_union_pw_aff_intersect_params(copy(), set.release());
-  return manage(res);
-}
-
-boolean union_pw_aff::involves_locals() const
-{
-  return isl::checked::union_pw_multi_aff(*this).involves_locals();
-}
-
-boolean union_pw_aff::involves_nan() const
-{
-  return isl::checked::multi_union_pw_aff(*this).involves_nan();
-}
-
-boolean union_pw_aff::isa_pw_multi_aff() const
-{
-  return isl::checked::union_pw_multi_aff(*this).isa_pw_multi_aff();
-}
-
-isl::checked::union_pw_aff_list union_pw_aff::list() const
-{
-  return isl::checked::multi_union_pw_aff(*this).list();
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::neg() const
-{
-  return isl::checked::multi_union_pw_aff(*this).neg();
-}
-
-boolean union_pw_aff::plain_is_empty() const
-{
-  return isl::checked::union_pw_multi_aff(*this).plain_is_empty();
-}
-
-boolean union_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).plain_is_equal(multi2);
-}
-
-isl::checked::union_pw_multi_aff union_pw_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
-}
-
-isl::checked::union_pw_aff union_pw_aff::pullback(isl::checked::union_pw_multi_aff upma) const
-{
-  auto res = isl_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff_list union_pw_aff::pw_multi_aff_list() const
-{
-  return isl::checked::union_pw_multi_aff(*this).pw_multi_aff_list();
-}
-
-isl::checked::union_pw_multi_aff union_pw_aff::range_factor_domain() const
-{
-  return isl::checked::union_pw_multi_aff(*this).range_factor_domain();
-}
-
-isl::checked::union_pw_multi_aff union_pw_aff::range_factor_range() const
-{
-  return isl::checked::union_pw_multi_aff(*this).range_factor_range();
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).range_product(multi2);
-}
-
-isl::checked::union_pw_multi_aff union_pw_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).range_product(upma2);
-}
-
-isl::checked::id union_pw_aff::range_tuple_id() const
-{
-  return isl::checked::multi_union_pw_aff(*this).range_tuple_id();
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::reset_range_tuple_id() const
-{
-  return isl::checked::multi_union_pw_aff(*this).reset_range_tuple_id();
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::scale(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::multi_union_pw_aff(*this).scale(mv);
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::scale(const isl::checked::val &v) const
-{
-  return isl::checked::multi_union_pw_aff(*this).scale(v);
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::scale(long v) const
-{
-  return this->scale(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::scale_down(const isl::checked::multi_val &mv) const
-{
-  return isl::checked::multi_union_pw_aff(*this).scale_down(mv);
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::scale_down(const isl::checked::val &v) const
-{
-  return isl::checked::multi_union_pw_aff(*this).scale_down(v);
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::scale_down(long v) const
-{
-  return this->scale_down(isl::checked::val(ctx(), v));
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
-{
-  return isl::checked::multi_union_pw_aff(*this).set_at(pos, el);
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::set_range_tuple(const isl::checked::id &id) const
-{
-  return isl::checked::multi_union_pw_aff(*this).set_range_tuple(id);
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::set_range_tuple(const std::string &id) const
-{
-  return this->set_range_tuple(isl::checked::id(ctx(), id));
-}
-
-class size union_pw_aff::size() const
-{
-  return isl::checked::multi_union_pw_aff(*this).size();
-}
-
-isl::checked::space union_pw_aff::space() const
-{
-  auto res = isl_union_pw_aff_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space union_pw_aff::get_space() const
-{
-  return space();
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).sub(multi2);
-}
-
-isl::checked::union_pw_aff union_pw_aff::sub(isl::checked::union_pw_aff upa2) const
-{
-  auto res = isl_union_pw_aff_sub(copy(), upa2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).sub(upma2);
-}
-
-isl::checked::union_pw_aff union_pw_aff::sub(const isl::checked::aff &upa2) const
-{
-  return this->sub(isl::checked::union_pw_aff(upa2));
-}
-
-isl::checked::union_pw_aff union_pw_aff::sub(const isl::checked::pw_aff &upa2) const
-{
-  return this->sub(isl::checked::union_pw_aff(upa2));
-}
-
-isl::checked::union_pw_aff union_pw_aff::subtract_domain(isl::checked::space space) const
-{
-  auto res = isl_union_pw_aff_subtract_domain_space(copy(), space.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff union_pw_aff::subtract_domain(isl::checked::union_set uset) const
-{
-  auto res = isl_union_pw_aff_subtract_domain_union_set(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff_list union_pw_aff::to_list() const
-{
-  auto res = isl_union_pw_aff_to_list(copy());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff union_pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
-{
-  return isl::checked::multi_union_pw_aff(*this).union_add(mupa2);
-}
-
-isl::checked::union_pw_aff union_pw_aff::union_add(isl::checked::union_pw_aff upa2) const
-{
-  auto res = isl_union_pw_aff_union_add(copy(), upa2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
-{
-  return isl::checked::union_pw_multi_aff(*this).union_add(upma2);
-}
-
-isl::checked::union_pw_aff union_pw_aff::union_add(const isl::checked::aff &upa2) const
-{
-  return this->union_add(isl::checked::union_pw_aff(upa2));
-}
-
-isl::checked::union_pw_aff union_pw_aff::union_add(const isl::checked::pw_aff &upa2) const
-{
-  return this->union_add(isl::checked::union_pw_aff(upa2));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_pw_aff &obj)
-{
-  char *str = isl_union_pw_aff_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_pw_aff_list
-union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
-  return union_pw_aff_list(ptr);
-}
-union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
-  ptr = isl_union_pw_aff_list_copy(ptr);
-  return union_pw_aff_list(ptr);
-}
-
-union_pw_aff_list::union_pw_aff_list()
-    : ptr(nullptr) {}
-
-union_pw_aff_list::union_pw_aff_list(const union_pw_aff_list &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr)
-    : ptr(ptr) {}
-
-union_pw_aff_list::union_pw_aff_list(isl::checked::ctx ctx, int n)
-{
-  auto res = isl_union_pw_aff_list_alloc(ctx.release(), n);
-  ptr = res;
-}
-
-union_pw_aff_list::union_pw_aff_list(isl::checked::union_pw_aff el)
-{
-  auto res = isl_union_pw_aff_list_from_union_pw_aff(el.release());
-  ptr = res;
-}
-
-union_pw_aff_list::union_pw_aff_list(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_union_pw_aff_list_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-union_pw_aff_list &union_pw_aff_list::operator=(union_pw_aff_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_pw_aff_list::~union_pw_aff_list() {
-  if (ptr)
-    isl_union_pw_aff_list_free(ptr);
-}
-
-__isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
-  return isl_union_pw_aff_list_copy(ptr);
-}
-
-__isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_pw_aff_list *union_pw_aff_list::release() {
-  isl_union_pw_aff_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_pw_aff_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx union_pw_aff_list::ctx() const {
-  return isl::checked::ctx(isl_union_pw_aff_list_get_ctx(ptr));
-}
-
-isl::checked::union_pw_aff_list union_pw_aff_list::add(isl::checked::union_pw_aff el) const
-{
-  auto res = isl_union_pw_aff_list_add(copy(), el.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff union_pw_aff_list::at(int index) const
-{
-  auto res = isl_union_pw_aff_list_get_at(get(), index);
-  return manage(res);
-}
-
-isl::checked::union_pw_aff union_pw_aff_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::checked::union_pw_aff_list union_pw_aff_list::clear() const
-{
-  auto res = isl_union_pw_aff_list_clear(copy());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff_list union_pw_aff_list::concat(isl::checked::union_pw_aff_list list2) const
-{
-  auto res = isl_union_pw_aff_list_concat(copy(), list2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_aff_list union_pw_aff_list::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl_union_pw_aff_list_drop(copy(), first, n);
-  return manage(res);
-}
-
-stat union_pw_aff_list::foreach(const std::function<stat(isl::checked::union_pw_aff)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::union_pw_aff)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_union_pw_aff *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_union_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::union_pw_aff_list union_pw_aff_list::insert(unsigned int pos, isl::checked::union_pw_aff el) const
-{
-  auto res = isl_union_pw_aff_list_insert(copy(), pos, el.release());
-  return manage(res);
-}
-
-class size union_pw_aff_list::size() const
-{
-  auto res = isl_union_pw_aff_list_size(get());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_pw_aff_list &obj)
-{
-  char *str = isl_union_pw_aff_list_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_pw_multi_aff
-union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) {
-  return union_pw_multi_aff(ptr);
-}
-union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) {
-  ptr = isl_union_pw_multi_aff_copy(ptr);
-  return union_pw_multi_aff(ptr);
-}
-
-union_pw_multi_aff::union_pw_multi_aff()
-    : ptr(nullptr) {}
-
-union_pw_multi_aff::union_pw_multi_aff(const union_pw_multi_aff &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr)
-    : ptr(ptr) {}
-
-union_pw_multi_aff::union_pw_multi_aff(isl::checked::multi_aff ma)
-{
-  auto res = isl_union_pw_multi_aff_from_multi_aff(ma.release());
-  ptr = res;
-}
-
-union_pw_multi_aff::union_pw_multi_aff(isl::checked::pw_multi_aff pma)
-{
-  auto res = isl_union_pw_multi_aff_from_pw_multi_aff(pma.release());
-  ptr = res;
-}
-
-union_pw_multi_aff::union_pw_multi_aff(isl::checked::union_pw_aff upa)
-{
-  auto res = isl_union_pw_multi_aff_from_union_pw_aff(upa.release());
-  ptr = res;
-}
-
-union_pw_multi_aff::union_pw_multi_aff(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_union_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-union_pw_multi_aff &union_pw_multi_aff::operator=(union_pw_multi_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_pw_multi_aff::~union_pw_multi_aff() {
-  if (ptr)
-    isl_union_pw_multi_aff_free(ptr);
-}
-
-__isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & {
-  return isl_union_pw_multi_aff_copy(ptr);
-}
-
-__isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_pw_multi_aff *union_pw_multi_aff::release() {
-  isl_union_pw_multi_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_pw_multi_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx union_pw_multi_aff::ctx() const {
-  return isl::checked::ctx(isl_union_pw_multi_aff_get_ctx(ptr));
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::add(isl::checked::union_pw_multi_aff upma2) const
-{
-  auto res = isl_union_pw_multi_aff_add(copy(), upma2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::apply(isl::checked::union_pw_multi_aff upma2) const
-{
-  auto res = isl_union_pw_multi_aff_apply_union_pw_multi_aff(copy(), upma2.release());
-  return manage(res);
-}
-
-isl::checked::multi_union_pw_aff union_pw_multi_aff::as_multi_union_pw_aff() const
-{
-  auto res = isl_union_pw_multi_aff_as_multi_union_pw_aff(copy());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff union_pw_multi_aff::as_pw_multi_aff() const
-{
-  auto res = isl_union_pw_multi_aff_as_pw_multi_aff(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_pw_multi_aff::as_union_map() const
-{
-  auto res = isl_union_pw_multi_aff_as_union_map(copy());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::coalesce() const
-{
-  auto res = isl_union_pw_multi_aff_coalesce(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_pw_multi_aff::domain() const
-{
-  auto res = isl_union_pw_multi_aff_domain(copy());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::empty(isl::checked::ctx ctx)
-{
-  auto res = isl_union_pw_multi_aff_empty_ctx(ctx.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff union_pw_multi_aff::extract_pw_multi_aff(isl::checked::space space) const
-{
-  auto res = isl_union_pw_multi_aff_extract_pw_multi_aff(get(), space.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::flat_range_product(isl::checked::union_pw_multi_aff upma2) const
-{
-  auto res = isl_union_pw_multi_aff_flat_range_product(copy(), upma2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::gist(isl::checked::union_set context) const
-{
-  auto res = isl_union_pw_multi_aff_gist(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::checked::space space) const
-{
-  auto res = isl_union_pw_multi_aff_intersect_domain_space(copy(), space.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::checked::union_set uset) const
-{
-  auto res = isl_union_pw_multi_aff_intersect_domain_union_set(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_domain(isl::checked::union_set uset) const
-{
-  auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_domain(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_range(isl::checked::union_set uset) const
-{
-  auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_range(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_params(isl::checked::set set) const
-{
-  auto res = isl_union_pw_multi_aff_intersect_params(copy(), set.release());
-  return manage(res);
-}
-
-boolean union_pw_multi_aff::involves_locals() const
-{
-  auto res = isl_union_pw_multi_aff_involves_locals(get());
-  return manage(res);
-}
-
-boolean union_pw_multi_aff::isa_pw_multi_aff() const
-{
-  auto res = isl_union_pw_multi_aff_isa_pw_multi_aff(get());
-  return manage(res);
-}
-
-boolean union_pw_multi_aff::plain_is_empty() const
-{
-  auto res = isl_union_pw_multi_aff_plain_is_empty(get());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::preimage_domain_wrapped_domain(isl::checked::union_pw_multi_aff upma2) const
-{
-  auto res = isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff(copy(), upma2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::pullback(isl::checked::union_pw_multi_aff upma2) const
-{
-  auto res = isl_union_pw_multi_aff_pullback_union_pw_multi_aff(copy(), upma2.release());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff_list union_pw_multi_aff::pw_multi_aff_list() const
-{
-  auto res = isl_union_pw_multi_aff_get_pw_multi_aff_list(get());
-  return manage(res);
-}
-
-isl::checked::pw_multi_aff_list union_pw_multi_aff::get_pw_multi_aff_list() const
-{
-  return pw_multi_aff_list();
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::range_factor_domain() const
-{
-  auto res = isl_union_pw_multi_aff_range_factor_domain(copy());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::range_factor_range() const
-{
-  auto res = isl_union_pw_multi_aff_range_factor_range(copy());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::range_product(isl::checked::union_pw_multi_aff upma2) const
-{
-  auto res = isl_union_pw_multi_aff_range_product(copy(), upma2.release());
-  return manage(res);
-}
-
-isl::checked::space union_pw_multi_aff::space() const
-{
-  auto res = isl_union_pw_multi_aff_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space union_pw_multi_aff::get_space() const
-{
-  return space();
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::sub(isl::checked::union_pw_multi_aff upma2) const
-{
-  auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::checked::space space) const
-{
-  auto res = isl_union_pw_multi_aff_subtract_domain_space(copy(), space.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::checked::union_set uset) const
-{
-  auto res = isl_union_pw_multi_aff_subtract_domain_union_set(copy(), uset.release());
-  return manage(res);
-}
-
-isl::checked::union_pw_multi_aff union_pw_multi_aff::union_add(isl::checked::union_pw_multi_aff upma2) const
-{
-  auto res = isl_union_pw_multi_aff_union_add(copy(), upma2.release());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_pw_multi_aff &obj)
-{
-  char *str = isl_union_pw_multi_aff_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_set
-union_set manage(__isl_take isl_union_set *ptr) {
-  return union_set(ptr);
-}
-union_set manage_copy(__isl_keep isl_union_set *ptr) {
-  ptr = isl_union_set_copy(ptr);
-  return union_set(ptr);
-}
-
-union_set::union_set()
-    : ptr(nullptr) {}
-
-union_set::union_set(const union_set &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-union_set::union_set(__isl_take isl_union_set *ptr)
-    : ptr(ptr) {}
-
-union_set::union_set(isl::checked::basic_set bset)
-{
-  auto res = isl_union_set_from_basic_set(bset.release());
-  ptr = res;
-}
-
-union_set::union_set(isl::checked::point pnt)
-{
-  auto res = isl_union_set_from_point(pnt.release());
-  ptr = res;
-}
-
-union_set::union_set(isl::checked::set set)
-{
-  auto res = isl_union_set_from_set(set.release());
-  ptr = res;
-}
-
-union_set::union_set(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_union_set_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-union_set &union_set::operator=(union_set obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_set::~union_set() {
-  if (ptr)
-    isl_union_set_free(ptr);
-}
-
-__isl_give isl_union_set *union_set::copy() const & {
-  return isl_union_set_copy(ptr);
-}
-
-__isl_keep isl_union_set *union_set::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_set *union_set::release() {
-  isl_union_set *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_set::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx union_set::ctx() const {
-  return isl::checked::ctx(isl_union_set_get_ctx(ptr));
-}
-
-isl::checked::union_set union_set::affine_hull() const
-{
-  auto res = isl_union_set_affine_hull(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::apply(isl::checked::union_map umap) const
-{
-  auto res = isl_union_set_apply(copy(), umap.release());
-  return manage(res);
-}
-
-isl::checked::set union_set::as_set() const
-{
-  auto res = isl_union_set_as_set(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::coalesce() const
-{
-  auto res = isl_union_set_coalesce(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::compute_divs() const
-{
-  auto res = isl_union_set_compute_divs(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::detect_equalities() const
-{
-  auto res = isl_union_set_detect_equalities(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::empty(isl::checked::ctx ctx)
-{
-  auto res = isl_union_set_empty_ctx(ctx.release());
-  return manage(res);
-}
-
-boolean union_set::every_set(const std::function<boolean(isl::checked::set)> &test) const
-{
-  struct test_data {
-    std::function<boolean(isl::checked::set)> func;
-  } test_data = { test };
-  auto test_lambda = [](isl_set *arg_0, void *arg_1) -> isl_bool {
-    auto *data = static_cast<struct test_data *>(arg_1);
-    auto ret = (data->func)(manage_copy(arg_0));
-    return ret.release();
-  };
-  auto res = isl_union_set_every_set(get(), test_lambda, &test_data);
-  return manage(res);
-}
-
-isl::checked::set union_set::extract_set(isl::checked::space space) const
-{
-  auto res = isl_union_set_extract_set(get(), space.release());
-  return manage(res);
-}
-
-stat union_set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::point)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-stat union_set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::set)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::union_set union_set::gist(isl::checked::union_set context) const
-{
-  auto res = isl_union_set_gist(copy(), context.release());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::gist_params(isl::checked::set set) const
-{
-  auto res = isl_union_set_gist_params(copy(), set.release());
-  return manage(res);
-}
-
-isl::checked::union_map union_set::identity() const
-{
-  auto res = isl_union_set_identity(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::intersect(isl::checked::union_set uset2) const
-{
-  auto res = isl_union_set_intersect(copy(), uset2.release());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::intersect_params(isl::checked::set set) const
-{
-  auto res = isl_union_set_intersect_params(copy(), set.release());
-  return manage(res);
-}
-
-boolean union_set::is_disjoint(const isl::checked::union_set &uset2) const
-{
-  auto res = isl_union_set_is_disjoint(get(), uset2.get());
-  return manage(res);
-}
-
-boolean union_set::is_empty() const
-{
-  auto res = isl_union_set_is_empty(get());
-  return manage(res);
-}
-
-boolean union_set::is_equal(const isl::checked::union_set &uset2) const
-{
-  auto res = isl_union_set_is_equal(get(), uset2.get());
-  return manage(res);
-}
-
-boolean union_set::is_strict_subset(const isl::checked::union_set &uset2) const
-{
-  auto res = isl_union_set_is_strict_subset(get(), uset2.get());
-  return manage(res);
-}
-
-boolean union_set::is_subset(const isl::checked::union_set &uset2) const
-{
-  auto res = isl_union_set_is_subset(get(), uset2.get());
-  return manage(res);
-}
-
-boolean union_set::isa_set() const
-{
-  auto res = isl_union_set_isa_set(get());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::lexmax() const
-{
-  auto res = isl_union_set_lexmax(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::lexmin() const
-{
-  auto res = isl_union_set_lexmin(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::polyhedral_hull() const
-{
-  auto res = isl_union_set_polyhedral_hull(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::preimage(isl::checked::multi_aff ma) const
-{
-  auto res = isl_union_set_preimage_multi_aff(copy(), ma.release());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::preimage(isl::checked::pw_multi_aff pma) const
-{
-  auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::preimage(isl::checked::union_pw_multi_aff upma) const
-{
-  auto res = isl_union_set_preimage_union_pw_multi_aff(copy(), upma.release());
-  return manage(res);
-}
-
-isl::checked::point union_set::sample_point() const
-{
-  auto res = isl_union_set_sample_point(copy());
-  return manage(res);
-}
-
-isl::checked::set_list union_set::set_list() const
-{
-  auto res = isl_union_set_get_set_list(get());
-  return manage(res);
-}
-
-isl::checked::set_list union_set::get_set_list() const
-{
-  return set_list();
-}
-
-isl::checked::space union_set::space() const
-{
-  auto res = isl_union_set_get_space(get());
-  return manage(res);
-}
-
-isl::checked::space union_set::get_space() const
-{
-  return space();
-}
-
-isl::checked::union_set union_set::subtract(isl::checked::union_set uset2) const
-{
-  auto res = isl_union_set_subtract(copy(), uset2.release());
-  return manage(res);
-}
-
-isl::checked::union_set_list union_set::to_list() const
-{
-  auto res = isl_union_set_to_list(copy());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::unite(isl::checked::union_set uset2) const
-{
-  auto res = isl_union_set_union(copy(), uset2.release());
-  return manage(res);
-}
-
-isl::checked::union_set union_set::universe() const
-{
-  auto res = isl_union_set_universe(copy());
-  return manage(res);
-}
-
-isl::checked::union_map union_set::unwrap() const
-{
-  auto res = isl_union_set_unwrap(copy());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_set &obj)
-{
-  char *str = isl_union_set_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_set_list
-union_set_list manage(__isl_take isl_union_set_list *ptr) {
-  return union_set_list(ptr);
-}
-union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) {
-  ptr = isl_union_set_list_copy(ptr);
-  return union_set_list(ptr);
-}
-
-union_set_list::union_set_list()
-    : ptr(nullptr) {}
-
-union_set_list::union_set_list(const union_set_list &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-union_set_list::union_set_list(__isl_take isl_union_set_list *ptr)
-    : ptr(ptr) {}
-
-union_set_list::union_set_list(isl::checked::ctx ctx, int n)
-{
-  auto res = isl_union_set_list_alloc(ctx.release(), n);
-  ptr = res;
-}
-
-union_set_list::union_set_list(isl::checked::union_set el)
-{
-  auto res = isl_union_set_list_from_union_set(el.release());
-  ptr = res;
-}
-
-union_set_list::union_set_list(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_union_set_list_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-union_set_list &union_set_list::operator=(union_set_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_set_list::~union_set_list() {
-  if (ptr)
-    isl_union_set_list_free(ptr);
-}
-
-__isl_give isl_union_set_list *union_set_list::copy() const & {
-  return isl_union_set_list_copy(ptr);
-}
-
-__isl_keep isl_union_set_list *union_set_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_set_list *union_set_list::release() {
-  isl_union_set_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_set_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx union_set_list::ctx() const {
-  return isl::checked::ctx(isl_union_set_list_get_ctx(ptr));
-}
-
-isl::checked::union_set_list union_set_list::add(isl::checked::union_set el) const
-{
-  auto res = isl_union_set_list_add(copy(), el.release());
-  return manage(res);
-}
-
-isl::checked::union_set union_set_list::at(int index) const
-{
-  auto res = isl_union_set_list_get_at(get(), index);
-  return manage(res);
-}
-
-isl::checked::union_set union_set_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::checked::union_set_list union_set_list::clear() const
-{
-  auto res = isl_union_set_list_clear(copy());
-  return manage(res);
-}
-
-isl::checked::union_set_list union_set_list::concat(isl::checked::union_set_list list2) const
-{
-  auto res = isl_union_set_list_concat(copy(), list2.release());
-  return manage(res);
-}
-
-isl::checked::union_set_list union_set_list::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl_union_set_list_drop(copy(), first, n);
-  return manage(res);
-}
-
-stat union_set_list::foreach(const std::function<stat(isl::checked::union_set)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::union_set)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_union_set *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_union_set_list_foreach(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::union_set_list union_set_list::insert(unsigned int pos, isl::checked::union_set el) const
-{
-  auto res = isl_union_set_list_insert(copy(), pos, el.release());
-  return manage(res);
-}
-
-class size union_set_list::size() const
-{
-  auto res = isl_union_set_list_size(get());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_set_list &obj)
-{
-  char *str = isl_union_set_list_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::val
-val manage(__isl_take isl_val *ptr) {
-  return val(ptr);
-}
-val manage_copy(__isl_keep isl_val *ptr) {
-  ptr = isl_val_copy(ptr);
-  return val(ptr);
-}
-
-val::val()
-    : ptr(nullptr) {}
-
-val::val(const val &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-val::val(__isl_take isl_val *ptr)
-    : ptr(ptr) {}
-
-val::val(isl::checked::ctx ctx, long i)
-{
-  auto res = isl_val_int_from_si(ctx.release(), i);
-  ptr = res;
-}
-
-val::val(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_val_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-val &val::operator=(val obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-val::~val() {
-  if (ptr)
-    isl_val_free(ptr);
-}
-
-__isl_give isl_val *val::copy() const & {
-  return isl_val_copy(ptr);
-}
-
-__isl_keep isl_val *val::get() const {
-  return ptr;
-}
-
-__isl_give isl_val *val::release() {
-  isl_val *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool val::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx val::ctx() const {
-  return isl::checked::ctx(isl_val_get_ctx(ptr));
-}
-
-isl::checked::val val::abs() const
-{
-  auto res = isl_val_abs(copy());
-  return manage(res);
-}
-
-boolean val::abs_eq(const isl::checked::val &v2) const
-{
-  auto res = isl_val_abs_eq(get(), v2.get());
-  return manage(res);
-}
-
-boolean val::abs_eq(long v2) const
-{
-  return this->abs_eq(isl::checked::val(ctx(), v2));
-}
-
-isl::checked::val val::add(isl::checked::val v2) const
-{
-  auto res = isl_val_add(copy(), v2.release());
-  return manage(res);
-}
-
-isl::checked::val val::add(long v2) const
-{
-  return this->add(isl::checked::val(ctx(), v2));
-}
-
-isl::checked::val val::ceil() const
-{
-  auto res = isl_val_ceil(copy());
-  return manage(res);
-}
-
-int val::cmp_si(long i) const
-{
-  auto res = isl_val_cmp_si(get(), i);
-  return res;
-}
-
-long val::den_si() const
-{
-  auto res = isl_val_get_den_si(get());
-  return res;
-}
-
-long val::get_den_si() const
-{
-  return den_si();
-}
-
-isl::checked::val val::div(isl::checked::val v2) const
-{
-  auto res = isl_val_div(copy(), v2.release());
-  return manage(res);
-}
-
-isl::checked::val val::div(long v2) const
-{
-  return this->div(isl::checked::val(ctx(), v2));
-}
-
-boolean val::eq(const isl::checked::val &v2) const
-{
-  auto res = isl_val_eq(get(), v2.get());
-  return manage(res);
-}
-
-boolean val::eq(long v2) const
-{
-  return this->eq(isl::checked::val(ctx(), v2));
-}
-
-isl::checked::val val::floor() const
-{
-  auto res = isl_val_floor(copy());
-  return manage(res);
-}
-
-isl::checked::val val::gcd(isl::checked::val v2) const
-{
-  auto res = isl_val_gcd(copy(), v2.release());
-  return manage(res);
-}
-
-isl::checked::val val::gcd(long v2) const
-{
-  return this->gcd(isl::checked::val(ctx(), v2));
-}
-
-boolean val::ge(const isl::checked::val &v2) const
-{
-  auto res = isl_val_ge(get(), v2.get());
-  return manage(res);
-}
-
-boolean val::ge(long v2) const
-{
-  return this->ge(isl::checked::val(ctx(), v2));
-}
-
-boolean val::gt(const isl::checked::val &v2) const
-{
-  auto res = isl_val_gt(get(), v2.get());
-  return manage(res);
-}
-
-boolean val::gt(long v2) const
-{
-  return this->gt(isl::checked::val(ctx(), v2));
-}
-
-isl::checked::val val::infty(isl::checked::ctx ctx)
-{
-  auto res = isl_val_infty(ctx.release());
-  return manage(res);
-}
-
-isl::checked::val val::inv() const
-{
-  auto res = isl_val_inv(copy());
-  return manage(res);
-}
-
-boolean val::is_divisible_by(const isl::checked::val &v2) const
-{
-  auto res = isl_val_is_divisible_by(get(), v2.get());
-  return manage(res);
-}
-
-boolean val::is_divisible_by(long v2) const
-{
-  return this->is_divisible_by(isl::checked::val(ctx(), v2));
-}
-
-boolean val::is_infty() const
-{
-  auto res = isl_val_is_infty(get());
-  return manage(res);
-}
-
-boolean val::is_int() const
-{
-  auto res = isl_val_is_int(get());
-  return manage(res);
-}
-
-boolean val::is_nan() const
-{
-  auto res = isl_val_is_nan(get());
-  return manage(res);
-}
-
-boolean val::is_neg() const
-{
-  auto res = isl_val_is_neg(get());
-  return manage(res);
-}
-
-boolean val::is_neginfty() const
-{
-  auto res = isl_val_is_neginfty(get());
-  return manage(res);
-}
-
-boolean val::is_negone() const
-{
-  auto res = isl_val_is_negone(get());
-  return manage(res);
-}
-
-boolean val::is_nonneg() const
-{
-  auto res = isl_val_is_nonneg(get());
-  return manage(res);
-}
-
-boolean val::is_nonpos() const
-{
-  auto res = isl_val_is_nonpos(get());
-  return manage(res);
-}
-
-boolean val::is_one() const
-{
-  auto res = isl_val_is_one(get());
-  return manage(res);
-}
-
-boolean val::is_pos() const
-{
-  auto res = isl_val_is_pos(get());
-  return manage(res);
-}
-
-boolean val::is_rat() const
-{
-  auto res = isl_val_is_rat(get());
-  return manage(res);
-}
-
-boolean val::is_zero() const
-{
-  auto res = isl_val_is_zero(get());
-  return manage(res);
-}
-
-boolean val::le(const isl::checked::val &v2) const
-{
-  auto res = isl_val_le(get(), v2.get());
-  return manage(res);
-}
-
-boolean val::le(long v2) const
-{
-  return this->le(isl::checked::val(ctx(), v2));
-}
-
-boolean val::lt(const isl::checked::val &v2) const
-{
-  auto res = isl_val_lt(get(), v2.get());
-  return manage(res);
-}
-
-boolean val::lt(long v2) const
-{
-  return this->lt(isl::checked::val(ctx(), v2));
-}
-
-isl::checked::val val::max(isl::checked::val v2) const
-{
-  auto res = isl_val_max(copy(), v2.release());
-  return manage(res);
-}
-
-isl::checked::val val::max(long v2) const
-{
-  return this->max(isl::checked::val(ctx(), v2));
-}
-
-isl::checked::val val::min(isl::checked::val v2) const
-{
-  auto res = isl_val_min(copy(), v2.release());
-  return manage(res);
-}
-
-isl::checked::val val::min(long v2) const
-{
-  return this->min(isl::checked::val(ctx(), v2));
-}
-
-isl::checked::val val::mod(isl::checked::val v2) const
-{
-  auto res = isl_val_mod(copy(), v2.release());
-  return manage(res);
-}
-
-isl::checked::val val::mod(long v2) const
-{
-  return this->mod(isl::checked::val(ctx(), v2));
-}
-
-isl::checked::val val::mul(isl::checked::val v2) const
-{
-  auto res = isl_val_mul(copy(), v2.release());
-  return manage(res);
-}
-
-isl::checked::val val::mul(long v2) const
-{
-  return this->mul(isl::checked::val(ctx(), v2));
-}
-
-isl::checked::val val::nan(isl::checked::ctx ctx)
-{
-  auto res = isl_val_nan(ctx.release());
-  return manage(res);
-}
-
-boolean val::ne(const isl::checked::val &v2) const
-{
-  auto res = isl_val_ne(get(), v2.get());
-  return manage(res);
-}
-
-boolean val::ne(long v2) const
-{
-  return this->ne(isl::checked::val(ctx(), v2));
-}
-
-isl::checked::val val::neg() const
-{
-  auto res = isl_val_neg(copy());
-  return manage(res);
-}
-
-isl::checked::val val::neginfty(isl::checked::ctx ctx)
-{
-  auto res = isl_val_neginfty(ctx.release());
-  return manage(res);
-}
-
-isl::checked::val val::negone(isl::checked::ctx ctx)
-{
-  auto res = isl_val_negone(ctx.release());
-  return manage(res);
-}
-
-long val::num_si() const
-{
-  auto res = isl_val_get_num_si(get());
-  return res;
-}
-
-long val::get_num_si() const
-{
-  return num_si();
-}
-
-isl::checked::val val::one(isl::checked::ctx ctx)
-{
-  auto res = isl_val_one(ctx.release());
-  return manage(res);
-}
-
-isl::checked::val val::pow2() const
-{
-  auto res = isl_val_pow2(copy());
-  return manage(res);
-}
-
-int val::sgn() const
-{
-  auto res = isl_val_sgn(get());
-  return res;
-}
-
-isl::checked::val val::sub(isl::checked::val v2) const
-{
-  auto res = isl_val_sub(copy(), v2.release());
-  return manage(res);
-}
-
-isl::checked::val val::sub(long v2) const
-{
-  return this->sub(isl::checked::val(ctx(), v2));
-}
-
-isl::checked::val_list val::to_list() const
-{
-  auto res = isl_val_to_list(copy());
-  return manage(res);
-}
-
-isl::checked::val val::trunc() const
-{
-  auto res = isl_val_trunc(copy());
-  return manage(res);
-}
-
-isl::checked::val val::zero(isl::checked::ctx ctx)
-{
-  auto res = isl_val_zero(ctx.release());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const val &obj)
-{
-  char *str = isl_val_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::val_list
-val_list manage(__isl_take isl_val_list *ptr) {
-  return val_list(ptr);
-}
-val_list manage_copy(__isl_keep isl_val_list *ptr) {
-  ptr = isl_val_list_copy(ptr);
-  return val_list(ptr);
-}
-
-val_list::val_list()
-    : ptr(nullptr) {}
-
-val_list::val_list(const val_list &obj)
-    : ptr(nullptr)
-{
-  ptr = obj.copy();
-}
-
-val_list::val_list(__isl_take isl_val_list *ptr)
-    : ptr(ptr) {}
-
-val_list::val_list(isl::checked::ctx ctx, int n)
-{
-  auto res = isl_val_list_alloc(ctx.release(), n);
-  ptr = res;
-}
-
-val_list::val_list(isl::checked::val el)
-{
-  auto res = isl_val_list_from_val(el.release());
-  ptr = res;
-}
-
-val_list::val_list(isl::checked::ctx ctx, const std::string &str)
-{
-  auto res = isl_val_list_read_from_str(ctx.release(), str.c_str());
-  ptr = res;
-}
-
-val_list &val_list::operator=(val_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-val_list::~val_list() {
-  if (ptr)
-    isl_val_list_free(ptr);
-}
-
-__isl_give isl_val_list *val_list::copy() const & {
-  return isl_val_list_copy(ptr);
-}
-
-__isl_keep isl_val_list *val_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_val_list *val_list::release() {
-  isl_val_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool val_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::checked::ctx val_list::ctx() const {
-  return isl::checked::ctx(isl_val_list_get_ctx(ptr));
-}
-
-isl::checked::val_list val_list::add(isl::checked::val el) const
-{
-  auto res = isl_val_list_add(copy(), el.release());
-  return manage(res);
-}
-
-isl::checked::val_list val_list::add(long el) const
-{
-  return this->add(isl::checked::val(ctx(), el));
-}
-
-isl::checked::val val_list::at(int index) const
-{
-  auto res = isl_val_list_get_at(get(), index);
-  return manage(res);
-}
-
-isl::checked::val val_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::checked::val_list val_list::clear() const
-{
-  auto res = isl_val_list_clear(copy());
-  return manage(res);
-}
-
-isl::checked::val_list val_list::concat(isl::checked::val_list list2) const
-{
-  auto res = isl_val_list_concat(copy(), list2.release());
-  return manage(res);
-}
-
-isl::checked::val_list val_list::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl_val_list_drop(copy(), first, n);
-  return manage(res);
-}
-
-stat val_list::foreach(const std::function<stat(isl::checked::val)> &fn) const
-{
-  struct fn_data {
-    std::function<stat(isl::checked::val)> func;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_val *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    auto ret = (data->func)(manage(arg_0));
-    return ret.release();
-  };
-  auto res = isl_val_list_foreach(get(), fn_lambda, &fn_data);
-  return manage(res);
-}
-
-isl::checked::val_list val_list::insert(unsigned int pos, isl::checked::val el) const
-{
-  auto res = isl_val_list_insert(copy(), pos, el.release());
-  return manage(res);
-}
-
-isl::checked::val_list val_list::insert(unsigned int pos, long el) const
-{
-  return this->insert(pos, isl::checked::val(ctx(), el));
-}
-
-class size val_list::size() const
-{
-  auto res = isl_val_list_size(get());
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const val_list &obj)
-{
-  char *str = isl_val_list_to_str(obj.get());
-  if (!str) {
-    os.setstate(std::ios_base::badbit);
-    return os;
-  }
-  os << str;
-  free(str);
-  return os;
-}
-} // namespace checked
-} // namespace isl
-
-#endif /* ISL_CPP_CHECKED */
diff --git a/polly/lib/External/isl/include/isl/cpp.h b/polly/lib/External/isl/include/isl/cpp.h
deleted file mode 100644 (file)
index 42b5cb6..0000000
+++ /dev/null
@@ -1,28653 +0,0 @@
-/// These are automatically generated C++ bindings for isl.
-///
-/// isl is a library for computing with integer sets and maps described by
-/// Presburger formulas. On top of this, isl provides various tools for
-/// polyhedral compilation, ranging from dependence analysis over scheduling
-/// to AST generation.
-
-#ifndef ISL_CPP
-#define ISL_CPP
-
-#include <isl/ctx.h>
-#include <isl/options.h>
-
-#include <functional>
-#include <memory>
-#include <ostream>
-#include <stdexcept>
-#include <string>
-#include <type_traits>
-
-/* ISL_USE_EXCEPTIONS should be defined to 1 if exceptions are available.
- * gcc and clang define __cpp_exceptions; MSVC and xlC define _CPPUNWIND.
- * Older versions of gcc (e.g., 4.9) only define __EXCEPTIONS.
- * If exceptions are not available, any error condition will result
- * in an abort.
- */
-#ifndef ISL_USE_EXCEPTIONS
-#if defined(__cpp_exceptions) || defined(_CPPUNWIND) || defined(__EXCEPTIONS)
-#define ISL_USE_EXCEPTIONS     1
-#else
-#define ISL_USE_EXCEPTIONS     0
-#endif
-#endif
-
-namespace isl {
-
-class ctx {
-       isl_ctx *ptr;
-public:
-       /* implicit */ ctx(isl_ctx *ctx) : ptr(ctx) {}
-       isl_ctx *release() {
-               auto tmp = ptr;
-               ptr = nullptr;
-               return tmp;
-       }
-       isl_ctx *get() {
-               return ptr;
-       }
-};
-
-/* Macros hiding try/catch.
- * If exceptions are not available, then no exceptions will be thrown and
- * there is nothing to catch.
- */
-#if ISL_USE_EXCEPTIONS
-#define ISL_CPP_TRY            try
-#define ISL_CPP_CATCH_ALL      catch (...)
-#else
-#define ISL_CPP_TRY            if (1)
-#define ISL_CPP_CATCH_ALL      if (0)
-#endif
-
-#if ISL_USE_EXCEPTIONS
-
-/* Class capturing isl errors.
- *
- * The what() return value is stored in a reference counted string
- * to ensure that the copy constructor and the assignment operator
- * do not throw any exceptions.
- */
-class exception : public std::exception {
-       std::shared_ptr<std::string> what_str;
-
-protected:
-       inline exception(const char *what_arg, const char *msg,
-               const char *file, int line);
-public:
-       exception() {}
-       exception(const char *what_arg) {
-               what_str = std::make_shared<std::string>(what_arg);
-       }
-       static inline void throw_error(enum isl_error error, const char *msg,
-               const char *file, int line);
-       virtual const char *what() const noexcept {
-               return what_str->c_str();
-       }
-
-       /* Default behavior on error conditions that occur inside isl calls
-        * performed from inside the bindings.
-        * In the case exceptions are available, isl should continue
-        * without printing a warning since the warning message
-        * will be included in the exception thrown from inside the bindings.
-        */
-       static constexpr auto on_error = ISL_ON_ERROR_CONTINUE;
-       /* Wrapper for throwing an exception with the given message.
-        */
-       static void throw_invalid(const char *msg, const char *file, int line) {
-               throw_error(isl_error_invalid, msg, file, line);
-       }
-       static inline void throw_last_error(ctx ctx);
-};
-
-/* Create an exception of a type described by "what_arg", with
- * error message "msg" in line "line" of file "file".
- *
- * Create a string holding the what() return value that
- * corresponds to what isl would have printed.
- * If no error message or no error file was set, then use "what_arg" instead.
- */
-exception::exception(const char *what_arg, const char *msg, const char *file,
-       int line)
-{
-       if (!msg || !file)
-               what_str = std::make_shared<std::string>(what_arg);
-       else
-               what_str = std::make_shared<std::string>(std::string(file) +
-                                   ":" + std::to_string(line) + ": " + msg);
-}
-
-class exception_abort : public exception {
-       friend exception;
-       exception_abort(const char *msg, const char *file, int line) :
-               exception("execution aborted", msg, file, line) {}
-};
-
-class exception_alloc : public exception {
-       friend exception;
-       exception_alloc(const char *msg, const char *file, int line) :
-               exception("memory allocation failure", msg, file, line) {}
-};
-
-class exception_unknown : public exception {
-       friend exception;
-       exception_unknown(const char *msg, const char *file, int line) :
-               exception("unknown failure", msg, file, line) {}
-};
-
-class exception_internal : public exception {
-       friend exception;
-       exception_internal(const char *msg, const char *file, int line) :
-               exception("internal error", msg, file, line) {}
-};
-
-class exception_invalid : public exception {
-       friend exception;
-       exception_invalid(const char *msg, const char *file, int line) :
-               exception("invalid argument", msg, file, line) {}
-};
-
-class exception_quota : public exception {
-       friend exception;
-       exception_quota(const char *msg, const char *file, int line) :
-               exception("quota exceeded", msg, file, line) {}
-};
-
-class exception_unsupported : public exception {
-       friend exception;
-       exception_unsupported(const char *msg, const char *file, int line) :
-               exception("unsupported operation", msg, file, line) {}
-};
-
-/* Throw an exception of the class that corresponds to "error", with
- * error message "msg" in line "line" of file "file".
- *
- * isl_error_none is treated as an invalid error type.
- */
-void exception::throw_error(enum isl_error error, const char *msg,
-       const char *file, int line)
-{
-       switch (error) {
-       case isl_error_none:
-               break;
-       case isl_error_abort: throw exception_abort(msg, file, line);
-       case isl_error_alloc: throw exception_alloc(msg, file, line);
-       case isl_error_unknown: throw exception_unknown(msg, file, line);
-       case isl_error_internal: throw exception_internal(msg, file, line);
-       case isl_error_invalid: throw exception_invalid(msg, file, line);
-       case isl_error_quota: throw exception_quota(msg, file, line);
-       case isl_error_unsupported:
-                               throw exception_unsupported(msg, file, line);
-       }
-
-       throw exception_invalid("invalid error type", file, line);
-}
-
-/* Throw an exception corresponding to the last error on "ctx" and
- * reset the error.
- *
- * If "ctx" is NULL or if it is not in an error state at the start,
- * then an invalid argument exception is thrown.
- */
-void exception::throw_last_error(ctx ctx)
-{
-       enum isl_error error;
-       const char *msg, *file;
-       int line;
-
-       error = isl_ctx_last_error(ctx.get());
-       msg = isl_ctx_last_error_msg(ctx.get());
-       file = isl_ctx_last_error_file(ctx.get());
-       line = isl_ctx_last_error_line(ctx.get());
-       isl_ctx_reset_error(ctx.get());
-
-       throw_error(error, msg, file, line);
-}
-
-#else
-
-#include <stdio.h>
-#include <stdlib.h>
-
-class exception {
-public:
-       /* Default behavior on error conditions that occur inside isl calls
-        * performed from inside the bindings.
-        * In the case exceptions are not available, isl should abort.
-        */
-       static constexpr auto on_error = ISL_ON_ERROR_ABORT;
-       /* Wrapper for throwing an exception with the given message.
-        * In the case exceptions are not available, print an error and abort.
-        */
-       static void throw_invalid(const char *msg, const char *file, int line) {
-               fprintf(stderr, "%s:%d: %s\n", file, line, msg);
-               abort();
-       }
-       /* Throw an exception corresponding to the last
-        * error on "ctx".
-        * isl should already abort when an error condition occurs,
-        * so this function should never be called.
-        */
-       static void throw_last_error(ctx ctx) {
-               abort();
-       }
-};
-
-#endif
-
-/* Helper class for setting the on_error and resetting the option
- * to the original value when leaving the scope.
- */
-class options_scoped_set_on_error {
-       isl_ctx *ctx;
-       int saved_on_error;
-public:
-       options_scoped_set_on_error(class ctx ctx, int on_error) {
-               this->ctx = ctx.get();
-               saved_on_error = isl_options_get_on_error(this->ctx);
-               isl_options_set_on_error(this->ctx, on_error);
-       }
-       ~options_scoped_set_on_error() {
-               isl_options_set_on_error(ctx, saved_on_error);
-       }
-};
-
-} // namespace isl
-
-#include <isl/id.h>
-#include <isl/space.h>
-#include <isl/val.h>
-#include <isl/aff.h>
-#include <isl/set.h>
-#include <isl/map.h>
-#include <isl/ilp.h>
-#include <isl/union_set.h>
-#include <isl/union_map.h>
-#include <isl/flow.h>
-#include <isl/schedule.h>
-#include <isl/schedule_node.h>
-#include <isl/ast_build.h>
-#include <isl/fixed_box.h>
-
-namespace isl {
-
-// forward declarations
-class aff;
-class aff_list;
-class ast_build;
-class ast_expr;
-class ast_expr_id;
-class ast_expr_int;
-class ast_expr_op;
-class ast_expr_op_access;
-class ast_expr_op_add;
-class ast_expr_op_address_of;
-class ast_expr_op_and;
-class ast_expr_op_and_then;
-class ast_expr_op_call;
-class ast_expr_op_cond;
-class ast_expr_op_div;
-class ast_expr_op_eq;
-class ast_expr_op_fdiv_q;
-class ast_expr_op_ge;
-class ast_expr_op_gt;
-class ast_expr_op_le;
-class ast_expr_op_lt;
-class ast_expr_op_max;
-class ast_expr_op_member;
-class ast_expr_op_min;
-class ast_expr_op_minus;
-class ast_expr_op_mul;
-class ast_expr_op_or;
-class ast_expr_op_or_else;
-class ast_expr_op_pdiv_q;
-class ast_expr_op_pdiv_r;
-class ast_expr_op_select;
-class ast_expr_op_sub;
-class ast_expr_op_zdiv_r;
-class ast_node;
-class ast_node_block;
-class ast_node_for;
-class ast_node_if;
-class ast_node_list;
-class ast_node_mark;
-class ast_node_user;
-class basic_map;
-class basic_set;
-class fixed_box;
-class id;
-class id_list;
-class map;
-class map_list;
-class multi_aff;
-class multi_id;
-class multi_pw_aff;
-class multi_union_pw_aff;
-class multi_val;
-class point;
-class pw_aff;
-class pw_aff_list;
-class pw_multi_aff;
-class pw_multi_aff_list;
-class schedule;
-class schedule_constraints;
-class schedule_node;
-class schedule_node_band;
-class schedule_node_context;
-class schedule_node_domain;
-class schedule_node_expansion;
-class schedule_node_extension;
-class schedule_node_filter;
-class schedule_node_guard;
-class schedule_node_leaf;
-class schedule_node_mark;
-class schedule_node_sequence;
-class schedule_node_set;
-class set;
-class set_list;
-class space;
-class union_access_info;
-class union_flow;
-class union_map;
-class union_pw_aff;
-class union_pw_aff_list;
-class union_pw_multi_aff;
-class union_set;
-class union_set_list;
-class val;
-class val_list;
-
-// declarations for isl::aff
-inline aff manage(__isl_take isl_aff *ptr);
-inline aff manage_copy(__isl_keep isl_aff *ptr);
-
-class aff {
-  friend inline aff manage(__isl_take isl_aff *ptr);
-  friend inline aff manage_copy(__isl_keep isl_aff *ptr);
-
-protected:
-  isl_aff *ptr = nullptr;
-
-  inline explicit aff(__isl_take isl_aff *ptr);
-
-public:
-  inline /* implicit */ aff();
-  inline /* implicit */ aff(const aff &obj);
-  inline explicit aff(isl::ctx ctx, const std::string &str);
-  inline aff &operator=(aff obj);
-  inline ~aff();
-  inline __isl_give isl_aff *copy() const &;
-  inline __isl_give isl_aff *copy() && = delete;
-  inline __isl_keep isl_aff *get() const;
-  inline __isl_give isl_aff *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::aff add(isl::aff aff2) const;
-  inline isl::multi_aff add(const isl::multi_aff &multi2) const;
-  inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_aff add(const isl::pw_aff &pwaff2) const;
-  inline isl::pw_multi_aff add(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_aff add(const isl::union_pw_aff &upa2) const;
-  inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::aff add_constant(isl::val v) const;
-  inline isl::aff add_constant(long v) const;
-  inline isl::multi_aff add_constant(const isl::multi_val &mv) const;
-  inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::aff as_aff() const;
-  inline isl::map as_map() const;
-  inline isl::multi_aff as_multi_aff() const;
-  inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::set as_set() const;
-  inline isl::union_map as_union_map() const;
-  inline isl::aff at(int pos) const;
-  inline isl::basic_set bind(isl::id id) const;
-  inline isl::basic_set bind(const std::string &id) const;
-  inline isl::basic_set bind(const isl::multi_id &tuple) const;
-  inline isl::pw_aff bind_domain(const isl::multi_id &tuple) const;
-  inline isl::pw_aff bind_domain_wrapped_domain(const isl::multi_id &tuple) const;
-  inline isl::aff ceil() const;
-  inline isl::pw_aff coalesce() const;
-  inline isl::pw_aff cond(const isl::pw_aff &pwaff_true, const isl::pw_aff &pwaff_false) const;
-  inline isl::multi_val constant_multi_val() const;
-  inline isl::val constant_val() const;
-  inline isl::val get_constant_val() const;
-  inline isl::aff div(isl::aff aff2) const;
-  inline isl::pw_aff div(const isl::pw_aff &pa2) const;
-  inline isl::set domain() const;
-  inline isl::set eq_set(isl::aff aff2) const;
-  inline isl::set eq_set(const isl::pw_aff &pwaff2) const;
-  inline isl::val eval(isl::point pnt) const;
-  inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
-  inline isl::multi_aff flat_range_product(const isl::multi_aff &multi2) const;
-  inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff flat_range_product(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::aff floor() const;
-  inline void foreach_piece(const std::function<void(isl::set, isl::multi_aff)> &fn) const;
-  inline isl::set ge_set(isl::aff aff2) const;
-  inline isl::set ge_set(const isl::pw_aff &pwaff2) const;
-  inline isl::aff gist(isl::set context) const;
-  inline isl::union_pw_aff gist(const isl::union_set &context) const;
-  inline isl::aff gist(const isl::basic_set &context) const;
-  inline isl::aff gist(const isl::point &context) const;
-  inline isl::set gt_set(isl::aff aff2) const;
-  inline isl::set gt_set(const isl::pw_aff &pwaff2) const;
-  inline bool has_range_tuple_id() const;
-  inline isl::multi_aff identity() const;
-  inline isl::pw_aff insert_domain(const isl::space &domain) const;
-  inline isl::pw_aff intersect_domain(const isl::set &set) const;
-  inline isl::union_pw_aff intersect_domain(const isl::space &space) const;
-  inline isl::union_pw_aff intersect_domain(const isl::union_set &uset) const;
-  inline isl::union_pw_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const;
-  inline isl::union_pw_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
-  inline isl::pw_aff intersect_params(const isl::set &set) const;
-  inline bool involves_locals() const;
-  inline bool involves_nan() const;
-  inline bool involves_param(const isl::id &id) const;
-  inline bool involves_param(const std::string &id) const;
-  inline bool involves_param(const isl::id_list &list) const;
-  inline bool is_cst() const;
-  inline bool isa_aff() const;
-  inline bool isa_multi_aff() const;
-  inline bool isa_pw_multi_aff() const;
-  inline isl::set le_set(isl::aff aff2) const;
-  inline isl::set le_set(const isl::pw_aff &pwaff2) const;
-  inline isl::aff_list list() const;
-  inline isl::set lt_set(isl::aff aff2) const;
-  inline isl::set lt_set(const isl::pw_aff &pwaff2) const;
-  inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
-  inline isl::pw_aff max(const isl::pw_aff &pwaff2) const;
-  inline isl::multi_val max_multi_val() const;
-  inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
-  inline isl::pw_aff min(const isl::pw_aff &pwaff2) const;
-  inline isl::multi_val min_multi_val() const;
-  inline isl::aff mod(isl::val mod) const;
-  inline isl::aff mod(long mod) const;
-  inline isl::aff mul(isl::aff aff2) const;
-  inline isl::pw_aff mul(const isl::pw_aff &pwaff2) const;
-  inline unsigned n_piece() const;
-  inline isl::set ne_set(isl::aff aff2) const;
-  inline isl::set ne_set(const isl::pw_aff &pwaff2) const;
-  inline isl::aff neg() const;
-  inline bool plain_is_empty() const;
-  inline bool plain_is_equal(const isl::multi_aff &multi2) const;
-  inline bool plain_is_equal(const isl::multi_pw_aff &multi2) const;
-  inline bool plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::multi_aff product(const isl::multi_aff &multi2) const;
-  inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
-  inline isl::pw_multi_aff product(const isl::pw_multi_aff &pma2) const;
-  inline isl::aff pullback(isl::multi_aff ma) const;
-  inline isl::pw_aff pullback(const isl::multi_pw_aff &mpa) const;
-  inline isl::pw_aff pullback(const isl::pw_multi_aff &pma) const;
-  inline isl::union_pw_aff pullback(const isl::union_pw_multi_aff &upma) const;
-  inline isl::aff pullback(const isl::aff &ma) const;
-  inline isl::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::pw_multi_aff range_factor_domain() const;
-  inline isl::pw_multi_aff range_factor_range() const;
-  inline isl::multi_aff range_product(const isl::multi_aff &multi2) const;
-  inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff range_product(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::id range_tuple_id() const;
-  inline isl::multi_aff reset_range_tuple_id() const;
-  inline isl::aff scale(isl::val v) const;
-  inline isl::aff scale(long v) const;
-  inline isl::multi_aff scale(const isl::multi_val &mv) const;
-  inline isl::aff scale_down(isl::val v) const;
-  inline isl::aff scale_down(long v) const;
-  inline isl::multi_aff scale_down(const isl::multi_val &mv) const;
-  inline isl::multi_aff set_at(int pos, const isl::aff &el) const;
-  inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
-  inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
-  inline isl::multi_aff set_range_tuple(const isl::id &id) const;
-  inline isl::multi_aff set_range_tuple(const std::string &id) const;
-  inline unsigned size() const;
-  inline isl::space space() const;
-  inline isl::aff sub(isl::aff aff2) const;
-  inline isl::multi_aff sub(const isl::multi_aff &multi2) const;
-  inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_aff sub(const isl::pw_aff &pwaff2) const;
-  inline isl::pw_multi_aff sub(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_aff sub(const isl::union_pw_aff &upa2) const;
-  inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_aff subtract_domain(const isl::set &set) const;
-  inline isl::union_pw_aff subtract_domain(const isl::space &space) const;
-  inline isl::union_pw_aff subtract_domain(const isl::union_set &uset) const;
-  inline isl::pw_aff tdiv_q(const isl::pw_aff &pa2) const;
-  inline isl::pw_aff tdiv_r(const isl::pw_aff &pa2) const;
-  inline isl::aff_list to_list() const;
-  inline isl::multi_pw_aff to_multi_pw_aff() const;
-  inline isl::multi_union_pw_aff to_multi_union_pw_aff() const;
-  inline isl::pw_multi_aff to_pw_multi_aff() const;
-  inline isl::union_pw_aff to_union_pw_aff() const;
-  inline isl::union_pw_multi_aff to_union_pw_multi_aff() const;
-  inline isl::aff unbind_params_insert_domain(isl::multi_id domain) const;
-  inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
-  inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
-  inline isl::pw_aff union_add(const isl::pw_aff &pwaff2) const;
-  inline isl::pw_multi_aff union_add(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_aff union_add(const isl::union_pw_aff &upa2) const;
-  inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
-  static inline isl::aff zero_on_domain(isl::space space);
-};
-
-// declarations for isl::aff_list
-inline aff_list manage(__isl_take isl_aff_list *ptr);
-inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
-
-class aff_list {
-  friend inline aff_list manage(__isl_take isl_aff_list *ptr);
-  friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
-
-protected:
-  isl_aff_list *ptr = nullptr;
-
-  inline explicit aff_list(__isl_take isl_aff_list *ptr);
-
-public:
-  inline /* implicit */ aff_list();
-  inline /* implicit */ aff_list(const aff_list &obj);
-  inline explicit aff_list(isl::ctx ctx, int n);
-  inline explicit aff_list(isl::aff el);
-  inline explicit aff_list(isl::ctx ctx, const std::string &str);
-  inline aff_list &operator=(aff_list obj);
-  inline ~aff_list();
-  inline __isl_give isl_aff_list *copy() const &;
-  inline __isl_give isl_aff_list *copy() && = delete;
-  inline __isl_keep isl_aff_list *get() const;
-  inline __isl_give isl_aff_list *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::aff_list add(isl::aff el) const;
-  inline isl::aff at(int index) const;
-  inline isl::aff get_at(int index) const;
-  inline isl::aff_list clear() const;
-  inline isl::aff_list concat(isl::aff_list list2) const;
-  inline isl::aff_list drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(isl::aff)> &fn) const;
-  inline isl::aff_list insert(unsigned int pos, isl::aff el) const;
-  inline unsigned size() const;
-};
-
-// declarations for isl::ast_build
-inline ast_build manage(__isl_take isl_ast_build *ptr);
-inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
-
-class ast_build {
-  friend inline ast_build manage(__isl_take isl_ast_build *ptr);
-  friend inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
-
-protected:
-  isl_ast_build *ptr = nullptr;
-
-  inline explicit ast_build(__isl_take isl_ast_build *ptr);
-
-public:
-  inline /* implicit */ ast_build();
-  inline /* implicit */ ast_build(const ast_build &obj);
-  inline explicit ast_build(isl::ctx ctx);
-  inline ast_build &operator=(ast_build obj);
-  inline ~ast_build();
-  inline __isl_give isl_ast_build *copy() const &;
-  inline __isl_give isl_ast_build *copy() && = delete;
-  inline __isl_keep isl_ast_build *get() const;
-  inline __isl_give isl_ast_build *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-private:
-  inline ast_build &copy_callbacks(const ast_build &obj);
-  struct at_each_domain_data {
-    std::function<isl::ast_node(isl::ast_node, isl::ast_build)> func;
-    std::exception_ptr eptr;
-  };
-  std::shared_ptr<at_each_domain_data> at_each_domain_data;
-  static inline isl_ast_node *at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2);
-  inline void set_at_each_domain_data(const std::function<isl::ast_node(isl::ast_node, isl::ast_build)> &fn);
-public:
-  inline isl::ast_build set_at_each_domain(const std::function<isl::ast_node(isl::ast_node, isl::ast_build)> &fn) const;
-  inline isl::ast_expr access_from(isl::multi_pw_aff mpa) const;
-  inline isl::ast_expr access_from(isl::pw_multi_aff pma) const;
-  inline isl::ast_expr call_from(isl::multi_pw_aff mpa) const;
-  inline isl::ast_expr call_from(isl::pw_multi_aff pma) const;
-  inline isl::ast_expr expr_from(isl::pw_aff pa) const;
-  inline isl::ast_expr expr_from(isl::set set) const;
-  static inline isl::ast_build from_context(isl::set set);
-  inline isl::ast_node node_from(isl::schedule schedule) const;
-  inline isl::ast_node node_from_schedule_map(isl::union_map schedule) const;
-  inline isl::union_map schedule() const;
-  inline isl::union_map get_schedule() const;
-};
-
-// declarations for isl::ast_expr
-inline ast_expr manage(__isl_take isl_ast_expr *ptr);
-inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
-
-class ast_expr {
-  friend inline ast_expr manage(__isl_take isl_ast_expr *ptr);
-  friend inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
-
-protected:
-  isl_ast_expr *ptr = nullptr;
-
-  inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr();
-  inline /* implicit */ ast_expr(const ast_expr &obj);
-  inline ast_expr &operator=(ast_expr obj);
-  inline ~ast_expr();
-  inline __isl_give isl_ast_expr *copy() const &;
-  inline __isl_give isl_ast_expr *copy() && = delete;
-  inline __isl_keep isl_ast_expr *get() const;
-  inline __isl_give isl_ast_expr *release();
-  inline bool is_null() const;
-private:
-  template <typename T,
-          typename = typename std::enable_if<std::is_same<
-                  const decltype(isl_ast_expr_get_type(NULL)),
-                  const T>::value>::type>
-  inline bool isa_type(T subtype) const;
-public:
-  template <class T> inline bool isa() const;
-  template <class T> inline T as() const;
-  inline isl::ctx ctx() const;
-
-  inline std::string to_C_str() const;
-};
-
-// declarations for isl::ast_expr_id
-
-class ast_expr_id : public ast_expr {
-  template <class T>
-  friend bool ast_expr::isa() const;
-  friend ast_expr_id ast_expr::as<ast_expr_id>() const;
-  static const auto type = isl_ast_expr_id;
-
-protected:
-  inline explicit ast_expr_id(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_id();
-  inline /* implicit */ ast_expr_id(const ast_expr_id &obj);
-  inline ast_expr_id &operator=(ast_expr_id obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::id id() const;
-  inline isl::id get_id() const;
-};
-
-// declarations for isl::ast_expr_int
-
-class ast_expr_int : public ast_expr {
-  template <class T>
-  friend bool ast_expr::isa() const;
-  friend ast_expr_int ast_expr::as<ast_expr_int>() const;
-  static const auto type = isl_ast_expr_int;
-
-protected:
-  inline explicit ast_expr_int(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_int();
-  inline /* implicit */ ast_expr_int(const ast_expr_int &obj);
-  inline ast_expr_int &operator=(ast_expr_int obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::val val() const;
-  inline isl::val get_val() const;
-};
-
-// declarations for isl::ast_expr_op
-
-class ast_expr_op : public ast_expr {
-  template <class T>
-  friend bool ast_expr::isa() const;
-  friend ast_expr_op ast_expr::as<ast_expr_op>() const;
-  static const auto type = isl_ast_expr_op;
-
-protected:
-  inline explicit ast_expr_op(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op();
-  inline /* implicit */ ast_expr_op(const ast_expr_op &obj);
-  inline ast_expr_op &operator=(ast_expr_op obj);
-private:
-  template <typename T,
-          typename = typename std::enable_if<std::is_same<
-                  const decltype(isl_ast_expr_op_get_type(NULL)),
-                  const T>::value>::type>
-  inline bool isa_type(T subtype) const;
-public:
-  template <class T> inline bool isa() const;
-  template <class T> inline T as() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::ast_expr arg(int pos) const;
-  inline isl::ast_expr get_arg(int pos) const;
-  inline unsigned n_arg() const;
-  inline unsigned get_n_arg() const;
-};
-
-// declarations for isl::ast_expr_op_access
-
-class ast_expr_op_access : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_access ast_expr_op::as<ast_expr_op_access>() const;
-  static const auto type = isl_ast_expr_op_access;
-
-protected:
-  inline explicit ast_expr_op_access(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_access();
-  inline /* implicit */ ast_expr_op_access(const ast_expr_op_access &obj);
-  inline ast_expr_op_access &operator=(ast_expr_op_access obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_add
-
-class ast_expr_op_add : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_add ast_expr_op::as<ast_expr_op_add>() const;
-  static const auto type = isl_ast_expr_op_add;
-
-protected:
-  inline explicit ast_expr_op_add(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_add();
-  inline /* implicit */ ast_expr_op_add(const ast_expr_op_add &obj);
-  inline ast_expr_op_add &operator=(ast_expr_op_add obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_address_of
-
-class ast_expr_op_address_of : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_address_of ast_expr_op::as<ast_expr_op_address_of>() const;
-  static const auto type = isl_ast_expr_op_address_of;
-
-protected:
-  inline explicit ast_expr_op_address_of(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_address_of();
-  inline /* implicit */ ast_expr_op_address_of(const ast_expr_op_address_of &obj);
-  inline ast_expr_op_address_of &operator=(ast_expr_op_address_of obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_and
-
-class ast_expr_op_and : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_and ast_expr_op::as<ast_expr_op_and>() const;
-  static const auto type = isl_ast_expr_op_and;
-
-protected:
-  inline explicit ast_expr_op_and(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_and();
-  inline /* implicit */ ast_expr_op_and(const ast_expr_op_and &obj);
-  inline ast_expr_op_and &operator=(ast_expr_op_and obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_and_then
-
-class ast_expr_op_and_then : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_and_then ast_expr_op::as<ast_expr_op_and_then>() const;
-  static const auto type = isl_ast_expr_op_and_then;
-
-protected:
-  inline explicit ast_expr_op_and_then(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_and_then();
-  inline /* implicit */ ast_expr_op_and_then(const ast_expr_op_and_then &obj);
-  inline ast_expr_op_and_then &operator=(ast_expr_op_and_then obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_call
-
-class ast_expr_op_call : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_call ast_expr_op::as<ast_expr_op_call>() const;
-  static const auto type = isl_ast_expr_op_call;
-
-protected:
-  inline explicit ast_expr_op_call(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_call();
-  inline /* implicit */ ast_expr_op_call(const ast_expr_op_call &obj);
-  inline ast_expr_op_call &operator=(ast_expr_op_call obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_cond
-
-class ast_expr_op_cond : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_cond ast_expr_op::as<ast_expr_op_cond>() const;
-  static const auto type = isl_ast_expr_op_cond;
-
-protected:
-  inline explicit ast_expr_op_cond(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_cond();
-  inline /* implicit */ ast_expr_op_cond(const ast_expr_op_cond &obj);
-  inline ast_expr_op_cond &operator=(ast_expr_op_cond obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_div
-
-class ast_expr_op_div : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_div ast_expr_op::as<ast_expr_op_div>() const;
-  static const auto type = isl_ast_expr_op_div;
-
-protected:
-  inline explicit ast_expr_op_div(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_div();
-  inline /* implicit */ ast_expr_op_div(const ast_expr_op_div &obj);
-  inline ast_expr_op_div &operator=(ast_expr_op_div obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_eq
-
-class ast_expr_op_eq : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_eq ast_expr_op::as<ast_expr_op_eq>() const;
-  static const auto type = isl_ast_expr_op_eq;
-
-protected:
-  inline explicit ast_expr_op_eq(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_eq();
-  inline /* implicit */ ast_expr_op_eq(const ast_expr_op_eq &obj);
-  inline ast_expr_op_eq &operator=(ast_expr_op_eq obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_fdiv_q
-
-class ast_expr_op_fdiv_q : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_fdiv_q ast_expr_op::as<ast_expr_op_fdiv_q>() const;
-  static const auto type = isl_ast_expr_op_fdiv_q;
-
-protected:
-  inline explicit ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_fdiv_q();
-  inline /* implicit */ ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj);
-  inline ast_expr_op_fdiv_q &operator=(ast_expr_op_fdiv_q obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_ge
-
-class ast_expr_op_ge : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_ge ast_expr_op::as<ast_expr_op_ge>() const;
-  static const auto type = isl_ast_expr_op_ge;
-
-protected:
-  inline explicit ast_expr_op_ge(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_ge();
-  inline /* implicit */ ast_expr_op_ge(const ast_expr_op_ge &obj);
-  inline ast_expr_op_ge &operator=(ast_expr_op_ge obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_gt
-
-class ast_expr_op_gt : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_gt ast_expr_op::as<ast_expr_op_gt>() const;
-  static const auto type = isl_ast_expr_op_gt;
-
-protected:
-  inline explicit ast_expr_op_gt(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_gt();
-  inline /* implicit */ ast_expr_op_gt(const ast_expr_op_gt &obj);
-  inline ast_expr_op_gt &operator=(ast_expr_op_gt obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_le
-
-class ast_expr_op_le : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_le ast_expr_op::as<ast_expr_op_le>() const;
-  static const auto type = isl_ast_expr_op_le;
-
-protected:
-  inline explicit ast_expr_op_le(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_le();
-  inline /* implicit */ ast_expr_op_le(const ast_expr_op_le &obj);
-  inline ast_expr_op_le &operator=(ast_expr_op_le obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_lt
-
-class ast_expr_op_lt : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_lt ast_expr_op::as<ast_expr_op_lt>() const;
-  static const auto type = isl_ast_expr_op_lt;
-
-protected:
-  inline explicit ast_expr_op_lt(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_lt();
-  inline /* implicit */ ast_expr_op_lt(const ast_expr_op_lt &obj);
-  inline ast_expr_op_lt &operator=(ast_expr_op_lt obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_max
-
-class ast_expr_op_max : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_max ast_expr_op::as<ast_expr_op_max>() const;
-  static const auto type = isl_ast_expr_op_max;
-
-protected:
-  inline explicit ast_expr_op_max(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_max();
-  inline /* implicit */ ast_expr_op_max(const ast_expr_op_max &obj);
-  inline ast_expr_op_max &operator=(ast_expr_op_max obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_member
-
-class ast_expr_op_member : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_member ast_expr_op::as<ast_expr_op_member>() const;
-  static const auto type = isl_ast_expr_op_member;
-
-protected:
-  inline explicit ast_expr_op_member(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_member();
-  inline /* implicit */ ast_expr_op_member(const ast_expr_op_member &obj);
-  inline ast_expr_op_member &operator=(ast_expr_op_member obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_min
-
-class ast_expr_op_min : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_min ast_expr_op::as<ast_expr_op_min>() const;
-  static const auto type = isl_ast_expr_op_min;
-
-protected:
-  inline explicit ast_expr_op_min(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_min();
-  inline /* implicit */ ast_expr_op_min(const ast_expr_op_min &obj);
-  inline ast_expr_op_min &operator=(ast_expr_op_min obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_minus
-
-class ast_expr_op_minus : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_minus ast_expr_op::as<ast_expr_op_minus>() const;
-  static const auto type = isl_ast_expr_op_minus;
-
-protected:
-  inline explicit ast_expr_op_minus(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_minus();
-  inline /* implicit */ ast_expr_op_minus(const ast_expr_op_minus &obj);
-  inline ast_expr_op_minus &operator=(ast_expr_op_minus obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_mul
-
-class ast_expr_op_mul : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_mul ast_expr_op::as<ast_expr_op_mul>() const;
-  static const auto type = isl_ast_expr_op_mul;
-
-protected:
-  inline explicit ast_expr_op_mul(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_mul();
-  inline /* implicit */ ast_expr_op_mul(const ast_expr_op_mul &obj);
-  inline ast_expr_op_mul &operator=(ast_expr_op_mul obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_or
-
-class ast_expr_op_or : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_or ast_expr_op::as<ast_expr_op_or>() const;
-  static const auto type = isl_ast_expr_op_or;
-
-protected:
-  inline explicit ast_expr_op_or(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_or();
-  inline /* implicit */ ast_expr_op_or(const ast_expr_op_or &obj);
-  inline ast_expr_op_or &operator=(ast_expr_op_or obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_or_else
-
-class ast_expr_op_or_else : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_or_else ast_expr_op::as<ast_expr_op_or_else>() const;
-  static const auto type = isl_ast_expr_op_or_else;
-
-protected:
-  inline explicit ast_expr_op_or_else(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_or_else();
-  inline /* implicit */ ast_expr_op_or_else(const ast_expr_op_or_else &obj);
-  inline ast_expr_op_or_else &operator=(ast_expr_op_or_else obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_pdiv_q
-
-class ast_expr_op_pdiv_q : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_pdiv_q ast_expr_op::as<ast_expr_op_pdiv_q>() const;
-  static const auto type = isl_ast_expr_op_pdiv_q;
-
-protected:
-  inline explicit ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_pdiv_q();
-  inline /* implicit */ ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj);
-  inline ast_expr_op_pdiv_q &operator=(ast_expr_op_pdiv_q obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_pdiv_r
-
-class ast_expr_op_pdiv_r : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_pdiv_r ast_expr_op::as<ast_expr_op_pdiv_r>() const;
-  static const auto type = isl_ast_expr_op_pdiv_r;
-
-protected:
-  inline explicit ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_pdiv_r();
-  inline /* implicit */ ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj);
-  inline ast_expr_op_pdiv_r &operator=(ast_expr_op_pdiv_r obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_select
-
-class ast_expr_op_select : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_select ast_expr_op::as<ast_expr_op_select>() const;
-  static const auto type = isl_ast_expr_op_select;
-
-protected:
-  inline explicit ast_expr_op_select(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_select();
-  inline /* implicit */ ast_expr_op_select(const ast_expr_op_select &obj);
-  inline ast_expr_op_select &operator=(ast_expr_op_select obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_sub
-
-class ast_expr_op_sub : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_sub ast_expr_op::as<ast_expr_op_sub>() const;
-  static const auto type = isl_ast_expr_op_sub;
-
-protected:
-  inline explicit ast_expr_op_sub(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_sub();
-  inline /* implicit */ ast_expr_op_sub(const ast_expr_op_sub &obj);
-  inline ast_expr_op_sub &operator=(ast_expr_op_sub obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_expr_op_zdiv_r
-
-class ast_expr_op_zdiv_r : public ast_expr_op {
-  template <class T>
-  friend bool ast_expr_op::isa() const;
-  friend ast_expr_op_zdiv_r ast_expr_op::as<ast_expr_op_zdiv_r>() const;
-  static const auto type = isl_ast_expr_op_zdiv_r;
-
-protected:
-  inline explicit ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr);
-
-public:
-  inline /* implicit */ ast_expr_op_zdiv_r();
-  inline /* implicit */ ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj);
-  inline ast_expr_op_zdiv_r &operator=(ast_expr_op_zdiv_r obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::ast_node
-inline ast_node manage(__isl_take isl_ast_node *ptr);
-inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
-
-class ast_node {
-  friend inline ast_node manage(__isl_take isl_ast_node *ptr);
-  friend inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
-
-protected:
-  isl_ast_node *ptr = nullptr;
-
-  inline explicit ast_node(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node();
-  inline /* implicit */ ast_node(const ast_node &obj);
-  inline ast_node &operator=(ast_node obj);
-  inline ~ast_node();
-  inline __isl_give isl_ast_node *copy() const &;
-  inline __isl_give isl_ast_node *copy() && = delete;
-  inline __isl_keep isl_ast_node *get() const;
-  inline __isl_give isl_ast_node *release();
-  inline bool is_null() const;
-private:
-  template <typename T,
-          typename = typename std::enable_if<std::is_same<
-                  const decltype(isl_ast_node_get_type(NULL)),
-                  const T>::value>::type>
-  inline bool isa_type(T subtype) const;
-public:
-  template <class T> inline bool isa() const;
-  template <class T> inline T as() const;
-  inline isl::ctx ctx() const;
-
-  inline std::string to_C_str() const;
-  inline isl::ast_node_list to_list() const;
-};
-
-// declarations for isl::ast_node_block
-
-class ast_node_block : public ast_node {
-  template <class T>
-  friend bool ast_node::isa() const;
-  friend ast_node_block ast_node::as<ast_node_block>() const;
-  static const auto type = isl_ast_node_block;
-
-protected:
-  inline explicit ast_node_block(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node_block();
-  inline /* implicit */ ast_node_block(const ast_node_block &obj);
-  inline ast_node_block &operator=(ast_node_block obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::ast_node_list children() const;
-  inline isl::ast_node_list get_children() const;
-};
-
-// declarations for isl::ast_node_for
-
-class ast_node_for : public ast_node {
-  template <class T>
-  friend bool ast_node::isa() const;
-  friend ast_node_for ast_node::as<ast_node_for>() const;
-  static const auto type = isl_ast_node_for;
-
-protected:
-  inline explicit ast_node_for(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node_for();
-  inline /* implicit */ ast_node_for(const ast_node_for &obj);
-  inline ast_node_for &operator=(ast_node_for obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::ast_node body() const;
-  inline isl::ast_node get_body() const;
-  inline isl::ast_expr cond() const;
-  inline isl::ast_expr get_cond() const;
-  inline isl::ast_expr inc() const;
-  inline isl::ast_expr get_inc() const;
-  inline isl::ast_expr init() const;
-  inline isl::ast_expr get_init() const;
-  inline bool is_degenerate() const;
-  inline isl::ast_expr iterator() const;
-  inline isl::ast_expr get_iterator() const;
-};
-
-// declarations for isl::ast_node_if
-
-class ast_node_if : public ast_node {
-  template <class T>
-  friend bool ast_node::isa() const;
-  friend ast_node_if ast_node::as<ast_node_if>() const;
-  static const auto type = isl_ast_node_if;
-
-protected:
-  inline explicit ast_node_if(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node_if();
-  inline /* implicit */ ast_node_if(const ast_node_if &obj);
-  inline ast_node_if &operator=(ast_node_if obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::ast_expr cond() const;
-  inline isl::ast_expr get_cond() const;
-  inline isl::ast_node else_node() const;
-  inline isl::ast_node get_else_node() const;
-  inline bool has_else_node() const;
-  inline isl::ast_node then_node() const;
-  inline isl::ast_node get_then_node() const;
-};
-
-// declarations for isl::ast_node_list
-inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
-inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
-
-class ast_node_list {
-  friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
-  friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
-
-protected:
-  isl_ast_node_list *ptr = nullptr;
-
-  inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
-
-public:
-  inline /* implicit */ ast_node_list();
-  inline /* implicit */ ast_node_list(const ast_node_list &obj);
-  inline explicit ast_node_list(isl::ctx ctx, int n);
-  inline explicit ast_node_list(isl::ast_node el);
-  inline ast_node_list &operator=(ast_node_list obj);
-  inline ~ast_node_list();
-  inline __isl_give isl_ast_node_list *copy() const &;
-  inline __isl_give isl_ast_node_list *copy() && = delete;
-  inline __isl_keep isl_ast_node_list *get() const;
-  inline __isl_give isl_ast_node_list *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::ast_node_list add(isl::ast_node el) const;
-  inline isl::ast_node at(int index) const;
-  inline isl::ast_node get_at(int index) const;
-  inline isl::ast_node_list clear() const;
-  inline isl::ast_node_list concat(isl::ast_node_list list2) const;
-  inline isl::ast_node_list drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(isl::ast_node)> &fn) const;
-  inline isl::ast_node_list insert(unsigned int pos, isl::ast_node el) const;
-  inline unsigned size() const;
-};
-
-// declarations for isl::ast_node_mark
-
-class ast_node_mark : public ast_node {
-  template <class T>
-  friend bool ast_node::isa() const;
-  friend ast_node_mark ast_node::as<ast_node_mark>() const;
-  static const auto type = isl_ast_node_mark;
-
-protected:
-  inline explicit ast_node_mark(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node_mark();
-  inline /* implicit */ ast_node_mark(const ast_node_mark &obj);
-  inline ast_node_mark &operator=(ast_node_mark obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::id id() const;
-  inline isl::id get_id() const;
-  inline isl::ast_node node() const;
-  inline isl::ast_node get_node() const;
-};
-
-// declarations for isl::ast_node_user
-
-class ast_node_user : public ast_node {
-  template <class T>
-  friend bool ast_node::isa() const;
-  friend ast_node_user ast_node::as<ast_node_user>() const;
-  static const auto type = isl_ast_node_user;
-
-protected:
-  inline explicit ast_node_user(__isl_take isl_ast_node *ptr);
-
-public:
-  inline /* implicit */ ast_node_user();
-  inline /* implicit */ ast_node_user(const ast_node_user &obj);
-  inline ast_node_user &operator=(ast_node_user obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::ast_expr expr() const;
-  inline isl::ast_expr get_expr() const;
-};
-
-// declarations for isl::basic_map
-inline basic_map manage(__isl_take isl_basic_map *ptr);
-inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
-
-class basic_map {
-  friend inline basic_map manage(__isl_take isl_basic_map *ptr);
-  friend inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
-
-protected:
-  isl_basic_map *ptr = nullptr;
-
-  inline explicit basic_map(__isl_take isl_basic_map *ptr);
-
-public:
-  inline /* implicit */ basic_map();
-  inline /* implicit */ basic_map(const basic_map &obj);
-  inline explicit basic_map(isl::ctx ctx, const std::string &str);
-  inline basic_map &operator=(basic_map obj);
-  inline ~basic_map();
-  inline __isl_give isl_basic_map *copy() const &;
-  inline __isl_give isl_basic_map *copy() && = delete;
-  inline __isl_keep isl_basic_map *get() const;
-  inline __isl_give isl_basic_map *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::basic_map affine_hull() const;
-  inline isl::basic_map apply_domain(isl::basic_map bmap2) const;
-  inline isl::map apply_domain(const isl::map &map2) const;
-  inline isl::union_map apply_domain(const isl::union_map &umap2) const;
-  inline isl::basic_map apply_range(isl::basic_map bmap2) const;
-  inline isl::map apply_range(const isl::map &map2) const;
-  inline isl::union_map apply_range(const isl::union_map &umap2) const;
-  inline isl::map as_map() const;
-  inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::union_pw_multi_aff as_union_pw_multi_aff() const;
-  inline isl::set bind_domain(const isl::multi_id &tuple) const;
-  inline isl::set bind_range(const isl::multi_id &tuple) const;
-  inline isl::map coalesce() const;
-  inline isl::map complement() const;
-  inline isl::union_map compute_divs() const;
-  inline isl::map curry() const;
-  inline isl::basic_set deltas() const;
-  inline isl::basic_map detect_equalities() const;
-  inline isl::set domain() const;
-  inline isl::map domain_factor_domain() const;
-  inline isl::map domain_factor_range() const;
-  inline isl::union_map domain_map() const;
-  inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
-  inline isl::map domain_product(const isl::map &map2) const;
-  inline isl::union_map domain_product(const isl::union_map &umap2) const;
-  inline unsigned domain_tuple_dim() const;
-  inline isl::id domain_tuple_id() const;
-  inline isl::map eq_at(const isl::multi_pw_aff &mpa) const;
-  inline isl::union_map eq_at(const isl::multi_union_pw_aff &mupa) const;
-  inline bool every_map(const std::function<bool(isl::map)> &test) const;
-  inline isl::map extract_map(const isl::space &space) const;
-  inline isl::map factor_domain() const;
-  inline isl::map factor_range() const;
-  inline isl::union_map fixed_power(const isl::val &exp) const;
-  inline isl::union_map fixed_power(long exp) const;
-  inline isl::basic_map flatten() const;
-  inline isl::basic_map flatten_domain() const;
-  inline isl::basic_map flatten_range() const;
-  inline void foreach_basic_map(const std::function<void(isl::basic_map)> &fn) const;
-  inline void foreach_map(const std::function<void(isl::map)> &fn) const;
-  inline isl::basic_map gist(isl::basic_map context) const;
-  inline isl::map gist(const isl::map &context) const;
-  inline isl::union_map gist(const isl::union_map &context) const;
-  inline isl::map gist_domain(const isl::set &context) const;
-  inline isl::union_map gist_domain(const isl::union_set &uset) const;
-  inline isl::union_map gist_params(const isl::set &set) const;
-  inline isl::union_map gist_range(const isl::union_set &uset) const;
-  inline bool has_domain_tuple_id() const;
-  inline bool has_range_tuple_id() const;
-  inline isl::basic_map intersect(isl::basic_map bmap2) const;
-  inline isl::map intersect(const isl::map &map2) const;
-  inline isl::union_map intersect(const isl::union_map &umap2) const;
-  inline isl::basic_map intersect_domain(isl::basic_set bset) const;
-  inline isl::map intersect_domain(const isl::set &set) const;
-  inline isl::union_map intersect_domain(const isl::space &space) const;
-  inline isl::union_map intersect_domain(const isl::union_set &uset) const;
-  inline isl::basic_map intersect_domain(const isl::point &bset) const;
-  inline isl::map intersect_domain_factor_domain(const isl::map &factor) const;
-  inline isl::union_map intersect_domain_factor_domain(const isl::union_map &factor) const;
-  inline isl::map intersect_domain_factor_range(const isl::map &factor) const;
-  inline isl::union_map intersect_domain_factor_range(const isl::union_map &factor) const;
-  inline isl::map intersect_params(const isl::set &params) const;
-  inline isl::basic_map intersect_range(isl::basic_set bset) const;
-  inline isl::map intersect_range(const isl::set &set) const;
-  inline isl::union_map intersect_range(const isl::space &space) const;
-  inline isl::union_map intersect_range(const isl::union_set &uset) const;
-  inline isl::basic_map intersect_range(const isl::point &bset) const;
-  inline isl::map intersect_range_factor_domain(const isl::map &factor) const;
-  inline isl::union_map intersect_range_factor_domain(const isl::union_map &factor) const;
-  inline isl::map intersect_range_factor_range(const isl::map &factor) const;
-  inline isl::union_map intersect_range_factor_range(const isl::union_map &factor) const;
-  inline bool is_bijective() const;
-  inline bool is_disjoint(const isl::map &map2) const;
-  inline bool is_disjoint(const isl::union_map &umap2) const;
-  inline bool is_empty() const;
-  inline bool is_equal(const isl::basic_map &bmap2) const;
-  inline bool is_equal(const isl::map &map2) const;
-  inline bool is_equal(const isl::union_map &umap2) const;
-  inline bool is_injective() const;
-  inline bool is_single_valued() const;
-  inline bool is_strict_subset(const isl::map &map2) const;
-  inline bool is_strict_subset(const isl::union_map &umap2) const;
-  inline bool is_subset(const isl::basic_map &bmap2) const;
-  inline bool is_subset(const isl::map &map2) const;
-  inline bool is_subset(const isl::union_map &umap2) const;
-  inline bool isa_map() const;
-  inline isl::map lex_ge_at(const isl::multi_pw_aff &mpa) const;
-  inline isl::map lex_gt_at(const isl::multi_pw_aff &mpa) const;
-  inline isl::map lex_le_at(const isl::multi_pw_aff &mpa) const;
-  inline isl::map lex_lt_at(const isl::multi_pw_aff &mpa) const;
-  inline isl::map lexmax() const;
-  inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
-  inline isl::map lexmin() const;
-  inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
-  inline isl::map lower_bound(const isl::multi_pw_aff &lower) const;
-  inline isl::map_list map_list() const;
-  inline isl::multi_pw_aff max_multi_pw_aff() const;
-  inline isl::multi_pw_aff min_multi_pw_aff() const;
-  inline unsigned n_basic_map() const;
-  inline isl::basic_map polyhedral_hull() const;
-  inline isl::map preimage_domain(const isl::multi_aff &ma) const;
-  inline isl::map preimage_domain(const isl::multi_pw_aff &mpa) const;
-  inline isl::map preimage_domain(const isl::pw_multi_aff &pma) const;
-  inline isl::union_map preimage_domain(const isl::union_pw_multi_aff &upma) const;
-  inline isl::map preimage_range(const isl::multi_aff &ma) const;
-  inline isl::map preimage_range(const isl::pw_multi_aff &pma) const;
-  inline isl::union_map preimage_range(const isl::union_pw_multi_aff &upma) const;
-  inline isl::map product(const isl::map &map2) const;
-  inline isl::union_map product(const isl::union_map &umap2) const;
-  inline isl::map project_out_all_params() const;
-  inline isl::set range() const;
-  inline isl::map range_factor_domain() const;
-  inline isl::map range_factor_range() const;
-  inline isl::fixed_box range_lattice_tile() const;
-  inline isl::union_map range_map() const;
-  inline isl::map range_product(const isl::map &map2) const;
-  inline isl::union_map range_product(const isl::union_map &umap2) const;
-  inline isl::map range_reverse() const;
-  inline isl::fixed_box range_simple_fixed_box_hull() const;
-  inline unsigned range_tuple_dim() const;
-  inline isl::id range_tuple_id() const;
-  inline isl::basic_map reverse() const;
-  inline isl::basic_map sample() const;
-  inline isl::map set_domain_tuple(const isl::id &id) const;
-  inline isl::map set_domain_tuple(const std::string &id) const;
-  inline isl::map set_range_tuple(const isl::id &id) const;
-  inline isl::map set_range_tuple(const std::string &id) const;
-  inline isl::space space() const;
-  inline isl::map subtract(const isl::map &map2) const;
-  inline isl::union_map subtract(const isl::union_map &umap2) const;
-  inline isl::union_map subtract_domain(const isl::union_set &dom) const;
-  inline isl::union_map subtract_range(const isl::union_set &dom) const;
-  inline isl::map_list to_list() const;
-  inline isl::union_map to_union_map() const;
-  inline isl::map uncurry() const;
-  inline isl::map unite(isl::basic_map bmap2) const;
-  inline isl::map unite(const isl::map &map2) const;
-  inline isl::union_map unite(const isl::union_map &umap2) const;
-  inline isl::basic_map unshifted_simple_hull() const;
-  inline isl::map upper_bound(const isl::multi_pw_aff &upper) const;
-  inline isl::set wrap() const;
-  inline isl::map zip() const;
-};
-
-// declarations for isl::basic_set
-inline basic_set manage(__isl_take isl_basic_set *ptr);
-inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
-
-class basic_set {
-  friend inline basic_set manage(__isl_take isl_basic_set *ptr);
-  friend inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
-
-protected:
-  isl_basic_set *ptr = nullptr;
-
-  inline explicit basic_set(__isl_take isl_basic_set *ptr);
-
-public:
-  inline /* implicit */ basic_set();
-  inline /* implicit */ basic_set(const basic_set &obj);
-  inline /* implicit */ basic_set(isl::point pnt);
-  inline explicit basic_set(isl::ctx ctx, const std::string &str);
-  inline basic_set &operator=(basic_set obj);
-  inline ~basic_set();
-  inline __isl_give isl_basic_set *copy() const &;
-  inline __isl_give isl_basic_set *copy() && = delete;
-  inline __isl_keep isl_basic_set *get() const;
-  inline __isl_give isl_basic_set *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::basic_set affine_hull() const;
-  inline isl::basic_set apply(isl::basic_map bmap) const;
-  inline isl::set apply(const isl::map &map) const;
-  inline isl::union_set apply(const isl::union_map &umap) const;
-  inline isl::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::set as_set() const;
-  inline isl::set bind(const isl::multi_id &tuple) const;
-  inline isl::set coalesce() const;
-  inline isl::set complement() const;
-  inline isl::union_set compute_divs() const;
-  inline isl::basic_set detect_equalities() const;
-  inline isl::val dim_max_val(int pos) const;
-  inline isl::val dim_min_val(int pos) const;
-  inline bool every_set(const std::function<bool(isl::set)> &test) const;
-  inline isl::set extract_set(const isl::space &space) const;
-  inline isl::basic_set flatten() const;
-  inline void foreach_basic_set(const std::function<void(isl::basic_set)> &fn) const;
-  inline void foreach_point(const std::function<void(isl::point)> &fn) const;
-  inline void foreach_set(const std::function<void(isl::set)> &fn) const;
-  inline isl::basic_set gist(isl::basic_set context) const;
-  inline isl::set gist(const isl::set &context) const;
-  inline isl::union_set gist(const isl::union_set &context) const;
-  inline isl::basic_set gist(const isl::point &context) const;
-  inline isl::union_set gist_params(const isl::set &set) const;
-  inline isl::map identity() const;
-  inline isl::pw_aff indicator_function() const;
-  inline isl::map insert_domain(const isl::space &domain) const;
-  inline isl::basic_set intersect(isl::basic_set bset2) const;
-  inline isl::set intersect(const isl::set &set2) const;
-  inline isl::union_set intersect(const isl::union_set &uset2) const;
-  inline isl::basic_set intersect(const isl::point &bset2) const;
-  inline isl::basic_set intersect_params(isl::basic_set bset2) const;
-  inline isl::set intersect_params(const isl::set &params) const;
-  inline isl::basic_set intersect_params(const isl::point &bset2) const;
-  inline bool involves_locals() const;
-  inline bool is_disjoint(const isl::set &set2) const;
-  inline bool is_disjoint(const isl::union_set &uset2) const;
-  inline bool is_empty() const;
-  inline bool is_equal(const isl::basic_set &bset2) const;
-  inline bool is_equal(const isl::set &set2) const;
-  inline bool is_equal(const isl::union_set &uset2) const;
-  inline bool is_equal(const isl::point &bset2) const;
-  inline bool is_singleton() const;
-  inline bool is_strict_subset(const isl::set &set2) const;
-  inline bool is_strict_subset(const isl::union_set &uset2) const;
-  inline bool is_subset(const isl::basic_set &bset2) const;
-  inline bool is_subset(const isl::set &set2) const;
-  inline bool is_subset(const isl::union_set &uset2) const;
-  inline bool is_subset(const isl::point &bset2) const;
-  inline bool is_wrapping() const;
-  inline bool isa_set() const;
-  inline isl::set lexmax() const;
-  inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
-  inline isl::set lexmin() const;
-  inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
-  inline isl::set lower_bound(const isl::multi_pw_aff &lower) const;
-  inline isl::set lower_bound(const isl::multi_val &lower) const;
-  inline isl::multi_pw_aff max_multi_pw_aff() const;
-  inline isl::val max_val(const isl::aff &obj) const;
-  inline isl::multi_pw_aff min_multi_pw_aff() const;
-  inline isl::val min_val(const isl::aff &obj) const;
-  inline unsigned n_basic_set() const;
-  inline isl::basic_set params() const;
-  inline isl::multi_val plain_multi_val_if_fixed() const;
-  inline isl::basic_set polyhedral_hull() const;
-  inline isl::set preimage(const isl::multi_aff &ma) const;
-  inline isl::set preimage(const isl::multi_pw_aff &mpa) const;
-  inline isl::set preimage(const isl::pw_multi_aff &pma) const;
-  inline isl::union_set preimage(const isl::union_pw_multi_aff &upma) const;
-  inline isl::set product(const isl::set &set2) const;
-  inline isl::set project_out_all_params() const;
-  inline isl::set project_out_param(const isl::id &id) const;
-  inline isl::set project_out_param(const std::string &id) const;
-  inline isl::set project_out_param(const isl::id_list &list) const;
-  inline isl::pw_multi_aff pw_multi_aff_on_domain(const isl::multi_val &mv) const;
-  inline isl::basic_set sample() const;
-  inline isl::point sample_point() const;
-  inline isl::set_list set_list() const;
-  inline isl::fixed_box simple_fixed_box_hull() const;
-  inline isl::space space() const;
-  inline isl::val stride(int pos) const;
-  inline isl::set subtract(const isl::set &set2) const;
-  inline isl::union_set subtract(const isl::union_set &uset2) const;
-  inline isl::set_list to_list() const;
-  inline isl::set to_set() const;
-  inline isl::union_set to_union_set() const;
-  inline isl::map translation() const;
-  inline unsigned tuple_dim() const;
-  inline isl::set unbind_params(const isl::multi_id &tuple) const;
-  inline isl::map unbind_params_insert_domain(const isl::multi_id &domain) const;
-  inline isl::set unite(isl::basic_set bset2) const;
-  inline isl::set unite(const isl::set &set2) const;
-  inline isl::union_set unite(const isl::union_set &uset2) const;
-  inline isl::set unite(const isl::point &bset2) const;
-  inline isl::basic_set unshifted_simple_hull() const;
-  inline isl::map unwrap() const;
-  inline isl::set upper_bound(const isl::multi_pw_aff &upper) const;
-  inline isl::set upper_bound(const isl::multi_val &upper) const;
-};
-
-// declarations for isl::fixed_box
-inline fixed_box manage(__isl_take isl_fixed_box *ptr);
-inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
-
-class fixed_box {
-  friend inline fixed_box manage(__isl_take isl_fixed_box *ptr);
-  friend inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
-
-protected:
-  isl_fixed_box *ptr = nullptr;
-
-  inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
-
-public:
-  inline /* implicit */ fixed_box();
-  inline /* implicit */ fixed_box(const fixed_box &obj);
-  inline fixed_box &operator=(fixed_box obj);
-  inline ~fixed_box();
-  inline __isl_give isl_fixed_box *copy() const &;
-  inline __isl_give isl_fixed_box *copy() && = delete;
-  inline __isl_keep isl_fixed_box *get() const;
-  inline __isl_give isl_fixed_box *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline bool is_valid() const;
-  inline isl::multi_aff offset() const;
-  inline isl::multi_aff get_offset() const;
-  inline isl::multi_val size() const;
-  inline isl::multi_val get_size() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-};
-
-// declarations for isl::id
-inline id manage(__isl_take isl_id *ptr);
-inline id manage_copy(__isl_keep isl_id *ptr);
-
-class id {
-  friend inline id manage(__isl_take isl_id *ptr);
-  friend inline id manage_copy(__isl_keep isl_id *ptr);
-
-protected:
-  isl_id *ptr = nullptr;
-
-  inline explicit id(__isl_take isl_id *ptr);
-
-public:
-  inline /* implicit */ id();
-  inline /* implicit */ id(const id &obj);
-  inline explicit id(isl::ctx ctx, const std::string &str);
-  inline id &operator=(id obj);
-  inline ~id();
-  inline __isl_give isl_id *copy() const &;
-  inline __isl_give isl_id *copy() && = delete;
-  inline __isl_keep isl_id *get() const;
-  inline __isl_give isl_id *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline std::string name() const;
-  inline std::string get_name() const;
-  inline isl::id_list to_list() const;
-};
-
-// declarations for isl::id_list
-inline id_list manage(__isl_take isl_id_list *ptr);
-inline id_list manage_copy(__isl_keep isl_id_list *ptr);
-
-class id_list {
-  friend inline id_list manage(__isl_take isl_id_list *ptr);
-  friend inline id_list manage_copy(__isl_keep isl_id_list *ptr);
-
-protected:
-  isl_id_list *ptr = nullptr;
-
-  inline explicit id_list(__isl_take isl_id_list *ptr);
-
-public:
-  inline /* implicit */ id_list();
-  inline /* implicit */ id_list(const id_list &obj);
-  inline explicit id_list(isl::ctx ctx, int n);
-  inline explicit id_list(isl::id el);
-  inline explicit id_list(isl::ctx ctx, const std::string &str);
-  inline id_list &operator=(id_list obj);
-  inline ~id_list();
-  inline __isl_give isl_id_list *copy() const &;
-  inline __isl_give isl_id_list *copy() && = delete;
-  inline __isl_keep isl_id_list *get() const;
-  inline __isl_give isl_id_list *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::id_list add(isl::id el) const;
-  inline isl::id_list add(const std::string &el) const;
-  inline isl::id at(int index) const;
-  inline isl::id get_at(int index) const;
-  inline isl::id_list clear() const;
-  inline isl::id_list concat(isl::id_list list2) const;
-  inline isl::id_list drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(isl::id)> &fn) const;
-  inline isl::id_list insert(unsigned int pos, isl::id el) const;
-  inline isl::id_list insert(unsigned int pos, const std::string &el) const;
-  inline unsigned size() const;
-};
-
-// declarations for isl::map
-inline map manage(__isl_take isl_map *ptr);
-inline map manage_copy(__isl_keep isl_map *ptr);
-
-class map {
-  friend inline map manage(__isl_take isl_map *ptr);
-  friend inline map manage_copy(__isl_keep isl_map *ptr);
-
-protected:
-  isl_map *ptr = nullptr;
-
-  inline explicit map(__isl_take isl_map *ptr);
-
-public:
-  inline /* implicit */ map();
-  inline /* implicit */ map(const map &obj);
-  inline /* implicit */ map(isl::basic_map bmap);
-  inline explicit map(isl::ctx ctx, const std::string &str);
-  inline map &operator=(map obj);
-  inline ~map();
-  inline __isl_give isl_map *copy() const &;
-  inline __isl_give isl_map *copy() && = delete;
-  inline __isl_keep isl_map *get() const;
-  inline __isl_give isl_map *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::basic_map affine_hull() const;
-  inline isl::map apply_domain(isl::map map2) const;
-  inline isl::union_map apply_domain(const isl::union_map &umap2) const;
-  inline isl::map apply_domain(const isl::basic_map &map2) const;
-  inline isl::map apply_range(isl::map map2) const;
-  inline isl::union_map apply_range(const isl::union_map &umap2) const;
-  inline isl::map apply_range(const isl::basic_map &map2) const;
-  inline isl::map as_map() const;
-  inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::union_pw_multi_aff as_union_pw_multi_aff() const;
-  inline isl::set bind_domain(isl::multi_id tuple) const;
-  inline isl::set bind_range(isl::multi_id tuple) const;
-  inline isl::map coalesce() const;
-  inline isl::map complement() const;
-  inline isl::union_map compute_divs() const;
-  inline isl::map curry() const;
-  inline isl::set deltas() const;
-  inline isl::map detect_equalities() const;
-  inline isl::set domain() const;
-  inline isl::map domain_factor_domain() const;
-  inline isl::map domain_factor_range() const;
-  inline isl::union_map domain_map() const;
-  inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
-  inline isl::map domain_product(isl::map map2) const;
-  inline isl::union_map domain_product(const isl::union_map &umap2) const;
-  inline isl::map domain_product(const isl::basic_map &map2) const;
-  inline unsigned domain_tuple_dim() const;
-  inline isl::id domain_tuple_id() const;
-  inline isl::id get_domain_tuple_id() const;
-  static inline isl::map empty(isl::space space);
-  inline isl::map eq_at(isl::multi_pw_aff mpa) const;
-  inline isl::union_map eq_at(const isl::multi_union_pw_aff &mupa) const;
-  inline isl::map eq_at(const isl::aff &mpa) const;
-  inline isl::map eq_at(const isl::multi_aff &mpa) const;
-  inline isl::map eq_at(const isl::pw_aff &mpa) const;
-  inline isl::map eq_at(const isl::pw_multi_aff &mpa) const;
-  inline bool every_map(const std::function<bool(isl::map)> &test) const;
-  inline isl::map extract_map(const isl::space &space) const;
-  inline isl::map factor_domain() const;
-  inline isl::map factor_range() const;
-  inline isl::union_map fixed_power(const isl::val &exp) const;
-  inline isl::union_map fixed_power(long exp) const;
-  inline isl::map flatten() const;
-  inline isl::map flatten_domain() const;
-  inline isl::map flatten_range() const;
-  inline void foreach_basic_map(const std::function<void(isl::basic_map)> &fn) const;
-  inline void foreach_map(const std::function<void(isl::map)> &fn) const;
-  inline isl::map gist(isl::map context) const;
-  inline isl::union_map gist(const isl::union_map &context) const;
-  inline isl::map gist(const isl::basic_map &context) const;
-  inline isl::map gist_domain(isl::set context) const;
-  inline isl::union_map gist_domain(const isl::union_set &uset) const;
-  inline isl::map gist_domain(const isl::basic_set &context) const;
-  inline isl::map gist_domain(const isl::point &context) const;
-  inline isl::union_map gist_params(const isl::set &set) const;
-  inline isl::union_map gist_range(const isl::union_set &uset) const;
-  inline bool has_domain_tuple_id() const;
-  inline bool has_range_tuple_id() const;
-  inline isl::map intersect(isl::map map2) const;
-  inline isl::union_map intersect(const isl::union_map &umap2) const;
-  inline isl::map intersect(const isl::basic_map &map2) const;
-  inline isl::map intersect_domain(isl::set set) const;
-  inline isl::union_map intersect_domain(const isl::space &space) const;
-  inline isl::union_map intersect_domain(const isl::union_set &uset) const;
-  inline isl::map intersect_domain(const isl::basic_set &set) const;
-  inline isl::map intersect_domain(const isl::point &set) const;
-  inline isl::map intersect_domain_factor_domain(isl::map factor) const;
-  inline isl::union_map intersect_domain_factor_domain(const isl::union_map &factor) const;
-  inline isl::map intersect_domain_factor_domain(const isl::basic_map &factor) const;
-  inline isl::map intersect_domain_factor_range(isl::map factor) const;
-  inline isl::union_map intersect_domain_factor_range(const isl::union_map &factor) const;
-  inline isl::map intersect_domain_factor_range(const isl::basic_map &factor) const;
-  inline isl::map intersect_params(isl::set params) const;
-  inline isl::map intersect_range(isl::set set) const;
-  inline isl::union_map intersect_range(const isl::space &space) const;
-  inline isl::union_map intersect_range(const isl::union_set &uset) const;
-  inline isl::map intersect_range(const isl::basic_set &set) const;
-  inline isl::map intersect_range(const isl::point &set) const;
-  inline isl::map intersect_range_factor_domain(isl::map factor) const;
-  inline isl::union_map intersect_range_factor_domain(const isl::union_map &factor) const;
-  inline isl::map intersect_range_factor_domain(const isl::basic_map &factor) const;
-  inline isl::map intersect_range_factor_range(isl::map factor) const;
-  inline isl::union_map intersect_range_factor_range(const isl::union_map &factor) const;
-  inline isl::map intersect_range_factor_range(const isl::basic_map &factor) const;
-  inline bool is_bijective() const;
-  inline bool is_disjoint(const isl::map &map2) const;
-  inline bool is_disjoint(const isl::union_map &umap2) const;
-  inline bool is_disjoint(const isl::basic_map &map2) const;
-  inline bool is_empty() const;
-  inline bool is_equal(const isl::map &map2) const;
-  inline bool is_equal(const isl::union_map &umap2) const;
-  inline bool is_equal(const isl::basic_map &map2) const;
-  inline bool is_injective() const;
-  inline bool is_single_valued() const;
-  inline bool is_strict_subset(const isl::map &map2) const;
-  inline bool is_strict_subset(const isl::union_map &umap2) const;
-  inline bool is_strict_subset(const isl::basic_map &map2) const;
-  inline bool is_subset(const isl::map &map2) const;
-  inline bool is_subset(const isl::union_map &umap2) const;
-  inline bool is_subset(const isl::basic_map &map2) const;
-  inline bool isa_map() const;
-  inline isl::map lex_ge_at(isl::multi_pw_aff mpa) const;
-  inline isl::map lex_gt_at(isl::multi_pw_aff mpa) const;
-  inline isl::map lex_le_at(isl::multi_pw_aff mpa) const;
-  inline isl::map lex_lt_at(isl::multi_pw_aff mpa) const;
-  inline isl::map lexmax() const;
-  inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
-  inline isl::map lexmin() const;
-  inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
-  inline isl::map lower_bound(isl::multi_pw_aff lower) const;
-  inline isl::map_list map_list() const;
-  inline isl::multi_pw_aff max_multi_pw_aff() const;
-  inline isl::multi_pw_aff min_multi_pw_aff() const;
-  inline unsigned n_basic_map() const;
-  inline isl::basic_map polyhedral_hull() const;
-  inline isl::map preimage_domain(isl::multi_aff ma) const;
-  inline isl::map preimage_domain(isl::multi_pw_aff mpa) const;
-  inline isl::map preimage_domain(isl::pw_multi_aff pma) const;
-  inline isl::union_map preimage_domain(const isl::union_pw_multi_aff &upma) const;
-  inline isl::map preimage_range(isl::multi_aff ma) const;
-  inline isl::map preimage_range(isl::pw_multi_aff pma) const;
-  inline isl::union_map preimage_range(const isl::union_pw_multi_aff &upma) const;
-  inline isl::map product(isl::map map2) const;
-  inline isl::union_map product(const isl::union_map &umap2) const;
-  inline isl::map product(const isl::basic_map &map2) const;
-  inline isl::map project_out_all_params() const;
-  inline isl::set range() const;
-  inline isl::map range_factor_domain() const;
-  inline isl::map range_factor_range() const;
-  inline isl::fixed_box range_lattice_tile() const;
-  inline isl::fixed_box get_range_lattice_tile() const;
-  inline isl::union_map range_map() const;
-  inline isl::map range_product(isl::map map2) const;
-  inline isl::union_map range_product(const isl::union_map &umap2) const;
-  inline isl::map range_product(const isl::basic_map &map2) const;
-  inline isl::map range_reverse() const;
-  inline isl::fixed_box range_simple_fixed_box_hull() const;
-  inline isl::fixed_box get_range_simple_fixed_box_hull() const;
-  inline unsigned range_tuple_dim() const;
-  inline isl::id range_tuple_id() const;
-  inline isl::id get_range_tuple_id() const;
-  inline isl::map reverse() const;
-  inline isl::basic_map sample() const;
-  inline isl::map set_domain_tuple(isl::id id) const;
-  inline isl::map set_domain_tuple(const std::string &id) const;
-  inline isl::map set_range_tuple(isl::id id) const;
-  inline isl::map set_range_tuple(const std::string &id) const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::map subtract(isl::map map2) const;
-  inline isl::union_map subtract(const isl::union_map &umap2) const;
-  inline isl::map subtract(const isl::basic_map &map2) const;
-  inline isl::union_map subtract_domain(const isl::union_set &dom) const;
-  inline isl::union_map subtract_range(const isl::union_set &dom) const;
-  inline isl::map_list to_list() const;
-  inline isl::union_map to_union_map() const;
-  inline isl::map uncurry() const;
-  inline isl::map unite(isl::map map2) const;
-  inline isl::union_map unite(const isl::union_map &umap2) const;
-  inline isl::map unite(const isl::basic_map &map2) const;
-  static inline isl::map universe(isl::space space);
-  inline isl::basic_map unshifted_simple_hull() const;
-  inline isl::map upper_bound(isl::multi_pw_aff upper) const;
-  inline isl::set wrap() const;
-  inline isl::map zip() const;
-};
-
-// declarations for isl::map_list
-inline map_list manage(__isl_take isl_map_list *ptr);
-inline map_list manage_copy(__isl_keep isl_map_list *ptr);
-
-class map_list {
-  friend inline map_list manage(__isl_take isl_map_list *ptr);
-  friend inline map_list manage_copy(__isl_keep isl_map_list *ptr);
-
-protected:
-  isl_map_list *ptr = nullptr;
-
-  inline explicit map_list(__isl_take isl_map_list *ptr);
-
-public:
-  inline /* implicit */ map_list();
-  inline /* implicit */ map_list(const map_list &obj);
-  inline explicit map_list(isl::ctx ctx, int n);
-  inline explicit map_list(isl::map el);
-  inline explicit map_list(isl::ctx ctx, const std::string &str);
-  inline map_list &operator=(map_list obj);
-  inline ~map_list();
-  inline __isl_give isl_map_list *copy() const &;
-  inline __isl_give isl_map_list *copy() && = delete;
-  inline __isl_keep isl_map_list *get() const;
-  inline __isl_give isl_map_list *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::map_list add(isl::map el) const;
-  inline isl::map at(int index) const;
-  inline isl::map get_at(int index) const;
-  inline isl::map_list clear() const;
-  inline isl::map_list concat(isl::map_list list2) const;
-  inline isl::map_list drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(isl::map)> &fn) const;
-  inline isl::map_list insert(unsigned int pos, isl::map el) const;
-  inline unsigned size() const;
-};
-
-// declarations for isl::multi_aff
-inline multi_aff manage(__isl_take isl_multi_aff *ptr);
-inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
-
-class multi_aff {
-  friend inline multi_aff manage(__isl_take isl_multi_aff *ptr);
-  friend inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
-
-protected:
-  isl_multi_aff *ptr = nullptr;
-
-  inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
-
-public:
-  inline /* implicit */ multi_aff();
-  inline /* implicit */ multi_aff(const multi_aff &obj);
-  inline /* implicit */ multi_aff(isl::aff aff);
-  inline explicit multi_aff(isl::space space, isl::aff_list list);
-  inline explicit multi_aff(isl::ctx ctx, const std::string &str);
-  inline multi_aff &operator=(multi_aff obj);
-  inline ~multi_aff();
-  inline __isl_give isl_multi_aff *copy() const &;
-  inline __isl_give isl_multi_aff *copy() && = delete;
-  inline __isl_keep isl_multi_aff *get() const;
-  inline __isl_give isl_multi_aff *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::multi_aff add(isl::multi_aff multi2) const;
-  inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff add(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::multi_aff add(const isl::aff &multi2) const;
-  inline isl::multi_aff add_constant(isl::multi_val mv) const;
-  inline isl::multi_aff add_constant(isl::val v) const;
-  inline isl::multi_aff add_constant(long v) const;
-  inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::map as_map() const;
-  inline isl::multi_aff as_multi_aff() const;
-  inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::set as_set() const;
-  inline isl::union_map as_union_map() const;
-  inline isl::aff at(int pos) const;
-  inline isl::aff get_at(int pos) const;
-  inline isl::basic_set bind(isl::multi_id tuple) const;
-  inline isl::multi_aff bind_domain(isl::multi_id tuple) const;
-  inline isl::multi_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
-  inline isl::pw_multi_aff coalesce() const;
-  inline isl::multi_val constant_multi_val() const;
-  inline isl::multi_val get_constant_multi_val() const;
-  inline isl::set domain() const;
-  static inline isl::multi_aff domain_map(isl::space space);
-  inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
-  inline isl::multi_aff flat_range_product(isl::multi_aff multi2) const;
-  inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff flat_range_product(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::multi_aff flat_range_product(const isl::aff &multi2) const;
-  inline isl::multi_aff floor() const;
-  inline void foreach_piece(const std::function<void(isl::set, isl::multi_aff)> &fn) const;
-  inline isl::multi_aff gist(isl::set context) const;
-  inline isl::union_pw_multi_aff gist(const isl::union_set &context) const;
-  inline isl::multi_aff gist(const isl::basic_set &context) const;
-  inline isl::multi_aff gist(const isl::point &context) const;
-  inline bool has_range_tuple_id() const;
-  inline isl::multi_aff identity() const;
-  static inline isl::multi_aff identity_on_domain(isl::space space);
-  inline isl::multi_aff insert_domain(isl::space domain) const;
-  inline isl::pw_multi_aff intersect_domain(const isl::set &set) const;
-  inline isl::union_pw_multi_aff intersect_domain(const isl::space &space) const;
-  inline isl::union_pw_multi_aff intersect_domain(const isl::union_set &uset) const;
-  inline isl::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const;
-  inline isl::union_pw_multi_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
-  inline isl::pw_multi_aff intersect_params(const isl::set &set) const;
-  inline bool involves_locals() const;
-  inline bool involves_nan() const;
-  inline bool involves_param(const isl::id &id) const;
-  inline bool involves_param(const std::string &id) const;
-  inline bool involves_param(const isl::id_list &list) const;
-  inline bool isa_multi_aff() const;
-  inline bool isa_pw_multi_aff() const;
-  inline isl::aff_list list() const;
-  inline isl::aff_list get_list() const;
-  inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_val max_multi_val() const;
-  inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_val min_multi_val() const;
-  static inline isl::multi_aff multi_val_on_domain(isl::space space, isl::multi_val mv);
-  inline unsigned n_piece() const;
-  inline isl::multi_aff neg() const;
-  inline bool plain_is_empty() const;
-  inline bool plain_is_equal(const isl::multi_aff &multi2) const;
-  inline bool plain_is_equal(const isl::multi_pw_aff &multi2) const;
-  inline bool plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
-  inline bool plain_is_equal(const isl::aff &multi2) const;
-  inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::multi_aff product(isl::multi_aff multi2) const;
-  inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
-  inline isl::pw_multi_aff product(const isl::pw_multi_aff &pma2) const;
-  inline isl::multi_aff product(const isl::aff &multi2) const;
-  inline isl::multi_aff pullback(isl::multi_aff ma2) const;
-  inline isl::multi_pw_aff pullback(const isl::multi_pw_aff &mpa2) const;
-  inline isl::pw_multi_aff pullback(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff pullback(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::multi_aff pullback(const isl::aff &ma2) const;
-  inline isl::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::pw_multi_aff range_factor_domain() const;
-  inline isl::pw_multi_aff range_factor_range() const;
-  static inline isl::multi_aff range_map(isl::space space);
-  inline isl::multi_aff range_product(isl::multi_aff multi2) const;
-  inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff range_product(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::multi_aff range_product(const isl::aff &multi2) const;
-  inline isl::id range_tuple_id() const;
-  inline isl::id get_range_tuple_id() const;
-  inline isl::multi_aff reset_range_tuple_id() const;
-  inline isl::multi_aff scale(isl::multi_val mv) const;
-  inline isl::multi_aff scale(isl::val v) const;
-  inline isl::multi_aff scale(long v) const;
-  inline isl::multi_aff scale_down(isl::multi_val mv) const;
-  inline isl::multi_aff scale_down(isl::val v) const;
-  inline isl::multi_aff scale_down(long v) const;
-  inline isl::multi_aff set_at(int pos, isl::aff el) const;
-  inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
-  inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
-  inline isl::multi_aff set_range_tuple(isl::id id) const;
-  inline isl::multi_aff set_range_tuple(const std::string &id) const;
-  inline unsigned size() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::multi_aff sub(isl::multi_aff multi2) const;
-  inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff sub(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::multi_aff sub(const isl::aff &multi2) const;
-  inline isl::pw_multi_aff subtract_domain(const isl::set &set) const;
-  inline isl::union_pw_multi_aff subtract_domain(const isl::space &space) const;
-  inline isl::union_pw_multi_aff subtract_domain(const isl::union_set &uset) const;
-  inline isl::pw_multi_aff_list to_list() const;
-  inline isl::multi_pw_aff to_multi_pw_aff() const;
-  inline isl::multi_union_pw_aff to_multi_union_pw_aff() const;
-  inline isl::pw_multi_aff to_pw_multi_aff() const;
-  inline isl::union_pw_multi_aff to_union_pw_multi_aff() const;
-  inline isl::multi_aff unbind_params_insert_domain(isl::multi_id domain) const;
-  inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
-  inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
-  inline isl::pw_multi_aff union_add(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
-  static inline isl::multi_aff zero(isl::space space);
-};
-
-// declarations for isl::multi_id
-inline multi_id manage(__isl_take isl_multi_id *ptr);
-inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
-
-class multi_id {
-  friend inline multi_id manage(__isl_take isl_multi_id *ptr);
-  friend inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
-
-protected:
-  isl_multi_id *ptr = nullptr;
-
-  inline explicit multi_id(__isl_take isl_multi_id *ptr);
-
-public:
-  inline /* implicit */ multi_id();
-  inline /* implicit */ multi_id(const multi_id &obj);
-  inline explicit multi_id(isl::space space, isl::id_list list);
-  inline explicit multi_id(isl::ctx ctx, const std::string &str);
-  inline multi_id &operator=(multi_id obj);
-  inline ~multi_id();
-  inline __isl_give isl_multi_id *copy() const &;
-  inline __isl_give isl_multi_id *copy() && = delete;
-  inline __isl_keep isl_multi_id *get() const;
-  inline __isl_give isl_multi_id *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::id at(int pos) const;
-  inline isl::id get_at(int pos) const;
-  inline isl::multi_id flat_range_product(isl::multi_id multi2) const;
-  inline isl::id_list list() const;
-  inline isl::id_list get_list() const;
-  inline bool plain_is_equal(const isl::multi_id &multi2) const;
-  inline isl::multi_id range_product(isl::multi_id multi2) const;
-  inline isl::multi_id set_at(int pos, isl::id el) const;
-  inline isl::multi_id set_at(int pos, const std::string &el) const;
-  inline unsigned size() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-};
-
-// declarations for isl::multi_pw_aff
-inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
-inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
-
-class multi_pw_aff {
-  friend inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
-  friend inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
-
-protected:
-  isl_multi_pw_aff *ptr = nullptr;
-
-  inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
-
-public:
-  inline /* implicit */ multi_pw_aff();
-  inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj);
-  inline /* implicit */ multi_pw_aff(isl::aff aff);
-  inline /* implicit */ multi_pw_aff(isl::multi_aff ma);
-  inline /* implicit */ multi_pw_aff(isl::pw_aff pa);
-  inline explicit multi_pw_aff(isl::space space, isl::pw_aff_list list);
-  inline /* implicit */ multi_pw_aff(isl::pw_multi_aff pma);
-  inline explicit multi_pw_aff(isl::ctx ctx, const std::string &str);
-  inline multi_pw_aff &operator=(multi_pw_aff obj);
-  inline ~multi_pw_aff();
-  inline __isl_give isl_multi_pw_aff *copy() const &;
-  inline __isl_give isl_multi_pw_aff *copy() && = delete;
-  inline __isl_keep isl_multi_pw_aff *get() const;
-  inline __isl_give isl_multi_pw_aff *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::multi_pw_aff add(isl::multi_pw_aff multi2) const;
-  inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::multi_pw_aff add(const isl::aff &multi2) const;
-  inline isl::multi_pw_aff add(const isl::multi_aff &multi2) const;
-  inline isl::multi_pw_aff add(const isl::pw_aff &multi2) const;
-  inline isl::multi_pw_aff add(const isl::pw_multi_aff &multi2) const;
-  inline isl::multi_pw_aff add_constant(isl::multi_val mv) const;
-  inline isl::multi_pw_aff add_constant(isl::val v) const;
-  inline isl::multi_pw_aff add_constant(long v) const;
-  inline isl::map as_map() const;
-  inline isl::multi_aff as_multi_aff() const;
-  inline isl::set as_set() const;
-  inline isl::pw_aff at(int pos) const;
-  inline isl::pw_aff get_at(int pos) const;
-  inline isl::set bind(isl::multi_id tuple) const;
-  inline isl::multi_pw_aff bind_domain(isl::multi_id tuple) const;
-  inline isl::multi_pw_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
-  inline isl::multi_pw_aff coalesce() const;
-  inline isl::set domain() const;
-  inline isl::multi_pw_aff flat_range_product(isl::multi_pw_aff multi2) const;
-  inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::multi_pw_aff flat_range_product(const isl::aff &multi2) const;
-  inline isl::multi_pw_aff flat_range_product(const isl::multi_aff &multi2) const;
-  inline isl::multi_pw_aff flat_range_product(const isl::pw_aff &multi2) const;
-  inline isl::multi_pw_aff flat_range_product(const isl::pw_multi_aff &multi2) const;
-  inline isl::multi_pw_aff gist(isl::set set) const;
-  inline isl::multi_union_pw_aff gist(const isl::union_set &context) const;
-  inline isl::multi_pw_aff gist(const isl::basic_set &set) const;
-  inline isl::multi_pw_aff gist(const isl::point &set) const;
-  inline bool has_range_tuple_id() const;
-  inline isl::multi_pw_aff identity() const;
-  static inline isl::multi_pw_aff identity_on_domain(isl::space space);
-  inline isl::multi_pw_aff insert_domain(isl::space domain) const;
-  inline isl::multi_pw_aff intersect_domain(isl::set domain) const;
-  inline isl::multi_union_pw_aff intersect_domain(const isl::union_set &uset) const;
-  inline isl::multi_pw_aff intersect_domain(const isl::basic_set &domain) const;
-  inline isl::multi_pw_aff intersect_domain(const isl::point &domain) const;
-  inline isl::multi_pw_aff intersect_params(isl::set set) const;
-  inline bool involves_nan() const;
-  inline bool involves_param(const isl::id &id) const;
-  inline bool involves_param(const std::string &id) const;
-  inline bool involves_param(const isl::id_list &list) const;
-  inline bool isa_multi_aff() const;
-  inline isl::pw_aff_list list() const;
-  inline isl::pw_aff_list get_list() const;
-  inline isl::multi_pw_aff max(isl::multi_pw_aff multi2) const;
-  inline isl::multi_val max_multi_val() const;
-  inline isl::multi_pw_aff min(isl::multi_pw_aff multi2) const;
-  inline isl::multi_val min_multi_val() const;
-  inline isl::multi_pw_aff neg() const;
-  inline bool plain_is_equal(const isl::multi_pw_aff &multi2) const;
-  inline bool plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
-  inline bool plain_is_equal(const isl::aff &multi2) const;
-  inline bool plain_is_equal(const isl::multi_aff &multi2) const;
-  inline bool plain_is_equal(const isl::pw_aff &multi2) const;
-  inline bool plain_is_equal(const isl::pw_multi_aff &multi2) const;
-  inline isl::multi_pw_aff product(isl::multi_pw_aff multi2) const;
-  inline isl::multi_pw_aff pullback(isl::multi_aff ma) const;
-  inline isl::multi_pw_aff pullback(isl::multi_pw_aff mpa2) const;
-  inline isl::multi_pw_aff pullback(isl::pw_multi_aff pma) const;
-  inline isl::multi_union_pw_aff pullback(const isl::union_pw_multi_aff &upma) const;
-  inline isl::multi_pw_aff range_product(isl::multi_pw_aff multi2) const;
-  inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::multi_pw_aff range_product(const isl::aff &multi2) const;
-  inline isl::multi_pw_aff range_product(const isl::multi_aff &multi2) const;
-  inline isl::multi_pw_aff range_product(const isl::pw_aff &multi2) const;
-  inline isl::multi_pw_aff range_product(const isl::pw_multi_aff &multi2) const;
-  inline isl::id range_tuple_id() const;
-  inline isl::id get_range_tuple_id() const;
-  inline isl::multi_pw_aff reset_range_tuple_id() const;
-  inline isl::multi_pw_aff scale(isl::multi_val mv) const;
-  inline isl::multi_pw_aff scale(isl::val v) const;
-  inline isl::multi_pw_aff scale(long v) const;
-  inline isl::multi_pw_aff scale_down(isl::multi_val mv) const;
-  inline isl::multi_pw_aff scale_down(isl::val v) const;
-  inline isl::multi_pw_aff scale_down(long v) const;
-  inline isl::multi_pw_aff set_at(int pos, isl::pw_aff el) const;
-  inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
-  inline isl::multi_pw_aff set_range_tuple(isl::id id) const;
-  inline isl::multi_pw_aff set_range_tuple(const std::string &id) const;
-  inline unsigned size() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::multi_pw_aff sub(isl::multi_pw_aff multi2) const;
-  inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::multi_pw_aff sub(const isl::aff &multi2) const;
-  inline isl::multi_pw_aff sub(const isl::multi_aff &multi2) const;
-  inline isl::multi_pw_aff sub(const isl::pw_aff &multi2) const;
-  inline isl::multi_pw_aff sub(const isl::pw_multi_aff &multi2) const;
-  inline isl::multi_pw_aff unbind_params_insert_domain(isl::multi_id domain) const;
-  inline isl::multi_pw_aff union_add(isl::multi_pw_aff mpa2) const;
-  inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
-  inline isl::multi_pw_aff union_add(const isl::aff &mpa2) const;
-  inline isl::multi_pw_aff union_add(const isl::multi_aff &mpa2) const;
-  inline isl::multi_pw_aff union_add(const isl::pw_aff &mpa2) const;
-  inline isl::multi_pw_aff union_add(const isl::pw_multi_aff &mpa2) const;
-  static inline isl::multi_pw_aff zero(isl::space space);
-};
-
-// declarations for isl::multi_union_pw_aff
-inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
-inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
-
-class multi_union_pw_aff {
-  friend inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
-  friend inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
-
-protected:
-  isl_multi_union_pw_aff *ptr = nullptr;
-
-  inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr);
-
-public:
-  inline /* implicit */ multi_union_pw_aff();
-  inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj);
-  inline /* implicit */ multi_union_pw_aff(isl::multi_pw_aff mpa);
-  inline /* implicit */ multi_union_pw_aff(isl::union_pw_aff upa);
-  inline explicit multi_union_pw_aff(isl::space space, isl::union_pw_aff_list list);
-  inline explicit multi_union_pw_aff(isl::ctx ctx, const std::string &str);
-  inline multi_union_pw_aff &operator=(multi_union_pw_aff obj);
-  inline ~multi_union_pw_aff();
-  inline __isl_give isl_multi_union_pw_aff *copy() const &;
-  inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
-  inline __isl_keep isl_multi_union_pw_aff *get() const;
-  inline __isl_give isl_multi_union_pw_aff *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::multi_union_pw_aff add(isl::multi_union_pw_aff multi2) const;
-  inline isl::union_pw_aff at(int pos) const;
-  inline isl::union_pw_aff get_at(int pos) const;
-  inline isl::union_set bind(isl::multi_id tuple) const;
-  inline isl::multi_union_pw_aff coalesce() const;
-  inline isl::union_set domain() const;
-  inline isl::multi_union_pw_aff flat_range_product(isl::multi_union_pw_aff multi2) const;
-  inline isl::multi_union_pw_aff gist(isl::union_set context) const;
-  inline bool has_range_tuple_id() const;
-  inline isl::multi_union_pw_aff intersect_domain(isl::union_set uset) const;
-  inline isl::multi_union_pw_aff intersect_params(isl::set params) const;
-  inline bool involves_nan() const;
-  inline isl::union_pw_aff_list list() const;
-  inline isl::union_pw_aff_list get_list() const;
-  inline isl::multi_union_pw_aff neg() const;
-  inline bool plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
-  inline isl::multi_union_pw_aff range_product(isl::multi_union_pw_aff multi2) const;
-  inline isl::id range_tuple_id() const;
-  inline isl::id get_range_tuple_id() const;
-  inline isl::multi_union_pw_aff reset_range_tuple_id() const;
-  inline isl::multi_union_pw_aff scale(isl::multi_val mv) const;
-  inline isl::multi_union_pw_aff scale(isl::val v) const;
-  inline isl::multi_union_pw_aff scale(long v) const;
-  inline isl::multi_union_pw_aff scale_down(isl::multi_val mv) const;
-  inline isl::multi_union_pw_aff scale_down(isl::val v) const;
-  inline isl::multi_union_pw_aff scale_down(long v) const;
-  inline isl::multi_union_pw_aff set_at(int pos, isl::union_pw_aff el) const;
-  inline isl::multi_union_pw_aff set_range_tuple(isl::id id) const;
-  inline isl::multi_union_pw_aff set_range_tuple(const std::string &id) const;
-  inline unsigned size() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::multi_union_pw_aff sub(isl::multi_union_pw_aff multi2) const;
-  inline isl::multi_union_pw_aff union_add(isl::multi_union_pw_aff mupa2) const;
-  static inline isl::multi_union_pw_aff zero(isl::space space);
-};
-
-// declarations for isl::multi_val
-inline multi_val manage(__isl_take isl_multi_val *ptr);
-inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
-
-class multi_val {
-  friend inline multi_val manage(__isl_take isl_multi_val *ptr);
-  friend inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
-
-protected:
-  isl_multi_val *ptr = nullptr;
-
-  inline explicit multi_val(__isl_take isl_multi_val *ptr);
-
-public:
-  inline /* implicit */ multi_val();
-  inline /* implicit */ multi_val(const multi_val &obj);
-  inline explicit multi_val(isl::space space, isl::val_list list);
-  inline explicit multi_val(isl::ctx ctx, const std::string &str);
-  inline multi_val &operator=(multi_val obj);
-  inline ~multi_val();
-  inline __isl_give isl_multi_val *copy() const &;
-  inline __isl_give isl_multi_val *copy() && = delete;
-  inline __isl_keep isl_multi_val *get() const;
-  inline __isl_give isl_multi_val *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::multi_val add(isl::multi_val multi2) const;
-  inline isl::multi_val add(isl::val v) const;
-  inline isl::multi_val add(long v) const;
-  inline isl::val at(int pos) const;
-  inline isl::val get_at(int pos) const;
-  inline isl::multi_val flat_range_product(isl::multi_val multi2) const;
-  inline bool has_range_tuple_id() const;
-  inline bool involves_nan() const;
-  inline isl::val_list list() const;
-  inline isl::val_list get_list() const;
-  inline isl::multi_val max(isl::multi_val multi2) const;
-  inline isl::multi_val min(isl::multi_val multi2) const;
-  inline isl::multi_val neg() const;
-  inline bool plain_is_equal(const isl::multi_val &multi2) const;
-  inline isl::multi_val product(isl::multi_val multi2) const;
-  inline isl::multi_val range_product(isl::multi_val multi2) const;
-  inline isl::id range_tuple_id() const;
-  inline isl::id get_range_tuple_id() const;
-  inline isl::multi_val reset_range_tuple_id() const;
-  inline isl::multi_val scale(isl::multi_val mv) const;
-  inline isl::multi_val scale(isl::val v) const;
-  inline isl::multi_val scale(long v) const;
-  inline isl::multi_val scale_down(isl::multi_val mv) const;
-  inline isl::multi_val scale_down(isl::val v) const;
-  inline isl::multi_val scale_down(long v) const;
-  inline isl::multi_val set_at(int pos, isl::val el) const;
-  inline isl::multi_val set_at(int pos, long el) const;
-  inline isl::multi_val set_range_tuple(isl::id id) const;
-  inline isl::multi_val set_range_tuple(const std::string &id) const;
-  inline unsigned size() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::multi_val sub(isl::multi_val multi2) const;
-  static inline isl::multi_val zero(isl::space space);
-};
-
-// declarations for isl::point
-inline point manage(__isl_take isl_point *ptr);
-inline point manage_copy(__isl_keep isl_point *ptr);
-
-class point {
-  friend inline point manage(__isl_take isl_point *ptr);
-  friend inline point manage_copy(__isl_keep isl_point *ptr);
-
-protected:
-  isl_point *ptr = nullptr;
-
-  inline explicit point(__isl_take isl_point *ptr);
-
-public:
-  inline /* implicit */ point();
-  inline /* implicit */ point(const point &obj);
-  inline point &operator=(point obj);
-  inline ~point();
-  inline __isl_give isl_point *copy() const &;
-  inline __isl_give isl_point *copy() && = delete;
-  inline __isl_keep isl_point *get() const;
-  inline __isl_give isl_point *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::basic_set affine_hull() const;
-  inline isl::basic_set apply(const isl::basic_map &bmap) const;
-  inline isl::set apply(const isl::map &map) const;
-  inline isl::union_set apply(const isl::union_map &umap) const;
-  inline isl::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::set as_set() const;
-  inline isl::set bind(const isl::multi_id &tuple) const;
-  inline isl::set coalesce() const;
-  inline isl::set complement() const;
-  inline isl::union_set compute_divs() const;
-  inline isl::basic_set detect_equalities() const;
-  inline isl::val dim_max_val(int pos) const;
-  inline isl::val dim_min_val(int pos) const;
-  inline bool every_set(const std::function<bool(isl::set)> &test) const;
-  inline isl::set extract_set(const isl::space &space) const;
-  inline isl::basic_set flatten() const;
-  inline void foreach_basic_set(const std::function<void(isl::basic_set)> &fn) const;
-  inline void foreach_point(const std::function<void(isl::point)> &fn) const;
-  inline void foreach_set(const std::function<void(isl::set)> &fn) const;
-  inline isl::basic_set gist(const isl::basic_set &context) const;
-  inline isl::set gist(const isl::set &context) const;
-  inline isl::union_set gist(const isl::union_set &context) const;
-  inline isl::union_set gist_params(const isl::set &set) const;
-  inline isl::map identity() const;
-  inline isl::pw_aff indicator_function() const;
-  inline isl::map insert_domain(const isl::space &domain) const;
-  inline isl::basic_set intersect(const isl::basic_set &bset2) const;
-  inline isl::set intersect(const isl::set &set2) const;
-  inline isl::union_set intersect(const isl::union_set &uset2) const;
-  inline isl::basic_set intersect_params(const isl::basic_set &bset2) const;
-  inline isl::set intersect_params(const isl::set &params) const;
-  inline bool involves_locals() const;
-  inline bool is_disjoint(const isl::set &set2) const;
-  inline bool is_disjoint(const isl::union_set &uset2) const;
-  inline bool is_empty() const;
-  inline bool is_equal(const isl::basic_set &bset2) const;
-  inline bool is_equal(const isl::set &set2) const;
-  inline bool is_equal(const isl::union_set &uset2) const;
-  inline bool is_singleton() const;
-  inline bool is_strict_subset(const isl::set &set2) const;
-  inline bool is_strict_subset(const isl::union_set &uset2) const;
-  inline bool is_subset(const isl::basic_set &bset2) const;
-  inline bool is_subset(const isl::set &set2) const;
-  inline bool is_subset(const isl::union_set &uset2) const;
-  inline bool is_wrapping() const;
-  inline bool isa_set() const;
-  inline isl::set lexmax() const;
-  inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
-  inline isl::set lexmin() const;
-  inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
-  inline isl::set lower_bound(const isl::multi_pw_aff &lower) const;
-  inline isl::set lower_bound(const isl::multi_val &lower) const;
-  inline isl::multi_pw_aff max_multi_pw_aff() const;
-  inline isl::val max_val(const isl::aff &obj) const;
-  inline isl::multi_pw_aff min_multi_pw_aff() const;
-  inline isl::val min_val(const isl::aff &obj) const;
-  inline isl::multi_val multi_val() const;
-  inline isl::multi_val get_multi_val() const;
-  inline unsigned n_basic_set() const;
-  inline isl::basic_set params() const;
-  inline isl::multi_val plain_multi_val_if_fixed() const;
-  inline isl::basic_set polyhedral_hull() const;
-  inline isl::set preimage(const isl::multi_aff &ma) const;
-  inline isl::set preimage(const isl::multi_pw_aff &mpa) const;
-  inline isl::set preimage(const isl::pw_multi_aff &pma) const;
-  inline isl::union_set preimage(const isl::union_pw_multi_aff &upma) const;
-  inline isl::set product(const isl::set &set2) const;
-  inline isl::set project_out_all_params() const;
-  inline isl::set project_out_param(const isl::id &id) const;
-  inline isl::set project_out_param(const std::string &id) const;
-  inline isl::set project_out_param(const isl::id_list &list) const;
-  inline isl::pw_multi_aff pw_multi_aff_on_domain(const isl::multi_val &mv) const;
-  inline isl::basic_set sample() const;
-  inline isl::point sample_point() const;
-  inline isl::set_list set_list() const;
-  inline isl::fixed_box simple_fixed_box_hull() const;
-  inline isl::space space() const;
-  inline isl::val stride(int pos) const;
-  inline isl::set subtract(const isl::set &set2) const;
-  inline isl::union_set subtract(const isl::union_set &uset2) const;
-  inline isl::set_list to_list() const;
-  inline isl::set to_set() const;
-  inline isl::union_set to_union_set() const;
-  inline isl::map translation() const;
-  inline unsigned tuple_dim() const;
-  inline isl::set unbind_params(const isl::multi_id &tuple) const;
-  inline isl::map unbind_params_insert_domain(const isl::multi_id &domain) const;
-  inline isl::set unite(const isl::basic_set &bset2) const;
-  inline isl::set unite(const isl::set &set2) const;
-  inline isl::union_set unite(const isl::union_set &uset2) const;
-  inline isl::basic_set unshifted_simple_hull() const;
-  inline isl::map unwrap() const;
-  inline isl::set upper_bound(const isl::multi_pw_aff &upper) const;
-  inline isl::set upper_bound(const isl::multi_val &upper) const;
-};
-
-// declarations for isl::pw_aff
-inline pw_aff manage(__isl_take isl_pw_aff *ptr);
-inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
-
-class pw_aff {
-  friend inline pw_aff manage(__isl_take isl_pw_aff *ptr);
-  friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
-
-protected:
-  isl_pw_aff *ptr = nullptr;
-
-  inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
-
-public:
-  inline /* implicit */ pw_aff();
-  inline /* implicit */ pw_aff(const pw_aff &obj);
-  inline /* implicit */ pw_aff(isl::aff aff);
-  inline explicit pw_aff(isl::ctx ctx, const std::string &str);
-  inline pw_aff &operator=(pw_aff obj);
-  inline ~pw_aff();
-  inline __isl_give isl_pw_aff *copy() const &;
-  inline __isl_give isl_pw_aff *copy() && = delete;
-  inline __isl_keep isl_pw_aff *get() const;
-  inline __isl_give isl_pw_aff *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_aff add(isl::pw_aff pwaff2) const;
-  inline isl::pw_multi_aff add(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_aff add(const isl::union_pw_aff &upa2) const;
-  inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_aff add(const isl::aff &pwaff2) const;
-  inline isl::pw_aff add_constant(isl::val v) const;
-  inline isl::pw_aff add_constant(long v) const;
-  inline isl::pw_multi_aff add_constant(const isl::multi_val &mv) const;
-  inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::aff as_aff() const;
-  inline isl::map as_map() const;
-  inline isl::multi_aff as_multi_aff() const;
-  inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::set as_set() const;
-  inline isl::union_map as_union_map() const;
-  inline isl::pw_aff at(int pos) const;
-  inline isl::set bind(const isl::multi_id &tuple) const;
-  inline isl::set bind(isl::id id) const;
-  inline isl::set bind(const std::string &id) const;
-  inline isl::pw_aff bind_domain(isl::multi_id tuple) const;
-  inline isl::pw_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
-  inline isl::pw_aff ceil() const;
-  inline isl::pw_aff coalesce() const;
-  inline isl::pw_aff cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const;
-  inline isl::pw_aff div(isl::pw_aff pa2) const;
-  inline isl::set domain() const;
-  inline isl::set eq_set(isl::pw_aff pwaff2) const;
-  inline isl::val eval(isl::point pnt) const;
-  inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
-  inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff flat_range_product(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_aff floor() const;
-  inline void foreach_piece(const std::function<void(isl::set, isl::multi_aff)> &fn) const;
-  inline isl::set ge_set(isl::pw_aff pwaff2) const;
-  inline isl::pw_aff gist(isl::set context) const;
-  inline isl::union_pw_aff gist(const isl::union_set &context) const;
-  inline isl::pw_aff gist(const isl::basic_set &context) const;
-  inline isl::pw_aff gist(const isl::point &context) const;
-  inline isl::set gt_set(isl::pw_aff pwaff2) const;
-  inline bool has_range_tuple_id() const;
-  inline isl::multi_pw_aff identity() const;
-  inline isl::pw_aff insert_domain(isl::space domain) const;
-  inline isl::pw_aff intersect_domain(isl::set set) const;
-  inline isl::union_pw_aff intersect_domain(const isl::space &space) const;
-  inline isl::union_pw_aff intersect_domain(const isl::union_set &uset) const;
-  inline isl::pw_aff intersect_domain(const isl::basic_set &set) const;
-  inline isl::pw_aff intersect_domain(const isl::point &set) const;
-  inline isl::union_pw_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const;
-  inline isl::union_pw_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
-  inline isl::pw_aff intersect_params(isl::set set) const;
-  inline bool involves_locals() const;
-  inline bool involves_nan() const;
-  inline bool involves_param(const isl::id &id) const;
-  inline bool involves_param(const std::string &id) const;
-  inline bool involves_param(const isl::id_list &list) const;
-  inline bool isa_aff() const;
-  inline bool isa_multi_aff() const;
-  inline bool isa_pw_multi_aff() const;
-  inline isl::set le_set(isl::pw_aff pwaff2) const;
-  inline isl::pw_aff_list list() const;
-  inline isl::set lt_set(isl::pw_aff pwaff2) const;
-  inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
-  inline isl::pw_aff max(isl::pw_aff pwaff2) const;
-  inline isl::pw_aff max(const isl::aff &pwaff2) const;
-  inline isl::multi_val max_multi_val() const;
-  inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
-  inline isl::pw_aff min(isl::pw_aff pwaff2) const;
-  inline isl::pw_aff min(const isl::aff &pwaff2) const;
-  inline isl::multi_val min_multi_val() const;
-  inline isl::pw_aff mod(isl::val mod) const;
-  inline isl::pw_aff mod(long mod) const;
-  inline isl::pw_aff mul(isl::pw_aff pwaff2) const;
-  inline unsigned n_piece() const;
-  inline isl::set ne_set(isl::pw_aff pwaff2) const;
-  inline isl::pw_aff neg() const;
-  static inline isl::pw_aff param_on_domain(isl::set domain, isl::id id);
-  inline bool plain_is_empty() const;
-  inline bool plain_is_equal(const isl::multi_pw_aff &multi2) const;
-  inline bool plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
-  inline isl::pw_multi_aff product(const isl::pw_multi_aff &pma2) const;
-  inline isl::pw_aff pullback(isl::multi_aff ma) const;
-  inline isl::pw_aff pullback(isl::multi_pw_aff mpa) const;
-  inline isl::pw_aff pullback(isl::pw_multi_aff pma) const;
-  inline isl::union_pw_aff pullback(const isl::union_pw_multi_aff &upma) const;
-  inline isl::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::pw_multi_aff range_factor_domain() const;
-  inline isl::pw_multi_aff range_factor_range() const;
-  inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff range_product(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::id range_tuple_id() const;
-  inline isl::multi_pw_aff reset_range_tuple_id() const;
-  inline isl::multi_pw_aff scale(const isl::multi_val &mv) const;
-  inline isl::pw_aff scale(isl::val v) const;
-  inline isl::pw_aff scale(long v) const;
-  inline isl::multi_pw_aff scale_down(const isl::multi_val &mv) const;
-  inline isl::pw_aff scale_down(isl::val f) const;
-  inline isl::pw_aff scale_down(long f) const;
-  inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
-  inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
-  inline isl::pw_multi_aff set_range_tuple(const isl::id &id) const;
-  inline isl::pw_multi_aff set_range_tuple(const std::string &id) const;
-  inline unsigned size() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_aff sub(isl::pw_aff pwaff2) const;
-  inline isl::pw_multi_aff sub(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_aff sub(const isl::union_pw_aff &upa2) const;
-  inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_aff sub(const isl::aff &pwaff2) const;
-  inline isl::pw_aff subtract_domain(isl::set set) const;
-  inline isl::union_pw_aff subtract_domain(const isl::space &space) const;
-  inline isl::union_pw_aff subtract_domain(const isl::union_set &uset) const;
-  inline isl::pw_aff subtract_domain(const isl::basic_set &set) const;
-  inline isl::pw_aff subtract_domain(const isl::point &set) const;
-  inline isl::pw_aff tdiv_q(isl::pw_aff pa2) const;
-  inline isl::pw_aff tdiv_r(isl::pw_aff pa2) const;
-  inline isl::pw_aff_list to_list() const;
-  inline isl::multi_pw_aff to_multi_pw_aff() const;
-  inline isl::union_pw_aff to_union_pw_aff() const;
-  inline isl::union_pw_multi_aff to_union_pw_multi_aff() const;
-  inline isl::multi_pw_aff unbind_params_insert_domain(const isl::multi_id &domain) const;
-  inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
-  inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
-  inline isl::pw_aff union_add(isl::pw_aff pwaff2) const;
-  inline isl::pw_multi_aff union_add(const isl::pw_multi_aff &pma2) const;
-  inline isl::union_pw_aff union_add(const isl::union_pw_aff &upa2) const;
-  inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_aff union_add(const isl::aff &pwaff2) const;
-};
-
-// declarations for isl::pw_aff_list
-inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
-inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
-
-class pw_aff_list {
-  friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
-  friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
-
-protected:
-  isl_pw_aff_list *ptr = nullptr;
-
-  inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
-
-public:
-  inline /* implicit */ pw_aff_list();
-  inline /* implicit */ pw_aff_list(const pw_aff_list &obj);
-  inline explicit pw_aff_list(isl::ctx ctx, int n);
-  inline explicit pw_aff_list(isl::pw_aff el);
-  inline explicit pw_aff_list(isl::ctx ctx, const std::string &str);
-  inline pw_aff_list &operator=(pw_aff_list obj);
-  inline ~pw_aff_list();
-  inline __isl_give isl_pw_aff_list *copy() const &;
-  inline __isl_give isl_pw_aff_list *copy() && = delete;
-  inline __isl_keep isl_pw_aff_list *get() const;
-  inline __isl_give isl_pw_aff_list *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::pw_aff_list add(isl::pw_aff el) const;
-  inline isl::pw_aff at(int index) const;
-  inline isl::pw_aff get_at(int index) const;
-  inline isl::pw_aff_list clear() const;
-  inline isl::pw_aff_list concat(isl::pw_aff_list list2) const;
-  inline isl::pw_aff_list drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(isl::pw_aff)> &fn) const;
-  inline isl::pw_aff_list insert(unsigned int pos, isl::pw_aff el) const;
-  inline unsigned size() const;
-};
-
-// declarations for isl::pw_multi_aff
-inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
-inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
-
-class pw_multi_aff {
-  friend inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
-  friend inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
-
-protected:
-  isl_pw_multi_aff *ptr = nullptr;
-
-  inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
-
-public:
-  inline /* implicit */ pw_multi_aff();
-  inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj);
-  inline /* implicit */ pw_multi_aff(isl::multi_aff ma);
-  inline /* implicit */ pw_multi_aff(isl::pw_aff pa);
-  inline explicit pw_multi_aff(isl::ctx ctx, const std::string &str);
-  inline pw_multi_aff &operator=(pw_multi_aff obj);
-  inline ~pw_multi_aff();
-  inline __isl_give isl_pw_multi_aff *copy() const &;
-  inline __isl_give isl_pw_multi_aff *copy() && = delete;
-  inline __isl_keep isl_pw_multi_aff *get() const;
-  inline __isl_give isl_pw_multi_aff *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff add(isl::pw_multi_aff pma2) const;
-  inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_multi_aff add(const isl::multi_aff &pma2) const;
-  inline isl::pw_multi_aff add(const isl::pw_aff &pma2) const;
-  inline isl::pw_multi_aff add_constant(isl::multi_val mv) const;
-  inline isl::pw_multi_aff add_constant(isl::val v) const;
-  inline isl::pw_multi_aff add_constant(long v) const;
-  inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::map as_map() const;
-  inline isl::multi_aff as_multi_aff() const;
-  inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::set as_set() const;
-  inline isl::union_map as_union_map() const;
-  inline isl::pw_aff at(int pos) const;
-  inline isl::pw_aff get_at(int pos) const;
-  inline isl::set bind(const isl::multi_id &tuple) const;
-  inline isl::pw_multi_aff bind_domain(isl::multi_id tuple) const;
-  inline isl::pw_multi_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
-  inline isl::pw_multi_aff coalesce() const;
-  inline isl::set domain() const;
-  static inline isl::pw_multi_aff domain_map(isl::space space);
-  inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
-  inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff flat_range_product(isl::pw_multi_aff pma2) const;
-  inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_multi_aff flat_range_product(const isl::multi_aff &pma2) const;
-  inline isl::pw_multi_aff flat_range_product(const isl::pw_aff &pma2) const;
-  inline void foreach_piece(const std::function<void(isl::set, isl::multi_aff)> &fn) const;
-  inline isl::pw_multi_aff gist(isl::set set) const;
-  inline isl::union_pw_multi_aff gist(const isl::union_set &context) const;
-  inline isl::pw_multi_aff gist(const isl::basic_set &set) const;
-  inline isl::pw_multi_aff gist(const isl::point &set) const;
-  inline bool has_range_tuple_id() const;
-  inline isl::multi_pw_aff identity() const;
-  static inline isl::pw_multi_aff identity_on_domain(isl::space space);
-  inline isl::pw_multi_aff insert_domain(isl::space domain) const;
-  inline isl::pw_multi_aff intersect_domain(isl::set set) const;
-  inline isl::union_pw_multi_aff intersect_domain(const isl::space &space) const;
-  inline isl::union_pw_multi_aff intersect_domain(const isl::union_set &uset) const;
-  inline isl::pw_multi_aff intersect_domain(const isl::basic_set &set) const;
-  inline isl::pw_multi_aff intersect_domain(const isl::point &set) const;
-  inline isl::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const;
-  inline isl::union_pw_multi_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
-  inline isl::pw_multi_aff intersect_params(isl::set set) const;
-  inline bool involves_locals() const;
-  inline bool involves_nan() const;
-  inline bool involves_param(const isl::id &id) const;
-  inline bool involves_param(const std::string &id) const;
-  inline bool involves_param(const isl::id_list &list) const;
-  inline bool isa_multi_aff() const;
-  inline bool isa_pw_multi_aff() const;
-  inline isl::pw_aff_list list() const;
-  inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_val max_multi_val() const;
-  inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_val min_multi_val() const;
-  static inline isl::pw_multi_aff multi_val_on_domain(isl::set domain, isl::multi_val mv);
-  inline unsigned n_piece() const;
-  inline isl::multi_pw_aff neg() const;
-  inline bool plain_is_empty() const;
-  inline bool plain_is_equal(const isl::multi_pw_aff &multi2) const;
-  inline bool plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff preimage_domain_wrapped_domain(isl::pw_multi_aff pma2) const;
-  inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::multi_aff &pma2) const;
-  inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_aff &pma2) const;
-  inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
-  inline isl::pw_multi_aff product(isl::pw_multi_aff pma2) const;
-  inline isl::pw_multi_aff product(const isl::multi_aff &pma2) const;
-  inline isl::pw_multi_aff product(const isl::pw_aff &pma2) const;
-  inline isl::multi_pw_aff pullback(const isl::multi_pw_aff &mpa2) const;
-  inline isl::pw_multi_aff pullback(isl::multi_aff ma) const;
-  inline isl::pw_multi_aff pullback(isl::pw_multi_aff pma2) const;
-  inline isl::union_pw_multi_aff pullback(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::pw_multi_aff range_factor_domain() const;
-  inline isl::pw_multi_aff range_factor_range() const;
-  static inline isl::pw_multi_aff range_map(isl::space space);
-  inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff range_product(isl::pw_multi_aff pma2) const;
-  inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_multi_aff range_product(const isl::multi_aff &pma2) const;
-  inline isl::pw_multi_aff range_product(const isl::pw_aff &pma2) const;
-  inline isl::id range_tuple_id() const;
-  inline isl::id get_range_tuple_id() const;
-  inline isl::multi_pw_aff reset_range_tuple_id() const;
-  inline isl::multi_pw_aff scale(const isl::multi_val &mv) const;
-  inline isl::pw_multi_aff scale(isl::val v) const;
-  inline isl::pw_multi_aff scale(long v) const;
-  inline isl::multi_pw_aff scale_down(const isl::multi_val &mv) const;
-  inline isl::pw_multi_aff scale_down(isl::val v) const;
-  inline isl::pw_multi_aff scale_down(long v) const;
-  inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
-  inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
-  inline isl::pw_multi_aff set_range_tuple(isl::id id) const;
-  inline isl::pw_multi_aff set_range_tuple(const std::string &id) const;
-  inline unsigned size() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
-  inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::pw_multi_aff sub(isl::pw_multi_aff pma2) const;
-  inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_multi_aff sub(const isl::multi_aff &pma2) const;
-  inline isl::pw_multi_aff sub(const isl::pw_aff &pma2) const;
-  inline isl::pw_multi_aff subtract_domain(isl::set set) const;
-  inline isl::union_pw_multi_aff subtract_domain(const isl::space &space) const;
-  inline isl::union_pw_multi_aff subtract_domain(const isl::union_set &uset) const;
-  inline isl::pw_multi_aff subtract_domain(const isl::basic_set &set) const;
-  inline isl::pw_multi_aff subtract_domain(const isl::point &set) const;
-  inline isl::pw_multi_aff_list to_list() const;
-  inline isl::multi_pw_aff to_multi_pw_aff() const;
-  inline isl::union_pw_multi_aff to_union_pw_multi_aff() const;
-  inline isl::multi_pw_aff unbind_params_insert_domain(const isl::multi_id &domain) const;
-  inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
-  inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
-  inline isl::pw_multi_aff union_add(isl::pw_multi_aff pma2) const;
-  inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::pw_multi_aff union_add(const isl::multi_aff &pma2) const;
-  inline isl::pw_multi_aff union_add(const isl::pw_aff &pma2) const;
-  static inline isl::pw_multi_aff zero(isl::space space);
-};
-
-// declarations for isl::pw_multi_aff_list
-inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
-inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
-
-class pw_multi_aff_list {
-  friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
-  friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
-
-protected:
-  isl_pw_multi_aff_list *ptr = nullptr;
-
-  inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr);
-
-public:
-  inline /* implicit */ pw_multi_aff_list();
-  inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj);
-  inline explicit pw_multi_aff_list(isl::ctx ctx, int n);
-  inline explicit pw_multi_aff_list(isl::pw_multi_aff el);
-  inline explicit pw_multi_aff_list(isl::ctx ctx, const std::string &str);
-  inline pw_multi_aff_list &operator=(pw_multi_aff_list obj);
-  inline ~pw_multi_aff_list();
-  inline __isl_give isl_pw_multi_aff_list *copy() const &;
-  inline __isl_give isl_pw_multi_aff_list *copy() && = delete;
-  inline __isl_keep isl_pw_multi_aff_list *get() const;
-  inline __isl_give isl_pw_multi_aff_list *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::pw_multi_aff_list add(isl::pw_multi_aff el) const;
-  inline isl::pw_multi_aff at(int index) const;
-  inline isl::pw_multi_aff get_at(int index) const;
-  inline isl::pw_multi_aff_list clear() const;
-  inline isl::pw_multi_aff_list concat(isl::pw_multi_aff_list list2) const;
-  inline isl::pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(isl::pw_multi_aff)> &fn) const;
-  inline isl::pw_multi_aff_list insert(unsigned int pos, isl::pw_multi_aff el) const;
-  inline unsigned size() const;
-};
-
-// declarations for isl::schedule
-inline schedule manage(__isl_take isl_schedule *ptr);
-inline schedule manage_copy(__isl_keep isl_schedule *ptr);
-
-class schedule {
-  friend inline schedule manage(__isl_take isl_schedule *ptr);
-  friend inline schedule manage_copy(__isl_keep isl_schedule *ptr);
-
-protected:
-  isl_schedule *ptr = nullptr;
-
-  inline explicit schedule(__isl_take isl_schedule *ptr);
-
-public:
-  inline /* implicit */ schedule();
-  inline /* implicit */ schedule(const schedule &obj);
-  inline explicit schedule(isl::ctx ctx, const std::string &str);
-  inline schedule &operator=(schedule obj);
-  inline ~schedule();
-  inline __isl_give isl_schedule *copy() const &;
-  inline __isl_give isl_schedule *copy() && = delete;
-  inline __isl_keep isl_schedule *get() const;
-  inline __isl_give isl_schedule *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::union_set domain() const;
-  inline isl::union_set get_domain() const;
-  static inline isl::schedule from_domain(isl::union_set domain);
-  inline isl::union_map map() const;
-  inline isl::union_map get_map() const;
-  inline isl::schedule pullback(isl::union_pw_multi_aff upma) const;
-  inline isl::schedule_node root() const;
-  inline isl::schedule_node get_root() const;
-};
-
-// declarations for isl::schedule_constraints
-inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
-inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
-
-class schedule_constraints {
-  friend inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
-  friend inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
-
-protected:
-  isl_schedule_constraints *ptr = nullptr;
-
-  inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
-
-public:
-  inline /* implicit */ schedule_constraints();
-  inline /* implicit */ schedule_constraints(const schedule_constraints &obj);
-  inline explicit schedule_constraints(isl::ctx ctx, const std::string &str);
-  inline schedule_constraints &operator=(schedule_constraints obj);
-  inline ~schedule_constraints();
-  inline __isl_give isl_schedule_constraints *copy() const &;
-  inline __isl_give isl_schedule_constraints *copy() && = delete;
-  inline __isl_keep isl_schedule_constraints *get() const;
-  inline __isl_give isl_schedule_constraints *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::union_map coincidence() const;
-  inline isl::union_map get_coincidence() const;
-  inline isl::schedule compute_schedule() const;
-  inline isl::union_map conditional_validity() const;
-  inline isl::union_map get_conditional_validity() const;
-  inline isl::union_map conditional_validity_condition() const;
-  inline isl::union_map get_conditional_validity_condition() const;
-  inline isl::set context() const;
-  inline isl::set get_context() const;
-  inline isl::union_set domain() const;
-  inline isl::union_set get_domain() const;
-  static inline isl::schedule_constraints on_domain(isl::union_set domain);
-  inline isl::union_map proximity() const;
-  inline isl::union_map get_proximity() const;
-  inline isl::schedule_constraints set_coincidence(isl::union_map coincidence) const;
-  inline isl::schedule_constraints set_conditional_validity(isl::union_map condition, isl::union_map validity) const;
-  inline isl::schedule_constraints set_context(isl::set context) const;
-  inline isl::schedule_constraints set_proximity(isl::union_map proximity) const;
-  inline isl::schedule_constraints set_validity(isl::union_map validity) const;
-  inline isl::union_map validity() const;
-  inline isl::union_map get_validity() const;
-};
-
-// declarations for isl::schedule_node
-inline schedule_node manage(__isl_take isl_schedule_node *ptr);
-inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
-
-class schedule_node {
-  friend inline schedule_node manage(__isl_take isl_schedule_node *ptr);
-  friend inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
-
-protected:
-  isl_schedule_node *ptr = nullptr;
-
-  inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node();
-  inline /* implicit */ schedule_node(const schedule_node &obj);
-  inline schedule_node &operator=(schedule_node obj);
-  inline ~schedule_node();
-  inline __isl_give isl_schedule_node *copy() const &;
-  inline __isl_give isl_schedule_node *copy() && = delete;
-  inline __isl_keep isl_schedule_node *get() const;
-  inline __isl_give isl_schedule_node *release();
-  inline bool is_null() const;
-private:
-  template <typename T,
-          typename = typename std::enable_if<std::is_same<
-                  const decltype(isl_schedule_node_get_type(NULL)),
-                  const T>::value>::type>
-  inline bool isa_type(T subtype) const;
-public:
-  template <class T> inline bool isa() const;
-  template <class T> inline T as() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::schedule_node ancestor(int generation) const;
-  inline unsigned ancestor_child_position(const isl::schedule_node &ancestor) const;
-  inline unsigned get_ancestor_child_position(const isl::schedule_node &ancestor) const;
-  inline isl::schedule_node child(int pos) const;
-  inline unsigned child_position() const;
-  inline unsigned get_child_position() const;
-  inline bool every_descendant(const std::function<bool(isl::schedule_node)> &test) const;
-  inline isl::schedule_node first_child() const;
-  inline void foreach_ancestor_top_down(const std::function<void(isl::schedule_node)> &fn) const;
-  inline void foreach_descendant_top_down(const std::function<bool(isl::schedule_node)> &fn) const;
-  static inline isl::schedule_node from_domain(isl::union_set domain);
-  static inline isl::schedule_node from_extension(isl::union_map extension);
-  inline isl::schedule_node graft_after(isl::schedule_node graft) const;
-  inline isl::schedule_node graft_before(isl::schedule_node graft) const;
-  inline bool has_children() const;
-  inline bool has_next_sibling() const;
-  inline bool has_parent() const;
-  inline bool has_previous_sibling() const;
-  inline isl::schedule_node insert_context(isl::set context) const;
-  inline isl::schedule_node insert_filter(isl::union_set filter) const;
-  inline isl::schedule_node insert_guard(isl::set context) const;
-  inline isl::schedule_node insert_mark(isl::id mark) const;
-  inline isl::schedule_node insert_mark(const std::string &mark) const;
-  inline isl::schedule_node insert_partial_schedule(isl::multi_union_pw_aff schedule) const;
-  inline isl::schedule_node insert_sequence(isl::union_set_list filters) const;
-  inline isl::schedule_node insert_set(isl::union_set_list filters) const;
-  inline bool is_equal(const isl::schedule_node &node2) const;
-  inline bool is_subtree_anchored() const;
-  inline isl::schedule_node map_descendant_bottom_up(const std::function<isl::schedule_node(isl::schedule_node)> &fn) const;
-  inline unsigned n_children() const;
-  inline isl::schedule_node next_sibling() const;
-  inline isl::schedule_node order_after(isl::union_set filter) const;
-  inline isl::schedule_node order_before(isl::union_set filter) const;
-  inline isl::schedule_node parent() const;
-  inline isl::multi_union_pw_aff prefix_schedule_multi_union_pw_aff() const;
-  inline isl::multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
-  inline isl::union_map prefix_schedule_union_map() const;
-  inline isl::union_map get_prefix_schedule_union_map() const;
-  inline isl::union_pw_multi_aff prefix_schedule_union_pw_multi_aff() const;
-  inline isl::union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
-  inline isl::schedule_node previous_sibling() const;
-  inline isl::schedule_node root() const;
-  inline isl::schedule schedule() const;
-  inline isl::schedule get_schedule() const;
-  inline isl::schedule_node shared_ancestor(const isl::schedule_node &node2) const;
-  inline isl::schedule_node get_shared_ancestor(const isl::schedule_node &node2) const;
-  inline unsigned tree_depth() const;
-  inline unsigned get_tree_depth() const;
-};
-
-// declarations for isl::schedule_node_band
-
-class schedule_node_band : public schedule_node {
-  template <class T>
-  friend bool schedule_node::isa() const;
-  friend schedule_node_band schedule_node::as<schedule_node_band>() const;
-  static const auto type = isl_schedule_node_band;
-
-protected:
-  inline explicit schedule_node_band(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_band();
-  inline /* implicit */ schedule_node_band(const schedule_node_band &obj);
-  inline schedule_node_band &operator=(schedule_node_band obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::union_set ast_build_options() const;
-  inline isl::union_set get_ast_build_options() const;
-  inline isl::set ast_isolate_option() const;
-  inline isl::set get_ast_isolate_option() const;
-  inline bool member_get_coincident(int pos) const;
-  inline schedule_node_band member_set_coincident(int pos, int coincident) const;
-  inline schedule_node_band mod(isl::multi_val mv) const;
-  inline unsigned n_member() const;
-  inline isl::multi_union_pw_aff partial_schedule() const;
-  inline isl::multi_union_pw_aff get_partial_schedule() const;
-  inline bool permutable() const;
-  inline bool get_permutable() const;
-  inline schedule_node_band scale(isl::multi_val mv) const;
-  inline schedule_node_band scale_down(isl::multi_val mv) const;
-  inline schedule_node_band set_ast_build_options(isl::union_set options) const;
-  inline schedule_node_band set_permutable(int permutable) const;
-  inline schedule_node_band shift(isl::multi_union_pw_aff shift) const;
-  inline schedule_node_band split(int pos) const;
-  inline schedule_node_band tile(isl::multi_val sizes) const;
-  inline schedule_node_band member_set_ast_loop_default(int pos) const;
-  inline schedule_node_band member_set_ast_loop_atomic(int pos) const;
-  inline schedule_node_band member_set_ast_loop_unroll(int pos) const;
-  inline schedule_node_band member_set_ast_loop_separate(int pos) const;
-};
-
-// declarations for isl::schedule_node_context
-
-class schedule_node_context : public schedule_node {
-  template <class T>
-  friend bool schedule_node::isa() const;
-  friend schedule_node_context schedule_node::as<schedule_node_context>() const;
-  static const auto type = isl_schedule_node_context;
-
-protected:
-  inline explicit schedule_node_context(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_context();
-  inline /* implicit */ schedule_node_context(const schedule_node_context &obj);
-  inline schedule_node_context &operator=(schedule_node_context obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::set context() const;
-  inline isl::set get_context() const;
-};
-
-// declarations for isl::schedule_node_domain
-
-class schedule_node_domain : public schedule_node {
-  template <class T>
-  friend bool schedule_node::isa() const;
-  friend schedule_node_domain schedule_node::as<schedule_node_domain>() const;
-  static const auto type = isl_schedule_node_domain;
-
-protected:
-  inline explicit schedule_node_domain(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_domain();
-  inline /* implicit */ schedule_node_domain(const schedule_node_domain &obj);
-  inline schedule_node_domain &operator=(schedule_node_domain obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::union_set domain() const;
-  inline isl::union_set get_domain() const;
-};
-
-// declarations for isl::schedule_node_expansion
-
-class schedule_node_expansion : public schedule_node {
-  template <class T>
-  friend bool schedule_node::isa() const;
-  friend schedule_node_expansion schedule_node::as<schedule_node_expansion>() const;
-  static const auto type = isl_schedule_node_expansion;
-
-protected:
-  inline explicit schedule_node_expansion(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_expansion();
-  inline /* implicit */ schedule_node_expansion(const schedule_node_expansion &obj);
-  inline schedule_node_expansion &operator=(schedule_node_expansion obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::union_pw_multi_aff contraction() const;
-  inline isl::union_pw_multi_aff get_contraction() const;
-  inline isl::union_map expansion() const;
-  inline isl::union_map get_expansion() const;
-};
-
-// declarations for isl::schedule_node_extension
-
-class schedule_node_extension : public schedule_node {
-  template <class T>
-  friend bool schedule_node::isa() const;
-  friend schedule_node_extension schedule_node::as<schedule_node_extension>() const;
-  static const auto type = isl_schedule_node_extension;
-
-protected:
-  inline explicit schedule_node_extension(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_extension();
-  inline /* implicit */ schedule_node_extension(const schedule_node_extension &obj);
-  inline schedule_node_extension &operator=(schedule_node_extension obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::union_map extension() const;
-  inline isl::union_map get_extension() const;
-};
-
-// declarations for isl::schedule_node_filter
-
-class schedule_node_filter : public schedule_node {
-  template <class T>
-  friend bool schedule_node::isa() const;
-  friend schedule_node_filter schedule_node::as<schedule_node_filter>() const;
-  static const auto type = isl_schedule_node_filter;
-
-protected:
-  inline explicit schedule_node_filter(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_filter();
-  inline /* implicit */ schedule_node_filter(const schedule_node_filter &obj);
-  inline schedule_node_filter &operator=(schedule_node_filter obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::union_set filter() const;
-  inline isl::union_set get_filter() const;
-};
-
-// declarations for isl::schedule_node_guard
-
-class schedule_node_guard : public schedule_node {
-  template <class T>
-  friend bool schedule_node::isa() const;
-  friend schedule_node_guard schedule_node::as<schedule_node_guard>() const;
-  static const auto type = isl_schedule_node_guard;
-
-protected:
-  inline explicit schedule_node_guard(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_guard();
-  inline /* implicit */ schedule_node_guard(const schedule_node_guard &obj);
-  inline schedule_node_guard &operator=(schedule_node_guard obj);
-  inline isl::ctx ctx() const;
-
-  inline isl::set guard() const;
-  inline isl::set get_guard() const;
-};
-
-// declarations for isl::schedule_node_leaf
-
-class schedule_node_leaf : public schedule_node {
-  template <class T>
-  friend bool schedule_node::isa() const;
-  friend schedule_node_leaf schedule_node::as<schedule_node_leaf>() const;
-  static const auto type = isl_schedule_node_leaf;
-
-protected:
-  inline explicit schedule_node_leaf(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_leaf();
-  inline /* implicit */ schedule_node_leaf(const schedule_node_leaf &obj);
-  inline schedule_node_leaf &operator=(schedule_node_leaf obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::schedule_node_mark
-
-class schedule_node_mark : public schedule_node {
-  template <class T>
-  friend bool schedule_node::isa() const;
-  friend schedule_node_mark schedule_node::as<schedule_node_mark>() const;
-  static const auto type = isl_schedule_node_mark;
-
-protected:
-  inline explicit schedule_node_mark(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_mark();
-  inline /* implicit */ schedule_node_mark(const schedule_node_mark &obj);
-  inline schedule_node_mark &operator=(schedule_node_mark obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::schedule_node_sequence
-
-class schedule_node_sequence : public schedule_node {
-  template <class T>
-  friend bool schedule_node::isa() const;
-  friend schedule_node_sequence schedule_node::as<schedule_node_sequence>() const;
-  static const auto type = isl_schedule_node_sequence;
-
-protected:
-  inline explicit schedule_node_sequence(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_sequence();
-  inline /* implicit */ schedule_node_sequence(const schedule_node_sequence &obj);
-  inline schedule_node_sequence &operator=(schedule_node_sequence obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::schedule_node_set
-
-class schedule_node_set : public schedule_node {
-  template <class T>
-  friend bool schedule_node::isa() const;
-  friend schedule_node_set schedule_node::as<schedule_node_set>() const;
-  static const auto type = isl_schedule_node_set;
-
-protected:
-  inline explicit schedule_node_set(__isl_take isl_schedule_node *ptr);
-
-public:
-  inline /* implicit */ schedule_node_set();
-  inline /* implicit */ schedule_node_set(const schedule_node_set &obj);
-  inline schedule_node_set &operator=(schedule_node_set obj);
-  inline isl::ctx ctx() const;
-
-};
-
-// declarations for isl::set
-inline set manage(__isl_take isl_set *ptr);
-inline set manage_copy(__isl_keep isl_set *ptr);
-
-class set {
-  friend inline set manage(__isl_take isl_set *ptr);
-  friend inline set manage_copy(__isl_keep isl_set *ptr);
-
-protected:
-  isl_set *ptr = nullptr;
-
-  inline explicit set(__isl_take isl_set *ptr);
-
-public:
-  inline /* implicit */ set();
-  inline /* implicit */ set(const set &obj);
-  inline /* implicit */ set(isl::basic_set bset);
-  inline /* implicit */ set(isl::point pnt);
-  inline explicit set(isl::ctx ctx, const std::string &str);
-  inline set &operator=(set obj);
-  inline ~set();
-  inline __isl_give isl_set *copy() const &;
-  inline __isl_give isl_set *copy() && = delete;
-  inline __isl_keep isl_set *get() const;
-  inline __isl_give isl_set *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::basic_set affine_hull() const;
-  inline isl::set apply(isl::map map) const;
-  inline isl::union_set apply(const isl::union_map &umap) const;
-  inline isl::set apply(const isl::basic_map &map) const;
-  inline isl::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::set as_set() const;
-  inline isl::set bind(isl::multi_id tuple) const;
-  inline isl::set coalesce() const;
-  inline isl::set complement() const;
-  inline isl::union_set compute_divs() const;
-  inline isl::set detect_equalities() const;
-  inline isl::val dim_max_val(int pos) const;
-  inline isl::val dim_min_val(int pos) const;
-  static inline isl::set empty(isl::space space);
-  inline bool every_set(const std::function<bool(isl::set)> &test) const;
-  inline isl::set extract_set(const isl::space &space) const;
-  inline isl::set flatten() const;
-  inline void foreach_basic_set(const std::function<void(isl::basic_set)> &fn) const;
-  inline void foreach_point(const std::function<void(isl::point)> &fn) const;
-  inline void foreach_set(const std::function<void(isl::set)> &fn) const;
-  inline isl::set gist(isl::set context) const;
-  inline isl::union_set gist(const isl::union_set &context) const;
-  inline isl::set gist(const isl::basic_set &context) const;
-  inline isl::set gist(const isl::point &context) const;
-  inline isl::union_set gist_params(const isl::set &set) const;
-  inline isl::map identity() const;
-  inline isl::pw_aff indicator_function() const;
-  inline isl::map insert_domain(isl::space domain) const;
-  inline isl::set intersect(isl::set set2) const;
-  inline isl::union_set intersect(const isl::union_set &uset2) const;
-  inline isl::set intersect(const isl::basic_set &set2) const;
-  inline isl::set intersect(const isl::point &set2) const;
-  inline isl::set intersect_params(isl::set params) const;
-  inline bool involves_locals() const;
-  inline bool is_disjoint(const isl::set &set2) const;
-  inline bool is_disjoint(const isl::union_set &uset2) const;
-  inline bool is_disjoint(const isl::basic_set &set2) const;
-  inline bool is_disjoint(const isl::point &set2) const;
-  inline bool is_empty() const;
-  inline bool is_equal(const isl::set &set2) const;
-  inline bool is_equal(const isl::union_set &uset2) const;
-  inline bool is_equal(const isl::basic_set &set2) const;
-  inline bool is_equal(const isl::point &set2) const;
-  inline bool is_singleton() const;
-  inline bool is_strict_subset(const isl::set &set2) const;
-  inline bool is_strict_subset(const isl::union_set &uset2) const;
-  inline bool is_strict_subset(const isl::basic_set &set2) const;
-  inline bool is_strict_subset(const isl::point &set2) const;
-  inline bool is_subset(const isl::set &set2) const;
-  inline bool is_subset(const isl::union_set &uset2) const;
-  inline bool is_subset(const isl::basic_set &set2) const;
-  inline bool is_subset(const isl::point &set2) const;
-  inline bool is_wrapping() const;
-  inline bool isa_set() const;
-  inline isl::set lexmax() const;
-  inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
-  inline isl::set lexmin() const;
-  inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
-  inline isl::set lower_bound(isl::multi_pw_aff lower) const;
-  inline isl::set lower_bound(isl::multi_val lower) const;
-  inline isl::multi_pw_aff max_multi_pw_aff() const;
-  inline isl::val max_val(const isl::aff &obj) const;
-  inline isl::multi_pw_aff min_multi_pw_aff() const;
-  inline isl::val min_val(const isl::aff &obj) const;
-  inline unsigned n_basic_set() const;
-  inline isl::set params() const;
-  inline isl::multi_val plain_multi_val_if_fixed() const;
-  inline isl::multi_val get_plain_multi_val_if_fixed() const;
-  inline isl::basic_set polyhedral_hull() const;
-  inline isl::set preimage(isl::multi_aff ma) const;
-  inline isl::set preimage(isl::multi_pw_aff mpa) const;
-  inline isl::set preimage(isl::pw_multi_aff pma) const;
-  inline isl::union_set preimage(const isl::union_pw_multi_aff &upma) const;
-  inline isl::set product(isl::set set2) const;
-  inline isl::set project_out_all_params() const;
-  inline isl::set project_out_param(isl::id id) const;
-  inline isl::set project_out_param(const std::string &id) const;
-  inline isl::set project_out_param(isl::id_list list) const;
-  inline isl::pw_multi_aff pw_multi_aff_on_domain(isl::multi_val mv) const;
-  inline isl::basic_set sample() const;
-  inline isl::point sample_point() const;
-  inline isl::set_list set_list() const;
-  inline isl::fixed_box simple_fixed_box_hull() const;
-  inline isl::fixed_box get_simple_fixed_box_hull() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::val stride(int pos) const;
-  inline isl::val get_stride(int pos) const;
-  inline isl::set subtract(isl::set set2) const;
-  inline isl::union_set subtract(const isl::union_set &uset2) const;
-  inline isl::set subtract(const isl::basic_set &set2) const;
-  inline isl::set subtract(const isl::point &set2) const;
-  inline isl::set_list to_list() const;
-  inline isl::union_set to_union_set() const;
-  inline isl::map translation() const;
-  inline unsigned tuple_dim() const;
-  inline isl::set unbind_params(isl::multi_id tuple) const;
-  inline isl::map unbind_params_insert_domain(isl::multi_id domain) const;
-  inline isl::set unite(isl::set set2) const;
-  inline isl::union_set unite(const isl::union_set &uset2) const;
-  inline isl::set unite(const isl::basic_set &set2) const;
-  inline isl::set unite(const isl::point &set2) const;
-  static inline isl::set universe(isl::space space);
-  inline isl::basic_set unshifted_simple_hull() const;
-  inline isl::map unwrap() const;
-  inline isl::set upper_bound(isl::multi_pw_aff upper) const;
-  inline isl::set upper_bound(isl::multi_val upper) const;
-};
-
-// declarations for isl::set_list
-inline set_list manage(__isl_take isl_set_list *ptr);
-inline set_list manage_copy(__isl_keep isl_set_list *ptr);
-
-class set_list {
-  friend inline set_list manage(__isl_take isl_set_list *ptr);
-  friend inline set_list manage_copy(__isl_keep isl_set_list *ptr);
-
-protected:
-  isl_set_list *ptr = nullptr;
-
-  inline explicit set_list(__isl_take isl_set_list *ptr);
-
-public:
-  inline /* implicit */ set_list();
-  inline /* implicit */ set_list(const set_list &obj);
-  inline explicit set_list(isl::ctx ctx, int n);
-  inline explicit set_list(isl::set el);
-  inline explicit set_list(isl::ctx ctx, const std::string &str);
-  inline set_list &operator=(set_list obj);
-  inline ~set_list();
-  inline __isl_give isl_set_list *copy() const &;
-  inline __isl_give isl_set_list *copy() && = delete;
-  inline __isl_keep isl_set_list *get() const;
-  inline __isl_give isl_set_list *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::set_list add(isl::set el) const;
-  inline isl::set at(int index) const;
-  inline isl::set get_at(int index) const;
-  inline isl::set_list clear() const;
-  inline isl::set_list concat(isl::set_list list2) const;
-  inline isl::set_list drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(isl::set)> &fn) const;
-  inline isl::set_list insert(unsigned int pos, isl::set el) const;
-  inline unsigned size() const;
-};
-
-// declarations for isl::space
-inline space manage(__isl_take isl_space *ptr);
-inline space manage_copy(__isl_keep isl_space *ptr);
-
-class space {
-  friend inline space manage(__isl_take isl_space *ptr);
-  friend inline space manage_copy(__isl_keep isl_space *ptr);
-
-protected:
-  isl_space *ptr = nullptr;
-
-  inline explicit space(__isl_take isl_space *ptr);
-
-public:
-  inline /* implicit */ space();
-  inline /* implicit */ space(const space &obj);
-  inline space &operator=(space obj);
-  inline ~space();
-  inline __isl_give isl_space *copy() const &;
-  inline __isl_give isl_space *copy() && = delete;
-  inline __isl_keep isl_space *get() const;
-  inline __isl_give isl_space *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::space add_named_tuple(isl::id tuple_id, unsigned int dim) const;
-  inline isl::space add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
-  inline isl::space add_param(isl::id id) const;
-  inline isl::space add_param(const std::string &id) const;
-  inline isl::space add_unnamed_tuple(unsigned int dim) const;
-  inline isl::space curry() const;
-  inline isl::space domain() const;
-  inline isl::multi_aff domain_map_multi_aff() const;
-  inline isl::pw_multi_aff domain_map_pw_multi_aff() const;
-  inline isl::id domain_tuple_id() const;
-  inline isl::id get_domain_tuple_id() const;
-  inline isl::space flatten_domain() const;
-  inline isl::space flatten_range() const;
-  inline bool has_domain_tuple_id() const;
-  inline bool has_range_tuple_id() const;
-  inline isl::multi_aff identity_multi_aff_on_domain() const;
-  inline isl::multi_pw_aff identity_multi_pw_aff_on_domain() const;
-  inline isl::pw_multi_aff identity_pw_multi_aff_on_domain() const;
-  inline bool is_equal(const isl::space &space2) const;
-  inline bool is_wrapping() const;
-  inline isl::space map_from_set() const;
-  inline isl::multi_aff multi_aff(isl::aff_list list) const;
-  inline isl::multi_aff multi_aff_on_domain(isl::multi_val mv) const;
-  inline isl::multi_id multi_id(isl::id_list list) const;
-  inline isl::multi_pw_aff multi_pw_aff(isl::pw_aff_list list) const;
-  inline isl::multi_union_pw_aff multi_union_pw_aff(isl::union_pw_aff_list list) const;
-  inline isl::multi_val multi_val(isl::val_list list) const;
-  inline isl::aff param_aff_on_domain(isl::id id) const;
-  inline isl::aff param_aff_on_domain(const std::string &id) const;
-  inline isl::space params() const;
-  inline isl::space product(isl::space right) const;
-  inline isl::space range() const;
-  inline isl::multi_aff range_map_multi_aff() const;
-  inline isl::pw_multi_aff range_map_pw_multi_aff() const;
-  inline isl::space range_reverse() const;
-  inline isl::id range_tuple_id() const;
-  inline isl::id get_range_tuple_id() const;
-  inline isl::space reverse() const;
-  inline isl::space set_domain_tuple(isl::id id) const;
-  inline isl::space set_domain_tuple(const std::string &id) const;
-  inline isl::space set_range_tuple(isl::id id) const;
-  inline isl::space set_range_tuple(const std::string &id) const;
-  inline isl::space uncurry() const;
-  static inline isl::space unit(isl::ctx ctx);
-  inline isl::map universe_map() const;
-  inline isl::set universe_set() const;
-  inline isl::space unwrap() const;
-  inline isl::space wrap() const;
-  inline isl::aff zero_aff_on_domain() const;
-  inline isl::multi_aff zero_multi_aff() const;
-  inline isl::multi_pw_aff zero_multi_pw_aff() const;
-  inline isl::multi_union_pw_aff zero_multi_union_pw_aff() const;
-  inline isl::multi_val zero_multi_val() const;
-};
-
-// declarations for isl::union_access_info
-inline union_access_info manage(__isl_take isl_union_access_info *ptr);
-inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
-
-class union_access_info {
-  friend inline union_access_info manage(__isl_take isl_union_access_info *ptr);
-  friend inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
-
-protected:
-  isl_union_access_info *ptr = nullptr;
-
-  inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
-
-public:
-  inline /* implicit */ union_access_info();
-  inline /* implicit */ union_access_info(const union_access_info &obj);
-  inline explicit union_access_info(isl::union_map sink);
-  inline union_access_info &operator=(union_access_info obj);
-  inline ~union_access_info();
-  inline __isl_give isl_union_access_info *copy() const &;
-  inline __isl_give isl_union_access_info *copy() && = delete;
-  inline __isl_keep isl_union_access_info *get() const;
-  inline __isl_give isl_union_access_info *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::union_flow compute_flow() const;
-  inline isl::union_access_info set_kill(isl::union_map kill) const;
-  inline isl::union_access_info set_may_source(isl::union_map may_source) const;
-  inline isl::union_access_info set_must_source(isl::union_map must_source) const;
-  inline isl::union_access_info set_schedule(isl::schedule schedule) const;
-  inline isl::union_access_info set_schedule_map(isl::union_map schedule_map) const;
-};
-
-// declarations for isl::union_flow
-inline union_flow manage(__isl_take isl_union_flow *ptr);
-inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
-
-class union_flow {
-  friend inline union_flow manage(__isl_take isl_union_flow *ptr);
-  friend inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
-
-protected:
-  isl_union_flow *ptr = nullptr;
-
-  inline explicit union_flow(__isl_take isl_union_flow *ptr);
-
-public:
-  inline /* implicit */ union_flow();
-  inline /* implicit */ union_flow(const union_flow &obj);
-  inline union_flow &operator=(union_flow obj);
-  inline ~union_flow();
-  inline __isl_give isl_union_flow *copy() const &;
-  inline __isl_give isl_union_flow *copy() && = delete;
-  inline __isl_keep isl_union_flow *get() const;
-  inline __isl_give isl_union_flow *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::union_map full_may_dependence() const;
-  inline isl::union_map get_full_may_dependence() const;
-  inline isl::union_map full_must_dependence() const;
-  inline isl::union_map get_full_must_dependence() const;
-  inline isl::union_map may_dependence() const;
-  inline isl::union_map get_may_dependence() const;
-  inline isl::union_map may_no_source() const;
-  inline isl::union_map get_may_no_source() const;
-  inline isl::union_map must_dependence() const;
-  inline isl::union_map get_must_dependence() const;
-  inline isl::union_map must_no_source() const;
-  inline isl::union_map get_must_no_source() const;
-};
-
-// declarations for isl::union_map
-inline union_map manage(__isl_take isl_union_map *ptr);
-inline union_map manage_copy(__isl_keep isl_union_map *ptr);
-
-class union_map {
-  friend inline union_map manage(__isl_take isl_union_map *ptr);
-  friend inline union_map manage_copy(__isl_keep isl_union_map *ptr);
-
-protected:
-  isl_union_map *ptr = nullptr;
-
-  inline explicit union_map(__isl_take isl_union_map *ptr);
-
-public:
-  inline /* implicit */ union_map();
-  inline /* implicit */ union_map(const union_map &obj);
-  inline /* implicit */ union_map(isl::basic_map bmap);
-  inline /* implicit */ union_map(isl::map map);
-  inline explicit union_map(isl::ctx ctx, const std::string &str);
-  inline union_map &operator=(union_map obj);
-  inline ~union_map();
-  inline __isl_give isl_union_map *copy() const &;
-  inline __isl_give isl_union_map *copy() && = delete;
-  inline __isl_keep isl_union_map *get() const;
-  inline __isl_give isl_union_map *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::union_map affine_hull() const;
-  inline isl::union_map apply_domain(isl::union_map umap2) const;
-  inline isl::union_map apply_range(isl::union_map umap2) const;
-  inline isl::map as_map() const;
-  inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::union_pw_multi_aff as_union_pw_multi_aff() const;
-  inline isl::union_set bind_range(isl::multi_id tuple) const;
-  inline isl::union_map coalesce() const;
-  inline isl::union_map compute_divs() const;
-  inline isl::union_map curry() const;
-  inline isl::union_set deltas() const;
-  inline isl::union_map detect_equalities() const;
-  inline isl::union_set domain() const;
-  inline isl::union_map domain_factor_domain() const;
-  inline isl::union_map domain_factor_range() const;
-  inline isl::union_map domain_map() const;
-  inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
-  inline isl::union_map domain_product(isl::union_map umap2) const;
-  static inline isl::union_map empty(isl::ctx ctx);
-  inline isl::union_map eq_at(isl::multi_union_pw_aff mupa) const;
-  inline bool every_map(const std::function<bool(isl::map)> &test) const;
-  inline isl::map extract_map(isl::space space) const;
-  inline isl::union_map factor_domain() const;
-  inline isl::union_map factor_range() const;
-  inline isl::union_map fixed_power(isl::val exp) const;
-  inline isl::union_map fixed_power(long exp) const;
-  inline void foreach_map(const std::function<void(isl::map)> &fn) const;
-  static inline isl::union_map from(isl::multi_union_pw_aff mupa);
-  static inline isl::union_map from(isl::union_pw_multi_aff upma);
-  static inline isl::union_map from_domain(isl::union_set uset);
-  static inline isl::union_map from_domain_and_range(isl::union_set domain, isl::union_set range);
-  static inline isl::union_map from_range(isl::union_set uset);
-  inline isl::union_map gist(isl::union_map context) const;
-  inline isl::union_map gist_domain(isl::union_set uset) const;
-  inline isl::union_map gist_params(isl::set set) const;
-  inline isl::union_map gist_range(isl::union_set uset) const;
-  inline isl::union_map intersect(isl::union_map umap2) const;
-  inline isl::union_map intersect_domain(isl::space space) const;
-  inline isl::union_map intersect_domain(isl::union_set uset) const;
-  inline isl::union_map intersect_domain_factor_domain(isl::union_map factor) const;
-  inline isl::union_map intersect_domain_factor_range(isl::union_map factor) const;
-  inline isl::union_map intersect_params(isl::set set) const;
-  inline isl::union_map intersect_range(isl::space space) const;
-  inline isl::union_map intersect_range(isl::union_set uset) const;
-  inline isl::union_map intersect_range_factor_domain(isl::union_map factor) const;
-  inline isl::union_map intersect_range_factor_range(isl::union_map factor) const;
-  inline bool is_bijective() const;
-  inline bool is_disjoint(const isl::union_map &umap2) const;
-  inline bool is_empty() const;
-  inline bool is_equal(const isl::union_map &umap2) const;
-  inline bool is_injective() const;
-  inline bool is_single_valued() const;
-  inline bool is_strict_subset(const isl::union_map &umap2) const;
-  inline bool is_subset(const isl::union_map &umap2) const;
-  inline bool isa_map() const;
-  inline isl::union_map lexmax() const;
-  inline isl::union_map lexmin() const;
-  inline isl::map_list map_list() const;
-  inline isl::map_list get_map_list() const;
-  inline isl::union_map polyhedral_hull() const;
-  inline isl::union_map preimage_domain(isl::multi_aff ma) const;
-  inline isl::union_map preimage_domain(isl::multi_pw_aff mpa) const;
-  inline isl::union_map preimage_domain(isl::pw_multi_aff pma) const;
-  inline isl::union_map preimage_domain(isl::union_pw_multi_aff upma) const;
-  inline isl::union_map preimage_range(isl::multi_aff ma) const;
-  inline isl::union_map preimage_range(isl::pw_multi_aff pma) const;
-  inline isl::union_map preimage_range(isl::union_pw_multi_aff upma) const;
-  inline isl::union_map product(isl::union_map umap2) const;
-  inline isl::union_map project_out_all_params() const;
-  inline isl::union_set range() const;
-  inline isl::union_map range_factor_domain() const;
-  inline isl::union_map range_factor_range() const;
-  inline isl::union_map range_map() const;
-  inline isl::union_map range_product(isl::union_map umap2) const;
-  inline isl::union_map range_reverse() const;
-  inline isl::union_map reverse() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::union_map subtract(isl::union_map umap2) const;
-  inline isl::union_map subtract_domain(isl::union_set dom) const;
-  inline isl::union_map subtract_range(isl::union_set dom) const;
-  inline isl::union_map uncurry() const;
-  inline isl::union_map unite(isl::union_map umap2) const;
-  inline isl::union_map universe() const;
-  inline isl::union_set wrap() const;
-  inline isl::union_map zip() const;
-};
-
-// declarations for isl::union_pw_aff
-inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
-inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
-
-class union_pw_aff {
-  friend inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
-  friend inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
-
-protected:
-  isl_union_pw_aff *ptr = nullptr;
-
-  inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
-
-public:
-  inline /* implicit */ union_pw_aff();
-  inline /* implicit */ union_pw_aff(const union_pw_aff &obj);
-  inline /* implicit */ union_pw_aff(isl::aff aff);
-  inline /* implicit */ union_pw_aff(isl::pw_aff pa);
-  inline explicit union_pw_aff(isl::ctx ctx, const std::string &str);
-  inline union_pw_aff &operator=(union_pw_aff obj);
-  inline ~union_pw_aff();
-  inline __isl_give isl_union_pw_aff *copy() const &;
-  inline __isl_give isl_union_pw_aff *copy() && = delete;
-  inline __isl_keep isl_union_pw_aff *get() const;
-  inline __isl_give isl_union_pw_aff *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::union_pw_aff add(isl::union_pw_aff upa2) const;
-  inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::union_pw_aff add(const isl::aff &upa2) const;
-  inline isl::union_pw_aff add(const isl::pw_aff &upa2) const;
-  inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::union_map as_union_map() const;
-  inline isl::union_pw_aff at(int pos) const;
-  inline isl::union_set bind(const isl::multi_id &tuple) const;
-  inline isl::union_set bind(isl::id id) const;
-  inline isl::union_set bind(const std::string &id) const;
-  inline isl::union_pw_aff coalesce() const;
-  inline isl::union_set domain() const;
-  inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
-  inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::union_pw_aff gist(isl::union_set context) const;
-  inline bool has_range_tuple_id() const;
-  inline isl::union_pw_aff intersect_domain(isl::space space) const;
-  inline isl::union_pw_aff intersect_domain(isl::union_set uset) const;
-  inline isl::union_pw_aff intersect_domain_wrapped_domain(isl::union_set uset) const;
-  inline isl::union_pw_aff intersect_domain_wrapped_range(isl::union_set uset) const;
-  inline isl::union_pw_aff intersect_params(isl::set set) const;
-  inline bool involves_locals() const;
-  inline bool involves_nan() const;
-  inline bool isa_pw_multi_aff() const;
-  inline isl::union_pw_aff_list list() const;
-  inline isl::multi_union_pw_aff neg() const;
-  inline bool plain_is_empty() const;
-  inline bool plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
-  inline isl::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::union_pw_multi_aff range_factor_domain() const;
-  inline isl::union_pw_multi_aff range_factor_range() const;
-  inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::id range_tuple_id() const;
-  inline isl::multi_union_pw_aff reset_range_tuple_id() const;
-  inline isl::multi_union_pw_aff scale(const isl::multi_val &mv) const;
-  inline isl::multi_union_pw_aff scale(const isl::val &v) const;
-  inline isl::multi_union_pw_aff scale(long v) const;
-  inline isl::multi_union_pw_aff scale_down(const isl::multi_val &mv) const;
-  inline isl::multi_union_pw_aff scale_down(const isl::val &v) const;
-  inline isl::multi_union_pw_aff scale_down(long v) const;
-  inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
-  inline isl::multi_union_pw_aff set_range_tuple(const isl::id &id) const;
-  inline isl::multi_union_pw_aff set_range_tuple(const std::string &id) const;
-  inline unsigned size() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
-  inline isl::union_pw_aff sub(isl::union_pw_aff upa2) const;
-  inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::union_pw_aff sub(const isl::aff &upa2) const;
-  inline isl::union_pw_aff sub(const isl::pw_aff &upa2) const;
-  inline isl::union_pw_aff subtract_domain(isl::space space) const;
-  inline isl::union_pw_aff subtract_domain(isl::union_set uset) const;
-  inline isl::union_pw_aff_list to_list() const;
-  inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
-  inline isl::union_pw_aff union_add(isl::union_pw_aff upa2) const;
-  inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
-  inline isl::union_pw_aff union_add(const isl::aff &upa2) const;
-  inline isl::union_pw_aff union_add(const isl::pw_aff &upa2) const;
-};
-
-// declarations for isl::union_pw_aff_list
-inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
-inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
-
-class union_pw_aff_list {
-  friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
-  friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
-
-protected:
-  isl_union_pw_aff_list *ptr = nullptr;
-
-  inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
-
-public:
-  inline /* implicit */ union_pw_aff_list();
-  inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj);
-  inline explicit union_pw_aff_list(isl::ctx ctx, int n);
-  inline explicit union_pw_aff_list(isl::union_pw_aff el);
-  inline explicit union_pw_aff_list(isl::ctx ctx, const std::string &str);
-  inline union_pw_aff_list &operator=(union_pw_aff_list obj);
-  inline ~union_pw_aff_list();
-  inline __isl_give isl_union_pw_aff_list *copy() const &;
-  inline __isl_give isl_union_pw_aff_list *copy() && = delete;
-  inline __isl_keep isl_union_pw_aff_list *get() const;
-  inline __isl_give isl_union_pw_aff_list *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::union_pw_aff_list add(isl::union_pw_aff el) const;
-  inline isl::union_pw_aff at(int index) const;
-  inline isl::union_pw_aff get_at(int index) const;
-  inline isl::union_pw_aff_list clear() const;
-  inline isl::union_pw_aff_list concat(isl::union_pw_aff_list list2) const;
-  inline isl::union_pw_aff_list drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(isl::union_pw_aff)> &fn) const;
-  inline isl::union_pw_aff_list insert(unsigned int pos, isl::union_pw_aff el) const;
-  inline unsigned size() const;
-};
-
-// declarations for isl::union_pw_multi_aff
-inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
-inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
-
-class union_pw_multi_aff {
-  friend inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
-  friend inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
-
-protected:
-  isl_union_pw_multi_aff *ptr = nullptr;
-
-  inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr);
-
-public:
-  inline /* implicit */ union_pw_multi_aff();
-  inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj);
-  inline /* implicit */ union_pw_multi_aff(isl::multi_aff ma);
-  inline /* implicit */ union_pw_multi_aff(isl::pw_multi_aff pma);
-  inline /* implicit */ union_pw_multi_aff(isl::union_pw_aff upa);
-  inline explicit union_pw_multi_aff(isl::ctx ctx, const std::string &str);
-  inline union_pw_multi_aff &operator=(union_pw_multi_aff obj);
-  inline ~union_pw_multi_aff();
-  inline __isl_give isl_union_pw_multi_aff *copy() const &;
-  inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
-  inline __isl_keep isl_union_pw_multi_aff *get() const;
-  inline __isl_give isl_union_pw_multi_aff *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::union_pw_multi_aff add(isl::union_pw_multi_aff upma2) const;
-  inline isl::union_pw_multi_aff apply(isl::union_pw_multi_aff upma2) const;
-  inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
-  inline isl::pw_multi_aff as_pw_multi_aff() const;
-  inline isl::union_map as_union_map() const;
-  inline isl::union_pw_multi_aff coalesce() const;
-  inline isl::union_set domain() const;
-  static inline isl::union_pw_multi_aff empty(isl::ctx ctx);
-  inline isl::pw_multi_aff extract_pw_multi_aff(isl::space space) const;
-  inline isl::union_pw_multi_aff flat_range_product(isl::union_pw_multi_aff upma2) const;
-  inline isl::union_pw_multi_aff gist(isl::union_set context) const;
-  inline isl::union_pw_multi_aff intersect_domain(isl::space space) const;
-  inline isl::union_pw_multi_aff intersect_domain(isl::union_set uset) const;
-  inline isl::union_pw_multi_aff intersect_domain_wrapped_domain(isl::union_set uset) const;
-  inline isl::union_pw_multi_aff intersect_domain_wrapped_range(isl::union_set uset) const;
-  inline isl::union_pw_multi_aff intersect_params(isl::set set) const;
-  inline bool involves_locals() const;
-  inline bool isa_pw_multi_aff() const;
-  inline bool plain_is_empty() const;
-  inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(isl::union_pw_multi_aff upma2) const;
-  inline isl::union_pw_multi_aff pullback(isl::union_pw_multi_aff upma2) const;
-  inline isl::pw_multi_aff_list pw_multi_aff_list() const;
-  inline isl::pw_multi_aff_list get_pw_multi_aff_list() const;
-  inline isl::union_pw_multi_aff range_factor_domain() const;
-  inline isl::union_pw_multi_aff range_factor_range() const;
-  inline isl::union_pw_multi_aff range_product(isl::union_pw_multi_aff upma2) const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::union_pw_multi_aff sub(isl::union_pw_multi_aff upma2) const;
-  inline isl::union_pw_multi_aff subtract_domain(isl::space space) const;
-  inline isl::union_pw_multi_aff subtract_domain(isl::union_set uset) const;
-  inline isl::union_pw_multi_aff union_add(isl::union_pw_multi_aff upma2) const;
-};
-
-// declarations for isl::union_set
-inline union_set manage(__isl_take isl_union_set *ptr);
-inline union_set manage_copy(__isl_keep isl_union_set *ptr);
-
-class union_set {
-  friend inline union_set manage(__isl_take isl_union_set *ptr);
-  friend inline union_set manage_copy(__isl_keep isl_union_set *ptr);
-
-protected:
-  isl_union_set *ptr = nullptr;
-
-  inline explicit union_set(__isl_take isl_union_set *ptr);
-
-public:
-  inline /* implicit */ union_set();
-  inline /* implicit */ union_set(const union_set &obj);
-  inline /* implicit */ union_set(isl::basic_set bset);
-  inline /* implicit */ union_set(isl::point pnt);
-  inline /* implicit */ union_set(isl::set set);
-  inline explicit union_set(isl::ctx ctx, const std::string &str);
-  inline union_set &operator=(union_set obj);
-  inline ~union_set();
-  inline __isl_give isl_union_set *copy() const &;
-  inline __isl_give isl_union_set *copy() && = delete;
-  inline __isl_keep isl_union_set *get() const;
-  inline __isl_give isl_union_set *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::union_set affine_hull() const;
-  inline isl::union_set apply(isl::union_map umap) const;
-  inline isl::set as_set() const;
-  inline isl::union_set coalesce() const;
-  inline isl::union_set compute_divs() const;
-  inline isl::union_set detect_equalities() const;
-  static inline isl::union_set empty(isl::ctx ctx);
-  inline bool every_set(const std::function<bool(isl::set)> &test) const;
-  inline isl::set extract_set(isl::space space) const;
-  inline void foreach_point(const std::function<void(isl::point)> &fn) const;
-  inline void foreach_set(const std::function<void(isl::set)> &fn) const;
-  inline isl::union_set gist(isl::union_set context) const;
-  inline isl::union_set gist_params(isl::set set) const;
-  inline isl::union_map identity() const;
-  inline isl::union_set intersect(isl::union_set uset2) const;
-  inline isl::union_set intersect_params(isl::set set) const;
-  inline bool is_disjoint(const isl::union_set &uset2) const;
-  inline bool is_empty() const;
-  inline bool is_equal(const isl::union_set &uset2) const;
-  inline bool is_strict_subset(const isl::union_set &uset2) const;
-  inline bool is_subset(const isl::union_set &uset2) const;
-  inline bool isa_set() const;
-  inline isl::union_set lexmax() const;
-  inline isl::union_set lexmin() const;
-  inline isl::union_set polyhedral_hull() const;
-  inline isl::union_set preimage(isl::multi_aff ma) const;
-  inline isl::union_set preimage(isl::pw_multi_aff pma) const;
-  inline isl::union_set preimage(isl::union_pw_multi_aff upma) const;
-  inline isl::point sample_point() const;
-  inline isl::set_list set_list() const;
-  inline isl::set_list get_set_list() const;
-  inline isl::space space() const;
-  inline isl::space get_space() const;
-  inline isl::union_set subtract(isl::union_set uset2) const;
-  inline isl::union_set_list to_list() const;
-  inline isl::union_set unite(isl::union_set uset2) const;
-  inline isl::union_set universe() const;
-  inline isl::union_map unwrap() const;
-};
-
-// declarations for isl::union_set_list
-inline union_set_list manage(__isl_take isl_union_set_list *ptr);
-inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
-
-class union_set_list {
-  friend inline union_set_list manage(__isl_take isl_union_set_list *ptr);
-  friend inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
-
-protected:
-  isl_union_set_list *ptr = nullptr;
-
-  inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
-
-public:
-  inline /* implicit */ union_set_list();
-  inline /* implicit */ union_set_list(const union_set_list &obj);
-  inline explicit union_set_list(isl::ctx ctx, int n);
-  inline explicit union_set_list(isl::union_set el);
-  inline explicit union_set_list(isl::ctx ctx, const std::string &str);
-  inline union_set_list &operator=(union_set_list obj);
-  inline ~union_set_list();
-  inline __isl_give isl_union_set_list *copy() const &;
-  inline __isl_give isl_union_set_list *copy() && = delete;
-  inline __isl_keep isl_union_set_list *get() const;
-  inline __isl_give isl_union_set_list *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::union_set_list add(isl::union_set el) const;
-  inline isl::union_set at(int index) const;
-  inline isl::union_set get_at(int index) const;
-  inline isl::union_set_list clear() const;
-  inline isl::union_set_list concat(isl::union_set_list list2) const;
-  inline isl::union_set_list drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(isl::union_set)> &fn) const;
-  inline isl::union_set_list insert(unsigned int pos, isl::union_set el) const;
-  inline unsigned size() const;
-};
-
-// declarations for isl::val
-inline val manage(__isl_take isl_val *ptr);
-inline val manage_copy(__isl_keep isl_val *ptr);
-
-class val {
-  friend inline val manage(__isl_take isl_val *ptr);
-  friend inline val manage_copy(__isl_keep isl_val *ptr);
-
-protected:
-  isl_val *ptr = nullptr;
-
-  inline explicit val(__isl_take isl_val *ptr);
-
-public:
-  inline /* implicit */ val();
-  inline /* implicit */ val(const val &obj);
-  inline explicit val(isl::ctx ctx, long i);
-  inline explicit val(isl::ctx ctx, const std::string &str);
-  inline val &operator=(val obj);
-  inline ~val();
-  inline __isl_give isl_val *copy() const &;
-  inline __isl_give isl_val *copy() && = delete;
-  inline __isl_keep isl_val *get() const;
-  inline __isl_give isl_val *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::val abs() const;
-  inline bool abs_eq(const isl::val &v2) const;
-  inline bool abs_eq(long v2) const;
-  inline isl::val add(isl::val v2) const;
-  inline isl::val add(long v2) const;
-  inline isl::val ceil() const;
-  inline int cmp_si(long i) const;
-  inline long den_si() const;
-  inline long get_den_si() const;
-  inline isl::val div(isl::val v2) const;
-  inline isl::val div(long v2) const;
-  inline bool eq(const isl::val &v2) const;
-  inline bool eq(long v2) const;
-  inline isl::val floor() const;
-  inline isl::val gcd(isl::val v2) const;
-  inline isl::val gcd(long v2) const;
-  inline bool ge(const isl::val &v2) const;
-  inline bool ge(long v2) const;
-  inline bool gt(const isl::val &v2) const;
-  inline bool gt(long v2) const;
-  static inline isl::val infty(isl::ctx ctx);
-  inline isl::val inv() const;
-  inline bool is_divisible_by(const isl::val &v2) const;
-  inline bool is_divisible_by(long v2) const;
-  inline bool is_infty() const;
-  inline bool is_int() const;
-  inline bool is_nan() const;
-  inline bool is_neg() const;
-  inline bool is_neginfty() const;
-  inline bool is_negone() const;
-  inline bool is_nonneg() const;
-  inline bool is_nonpos() const;
-  inline bool is_one() const;
-  inline bool is_pos() const;
-  inline bool is_rat() const;
-  inline bool is_zero() const;
-  inline bool le(const isl::val &v2) const;
-  inline bool le(long v2) const;
-  inline bool lt(const isl::val &v2) const;
-  inline bool lt(long v2) const;
-  inline isl::val max(isl::val v2) const;
-  inline isl::val max(long v2) const;
-  inline isl::val min(isl::val v2) const;
-  inline isl::val min(long v2) const;
-  inline isl::val mod(isl::val v2) const;
-  inline isl::val mod(long v2) const;
-  inline isl::val mul(isl::val v2) const;
-  inline isl::val mul(long v2) const;
-  static inline isl::val nan(isl::ctx ctx);
-  inline bool ne(const isl::val &v2) const;
-  inline bool ne(long v2) const;
-  inline isl::val neg() const;
-  static inline isl::val neginfty(isl::ctx ctx);
-  static inline isl::val negone(isl::ctx ctx);
-  inline long num_si() const;
-  inline long get_num_si() const;
-  static inline isl::val one(isl::ctx ctx);
-  inline isl::val pow2() const;
-  inline int sgn() const;
-  inline isl::val sub(isl::val v2) const;
-  inline isl::val sub(long v2) const;
-  inline isl::val_list to_list() const;
-  inline isl::val trunc() const;
-  static inline isl::val zero(isl::ctx ctx);
-};
-
-// declarations for isl::val_list
-inline val_list manage(__isl_take isl_val_list *ptr);
-inline val_list manage_copy(__isl_keep isl_val_list *ptr);
-
-class val_list {
-  friend inline val_list manage(__isl_take isl_val_list *ptr);
-  friend inline val_list manage_copy(__isl_keep isl_val_list *ptr);
-
-protected:
-  isl_val_list *ptr = nullptr;
-
-  inline explicit val_list(__isl_take isl_val_list *ptr);
-
-public:
-  inline /* implicit */ val_list();
-  inline /* implicit */ val_list(const val_list &obj);
-  inline explicit val_list(isl::ctx ctx, int n);
-  inline explicit val_list(isl::val el);
-  inline explicit val_list(isl::ctx ctx, const std::string &str);
-  inline val_list &operator=(val_list obj);
-  inline ~val_list();
-  inline __isl_give isl_val_list *copy() const &;
-  inline __isl_give isl_val_list *copy() && = delete;
-  inline __isl_keep isl_val_list *get() const;
-  inline __isl_give isl_val_list *release();
-  inline bool is_null() const;
-  inline isl::ctx ctx() const;
-
-  inline isl::val_list add(isl::val el) const;
-  inline isl::val_list add(long el) const;
-  inline isl::val at(int index) const;
-  inline isl::val get_at(int index) const;
-  inline isl::val_list clear() const;
-  inline isl::val_list concat(isl::val_list list2) const;
-  inline isl::val_list drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(isl::val)> &fn) const;
-  inline isl::val_list insert(unsigned int pos, isl::val el) const;
-  inline isl::val_list insert(unsigned int pos, long el) const;
-  inline unsigned size() const;
-};
-
-// implementations for isl::aff
-aff manage(__isl_take isl_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return aff(ptr);
-}
-aff manage_copy(__isl_keep isl_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_aff_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_aff_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return aff(ptr);
-}
-
-aff::aff()
-    : ptr(nullptr) {}
-
-aff::aff(const aff &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_aff_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-aff::aff(__isl_take isl_aff *ptr)
-    : ptr(ptr) {}
-
-aff::aff(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-aff &aff::operator=(aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-aff::~aff() {
-  if (ptr)
-    isl_aff_free(ptr);
-}
-
-__isl_give isl_aff *aff::copy() const & {
-  return isl_aff_copy(ptr);
-}
-
-__isl_keep isl_aff *aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_aff *aff::release() {
-  isl_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx aff::ctx() const {
-  return isl::ctx(isl_aff_get_ctx(ptr));
-}
-
-isl::aff aff::add(isl::aff aff2) const
-{
-  if (!ptr || aff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_add(copy(), aff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff aff::add(const isl::multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).add(multi2);
-}
-
-isl::multi_pw_aff aff::add(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).add(multi2);
-}
-
-isl::multi_union_pw_aff aff::add(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).add(multi2);
-}
-
-isl::pw_aff aff::add(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).add(pwaff2);
-}
-
-isl::pw_multi_aff aff::add(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).add(pma2);
-}
-
-isl::union_pw_aff aff::add(const isl::union_pw_aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).add(upa2);
-}
-
-isl::union_pw_multi_aff aff::add(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).add(upma2);
-}
-
-isl::aff aff::add_constant(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_add_constant_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff aff::add_constant(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add_constant(isl::val(ctx(), v));
-}
-
-isl::multi_aff aff::add_constant(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).add_constant(mv);
-}
-
-isl::union_pw_multi_aff aff::apply(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).apply(upma2);
-}
-
-isl::aff aff::as_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).as_aff();
-}
-
-isl::map aff::as_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).as_map();
-}
-
-isl::multi_aff aff::as_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).as_multi_aff();
-}
-
-isl::multi_union_pw_aff aff::as_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).as_multi_union_pw_aff();
-}
-
-isl::pw_multi_aff aff::as_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).as_pw_multi_aff();
-}
-
-isl::set aff::as_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).as_set();
-}
-
-isl::union_map aff::as_union_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).as_union_map();
-}
-
-isl::aff aff::at(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).at(pos);
-}
-
-isl::basic_set aff::bind(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_bind_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::basic_set aff::bind(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->bind(isl::id(ctx(), id));
-}
-
-isl::basic_set aff::bind(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).bind(tuple);
-}
-
-isl::pw_aff aff::bind_domain(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).bind_domain(tuple);
-}
-
-isl::pw_aff aff::bind_domain_wrapped_domain(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).bind_domain_wrapped_domain(tuple);
-}
-
-isl::aff aff::ceil() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_ceil(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff aff::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).coalesce();
-}
-
-isl::pw_aff aff::cond(const isl::pw_aff &pwaff_true, const isl::pw_aff &pwaff_false) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).cond(pwaff_true, pwaff_false);
-}
-
-isl::multi_val aff::constant_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).constant_multi_val();
-}
-
-isl::val aff::constant_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_get_constant_val(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val aff::get_constant_val() const
-{
-  return constant_val();
-}
-
-isl::aff aff::div(isl::aff aff2) const
-{
-  if (!ptr || aff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_div(copy(), aff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff aff::div(const isl::pw_aff &pa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).div(pa2);
-}
-
-isl::set aff::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).domain();
-}
-
-isl::set aff::eq_set(isl::aff aff2) const
-{
-  if (!ptr || aff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_eq_set(copy(), aff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set aff::eq_set(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).eq_set(pwaff2);
-}
-
-isl::val aff::eval(isl::point pnt) const
-{
-  if (!ptr || pnt.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_eval(copy(), pnt.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff aff::extract_pw_multi_aff(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).extract_pw_multi_aff(space);
-}
-
-isl::multi_aff aff::flat_range_product(const isl::multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).flat_range_product(multi2);
-}
-
-isl::multi_pw_aff aff::flat_range_product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::multi_union_pw_aff aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::pw_multi_aff aff::flat_range_product(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).flat_range_product(pma2);
-}
-
-isl::union_pw_multi_aff aff::flat_range_product(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).flat_range_product(upma2);
-}
-
-isl::aff aff::floor() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_floor(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void aff::foreach_piece(const std::function<void(isl::set, isl::multi_aff)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).foreach_piece(fn);
-}
-
-isl::set aff::ge_set(isl::aff aff2) const
-{
-  if (!ptr || aff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_ge_set(copy(), aff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set aff::ge_set(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).ge_set(pwaff2);
-}
-
-isl::aff aff::gist(isl::set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff aff::gist(const isl::union_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).gist(context);
-}
-
-isl::aff aff::gist(const isl::basic_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(context));
-}
-
-isl::aff aff::gist(const isl::point &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(context));
-}
-
-isl::set aff::gt_set(isl::aff aff2) const
-{
-  if (!ptr || aff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_gt_set(copy(), aff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set aff::gt_set(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).gt_set(pwaff2);
-}
-
-bool aff::has_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).has_range_tuple_id();
-}
-
-isl::multi_aff aff::identity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).identity();
-}
-
-isl::pw_aff aff::insert_domain(const isl::space &domain) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).insert_domain(domain);
-}
-
-isl::pw_aff aff::intersect_domain(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).intersect_domain(set);
-}
-
-isl::union_pw_aff aff::intersect_domain(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).intersect_domain(space);
-}
-
-isl::union_pw_aff aff::intersect_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).intersect_domain(uset);
-}
-
-isl::union_pw_aff aff::intersect_domain_wrapped_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).intersect_domain_wrapped_domain(uset);
-}
-
-isl::union_pw_aff aff::intersect_domain_wrapped_range(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).intersect_domain_wrapped_range(uset);
-}
-
-isl::pw_aff aff::intersect_params(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).intersect_params(set);
-}
-
-bool aff::involves_locals() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).involves_locals();
-}
-
-bool aff::involves_nan() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).involves_nan();
-}
-
-bool aff::involves_param(const isl::id &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).involves_param(id);
-}
-
-bool aff::involves_param(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->involves_param(isl::id(ctx(), id));
-}
-
-bool aff::involves_param(const isl::id_list &list) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).involves_param(list);
-}
-
-bool aff::is_cst() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_is_cst(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool aff::isa_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).isa_aff();
-}
-
-bool aff::isa_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).isa_multi_aff();
-}
-
-bool aff::isa_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).isa_pw_multi_aff();
-}
-
-isl::set aff::le_set(isl::aff aff2) const
-{
-  if (!ptr || aff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_le_set(copy(), aff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set aff::le_set(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).le_set(pwaff2);
-}
-
-isl::aff_list aff::list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).list();
-}
-
-isl::set aff::lt_set(isl::aff aff2) const
-{
-  if (!ptr || aff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_lt_set(copy(), aff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set aff::lt_set(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).lt_set(pwaff2);
-}
-
-isl::multi_pw_aff aff::max(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).max(multi2);
-}
-
-isl::pw_aff aff::max(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).max(pwaff2);
-}
-
-isl::multi_val aff::max_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).max_multi_val();
-}
-
-isl::multi_pw_aff aff::min(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).min(multi2);
-}
-
-isl::pw_aff aff::min(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).min(pwaff2);
-}
-
-isl::multi_val aff::min_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).min_multi_val();
-}
-
-isl::aff aff::mod(isl::val mod) const
-{
-  if (!ptr || mod.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_mod_val(copy(), mod.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff aff::mod(long mod) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->mod(isl::val(ctx(), mod));
-}
-
-isl::aff aff::mul(isl::aff aff2) const
-{
-  if (!ptr || aff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_mul(copy(), aff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff aff::mul(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).mul(pwaff2);
-}
-
-unsigned aff::n_piece() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).n_piece();
-}
-
-isl::set aff::ne_set(isl::aff aff2) const
-{
-  if (!ptr || aff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_ne_set(copy(), aff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set aff::ne_set(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).ne_set(pwaff2);
-}
-
-isl::aff aff::neg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_neg(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool aff::plain_is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).plain_is_empty();
-}
-
-bool aff::plain_is_equal(const isl::multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).plain_is_equal(multi2);
-}
-
-bool aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).plain_is_equal(multi2);
-}
-
-bool aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).plain_is_equal(multi2);
-}
-
-isl::pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).preimage_domain_wrapped_domain(pma2);
-}
-
-isl::union_pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).preimage_domain_wrapped_domain(upma2);
-}
-
-isl::multi_aff aff::product(const isl::multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).product(multi2);
-}
-
-isl::multi_pw_aff aff::product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).product(multi2);
-}
-
-isl::pw_multi_aff aff::product(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).product(pma2);
-}
-
-isl::aff aff::pullback(isl::multi_aff ma) const
-{
-  if (!ptr || ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff aff::pullback(const isl::multi_pw_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).pullback(mpa);
-}
-
-isl::pw_aff aff::pullback(const isl::pw_multi_aff &pma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).pullback(pma);
-}
-
-isl::union_pw_aff aff::pullback(const isl::union_pw_multi_aff &upma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).pullback(upma);
-}
-
-isl::aff aff::pullback(const isl::aff &ma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->pullback(isl::multi_aff(ma));
-}
-
-isl::pw_multi_aff_list aff::pw_multi_aff_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).pw_multi_aff_list();
-}
-
-isl::pw_multi_aff aff::range_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).range_factor_domain();
-}
-
-isl::pw_multi_aff aff::range_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).range_factor_range();
-}
-
-isl::multi_aff aff::range_product(const isl::multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).range_product(multi2);
-}
-
-isl::multi_pw_aff aff::range_product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).range_product(multi2);
-}
-
-isl::multi_union_pw_aff aff::range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).range_product(multi2);
-}
-
-isl::pw_multi_aff aff::range_product(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).range_product(pma2);
-}
-
-isl::union_pw_multi_aff aff::range_product(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).range_product(upma2);
-}
-
-isl::id aff::range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).range_tuple_id();
-}
-
-isl::multi_aff aff::reset_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).reset_range_tuple_id();
-}
-
-isl::aff aff::scale(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_scale_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff aff::scale(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale(isl::val(ctx(), v));
-}
-
-isl::multi_aff aff::scale(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).scale(mv);
-}
-
-isl::aff aff::scale_down(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_scale_down_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff aff::scale_down(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale_down(isl::val(ctx(), v));
-}
-
-isl::multi_aff aff::scale_down(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).scale_down(mv);
-}
-
-isl::multi_aff aff::set_at(int pos, const isl::aff &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).set_at(pos, el);
-}
-
-isl::multi_pw_aff aff::set_at(int pos, const isl::pw_aff &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).set_at(pos, el);
-}
-
-isl::multi_union_pw_aff aff::set_at(int pos, const isl::union_pw_aff &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).set_at(pos, el);
-}
-
-isl::multi_aff aff::set_range_tuple(const isl::id &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).set_range_tuple(id);
-}
-
-isl::multi_aff aff::set_range_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_range_tuple(isl::id(ctx(), id));
-}
-
-unsigned aff::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).size();
-}
-
-isl::space aff::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).space();
-}
-
-isl::aff aff::sub(isl::aff aff2) const
-{
-  if (!ptr || aff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_sub(copy(), aff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff aff::sub(const isl::multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).sub(multi2);
-}
-
-isl::multi_pw_aff aff::sub(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).sub(multi2);
-}
-
-isl::multi_union_pw_aff aff::sub(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).sub(multi2);
-}
-
-isl::pw_aff aff::sub(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).sub(pwaff2);
-}
-
-isl::pw_multi_aff aff::sub(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).sub(pma2);
-}
-
-isl::union_pw_aff aff::sub(const isl::union_pw_aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).sub(upa2);
-}
-
-isl::union_pw_multi_aff aff::sub(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).sub(upma2);
-}
-
-isl::pw_aff aff::subtract_domain(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).subtract_domain(set);
-}
-
-isl::union_pw_aff aff::subtract_domain(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).subtract_domain(space);
-}
-
-isl::union_pw_aff aff::subtract_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).subtract_domain(uset);
-}
-
-isl::pw_aff aff::tdiv_q(const isl::pw_aff &pa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).tdiv_q(pa2);
-}
-
-isl::pw_aff aff::tdiv_r(const isl::pw_aff &pa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).tdiv_r(pa2);
-}
-
-isl::aff_list aff::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_to_list(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff aff::to_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).to_multi_pw_aff();
-}
-
-isl::multi_union_pw_aff aff::to_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).to_multi_union_pw_aff();
-}
-
-isl::pw_multi_aff aff::to_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_aff(*this).to_pw_multi_aff();
-}
-
-isl::union_pw_aff aff::to_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).to_union_pw_aff();
-}
-
-isl::union_pw_multi_aff aff::to_union_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).to_union_pw_multi_aff();
-}
-
-isl::aff aff::unbind_params_insert_domain(isl::multi_id domain) const
-{
-  if (!ptr || domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_unbind_params_insert_domain(copy(), domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff aff::union_add(const isl::multi_pw_aff &mpa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).union_add(mpa2);
-}
-
-isl::multi_union_pw_aff aff::union_add(const isl::multi_union_pw_aff &mupa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).union_add(mupa2);
-}
-
-isl::pw_aff aff::union_add(const isl::pw_aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).union_add(pwaff2);
-}
-
-isl::pw_multi_aff aff::union_add(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).union_add(pma2);
-}
-
-isl::union_pw_aff aff::union_add(const isl::union_pw_aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).union_add(upa2);
-}
-
-isl::union_pw_multi_aff aff::union_add(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_aff(*this).union_add(upma2);
-}
-
-isl::aff aff::zero_on_domain(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_zero_on_domain_space(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const aff &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_aff_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_aff_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::aff_list
-aff_list manage(__isl_take isl_aff_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return aff_list(ptr);
-}
-aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_aff_list_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_aff_list_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return aff_list(ptr);
-}
-
-aff_list::aff_list()
-    : ptr(nullptr) {}
-
-aff_list::aff_list(const aff_list &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_aff_list_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-aff_list::aff_list(__isl_take isl_aff_list *ptr)
-    : ptr(ptr) {}
-
-aff_list::aff_list(isl::ctx ctx, int n)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_list_alloc(ctx.release(), n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-aff_list::aff_list(isl::aff el)
-{
-  if (el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = el.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_list_from_aff(el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-aff_list::aff_list(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_list_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-aff_list &aff_list::operator=(aff_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-aff_list::~aff_list() {
-  if (ptr)
-    isl_aff_list_free(ptr);
-}
-
-__isl_give isl_aff_list *aff_list::copy() const & {
-  return isl_aff_list_copy(ptr);
-}
-
-__isl_keep isl_aff_list *aff_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_aff_list *aff_list::release() {
-  isl_aff_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool aff_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx aff_list::ctx() const {
-  return isl::ctx(isl_aff_list_get_ctx(ptr));
-}
-
-isl::aff_list aff_list::add(isl::aff el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_list_add(copy(), el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff aff_list::at(int index) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_list_get_at(get(), index);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff aff_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::aff_list aff_list::clear() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_list_clear(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff_list aff_list::concat(isl::aff_list list2) const
-{
-  if (!ptr || list2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_list_concat(copy(), list2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff_list aff_list::drop(unsigned int first, unsigned int n) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_list_drop(copy(), first, n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void aff_list::foreach(const std::function<void(isl::aff)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::aff)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::aff_list aff_list::insert(unsigned int pos, isl::aff el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_list_insert(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned aff_list::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_aff_list_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const aff_list &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_aff_list_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_aff_list_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_build
-ast_build manage(__isl_take isl_ast_build *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return ast_build(ptr);
-}
-ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_build_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_ast_build_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return ast_build(ptr);
-}
-
-ast_build::ast_build()
-    : ptr(nullptr) {}
-
-ast_build::ast_build(const ast_build &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_build_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  copy_callbacks(obj);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-ast_build::ast_build(__isl_take isl_ast_build *ptr)
-    : ptr(ptr) {}
-
-ast_build::ast_build(isl::ctx ctx)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_build_alloc(ctx.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-ast_build &ast_build::operator=(ast_build obj) {
-  std::swap(this->ptr, obj.ptr);
-  copy_callbacks(obj);
-  return *this;
-}
-
-ast_build::~ast_build() {
-  if (ptr)
-    isl_ast_build_free(ptr);
-}
-
-__isl_give isl_ast_build *ast_build::copy() const & {
-  return isl_ast_build_copy(ptr);
-}
-
-__isl_keep isl_ast_build *ast_build::get() const {
-  return ptr;
-}
-
-__isl_give isl_ast_build *ast_build::release() {
-  if (at_each_domain_data)
-    exception::throw_invalid("cannot release object with persistent callbacks", __FILE__, __LINE__);
-  isl_ast_build *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool ast_build::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx ast_build::ctx() const {
-  return isl::ctx(isl_ast_build_get_ctx(ptr));
-}
-
-ast_build &ast_build::copy_callbacks(const ast_build &obj)
-{
-  at_each_domain_data = obj.at_each_domain_data;
-  return *this;
-}
-
-isl_ast_node *ast_build::at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2)
-{
-  auto *data = static_cast<struct at_each_domain_data *>(arg_2);
-  ISL_CPP_TRY {
-    auto ret = (data->func)(manage(arg_0), manage_copy(arg_1));
-    return ret.release();
-  } ISL_CPP_CATCH_ALL {
-    data->eptr = std::current_exception();
-    return NULL;
-  }
-}
-
-void ast_build::set_at_each_domain_data(const std::function<isl::ast_node(isl::ast_node, isl::ast_build)> &fn)
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_build_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  at_each_domain_data = std::make_shared<struct at_each_domain_data>();
-  at_each_domain_data->func = fn;
-  ptr = isl_ast_build_set_at_each_domain(ptr, &at_each_domain, at_each_domain_data.get());
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-isl::ast_build ast_build::set_at_each_domain(const std::function<isl::ast_node(isl::ast_node, isl::ast_build)> &fn) const
-{
-  auto copy = *this;
-  copy.set_at_each_domain_data(fn);
-  return copy;
-}
-
-isl::ast_expr ast_build::access_from(isl::multi_pw_aff mpa) const
-{
-  if (!ptr || mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release());
-  if (at_each_domain_data && at_each_domain_data->eptr) {
-    std::exception_ptr eptr = at_each_domain_data->eptr;
-    at_each_domain_data->eptr = nullptr;
-    std::rethrow_exception(eptr);
-  }
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_build::access_from(isl::pw_multi_aff pma) const
-{
-  if (!ptr || pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release());
-  if (at_each_domain_data && at_each_domain_data->eptr) {
-    std::exception_ptr eptr = at_each_domain_data->eptr;
-    at_each_domain_data->eptr = nullptr;
-    std::rethrow_exception(eptr);
-  }
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_build::call_from(isl::multi_pw_aff mpa) const
-{
-  if (!ptr || mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release());
-  if (at_each_domain_data && at_each_domain_data->eptr) {
-    std::exception_ptr eptr = at_each_domain_data->eptr;
-    at_each_domain_data->eptr = nullptr;
-    std::rethrow_exception(eptr);
-  }
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_build::call_from(isl::pw_multi_aff pma) const
-{
-  if (!ptr || pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
-  if (at_each_domain_data && at_each_domain_data->eptr) {
-    std::exception_ptr eptr = at_each_domain_data->eptr;
-    at_each_domain_data->eptr = nullptr;
-    std::rethrow_exception(eptr);
-  }
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_build::expr_from(isl::pw_aff pa) const
-{
-  if (!ptr || pa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release());
-  if (at_each_domain_data && at_each_domain_data->eptr) {
-    std::exception_ptr eptr = at_each_domain_data->eptr;
-    at_each_domain_data->eptr = nullptr;
-    std::rethrow_exception(eptr);
-  }
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_build::expr_from(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_build_expr_from_set(get(), set.release());
-  if (at_each_domain_data && at_each_domain_data->eptr) {
-    std::exception_ptr eptr = at_each_domain_data->eptr;
-    at_each_domain_data->eptr = nullptr;
-    std::rethrow_exception(eptr);
-  }
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_build ast_build::from_context(isl::set set)
-{
-  if (set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = set.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_build_from_context(set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_node ast_build::node_from(isl::schedule schedule) const
-{
-  if (!ptr || schedule.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_build_node_from_schedule(get(), schedule.release());
-  if (at_each_domain_data && at_each_domain_data->eptr) {
-    std::exception_ptr eptr = at_each_domain_data->eptr;
-    at_each_domain_data->eptr = nullptr;
-    std::rethrow_exception(eptr);
-  }
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_node ast_build::node_from_schedule_map(isl::union_map schedule) const
-{
-  if (!ptr || schedule.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release());
-  if (at_each_domain_data && at_each_domain_data->eptr) {
-    std::exception_ptr eptr = at_each_domain_data->eptr;
-    at_each_domain_data->eptr = nullptr;
-    std::rethrow_exception(eptr);
-  }
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map ast_build::schedule() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_build_get_schedule(get());
-  if (at_each_domain_data && at_each_domain_data->eptr) {
-    std::exception_ptr eptr = at_each_domain_data->eptr;
-    at_each_domain_data->eptr = nullptr;
-    std::rethrow_exception(eptr);
-  }
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map ast_build::get_schedule() const
-{
-  return schedule();
-}
-
-// implementations for isl::ast_expr
-ast_expr manage(__isl_take isl_ast_expr *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return ast_expr(ptr);
-}
-ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_ast_expr_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return ast_expr(ptr);
-}
-
-ast_expr::ast_expr()
-    : ptr(nullptr) {}
-
-ast_expr::ast_expr(const ast_expr &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
-    : ptr(ptr) {}
-
-ast_expr &ast_expr::operator=(ast_expr obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-ast_expr::~ast_expr() {
-  if (ptr)
-    isl_ast_expr_free(ptr);
-}
-
-__isl_give isl_ast_expr *ast_expr::copy() const & {
-  return isl_ast_expr_copy(ptr);
-}
-
-__isl_keep isl_ast_expr *ast_expr::get() const {
-  return ptr;
-}
-
-__isl_give isl_ast_expr *ast_expr::release() {
-  isl_ast_expr *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool ast_expr::is_null() const {
-  return ptr == nullptr;
-}
-
-template <typename T, typename>
-bool ast_expr::isa_type(T subtype) const
-{
-  if (is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl_ast_expr_get_type(get()) == subtype;
-}
-template <class T>
-bool ast_expr::isa() const
-{
-  return isa_type<decltype(T::type)>(T::type);
-}
-template <class T>
-T ast_expr::as() const
-{
- if (!isa<T>())
-    exception::throw_invalid("not an object of the requested subtype", __FILE__, __LINE__);
-  return T(copy());
-}
-
-isl::ctx ast_expr::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-std::string ast_expr::to_C_str() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_expr_to_C_str(get());
-  std::string tmp(res);
-  free(res);
-  return tmp;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_id
-ast_expr_id::ast_expr_id()
-    : ast_expr() {}
-
-ast_expr_id::ast_expr_id(const ast_expr_id &obj)
-    : ast_expr(obj)
-{
-}
-
-ast_expr_id::ast_expr_id(__isl_take isl_ast_expr *ptr)
-    : ast_expr(ptr) {}
-
-ast_expr_id &ast_expr_id::operator=(ast_expr_id obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_id::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-isl::id ast_expr_id::id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_expr_id_get_id(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id ast_expr_id::get_id() const
-{
-  return id();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_id &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_int
-ast_expr_int::ast_expr_int()
-    : ast_expr() {}
-
-ast_expr_int::ast_expr_int(const ast_expr_int &obj)
-    : ast_expr(obj)
-{
-}
-
-ast_expr_int::ast_expr_int(__isl_take isl_ast_expr *ptr)
-    : ast_expr(ptr) {}
-
-ast_expr_int &ast_expr_int::operator=(ast_expr_int obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_int::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-isl::val ast_expr_int::val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_expr_int_get_val(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val ast_expr_int::get_val() const
-{
-  return val();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_int &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op
-ast_expr_op::ast_expr_op()
-    : ast_expr() {}
-
-ast_expr_op::ast_expr_op(const ast_expr_op &obj)
-    : ast_expr(obj)
-{
-}
-
-ast_expr_op::ast_expr_op(__isl_take isl_ast_expr *ptr)
-    : ast_expr(ptr) {}
-
-ast_expr_op &ast_expr_op::operator=(ast_expr_op obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-template <typename T, typename>
-bool ast_expr_op::isa_type(T subtype) const
-{
-  if (is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl_ast_expr_op_get_type(get()) == subtype;
-}
-template <class T>
-bool ast_expr_op::isa() const
-{
-  return isa_type<decltype(T::type)>(T::type);
-}
-template <class T>
-T ast_expr_op::as() const
-{
- if (!isa<T>())
-    exception::throw_invalid("not an object of the requested subtype", __FILE__, __LINE__);
-  return T(copy());
-}
-
-isl::ctx ast_expr_op::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-isl::ast_expr ast_expr_op::arg(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_expr_op_get_arg(get(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_expr_op::get_arg(int pos) const
-{
-  return arg(pos);
-}
-
-unsigned ast_expr_op::n_arg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_expr_op_get_n_arg(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-unsigned ast_expr_op::get_n_arg() const
-{
-  return n_arg();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_access
-ast_expr_op_access::ast_expr_op_access()
-    : ast_expr_op() {}
-
-ast_expr_op_access::ast_expr_op_access(const ast_expr_op_access &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_access::ast_expr_op_access(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_access &ast_expr_op_access::operator=(ast_expr_op_access obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_access::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_access &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_add
-ast_expr_op_add::ast_expr_op_add()
-    : ast_expr_op() {}
-
-ast_expr_op_add::ast_expr_op_add(const ast_expr_op_add &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_add::ast_expr_op_add(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_add &ast_expr_op_add::operator=(ast_expr_op_add obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_add::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_add &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_address_of
-ast_expr_op_address_of::ast_expr_op_address_of()
-    : ast_expr_op() {}
-
-ast_expr_op_address_of::ast_expr_op_address_of(const ast_expr_op_address_of &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_address_of::ast_expr_op_address_of(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_address_of &ast_expr_op_address_of::operator=(ast_expr_op_address_of obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_address_of::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_address_of &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_and
-ast_expr_op_and::ast_expr_op_and()
-    : ast_expr_op() {}
-
-ast_expr_op_and::ast_expr_op_and(const ast_expr_op_and &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_and::ast_expr_op_and(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_and &ast_expr_op_and::operator=(ast_expr_op_and obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_and::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_and_then
-ast_expr_op_and_then::ast_expr_op_and_then()
-    : ast_expr_op() {}
-
-ast_expr_op_and_then::ast_expr_op_and_then(const ast_expr_op_and_then &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_and_then::ast_expr_op_and_then(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_and_then &ast_expr_op_and_then::operator=(ast_expr_op_and_then obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_and_then::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and_then &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_call
-ast_expr_op_call::ast_expr_op_call()
-    : ast_expr_op() {}
-
-ast_expr_op_call::ast_expr_op_call(const ast_expr_op_call &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_call::ast_expr_op_call(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_call &ast_expr_op_call::operator=(ast_expr_op_call obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_call::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_call &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_cond
-ast_expr_op_cond::ast_expr_op_cond()
-    : ast_expr_op() {}
-
-ast_expr_op_cond::ast_expr_op_cond(const ast_expr_op_cond &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_cond::ast_expr_op_cond(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_cond &ast_expr_op_cond::operator=(ast_expr_op_cond obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_cond::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_cond &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_div
-ast_expr_op_div::ast_expr_op_div()
-    : ast_expr_op() {}
-
-ast_expr_op_div::ast_expr_op_div(const ast_expr_op_div &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_div::ast_expr_op_div(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_div &ast_expr_op_div::operator=(ast_expr_op_div obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_div::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_div &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_eq
-ast_expr_op_eq::ast_expr_op_eq()
-    : ast_expr_op() {}
-
-ast_expr_op_eq::ast_expr_op_eq(const ast_expr_op_eq &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_eq::ast_expr_op_eq(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_eq &ast_expr_op_eq::operator=(ast_expr_op_eq obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_eq::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_eq &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_fdiv_q
-ast_expr_op_fdiv_q::ast_expr_op_fdiv_q()
-    : ast_expr_op() {}
-
-ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_fdiv_q &ast_expr_op_fdiv_q::operator=(ast_expr_op_fdiv_q obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_fdiv_q::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_fdiv_q &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_ge
-ast_expr_op_ge::ast_expr_op_ge()
-    : ast_expr_op() {}
-
-ast_expr_op_ge::ast_expr_op_ge(const ast_expr_op_ge &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_ge::ast_expr_op_ge(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_ge &ast_expr_op_ge::operator=(ast_expr_op_ge obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_ge::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_ge &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_gt
-ast_expr_op_gt::ast_expr_op_gt()
-    : ast_expr_op() {}
-
-ast_expr_op_gt::ast_expr_op_gt(const ast_expr_op_gt &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_gt::ast_expr_op_gt(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_gt &ast_expr_op_gt::operator=(ast_expr_op_gt obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_gt::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_gt &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_le
-ast_expr_op_le::ast_expr_op_le()
-    : ast_expr_op() {}
-
-ast_expr_op_le::ast_expr_op_le(const ast_expr_op_le &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_le::ast_expr_op_le(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_le &ast_expr_op_le::operator=(ast_expr_op_le obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_le::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_le &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_lt
-ast_expr_op_lt::ast_expr_op_lt()
-    : ast_expr_op() {}
-
-ast_expr_op_lt::ast_expr_op_lt(const ast_expr_op_lt &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_lt::ast_expr_op_lt(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_lt &ast_expr_op_lt::operator=(ast_expr_op_lt obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_lt::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_lt &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_max
-ast_expr_op_max::ast_expr_op_max()
-    : ast_expr_op() {}
-
-ast_expr_op_max::ast_expr_op_max(const ast_expr_op_max &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_max::ast_expr_op_max(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_max &ast_expr_op_max::operator=(ast_expr_op_max obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_max::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_max &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_member
-ast_expr_op_member::ast_expr_op_member()
-    : ast_expr_op() {}
-
-ast_expr_op_member::ast_expr_op_member(const ast_expr_op_member &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_member::ast_expr_op_member(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_member &ast_expr_op_member::operator=(ast_expr_op_member obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_member::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_member &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_min
-ast_expr_op_min::ast_expr_op_min()
-    : ast_expr_op() {}
-
-ast_expr_op_min::ast_expr_op_min(const ast_expr_op_min &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_min::ast_expr_op_min(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_min &ast_expr_op_min::operator=(ast_expr_op_min obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_min::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_min &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_minus
-ast_expr_op_minus::ast_expr_op_minus()
-    : ast_expr_op() {}
-
-ast_expr_op_minus::ast_expr_op_minus(const ast_expr_op_minus &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_minus::ast_expr_op_minus(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_minus &ast_expr_op_minus::operator=(ast_expr_op_minus obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_minus::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_minus &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_mul
-ast_expr_op_mul::ast_expr_op_mul()
-    : ast_expr_op() {}
-
-ast_expr_op_mul::ast_expr_op_mul(const ast_expr_op_mul &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_mul::ast_expr_op_mul(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_mul &ast_expr_op_mul::operator=(ast_expr_op_mul obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_mul::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_mul &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_or
-ast_expr_op_or::ast_expr_op_or()
-    : ast_expr_op() {}
-
-ast_expr_op_or::ast_expr_op_or(const ast_expr_op_or &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_or::ast_expr_op_or(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_or &ast_expr_op_or::operator=(ast_expr_op_or obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_or::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_or_else
-ast_expr_op_or_else::ast_expr_op_or_else()
-    : ast_expr_op() {}
-
-ast_expr_op_or_else::ast_expr_op_or_else(const ast_expr_op_or_else &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_or_else::ast_expr_op_or_else(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_or_else &ast_expr_op_or_else::operator=(ast_expr_op_or_else obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_or_else::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or_else &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_pdiv_q
-ast_expr_op_pdiv_q::ast_expr_op_pdiv_q()
-    : ast_expr_op() {}
-
-ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_pdiv_q &ast_expr_op_pdiv_q::operator=(ast_expr_op_pdiv_q obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_pdiv_q::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_q &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_pdiv_r
-ast_expr_op_pdiv_r::ast_expr_op_pdiv_r()
-    : ast_expr_op() {}
-
-ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_pdiv_r &ast_expr_op_pdiv_r::operator=(ast_expr_op_pdiv_r obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_pdiv_r::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_r &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_select
-ast_expr_op_select::ast_expr_op_select()
-    : ast_expr_op() {}
-
-ast_expr_op_select::ast_expr_op_select(const ast_expr_op_select &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_select::ast_expr_op_select(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_select &ast_expr_op_select::operator=(ast_expr_op_select obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_select::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_select &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_sub
-ast_expr_op_sub::ast_expr_op_sub()
-    : ast_expr_op() {}
-
-ast_expr_op_sub::ast_expr_op_sub(const ast_expr_op_sub &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_sub::ast_expr_op_sub(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_sub &ast_expr_op_sub::operator=(ast_expr_op_sub obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_sub::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_sub &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_expr_op_zdiv_r
-ast_expr_op_zdiv_r::ast_expr_op_zdiv_r()
-    : ast_expr_op() {}
-
-ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj)
-    : ast_expr_op(obj)
-{
-}
-
-ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr)
-    : ast_expr_op(ptr) {}
-
-ast_expr_op_zdiv_r &ast_expr_op_zdiv_r::operator=(ast_expr_op_zdiv_r obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_expr_op_zdiv_r::ctx() const {
-  return isl::ctx(isl_ast_expr_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_zdiv_r &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_expr_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_expr_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node
-ast_node manage(__isl_take isl_ast_node *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return ast_node(ptr);
-}
-ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_node_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_ast_node_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return ast_node(ptr);
-}
-
-ast_node::ast_node()
-    : ptr(nullptr) {}
-
-ast_node::ast_node(const ast_node &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_node_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-ast_node::ast_node(__isl_take isl_ast_node *ptr)
-    : ptr(ptr) {}
-
-ast_node &ast_node::operator=(ast_node obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-ast_node::~ast_node() {
-  if (ptr)
-    isl_ast_node_free(ptr);
-}
-
-__isl_give isl_ast_node *ast_node::copy() const & {
-  return isl_ast_node_copy(ptr);
-}
-
-__isl_keep isl_ast_node *ast_node::get() const {
-  return ptr;
-}
-
-__isl_give isl_ast_node *ast_node::release() {
-  isl_ast_node *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool ast_node::is_null() const {
-  return ptr == nullptr;
-}
-
-template <typename T, typename>
-bool ast_node::isa_type(T subtype) const
-{
-  if (is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl_ast_node_get_type(get()) == subtype;
-}
-template <class T>
-bool ast_node::isa() const
-{
-  return isa_type<decltype(T::type)>(T::type);
-}
-template <class T>
-T ast_node::as() const
-{
- if (!isa<T>())
-    exception::throw_invalid("not an object of the requested subtype", __FILE__, __LINE__);
-  return T(copy());
-}
-
-isl::ctx ast_node::ctx() const {
-  return isl::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-std::string ast_node::to_C_str() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_to_C_str(get());
-  std::string tmp(res);
-  free(res);
-  return tmp;
-}
-
-isl::ast_node_list ast_node::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_to_list(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_block
-ast_node_block::ast_node_block()
-    : ast_node() {}
-
-ast_node_block::ast_node_block(const ast_node_block &obj)
-    : ast_node(obj)
-{
-}
-
-ast_node_block::ast_node_block(__isl_take isl_ast_node *ptr)
-    : ast_node(ptr) {}
-
-ast_node_block &ast_node_block::operator=(ast_node_block obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_node_block::ctx() const {
-  return isl::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-isl::ast_node_list ast_node_block::children() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_block_get_children(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_node_list ast_node_block::get_children() const
-{
-  return children();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_block &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_for
-ast_node_for::ast_node_for()
-    : ast_node() {}
-
-ast_node_for::ast_node_for(const ast_node_for &obj)
-    : ast_node(obj)
-{
-}
-
-ast_node_for::ast_node_for(__isl_take isl_ast_node *ptr)
-    : ast_node(ptr) {}
-
-ast_node_for &ast_node_for::operator=(ast_node_for obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_node_for::ctx() const {
-  return isl::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-isl::ast_node ast_node_for::body() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_for_get_body(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_node ast_node_for::get_body() const
-{
-  return body();
-}
-
-isl::ast_expr ast_node_for::cond() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_for_get_cond(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_node_for::get_cond() const
-{
-  return cond();
-}
-
-isl::ast_expr ast_node_for::inc() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_for_get_inc(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_node_for::get_inc() const
-{
-  return inc();
-}
-
-isl::ast_expr ast_node_for::init() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_for_get_init(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_node_for::get_init() const
-{
-  return init();
-}
-
-bool ast_node_for::is_degenerate() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_for_is_degenerate(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::ast_expr ast_node_for::iterator() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_for_get_iterator(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_node_for::get_iterator() const
-{
-  return iterator();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_for &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_if
-ast_node_if::ast_node_if()
-    : ast_node() {}
-
-ast_node_if::ast_node_if(const ast_node_if &obj)
-    : ast_node(obj)
-{
-}
-
-ast_node_if::ast_node_if(__isl_take isl_ast_node *ptr)
-    : ast_node(ptr) {}
-
-ast_node_if &ast_node_if::operator=(ast_node_if obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_node_if::ctx() const {
-  return isl::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-isl::ast_expr ast_node_if::cond() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_if_get_cond(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_node_if::get_cond() const
-{
-  return cond();
-}
-
-isl::ast_node ast_node_if::else_node() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_if_get_else_node(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_node ast_node_if::get_else_node() const
-{
-  return else_node();
-}
-
-bool ast_node_if::has_else_node() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_if_has_else_node(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::ast_node ast_node_if::then_node() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_if_get_then_node(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_node ast_node_if::get_then_node() const
-{
-  return then_node();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_if &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_list
-ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return ast_node_list(ptr);
-}
-ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_node_list_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_ast_node_list_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return ast_node_list(ptr);
-}
-
-ast_node_list::ast_node_list()
-    : ptr(nullptr) {}
-
-ast_node_list::ast_node_list(const ast_node_list &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_node_list_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
-    : ptr(ptr) {}
-
-ast_node_list::ast_node_list(isl::ctx ctx, int n)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_list_alloc(ctx.release(), n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-ast_node_list::ast_node_list(isl::ast_node el)
-{
-  if (el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = el.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_list_from_ast_node(el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-ast_node_list &ast_node_list::operator=(ast_node_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-ast_node_list::~ast_node_list() {
-  if (ptr)
-    isl_ast_node_list_free(ptr);
-}
-
-__isl_give isl_ast_node_list *ast_node_list::copy() const & {
-  return isl_ast_node_list_copy(ptr);
-}
-
-__isl_keep isl_ast_node_list *ast_node_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_ast_node_list *ast_node_list::release() {
-  isl_ast_node_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool ast_node_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx ast_node_list::ctx() const {
-  return isl::ctx(isl_ast_node_list_get_ctx(ptr));
-}
-
-isl::ast_node_list ast_node_list::add(isl::ast_node el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_list_add(copy(), el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_node ast_node_list::at(int index) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_list_get_at(get(), index);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_node ast_node_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::ast_node_list ast_node_list::clear() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_list_clear(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_node_list ast_node_list::concat(isl::ast_node_list list2) const
-{
-  if (!ptr || list2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_list_concat(copy(), list2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_list_drop(copy(), first, n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void ast_node_list::foreach(const std::function<void(isl::ast_node)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::ast_node)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::ast_node_list ast_node_list::insert(unsigned int pos, isl::ast_node el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_list_insert(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned ast_node_list::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_list_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_list &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_node_list_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_node_list_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_mark
-ast_node_mark::ast_node_mark()
-    : ast_node() {}
-
-ast_node_mark::ast_node_mark(const ast_node_mark &obj)
-    : ast_node(obj)
-{
-}
-
-ast_node_mark::ast_node_mark(__isl_take isl_ast_node *ptr)
-    : ast_node(ptr) {}
-
-ast_node_mark &ast_node_mark::operator=(ast_node_mark obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_node_mark::ctx() const {
-  return isl::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-isl::id ast_node_mark::id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_mark_get_id(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id ast_node_mark::get_id() const
-{
-  return id();
-}
-
-isl::ast_node ast_node_mark::node() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_mark_get_node(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_node ast_node_mark::get_node() const
-{
-  return node();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_mark &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::ast_node_user
-ast_node_user::ast_node_user()
-    : ast_node() {}
-
-ast_node_user::ast_node_user(const ast_node_user &obj)
-    : ast_node(obj)
-{
-}
-
-ast_node_user::ast_node_user(__isl_take isl_ast_node *ptr)
-    : ast_node(ptr) {}
-
-ast_node_user &ast_node_user::operator=(ast_node_user obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx ast_node_user::ctx() const {
-  return isl::ctx(isl_ast_node_get_ctx(ptr));
-}
-
-isl::ast_expr ast_node_user::expr() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_ast_node_user_get_expr(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::ast_expr ast_node_user::get_expr() const
-{
-  return expr();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const ast_node_user &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_ast_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_ast_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::basic_map
-basic_map manage(__isl_take isl_basic_map *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return basic_map(ptr);
-}
-basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_basic_map_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_basic_map_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return basic_map(ptr);
-}
-
-basic_map::basic_map()
-    : ptr(nullptr) {}
-
-basic_map::basic_map(const basic_map &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_basic_map_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-basic_map::basic_map(__isl_take isl_basic_map *ptr)
-    : ptr(ptr) {}
-
-basic_map::basic_map(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-basic_map &basic_map::operator=(basic_map obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-basic_map::~basic_map() {
-  if (ptr)
-    isl_basic_map_free(ptr);
-}
-
-__isl_give isl_basic_map *basic_map::copy() const & {
-  return isl_basic_map_copy(ptr);
-}
-
-__isl_keep isl_basic_map *basic_map::get() const {
-  return ptr;
-}
-
-__isl_give isl_basic_map *basic_map::release() {
-  isl_basic_map *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool basic_map::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx basic_map::ctx() const {
-  return isl::ctx(isl_basic_map_get_ctx(ptr));
-}
-
-isl::basic_map basic_map::affine_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_affine_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::basic_map basic_map::apply_domain(isl::basic_map bmap2) const
-{
-  if (!ptr || bmap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map basic_map::apply_domain(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).apply_domain(map2);
-}
-
-isl::union_map basic_map::apply_domain(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).apply_domain(umap2);
-}
-
-isl::basic_map basic_map::apply_range(isl::basic_map bmap2) const
-{
-  if (!ptr || bmap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_apply_range(copy(), bmap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map basic_map::apply_range(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).apply_range(map2);
-}
-
-isl::union_map basic_map::apply_range(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).apply_range(umap2);
-}
-
-isl::map basic_map::as_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).as_map();
-}
-
-isl::multi_union_pw_aff basic_map::as_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).as_multi_union_pw_aff();
-}
-
-isl::pw_multi_aff basic_map::as_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).as_pw_multi_aff();
-}
-
-isl::union_pw_multi_aff basic_map::as_union_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).as_union_pw_multi_aff();
-}
-
-isl::set basic_map::bind_domain(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).bind_domain(tuple);
-}
-
-isl::set basic_map::bind_range(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).bind_range(tuple);
-}
-
-isl::map basic_map::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).coalesce();
-}
-
-isl::map basic_map::complement() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).complement();
-}
-
-isl::union_map basic_map::compute_divs() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).compute_divs();
-}
-
-isl::map basic_map::curry() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).curry();
-}
-
-isl::basic_set basic_map::deltas() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_deltas(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::basic_map basic_map::detect_equalities() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_detect_equalities(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set basic_map::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).domain();
-}
-
-isl::map basic_map::domain_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).domain_factor_domain();
-}
-
-isl::map basic_map::domain_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).domain_factor_range();
-}
-
-isl::union_map basic_map::domain_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).domain_map();
-}
-
-isl::union_pw_multi_aff basic_map::domain_map_union_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).domain_map_union_pw_multi_aff();
-}
-
-isl::map basic_map::domain_product(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).domain_product(map2);
-}
-
-isl::union_map basic_map::domain_product(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).domain_product(umap2);
-}
-
-unsigned basic_map::domain_tuple_dim() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).domain_tuple_dim();
-}
-
-isl::id basic_map::domain_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).domain_tuple_id();
-}
-
-isl::map basic_map::eq_at(const isl::multi_pw_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).eq_at(mpa);
-}
-
-isl::union_map basic_map::eq_at(const isl::multi_union_pw_aff &mupa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).eq_at(mupa);
-}
-
-bool basic_map::every_map(const std::function<bool(isl::map)> &test) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).every_map(test);
-}
-
-isl::map basic_map::extract_map(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).extract_map(space);
-}
-
-isl::map basic_map::factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).factor_domain();
-}
-
-isl::map basic_map::factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).factor_range();
-}
-
-isl::union_map basic_map::fixed_power(const isl::val &exp) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).fixed_power(exp);
-}
-
-isl::union_map basic_map::fixed_power(long exp) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->fixed_power(isl::val(ctx(), exp));
-}
-
-isl::basic_map basic_map::flatten() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_flatten(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::basic_map basic_map::flatten_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_flatten_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::basic_map basic_map::flatten_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_flatten_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void basic_map::foreach_basic_map(const std::function<void(isl::basic_map)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).foreach_basic_map(fn);
-}
-
-void basic_map::foreach_map(const std::function<void(isl::map)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).foreach_map(fn);
-}
-
-isl::basic_map basic_map::gist(isl::basic_map context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map basic_map::gist(const isl::map &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).gist(context);
-}
-
-isl::union_map basic_map::gist(const isl::union_map &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).gist(context);
-}
-
-isl::map basic_map::gist_domain(const isl::set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).gist_domain(context);
-}
-
-isl::union_map basic_map::gist_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).gist_domain(uset);
-}
-
-isl::union_map basic_map::gist_params(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).gist_params(set);
-}
-
-isl::union_map basic_map::gist_range(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).gist_range(uset);
-}
-
-bool basic_map::has_domain_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).has_domain_tuple_id();
-}
-
-bool basic_map::has_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).has_range_tuple_id();
-}
-
-isl::basic_map basic_map::intersect(isl::basic_map bmap2) const
-{
-  if (!ptr || bmap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_intersect(copy(), bmap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map basic_map::intersect(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect(map2);
-}
-
-isl::union_map basic_map::intersect(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect(umap2);
-}
-
-isl::basic_map basic_map::intersect_domain(isl::basic_set bset) const
-{
-  if (!ptr || bset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_intersect_domain(copy(), bset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map basic_map::intersect_domain(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_domain(set);
-}
-
-isl::union_map basic_map::intersect_domain(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_domain(space);
-}
-
-isl::union_map basic_map::intersect_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_domain(uset);
-}
-
-isl::basic_map basic_map::intersect_domain(const isl::point &bset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_domain(isl::basic_set(bset));
-}
-
-isl::map basic_map::intersect_domain_factor_domain(const isl::map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_domain_factor_domain(factor);
-}
-
-isl::union_map basic_map::intersect_domain_factor_domain(const isl::union_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_domain_factor_domain(factor);
-}
-
-isl::map basic_map::intersect_domain_factor_range(const isl::map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_domain_factor_range(factor);
-}
-
-isl::union_map basic_map::intersect_domain_factor_range(const isl::union_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_domain_factor_range(factor);
-}
-
-isl::map basic_map::intersect_params(const isl::set &params) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_params(params);
-}
-
-isl::basic_map basic_map::intersect_range(isl::basic_set bset) const
-{
-  if (!ptr || bset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_intersect_range(copy(), bset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map basic_map::intersect_range(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_range(set);
-}
-
-isl::union_map basic_map::intersect_range(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_range(space);
-}
-
-isl::union_map basic_map::intersect_range(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_range(uset);
-}
-
-isl::basic_map basic_map::intersect_range(const isl::point &bset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_range(isl::basic_set(bset));
-}
-
-isl::map basic_map::intersect_range_factor_domain(const isl::map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_range_factor_domain(factor);
-}
-
-isl::union_map basic_map::intersect_range_factor_domain(const isl::union_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_range_factor_domain(factor);
-}
-
-isl::map basic_map::intersect_range_factor_range(const isl::map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_range_factor_range(factor);
-}
-
-isl::union_map basic_map::intersect_range_factor_range(const isl::union_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).intersect_range_factor_range(factor);
-}
-
-bool basic_map::is_bijective() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).is_bijective();
-}
-
-bool basic_map::is_disjoint(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).is_disjoint(map2);
-}
-
-bool basic_map::is_disjoint(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).is_disjoint(umap2);
-}
-
-bool basic_map::is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_is_empty(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool basic_map::is_equal(const isl::basic_map &bmap2) const
-{
-  if (!ptr || bmap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_is_equal(get(), bmap2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool basic_map::is_equal(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).is_equal(map2);
-}
-
-bool basic_map::is_equal(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).is_equal(umap2);
-}
-
-bool basic_map::is_injective() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).is_injective();
-}
-
-bool basic_map::is_single_valued() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).is_single_valued();
-}
-
-bool basic_map::is_strict_subset(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).is_strict_subset(map2);
-}
-
-bool basic_map::is_strict_subset(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).is_strict_subset(umap2);
-}
-
-bool basic_map::is_subset(const isl::basic_map &bmap2) const
-{
-  if (!ptr || bmap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_is_subset(get(), bmap2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool basic_map::is_subset(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).is_subset(map2);
-}
-
-bool basic_map::is_subset(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).is_subset(umap2);
-}
-
-bool basic_map::isa_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).isa_map();
-}
-
-isl::map basic_map::lex_ge_at(const isl::multi_pw_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).lex_ge_at(mpa);
-}
-
-isl::map basic_map::lex_gt_at(const isl::multi_pw_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).lex_gt_at(mpa);
-}
-
-isl::map basic_map::lex_le_at(const isl::multi_pw_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).lex_le_at(mpa);
-}
-
-isl::map basic_map::lex_lt_at(const isl::multi_pw_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).lex_lt_at(mpa);
-}
-
-isl::map basic_map::lexmax() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_lexmax(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff basic_map::lexmax_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).lexmax_pw_multi_aff();
-}
-
-isl::map basic_map::lexmin() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_lexmin(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff basic_map::lexmin_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).lexmin_pw_multi_aff();
-}
-
-isl::map basic_map::lower_bound(const isl::multi_pw_aff &lower) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).lower_bound(lower);
-}
-
-isl::map_list basic_map::map_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).map_list();
-}
-
-isl::multi_pw_aff basic_map::max_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).max_multi_pw_aff();
-}
-
-isl::multi_pw_aff basic_map::min_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).min_multi_pw_aff();
-}
-
-unsigned basic_map::n_basic_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).n_basic_map();
-}
-
-isl::basic_map basic_map::polyhedral_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).polyhedral_hull();
-}
-
-isl::map basic_map::preimage_domain(const isl::multi_aff &ma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).preimage_domain(ma);
-}
-
-isl::map basic_map::preimage_domain(const isl::multi_pw_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).preimage_domain(mpa);
-}
-
-isl::map basic_map::preimage_domain(const isl::pw_multi_aff &pma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).preimage_domain(pma);
-}
-
-isl::union_map basic_map::preimage_domain(const isl::union_pw_multi_aff &upma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).preimage_domain(upma);
-}
-
-isl::map basic_map::preimage_range(const isl::multi_aff &ma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).preimage_range(ma);
-}
-
-isl::map basic_map::preimage_range(const isl::pw_multi_aff &pma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).preimage_range(pma);
-}
-
-isl::union_map basic_map::preimage_range(const isl::union_pw_multi_aff &upma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).preimage_range(upma);
-}
-
-isl::map basic_map::product(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).product(map2);
-}
-
-isl::union_map basic_map::product(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).product(umap2);
-}
-
-isl::map basic_map::project_out_all_params() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).project_out_all_params();
-}
-
-isl::set basic_map::range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).range();
-}
-
-isl::map basic_map::range_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).range_factor_domain();
-}
-
-isl::map basic_map::range_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).range_factor_range();
-}
-
-isl::fixed_box basic_map::range_lattice_tile() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).range_lattice_tile();
-}
-
-isl::union_map basic_map::range_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).range_map();
-}
-
-isl::map basic_map::range_product(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).range_product(map2);
-}
-
-isl::union_map basic_map::range_product(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).range_product(umap2);
-}
-
-isl::map basic_map::range_reverse() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).range_reverse();
-}
-
-isl::fixed_box basic_map::range_simple_fixed_box_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).range_simple_fixed_box_hull();
-}
-
-unsigned basic_map::range_tuple_dim() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).range_tuple_dim();
-}
-
-isl::id basic_map::range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).range_tuple_id();
-}
-
-isl::basic_map basic_map::reverse() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_reverse(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::basic_map basic_map::sample() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_sample(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map basic_map::set_domain_tuple(const isl::id &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).set_domain_tuple(id);
-}
-
-isl::map basic_map::set_domain_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_domain_tuple(isl::id(ctx(), id));
-}
-
-isl::map basic_map::set_range_tuple(const isl::id &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).set_range_tuple(id);
-}
-
-isl::map basic_map::set_range_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_range_tuple(isl::id(ctx(), id));
-}
-
-isl::space basic_map::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).space();
-}
-
-isl::map basic_map::subtract(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).subtract(map2);
-}
-
-isl::union_map basic_map::subtract(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).subtract(umap2);
-}
-
-isl::union_map basic_map::subtract_domain(const isl::union_set &dom) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).subtract_domain(dom);
-}
-
-isl::union_map basic_map::subtract_range(const isl::union_set &dom) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).subtract_range(dom);
-}
-
-isl::map_list basic_map::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).to_list();
-}
-
-isl::union_map basic_map::to_union_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).to_union_map();
-}
-
-isl::map basic_map::uncurry() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).uncurry();
-}
-
-isl::map basic_map::unite(isl::basic_map bmap2) const
-{
-  if (!ptr || bmap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_map_union(copy(), bmap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map basic_map::unite(const isl::map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).unite(map2);
-}
-
-isl::union_map basic_map::unite(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).unite(umap2);
-}
-
-isl::basic_map basic_map::unshifted_simple_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).unshifted_simple_hull();
-}
-
-isl::map basic_map::upper_bound(const isl::multi_pw_aff &upper) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).upper_bound(upper);
-}
-
-isl::set basic_map::wrap() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).wrap();
-}
-
-isl::map basic_map::zip() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::map(*this).zip();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const basic_map &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_basic_map_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_basic_map_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::basic_set
-basic_set manage(__isl_take isl_basic_set *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return basic_set(ptr);
-}
-basic_set manage_copy(__isl_keep isl_basic_set *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_basic_set_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_basic_set_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return basic_set(ptr);
-}
-
-basic_set::basic_set()
-    : ptr(nullptr) {}
-
-basic_set::basic_set(const basic_set &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_basic_set_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-basic_set::basic_set(__isl_take isl_basic_set *ptr)
-    : ptr(ptr) {}
-
-basic_set::basic_set(isl::point pnt)
-{
-  if (pnt.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = pnt.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_from_point(pnt.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-basic_set::basic_set(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-basic_set &basic_set::operator=(basic_set obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-basic_set::~basic_set() {
-  if (ptr)
-    isl_basic_set_free(ptr);
-}
-
-__isl_give isl_basic_set *basic_set::copy() const & {
-  return isl_basic_set_copy(ptr);
-}
-
-__isl_keep isl_basic_set *basic_set::get() const {
-  return ptr;
-}
-
-__isl_give isl_basic_set *basic_set::release() {
-  isl_basic_set *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool basic_set::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx basic_set::ctx() const {
-  return isl::ctx(isl_basic_set_get_ctx(ptr));
-}
-
-isl::basic_set basic_set::affine_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_affine_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::basic_set basic_set::apply(isl::basic_map bmap) const
-{
-  if (!ptr || bmap.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_apply(copy(), bmap.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set basic_set::apply(const isl::map &map) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).apply(map);
-}
-
-isl::union_set basic_set::apply(const isl::union_map &umap) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).apply(umap);
-}
-
-isl::pw_multi_aff basic_set::as_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).as_pw_multi_aff();
-}
-
-isl::set basic_set::as_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).as_set();
-}
-
-isl::set basic_set::bind(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).bind(tuple);
-}
-
-isl::set basic_set::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).coalesce();
-}
-
-isl::set basic_set::complement() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).complement();
-}
-
-isl::union_set basic_set::compute_divs() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).compute_divs();
-}
-
-isl::basic_set basic_set::detect_equalities() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_detect_equalities(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val basic_set::dim_max_val(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_dim_max_val(copy(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val basic_set::dim_min_val(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).dim_min_val(pos);
-}
-
-bool basic_set::every_set(const std::function<bool(isl::set)> &test) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).every_set(test);
-}
-
-isl::set basic_set::extract_set(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).extract_set(space);
-}
-
-isl::basic_set basic_set::flatten() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_flatten(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void basic_set::foreach_basic_set(const std::function<void(isl::basic_set)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).foreach_basic_set(fn);
-}
-
-void basic_set::foreach_point(const std::function<void(isl::point)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).foreach_point(fn);
-}
-
-void basic_set::foreach_set(const std::function<void(isl::set)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).foreach_set(fn);
-}
-
-isl::basic_set basic_set::gist(isl::basic_set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set basic_set::gist(const isl::set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).gist(context);
-}
-
-isl::union_set basic_set::gist(const isl::union_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).gist(context);
-}
-
-isl::basic_set basic_set::gist(const isl::point &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::basic_set(context));
-}
-
-isl::union_set basic_set::gist_params(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).gist_params(set);
-}
-
-isl::map basic_set::identity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).identity();
-}
-
-isl::pw_aff basic_set::indicator_function() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).indicator_function();
-}
-
-isl::map basic_set::insert_domain(const isl::space &domain) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).insert_domain(domain);
-}
-
-isl::basic_set basic_set::intersect(isl::basic_set bset2) const
-{
-  if (!ptr || bset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_intersect(copy(), bset2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set basic_set::intersect(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).intersect(set2);
-}
-
-isl::union_set basic_set::intersect(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).intersect(uset2);
-}
-
-isl::basic_set basic_set::intersect(const isl::point &bset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect(isl::basic_set(bset2));
-}
-
-isl::basic_set basic_set::intersect_params(isl::basic_set bset2) const
-{
-  if (!ptr || bset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_intersect_params(copy(), bset2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set basic_set::intersect_params(const isl::set &params) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).intersect_params(params);
-}
-
-isl::basic_set basic_set::intersect_params(const isl::point &bset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_params(isl::basic_set(bset2));
-}
-
-bool basic_set::involves_locals() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).involves_locals();
-}
-
-bool basic_set::is_disjoint(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).is_disjoint(set2);
-}
-
-bool basic_set::is_disjoint(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).is_disjoint(uset2);
-}
-
-bool basic_set::is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_is_empty(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool basic_set::is_equal(const isl::basic_set &bset2) const
-{
-  if (!ptr || bset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_is_equal(get(), bset2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool basic_set::is_equal(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).is_equal(set2);
-}
-
-bool basic_set::is_equal(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).is_equal(uset2);
-}
-
-bool basic_set::is_equal(const isl::point &bset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_equal(isl::basic_set(bset2));
-}
-
-bool basic_set::is_singleton() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).is_singleton();
-}
-
-bool basic_set::is_strict_subset(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).is_strict_subset(set2);
-}
-
-bool basic_set::is_strict_subset(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).is_strict_subset(uset2);
-}
-
-bool basic_set::is_subset(const isl::basic_set &bset2) const
-{
-  if (!ptr || bset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_is_subset(get(), bset2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool basic_set::is_subset(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).is_subset(set2);
-}
-
-bool basic_set::is_subset(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).is_subset(uset2);
-}
-
-bool basic_set::is_subset(const isl::point &bset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_subset(isl::basic_set(bset2));
-}
-
-bool basic_set::is_wrapping() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_is_wrapping(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool basic_set::isa_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).isa_set();
-}
-
-isl::set basic_set::lexmax() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_lexmax(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff basic_set::lexmax_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).lexmax_pw_multi_aff();
-}
-
-isl::set basic_set::lexmin() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_lexmin(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff basic_set::lexmin_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).lexmin_pw_multi_aff();
-}
-
-isl::set basic_set::lower_bound(const isl::multi_pw_aff &lower) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).lower_bound(lower);
-}
-
-isl::set basic_set::lower_bound(const isl::multi_val &lower) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).lower_bound(lower);
-}
-
-isl::multi_pw_aff basic_set::max_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).max_multi_pw_aff();
-}
-
-isl::val basic_set::max_val(const isl::aff &obj) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).max_val(obj);
-}
-
-isl::multi_pw_aff basic_set::min_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).min_multi_pw_aff();
-}
-
-isl::val basic_set::min_val(const isl::aff &obj) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).min_val(obj);
-}
-
-unsigned basic_set::n_basic_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).n_basic_set();
-}
-
-isl::basic_set basic_set::params() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_params(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val basic_set::plain_multi_val_if_fixed() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).plain_multi_val_if_fixed();
-}
-
-isl::basic_set basic_set::polyhedral_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).polyhedral_hull();
-}
-
-isl::set basic_set::preimage(const isl::multi_aff &ma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).preimage(ma);
-}
-
-isl::set basic_set::preimage(const isl::multi_pw_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).preimage(mpa);
-}
-
-isl::set basic_set::preimage(const isl::pw_multi_aff &pma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).preimage(pma);
-}
-
-isl::union_set basic_set::preimage(const isl::union_pw_multi_aff &upma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).preimage(upma);
-}
-
-isl::set basic_set::product(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).product(set2);
-}
-
-isl::set basic_set::project_out_all_params() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).project_out_all_params();
-}
-
-isl::set basic_set::project_out_param(const isl::id &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).project_out_param(id);
-}
-
-isl::set basic_set::project_out_param(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->project_out_param(isl::id(ctx(), id));
-}
-
-isl::set basic_set::project_out_param(const isl::id_list &list) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).project_out_param(list);
-}
-
-isl::pw_multi_aff basic_set::pw_multi_aff_on_domain(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).pw_multi_aff_on_domain(mv);
-}
-
-isl::basic_set basic_set::sample() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_sample(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::point basic_set::sample_point() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_sample_point(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set_list basic_set::set_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).set_list();
-}
-
-isl::fixed_box basic_set::simple_fixed_box_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).simple_fixed_box_hull();
-}
-
-isl::space basic_set::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).space();
-}
-
-isl::val basic_set::stride(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).stride(pos);
-}
-
-isl::set basic_set::subtract(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).subtract(set2);
-}
-
-isl::union_set basic_set::subtract(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).subtract(uset2);
-}
-
-isl::set_list basic_set::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).to_list();
-}
-
-isl::set basic_set::to_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_to_set(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set basic_set::to_union_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).to_union_set();
-}
-
-isl::map basic_set::translation() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).translation();
-}
-
-unsigned basic_set::tuple_dim() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).tuple_dim();
-}
-
-isl::set basic_set::unbind_params(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).unbind_params(tuple);
-}
-
-isl::map basic_set::unbind_params_insert_domain(const isl::multi_id &domain) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).unbind_params_insert_domain(domain);
-}
-
-isl::set basic_set::unite(isl::basic_set bset2) const
-{
-  if (!ptr || bset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_basic_set_union(copy(), bset2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set basic_set::unite(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).unite(set2);
-}
-
-isl::union_set basic_set::unite(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).unite(uset2);
-}
-
-isl::set basic_set::unite(const isl::point &bset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->unite(isl::basic_set(bset2));
-}
-
-isl::basic_set basic_set::unshifted_simple_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).unshifted_simple_hull();
-}
-
-isl::map basic_set::unwrap() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).unwrap();
-}
-
-isl::set basic_set::upper_bound(const isl::multi_pw_aff &upper) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).upper_bound(upper);
-}
-
-isl::set basic_set::upper_bound(const isl::multi_val &upper) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::set(*this).upper_bound(upper);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const basic_set &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_basic_set_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_basic_set_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::fixed_box
-fixed_box manage(__isl_take isl_fixed_box *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return fixed_box(ptr);
-}
-fixed_box manage_copy(__isl_keep isl_fixed_box *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_fixed_box_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_fixed_box_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return fixed_box(ptr);
-}
-
-fixed_box::fixed_box()
-    : ptr(nullptr) {}
-
-fixed_box::fixed_box(const fixed_box &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_fixed_box_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-fixed_box::fixed_box(__isl_take isl_fixed_box *ptr)
-    : ptr(ptr) {}
-
-fixed_box &fixed_box::operator=(fixed_box obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-fixed_box::~fixed_box() {
-  if (ptr)
-    isl_fixed_box_free(ptr);
-}
-
-__isl_give isl_fixed_box *fixed_box::copy() const & {
-  return isl_fixed_box_copy(ptr);
-}
-
-__isl_keep isl_fixed_box *fixed_box::get() const {
-  return ptr;
-}
-
-__isl_give isl_fixed_box *fixed_box::release() {
-  isl_fixed_box *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool fixed_box::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx fixed_box::ctx() const {
-  return isl::ctx(isl_fixed_box_get_ctx(ptr));
-}
-
-bool fixed_box::is_valid() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_fixed_box_is_valid(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::multi_aff fixed_box::offset() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_fixed_box_get_offset(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff fixed_box::get_offset() const
-{
-  return offset();
-}
-
-isl::multi_val fixed_box::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_fixed_box_get_size(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val fixed_box::get_size() const
-{
-  return size();
-}
-
-isl::space fixed_box::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_fixed_box_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space fixed_box::get_space() const
-{
-  return space();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const fixed_box &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_fixed_box_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_fixed_box_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::id
-id manage(__isl_take isl_id *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return id(ptr);
-}
-id manage_copy(__isl_keep isl_id *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_id_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_id_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return id(ptr);
-}
-
-id::id()
-    : ptr(nullptr) {}
-
-id::id(const id &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_id_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-id::id(__isl_take isl_id *ptr)
-    : ptr(ptr) {}
-
-id::id(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-id &id::operator=(id obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-id::~id() {
-  if (ptr)
-    isl_id_free(ptr);
-}
-
-__isl_give isl_id *id::copy() const & {
-  return isl_id_copy(ptr);
-}
-
-__isl_keep isl_id *id::get() const {
-  return ptr;
-}
-
-__isl_give isl_id *id::release() {
-  isl_id *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool id::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx id::ctx() const {
-  return isl::ctx(isl_id_get_ctx(ptr));
-}
-
-std::string id::name() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_get_name(get());
-  std::string tmp(res);
-  return tmp;
-}
-
-std::string id::get_name() const
-{
-  return name();
-}
-
-isl::id_list id::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_to_list(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const id &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_id_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_id_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::id_list
-id_list manage(__isl_take isl_id_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return id_list(ptr);
-}
-id_list manage_copy(__isl_keep isl_id_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_id_list_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_id_list_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return id_list(ptr);
-}
-
-id_list::id_list()
-    : ptr(nullptr) {}
-
-id_list::id_list(const id_list &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_id_list_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-id_list::id_list(__isl_take isl_id_list *ptr)
-    : ptr(ptr) {}
-
-id_list::id_list(isl::ctx ctx, int n)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_list_alloc(ctx.release(), n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-id_list::id_list(isl::id el)
-{
-  if (el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = el.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_list_from_id(el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-id_list::id_list(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_list_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-id_list &id_list::operator=(id_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-id_list::~id_list() {
-  if (ptr)
-    isl_id_list_free(ptr);
-}
-
-__isl_give isl_id_list *id_list::copy() const & {
-  return isl_id_list_copy(ptr);
-}
-
-__isl_keep isl_id_list *id_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_id_list *id_list::release() {
-  isl_id_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool id_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx id_list::ctx() const {
-  return isl::ctx(isl_id_list_get_ctx(ptr));
-}
-
-isl::id_list id_list::add(isl::id el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_list_add(copy(), el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id_list id_list::add(const std::string &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::id(ctx(), el));
-}
-
-isl::id id_list::at(int index) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_list_get_at(get(), index);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id id_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::id_list id_list::clear() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_list_clear(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id_list id_list::concat(isl::id_list list2) const
-{
-  if (!ptr || list2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_list_concat(copy(), list2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id_list id_list::drop(unsigned int first, unsigned int n) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_list_drop(copy(), first, n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void id_list::foreach(const std::function<void(isl::id)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::id)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::id_list id_list::insert(unsigned int pos, isl::id el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_list_insert(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id_list id_list::insert(unsigned int pos, const std::string &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->insert(pos, isl::id(ctx(), el));
-}
-
-unsigned id_list::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_id_list_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const id_list &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_id_list_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_id_list_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::map
-map manage(__isl_take isl_map *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return map(ptr);
-}
-map manage_copy(__isl_keep isl_map *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_map_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_map_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return map(ptr);
-}
-
-map::map()
-    : ptr(nullptr) {}
-
-map::map(const map &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_map_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-map::map(__isl_take isl_map *ptr)
-    : ptr(ptr) {}
-
-map::map(isl::basic_map bmap)
-{
-  if (bmap.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = bmap.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_from_basic_map(bmap.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-map::map(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-map &map::operator=(map obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-map::~map() {
-  if (ptr)
-    isl_map_free(ptr);
-}
-
-__isl_give isl_map *map::copy() const & {
-  return isl_map_copy(ptr);
-}
-
-__isl_keep isl_map *map::get() const {
-  return ptr;
-}
-
-__isl_give isl_map *map::release() {
-  isl_map *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool map::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx map::ctx() const {
-  return isl::ctx(isl_map_get_ctx(ptr));
-}
-
-isl::basic_map map::affine_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_affine_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::apply_domain(isl::map map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_apply_domain(copy(), map2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::apply_domain(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).apply_domain(umap2);
-}
-
-isl::map map::apply_domain(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->apply_domain(isl::map(map2));
-}
-
-isl::map map::apply_range(isl::map map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_apply_range(copy(), map2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::apply_range(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).apply_range(umap2);
-}
-
-isl::map map::apply_range(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->apply_range(isl::map(map2));
-}
-
-isl::map map::as_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).as_map();
-}
-
-isl::multi_union_pw_aff map::as_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).as_multi_union_pw_aff();
-}
-
-isl::pw_multi_aff map::as_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_as_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff map::as_union_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).as_union_pw_multi_aff();
-}
-
-isl::set map::bind_domain(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_bind_domain(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set map::bind_range(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_bind_range(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_coalesce(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::complement() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_complement(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::compute_divs() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).compute_divs();
-}
-
-isl::map map::curry() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_curry(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set map::deltas() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_deltas(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::detect_equalities() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_detect_equalities(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set map::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::domain_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_domain_factor_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::domain_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_domain_factor_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::domain_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).domain_map();
-}
-
-isl::union_pw_multi_aff map::domain_map_union_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).domain_map_union_pw_multi_aff();
-}
-
-isl::map map::domain_product(isl::map map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_domain_product(copy(), map2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::domain_product(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).domain_product(umap2);
-}
-
-isl::map map::domain_product(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->domain_product(isl::map(map2));
-}
-
-unsigned map::domain_tuple_dim() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_domain_tuple_dim(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::id map::domain_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_get_domain_tuple_id(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id map::get_domain_tuple_id() const
-{
-  return domain_tuple_id();
-}
-
-isl::map map::empty(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_empty(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::eq_at(isl::multi_pw_aff mpa) const
-{
-  if (!ptr || mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_eq_at_multi_pw_aff(copy(), mpa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::eq_at(const isl::multi_union_pw_aff &mupa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).eq_at(mupa);
-}
-
-isl::map map::eq_at(const isl::aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->eq_at(isl::multi_pw_aff(mpa));
-}
-
-isl::map map::eq_at(const isl::multi_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->eq_at(isl::multi_pw_aff(mpa));
-}
-
-isl::map map::eq_at(const isl::pw_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->eq_at(isl::multi_pw_aff(mpa));
-}
-
-isl::map map::eq_at(const isl::pw_multi_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->eq_at(isl::multi_pw_aff(mpa));
-}
-
-bool map::every_map(const std::function<bool(isl::map)> &test) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).every_map(test);
-}
-
-isl::map map::extract_map(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).extract_map(space);
-}
-
-isl::map map::factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_factor_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_factor_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::fixed_power(const isl::val &exp) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).fixed_power(exp);
-}
-
-isl::union_map map::fixed_power(long exp) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->fixed_power(isl::val(ctx(), exp));
-}
-
-isl::map map::flatten() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_flatten(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::flatten_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_flatten_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::flatten_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_flatten_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void map::foreach_basic_map(const std::function<void(isl::basic_map)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::basic_map)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-void map::foreach_map(const std::function<void(isl::map)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).foreach_map(fn);
-}
-
-isl::map map::gist(isl::map context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::gist(const isl::union_map &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).gist(context);
-}
-
-isl::map map::gist(const isl::basic_map &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::map(context));
-}
-
-isl::map map::gist_domain(isl::set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_gist_domain(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::gist_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).gist_domain(uset);
-}
-
-isl::map map::gist_domain(const isl::basic_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist_domain(isl::set(context));
-}
-
-isl::map map::gist_domain(const isl::point &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist_domain(isl::set(context));
-}
-
-isl::union_map map::gist_params(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).gist_params(set);
-}
-
-isl::union_map map::gist_range(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).gist_range(uset);
-}
-
-bool map::has_domain_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_has_domain_tuple_id(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool map::has_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_has_range_tuple_id(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::map map::intersect(isl::map map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_intersect(copy(), map2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::intersect(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).intersect(umap2);
-}
-
-isl::map map::intersect(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect(isl::map(map2));
-}
-
-isl::map map::intersect_domain(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_intersect_domain(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::intersect_domain(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).intersect_domain(space);
-}
-
-isl::union_map map::intersect_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).intersect_domain(uset);
-}
-
-isl::map map::intersect_domain(const isl::basic_set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_domain(isl::set(set));
-}
-
-isl::map map::intersect_domain(const isl::point &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_domain(isl::set(set));
-}
-
-isl::map map::intersect_domain_factor_domain(isl::map factor) const
-{
-  if (!ptr || factor.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_intersect_domain_factor_domain(copy(), factor.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::intersect_domain_factor_domain(const isl::union_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).intersect_domain_factor_domain(factor);
-}
-
-isl::map map::intersect_domain_factor_domain(const isl::basic_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_domain_factor_domain(isl::map(factor));
-}
-
-isl::map map::intersect_domain_factor_range(isl::map factor) const
-{
-  if (!ptr || factor.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_intersect_domain_factor_range(copy(), factor.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::intersect_domain_factor_range(const isl::union_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).intersect_domain_factor_range(factor);
-}
-
-isl::map map::intersect_domain_factor_range(const isl::basic_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_domain_factor_range(isl::map(factor));
-}
-
-isl::map map::intersect_params(isl::set params) const
-{
-  if (!ptr || params.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_intersect_params(copy(), params.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::intersect_range(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_intersect_range(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::intersect_range(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).intersect_range(space);
-}
-
-isl::union_map map::intersect_range(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).intersect_range(uset);
-}
-
-isl::map map::intersect_range(const isl::basic_set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_range(isl::set(set));
-}
-
-isl::map map::intersect_range(const isl::point &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_range(isl::set(set));
-}
-
-isl::map map::intersect_range_factor_domain(isl::map factor) const
-{
-  if (!ptr || factor.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_intersect_range_factor_domain(copy(), factor.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::intersect_range_factor_domain(const isl::union_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).intersect_range_factor_domain(factor);
-}
-
-isl::map map::intersect_range_factor_domain(const isl::basic_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_range_factor_domain(isl::map(factor));
-}
-
-isl::map map::intersect_range_factor_range(isl::map factor) const
-{
-  if (!ptr || factor.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_intersect_range_factor_range(copy(), factor.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::intersect_range_factor_range(const isl::union_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).intersect_range_factor_range(factor);
-}
-
-isl::map map::intersect_range_factor_range(const isl::basic_map &factor) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_range_factor_range(isl::map(factor));
-}
-
-bool map::is_bijective() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_is_bijective(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool map::is_disjoint(const isl::map &map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_is_disjoint(get(), map2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool map::is_disjoint(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).is_disjoint(umap2);
-}
-
-bool map::is_disjoint(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_disjoint(isl::map(map2));
-}
-
-bool map::is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_is_empty(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool map::is_equal(const isl::map &map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_is_equal(get(), map2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool map::is_equal(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).is_equal(umap2);
-}
-
-bool map::is_equal(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_equal(isl::map(map2));
-}
-
-bool map::is_injective() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_is_injective(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool map::is_single_valued() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_is_single_valued(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool map::is_strict_subset(const isl::map &map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_is_strict_subset(get(), map2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool map::is_strict_subset(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).is_strict_subset(umap2);
-}
-
-bool map::is_strict_subset(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_strict_subset(isl::map(map2));
-}
-
-bool map::is_subset(const isl::map &map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_is_subset(get(), map2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool map::is_subset(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).is_subset(umap2);
-}
-
-bool map::is_subset(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_subset(isl::map(map2));
-}
-
-bool map::isa_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).isa_map();
-}
-
-isl::map map::lex_ge_at(isl::multi_pw_aff mpa) const
-{
-  if (!ptr || mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_lex_ge_at_multi_pw_aff(copy(), mpa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::lex_gt_at(isl::multi_pw_aff mpa) const
-{
-  if (!ptr || mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_lex_gt_at_multi_pw_aff(copy(), mpa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::lex_le_at(isl::multi_pw_aff mpa) const
-{
-  if (!ptr || mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_lex_le_at_multi_pw_aff(copy(), mpa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::lex_lt_at(isl::multi_pw_aff mpa) const
-{
-  if (!ptr || mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_lex_lt_at_multi_pw_aff(copy(), mpa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::lexmax() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_lexmax(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff map::lexmax_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_lexmax_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::lexmin() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_lexmin(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff map::lexmin_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_lexmin_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::lower_bound(isl::multi_pw_aff lower) const
-{
-  if (!ptr || lower.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_lower_bound_multi_pw_aff(copy(), lower.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map_list map::map_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).map_list();
-}
-
-isl::multi_pw_aff map::max_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_max_multi_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff map::min_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_min_multi_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned map::n_basic_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_n_basic_map(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::basic_map map::polyhedral_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_polyhedral_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::preimage_domain(isl::multi_aff ma) const
-{
-  if (!ptr || ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::preimage_domain(isl::multi_pw_aff mpa) const
-{
-  if (!ptr || mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::preimage_domain(isl::pw_multi_aff pma) const
-{
-  if (!ptr || pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::preimage_domain(const isl::union_pw_multi_aff &upma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).preimage_domain(upma);
-}
-
-isl::map map::preimage_range(isl::multi_aff ma) const
-{
-  if (!ptr || ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_preimage_range_multi_aff(copy(), ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::preimage_range(isl::pw_multi_aff pma) const
-{
-  if (!ptr || pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::preimage_range(const isl::union_pw_multi_aff &upma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).preimage_range(upma);
-}
-
-isl::map map::product(isl::map map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_product(copy(), map2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::product(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).product(umap2);
-}
-
-isl::map map::product(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->product(isl::map(map2));
-}
-
-isl::map map::project_out_all_params() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_project_out_all_params(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set map::range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::range_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_range_factor_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::range_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_range_factor_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::fixed_box map::range_lattice_tile() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_get_range_lattice_tile(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::fixed_box map::get_range_lattice_tile() const
-{
-  return range_lattice_tile();
-}
-
-isl::union_map map::range_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).range_map();
-}
-
-isl::map map::range_product(isl::map map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_range_product(copy(), map2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::range_product(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).range_product(umap2);
-}
-
-isl::map map::range_product(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->range_product(isl::map(map2));
-}
-
-isl::map map::range_reverse() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_range_reverse(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::fixed_box map::range_simple_fixed_box_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_get_range_simple_fixed_box_hull(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::fixed_box map::get_range_simple_fixed_box_hull() const
-{
-  return range_simple_fixed_box_hull();
-}
-
-unsigned map::range_tuple_dim() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_range_tuple_dim(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::id map::range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_get_range_tuple_id(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id map::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::map map::reverse() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_reverse(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::basic_map map::sample() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_sample(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::set_domain_tuple(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_set_domain_tuple_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::set_domain_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_domain_tuple(isl::id(ctx(), id));
-}
-
-isl::map map::set_range_tuple(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_set_range_tuple_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::set_range_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_range_tuple(isl::id(ctx(), id));
-}
-
-isl::space map::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space map::get_space() const
-{
-  return space();
-}
-
-isl::map map::subtract(isl::map map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_subtract(copy(), map2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::subtract(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).subtract(umap2);
-}
-
-isl::map map::subtract(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->subtract(isl::map(map2));
-}
-
-isl::union_map map::subtract_domain(const isl::union_set &dom) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).subtract_domain(dom);
-}
-
-isl::union_map map::subtract_range(const isl::union_set &dom) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).subtract_range(dom);
-}
-
-isl::map_list map::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_to_list(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::to_union_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_to_union_map(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::uncurry() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_uncurry(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::unite(isl::map map2) const
-{
-  if (!ptr || map2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_union(copy(), map2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map map::unite(const isl::union_map &umap2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_map(*this).unite(umap2);
-}
-
-isl::map map::unite(const isl::basic_map &map2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->unite(isl::map(map2));
-}
-
-isl::map map::universe(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_universe(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::basic_map map::unshifted_simple_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_unshifted_simple_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::upper_bound(isl::multi_pw_aff upper) const
-{
-  if (!ptr || upper.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_upper_bound_multi_pw_aff(copy(), upper.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set map::wrap() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_wrap(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map::zip() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_zip(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const map &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_map_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_map_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::map_list
-map_list manage(__isl_take isl_map_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return map_list(ptr);
-}
-map_list manage_copy(__isl_keep isl_map_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_map_list_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_map_list_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return map_list(ptr);
-}
-
-map_list::map_list()
-    : ptr(nullptr) {}
-
-map_list::map_list(const map_list &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_map_list_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-map_list::map_list(__isl_take isl_map_list *ptr)
-    : ptr(ptr) {}
-
-map_list::map_list(isl::ctx ctx, int n)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_list_alloc(ctx.release(), n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-map_list::map_list(isl::map el)
-{
-  if (el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = el.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_list_from_map(el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-map_list::map_list(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_list_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-map_list &map_list::operator=(map_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-map_list::~map_list() {
-  if (ptr)
-    isl_map_list_free(ptr);
-}
-
-__isl_give isl_map_list *map_list::copy() const & {
-  return isl_map_list_copy(ptr);
-}
-
-__isl_keep isl_map_list *map_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_map_list *map_list::release() {
-  isl_map_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool map_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx map_list::ctx() const {
-  return isl::ctx(isl_map_list_get_ctx(ptr));
-}
-
-isl::map_list map_list::add(isl::map el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_list_add(copy(), el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map_list::at(int index) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_list_get_at(get(), index);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map map_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::map_list map_list::clear() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_list_clear(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map_list map_list::concat(isl::map_list list2) const
-{
-  if (!ptr || list2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_list_concat(copy(), list2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map_list map_list::drop(unsigned int first, unsigned int n) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_list_drop(copy(), first, n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void map_list::foreach(const std::function<void(isl::map)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::map)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_map_list_foreach(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::map_list map_list::insert(unsigned int pos, isl::map el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_list_insert(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned map_list::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_map_list_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const map_list &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_map_list_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_map_list_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::multi_aff
-multi_aff manage(__isl_take isl_multi_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return multi_aff(ptr);
-}
-multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_aff_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_multi_aff_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return multi_aff(ptr);
-}
-
-multi_aff::multi_aff()
-    : ptr(nullptr) {}
-
-multi_aff::multi_aff(const multi_aff &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_aff_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-multi_aff::multi_aff(__isl_take isl_multi_aff *ptr)
-    : ptr(ptr) {}
-
-multi_aff::multi_aff(isl::aff aff)
-{
-  if (aff.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = aff.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_from_aff(aff.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_aff::multi_aff(isl::space space, isl::aff_list list)
-{
-  if (space.is_null() || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_aff::multi_aff(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_aff &multi_aff::operator=(multi_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-multi_aff::~multi_aff() {
-  if (ptr)
-    isl_multi_aff_free(ptr);
-}
-
-__isl_give isl_multi_aff *multi_aff::copy() const & {
-  return isl_multi_aff_copy(ptr);
-}
-
-__isl_keep isl_multi_aff *multi_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_multi_aff *multi_aff::release() {
-  isl_multi_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool multi_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx multi_aff::ctx() const {
-  return isl::ctx(isl_multi_aff_get_ctx(ptr));
-}
-
-isl::multi_aff multi_aff::add(isl::multi_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_add(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_aff::add(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).add(multi2);
-}
-
-isl::multi_union_pw_aff multi_aff::add(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).add(multi2);
-}
-
-isl::pw_multi_aff multi_aff::add(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).add(pma2);
-}
-
-isl::union_pw_multi_aff multi_aff::add(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).add(upma2);
-}
-
-isl::multi_aff multi_aff::add(const isl::aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::multi_aff(multi2));
-}
-
-isl::multi_aff multi_aff::add_constant(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_add_constant_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::add_constant(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_add_constant_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::add_constant(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add_constant(isl::val(ctx(), v));
-}
-
-isl::union_pw_multi_aff multi_aff::apply(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).apply(upma2);
-}
-
-isl::map multi_aff::as_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_as_map(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::as_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).as_multi_aff();
-}
-
-isl::multi_union_pw_aff multi_aff::as_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).as_multi_union_pw_aff();
-}
-
-isl::pw_multi_aff multi_aff::as_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).as_pw_multi_aff();
-}
-
-isl::set multi_aff::as_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_as_set(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map multi_aff::as_union_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).as_union_map();
-}
-
-isl::aff multi_aff::at(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_get_at(get(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff multi_aff::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::basic_set multi_aff::bind(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_bind(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::bind_domain(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_bind_domain(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff multi_aff::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).coalesce();
-}
-
-isl::multi_val multi_aff::constant_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_get_constant_multi_val(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_aff::get_constant_multi_val() const
-{
-  return constant_multi_val();
-}
-
-isl::set multi_aff::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).domain();
-}
-
-isl::multi_aff multi_aff::domain_map(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_domain_map(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff multi_aff::extract_pw_multi_aff(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).extract_pw_multi_aff(space);
-}
-
-isl::multi_aff multi_aff::flat_range_product(isl::multi_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_aff::flat_range_product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).flat_range_product(multi2);
-}
-
-isl::multi_union_pw_aff multi_aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).flat_range_product(multi2);
-}
-
-isl::pw_multi_aff multi_aff::flat_range_product(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).flat_range_product(pma2);
-}
-
-isl::union_pw_multi_aff multi_aff::flat_range_product(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).flat_range_product(upma2);
-}
-
-isl::multi_aff multi_aff::flat_range_product(const isl::aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->flat_range_product(isl::multi_aff(multi2));
-}
-
-isl::multi_aff multi_aff::floor() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_floor(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void multi_aff::foreach_piece(const std::function<void(isl::set, isl::multi_aff)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).foreach_piece(fn);
-}
-
-isl::multi_aff multi_aff::gist(isl::set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff multi_aff::gist(const isl::union_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).gist(context);
-}
-
-isl::multi_aff multi_aff::gist(const isl::basic_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(context));
-}
-
-isl::multi_aff multi_aff::gist(const isl::point &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(context));
-}
-
-bool multi_aff::has_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_has_range_tuple_id(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::multi_aff multi_aff::identity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_identity_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::identity_on_domain(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_identity_on_domain_space(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::insert_domain(isl::space domain) const
-{
-  if (!ptr || domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_insert_domain(copy(), domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff multi_aff::intersect_domain(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).intersect_domain(set);
-}
-
-isl::union_pw_multi_aff multi_aff::intersect_domain(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).intersect_domain(space);
-}
-
-isl::union_pw_multi_aff multi_aff::intersect_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).intersect_domain(uset);
-}
-
-isl::union_pw_multi_aff multi_aff::intersect_domain_wrapped_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
-}
-
-isl::union_pw_multi_aff multi_aff::intersect_domain_wrapped_range(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
-}
-
-isl::pw_multi_aff multi_aff::intersect_params(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).intersect_params(set);
-}
-
-bool multi_aff::involves_locals() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_involves_locals(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool multi_aff::involves_nan() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_involves_nan(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool multi_aff::involves_param(const isl::id &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).involves_param(id);
-}
-
-bool multi_aff::involves_param(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->involves_param(isl::id(ctx(), id));
-}
-
-bool multi_aff::involves_param(const isl::id_list &list) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).involves_param(list);
-}
-
-bool multi_aff::isa_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).isa_multi_aff();
-}
-
-bool multi_aff::isa_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).isa_pw_multi_aff();
-}
-
-isl::aff_list multi_aff::list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_get_list(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff_list multi_aff::get_list() const
-{
-  return list();
-}
-
-isl::multi_pw_aff multi_aff::max(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).max(multi2);
-}
-
-isl::multi_val multi_aff::max_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).max_multi_val();
-}
-
-isl::multi_pw_aff multi_aff::min(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).min(multi2);
-}
-
-isl::multi_val multi_aff::min_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).min_multi_val();
-}
-
-isl::multi_aff multi_aff::multi_val_on_domain(isl::space space, isl::multi_val mv)
-{
-  if (space.is_null() || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_multi_val_on_domain_space(space.release(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned multi_aff::n_piece() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).n_piece();
-}
-
-isl::multi_aff multi_aff::neg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_neg(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool multi_aff::plain_is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).plain_is_empty();
-}
-
-bool multi_aff::plain_is_equal(const isl::multi_aff &multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool multi_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).plain_is_equal(multi2);
-}
-
-bool multi_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).plain_is_equal(multi2);
-}
-
-bool multi_aff::plain_is_equal(const isl::aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->plain_is_equal(isl::multi_aff(multi2));
-}
-
-isl::pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
-}
-
-isl::union_pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
-}
-
-isl::multi_aff multi_aff::product(isl::multi_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_aff::product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).product(multi2);
-}
-
-isl::pw_multi_aff multi_aff::product(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).product(pma2);
-}
-
-isl::multi_aff multi_aff::product(const isl::aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->product(isl::multi_aff(multi2));
-}
-
-isl::multi_aff multi_aff::pullback(isl::multi_aff ma2) const
-{
-  if (!ptr || ma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_pullback_multi_aff(copy(), ma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_aff::pullback(const isl::multi_pw_aff &mpa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).pullback(mpa2);
-}
-
-isl::pw_multi_aff multi_aff::pullback(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).pullback(pma2);
-}
-
-isl::union_pw_multi_aff multi_aff::pullback(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).pullback(upma2);
-}
-
-isl::multi_aff multi_aff::pullback(const isl::aff &ma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->pullback(isl::multi_aff(ma2));
-}
-
-isl::pw_multi_aff_list multi_aff::pw_multi_aff_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).pw_multi_aff_list();
-}
-
-isl::pw_multi_aff multi_aff::range_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).range_factor_domain();
-}
-
-isl::pw_multi_aff multi_aff::range_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).range_factor_range();
-}
-
-isl::multi_aff multi_aff::range_map(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_range_map(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::range_product(isl::multi_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_range_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_aff::range_product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).range_product(multi2);
-}
-
-isl::multi_union_pw_aff multi_aff::range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).range_product(multi2);
-}
-
-isl::pw_multi_aff multi_aff::range_product(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).range_product(pma2);
-}
-
-isl::union_pw_multi_aff multi_aff::range_product(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).range_product(upma2);
-}
-
-isl::multi_aff multi_aff::range_product(const isl::aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->range_product(isl::multi_aff(multi2));
-}
-
-isl::id multi_aff::range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_get_range_tuple_id(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id multi_aff::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::multi_aff multi_aff::reset_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_reset_range_tuple_id(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::scale(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::scale(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_scale_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::scale(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale(isl::val(ctx(), v));
-}
-
-isl::multi_aff multi_aff::scale_down(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::scale_down(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_scale_down_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::scale_down(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale_down(isl::val(ctx(), v));
-}
-
-isl::multi_aff multi_aff::set_at(int pos, isl::aff el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_set_at(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_aff::set_at(int pos, const isl::pw_aff &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).set_at(pos, el);
-}
-
-isl::multi_union_pw_aff multi_aff::set_at(int pos, const isl::union_pw_aff &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).set_at(pos, el);
-}
-
-isl::multi_aff multi_aff::set_range_tuple(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_set_range_tuple_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_aff::set_range_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_range_tuple(isl::id(ctx(), id));
-}
-
-unsigned multi_aff::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::space multi_aff::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space multi_aff::get_space() const
-{
-  return space();
-}
-
-isl::multi_aff multi_aff::sub(isl::multi_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_sub(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_aff::sub(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).sub(multi2);
-}
-
-isl::multi_union_pw_aff multi_aff::sub(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).sub(multi2);
-}
-
-isl::pw_multi_aff multi_aff::sub(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).sub(pma2);
-}
-
-isl::union_pw_multi_aff multi_aff::sub(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).sub(upma2);
-}
-
-isl::multi_aff multi_aff::sub(const isl::aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->sub(isl::multi_aff(multi2));
-}
-
-isl::pw_multi_aff multi_aff::subtract_domain(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).subtract_domain(set);
-}
-
-isl::union_pw_multi_aff multi_aff::subtract_domain(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).subtract_domain(space);
-}
-
-isl::union_pw_multi_aff multi_aff::subtract_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).subtract_domain(uset);
-}
-
-isl::pw_multi_aff_list multi_aff::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).to_list();
-}
-
-isl::multi_pw_aff multi_aff::to_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_to_multi_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_aff::to_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_to_multi_union_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff multi_aff::to_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_to_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff multi_aff::to_union_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).to_union_pw_multi_aff();
-}
-
-isl::multi_aff multi_aff::unbind_params_insert_domain(isl::multi_id domain) const
-{
-  if (!ptr || domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_unbind_params_insert_domain(copy(), domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_aff::union_add(const isl::multi_pw_aff &mpa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).union_add(mpa2);
-}
-
-isl::multi_union_pw_aff multi_aff::union_add(const isl::multi_union_pw_aff &mupa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).union_add(mupa2);
-}
-
-isl::pw_multi_aff multi_aff::union_add(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).union_add(pma2);
-}
-
-isl::union_pw_multi_aff multi_aff::union_add(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).union_add(upma2);
-}
-
-isl::multi_aff multi_aff::zero(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_aff_zero(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const multi_aff &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_aff_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_multi_aff_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::multi_id
-multi_id manage(__isl_take isl_multi_id *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return multi_id(ptr);
-}
-multi_id manage_copy(__isl_keep isl_multi_id *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_id_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_multi_id_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return multi_id(ptr);
-}
-
-multi_id::multi_id()
-    : ptr(nullptr) {}
-
-multi_id::multi_id(const multi_id &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_id_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-multi_id::multi_id(__isl_take isl_multi_id *ptr)
-    : ptr(ptr) {}
-
-multi_id::multi_id(isl::space space, isl::id_list list)
-{
-  if (space.is_null() || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_id_from_id_list(space.release(), list.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_id::multi_id(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_id_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_id &multi_id::operator=(multi_id obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-multi_id::~multi_id() {
-  if (ptr)
-    isl_multi_id_free(ptr);
-}
-
-__isl_give isl_multi_id *multi_id::copy() const & {
-  return isl_multi_id_copy(ptr);
-}
-
-__isl_keep isl_multi_id *multi_id::get() const {
-  return ptr;
-}
-
-__isl_give isl_multi_id *multi_id::release() {
-  isl_multi_id *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool multi_id::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx multi_id::ctx() const {
-  return isl::ctx(isl_multi_id_get_ctx(ptr));
-}
-
-isl::id multi_id::at(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_id_get_at(get(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id multi_id::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::multi_id multi_id::flat_range_product(isl::multi_id multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_id_flat_range_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id_list multi_id::list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_id_get_list(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id_list multi_id::get_list() const
-{
-  return list();
-}
-
-bool multi_id::plain_is_equal(const isl::multi_id &multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_id_plain_is_equal(get(), multi2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::multi_id multi_id::range_product(isl::multi_id multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_id_range_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_id multi_id::set_at(int pos, isl::id el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_id_set_at(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_id multi_id::set_at(int pos, const std::string &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_at(pos, isl::id(ctx(), el));
-}
-
-unsigned multi_id::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_id_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::space multi_id::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_id_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space multi_id::get_space() const
-{
-  return space();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const multi_id &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_id_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_multi_id_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::multi_pw_aff
-multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return multi_pw_aff(ptr);
-}
-multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_pw_aff_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_multi_pw_aff_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return multi_pw_aff(ptr);
-}
-
-multi_pw_aff::multi_pw_aff()
-    : ptr(nullptr) {}
-
-multi_pw_aff::multi_pw_aff(const multi_pw_aff &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_pw_aff_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr)
-    : ptr(ptr) {}
-
-multi_pw_aff::multi_pw_aff(isl::aff aff)
-{
-  if (aff.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = aff.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_from_aff(aff.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_pw_aff::multi_pw_aff(isl::multi_aff ma)
-{
-  if (ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ma.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_from_multi_aff(ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_pw_aff::multi_pw_aff(isl::pw_aff pa)
-{
-  if (pa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = pa.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_from_pw_aff(pa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_pw_aff::multi_pw_aff(isl::space space, isl::pw_aff_list list)
-{
-  if (space.is_null() || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_pw_aff::multi_pw_aff(isl::pw_multi_aff pma)
-{
-  if (pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = pma.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_pw_aff::multi_pw_aff(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_pw_aff &multi_pw_aff::operator=(multi_pw_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-multi_pw_aff::~multi_pw_aff() {
-  if (ptr)
-    isl_multi_pw_aff_free(ptr);
-}
-
-__isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & {
-  return isl_multi_pw_aff_copy(ptr);
-}
-
-__isl_keep isl_multi_pw_aff *multi_pw_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_multi_pw_aff *multi_pw_aff::release() {
-  isl_multi_pw_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool multi_pw_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx multi_pw_aff::ctx() const {
-  return isl::ctx(isl_multi_pw_aff_get_ctx(ptr));
-}
-
-isl::multi_pw_aff multi_pw_aff::add(isl::multi_pw_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_add(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_pw_aff::add(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).add(multi2);
-}
-
-isl::multi_pw_aff multi_pw_aff::add(const isl::aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::add(const isl::multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::add(const isl::pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::add(const isl::pw_multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::add_constant(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_add_constant_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::add_constant(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_add_constant_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::add_constant(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add_constant(isl::val(ctx(), v));
-}
-
-isl::map multi_pw_aff::as_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_as_map(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff multi_pw_aff::as_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_as_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set multi_pw_aff::as_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_as_set(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff multi_pw_aff::at(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_get_at(get(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff multi_pw_aff::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::set multi_pw_aff::bind(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_bind(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::bind_domain(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_bind_domain(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_coalesce(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set multi_pw_aff::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::flat_range_product(isl::multi_pw_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_pw_aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->flat_range_product(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->flat_range_product(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->flat_range_product(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::pw_multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->flat_range_product(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::gist(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_gist(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_pw_aff::gist(const isl::union_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).gist(context);
-}
-
-isl::multi_pw_aff multi_pw_aff::gist(const isl::basic_set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(set));
-}
-
-isl::multi_pw_aff multi_pw_aff::gist(const isl::point &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(set));
-}
-
-bool multi_pw_aff::has_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_has_range_tuple_id(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::multi_pw_aff multi_pw_aff::identity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_identity_multi_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::identity_on_domain(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_identity_on_domain_space(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::insert_domain(isl::space domain) const
-{
-  if (!ptr || domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_insert_domain(copy(), domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::intersect_domain(isl::set domain) const
-{
-  if (!ptr || domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_intersect_domain(copy(), domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_pw_aff::intersect_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).intersect_domain(uset);
-}
-
-isl::multi_pw_aff multi_pw_aff::intersect_domain(const isl::basic_set &domain) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_domain(isl::set(domain));
-}
-
-isl::multi_pw_aff multi_pw_aff::intersect_domain(const isl::point &domain) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_domain(isl::set(domain));
-}
-
-isl::multi_pw_aff multi_pw_aff::intersect_params(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_intersect_params(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool multi_pw_aff::involves_nan() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_involves_nan(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool multi_pw_aff::involves_param(const isl::id &id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_involves_param_id(get(), id.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool multi_pw_aff::involves_param(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->involves_param(isl::id(ctx(), id));
-}
-
-bool multi_pw_aff::involves_param(const isl::id_list &list) const
-{
-  if (!ptr || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_involves_param_id_list(get(), list.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool multi_pw_aff::isa_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_isa_multi_aff(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::pw_aff_list multi_pw_aff::list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_get_list(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff_list multi_pw_aff::get_list() const
-{
-  return list();
-}
-
-isl::multi_pw_aff multi_pw_aff::max(isl::multi_pw_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_max(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_pw_aff::max_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_max_multi_val(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::min(isl::multi_pw_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_min(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_pw_aff::min_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_min_multi_val(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::neg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_neg(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool multi_pw_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool multi_pw_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).plain_is_equal(multi2);
-}
-
-bool multi_pw_aff::plain_is_equal(const isl::aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->plain_is_equal(isl::multi_pw_aff(multi2));
-}
-
-bool multi_pw_aff::plain_is_equal(const isl::multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->plain_is_equal(isl::multi_pw_aff(multi2));
-}
-
-bool multi_pw_aff::plain_is_equal(const isl::pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->plain_is_equal(isl::multi_pw_aff(multi2));
-}
-
-bool multi_pw_aff::plain_is_equal(const isl::pw_multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->plain_is_equal(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::product(isl::multi_pw_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::pullback(isl::multi_aff ma) const
-{
-  if (!ptr || ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::pullback(isl::multi_pw_aff mpa2) const
-{
-  if (!ptr || mpa2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_pullback_multi_pw_aff(copy(), mpa2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::pullback(isl::pw_multi_aff pma) const
-{
-  if (!ptr || pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_pw_aff::pullback(const isl::union_pw_multi_aff &upma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).pullback(upma);
-}
-
-isl::multi_pw_aff multi_pw_aff::range_product(isl::multi_pw_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_pw_aff::range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).range_product(multi2);
-}
-
-isl::multi_pw_aff multi_pw_aff::range_product(const isl::aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->range_product(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::range_product(const isl::multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->range_product(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::range_product(const isl::pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->range_product(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::range_product(const isl::pw_multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->range_product(isl::multi_pw_aff(multi2));
-}
-
-isl::id multi_pw_aff::range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_get_range_tuple_id(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id multi_pw_aff::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::multi_pw_aff multi_pw_aff::reset_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_reset_range_tuple_id(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::scale(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::scale(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::scale(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale(isl::val(ctx(), v));
-}
-
-isl::multi_pw_aff multi_pw_aff::scale_down(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::scale_down(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::scale_down(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale_down(isl::val(ctx(), v));
-}
-
-isl::multi_pw_aff multi_pw_aff::set_at(int pos, isl::pw_aff el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_set_at(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_pw_aff::set_at(int pos, const isl::union_pw_aff &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).set_at(pos, el);
-}
-
-isl::multi_pw_aff multi_pw_aff::set_range_tuple(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_set_range_tuple_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::set_range_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_range_tuple(isl::id(ctx(), id));
-}
-
-unsigned multi_pw_aff::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::space multi_pw_aff::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space multi_pw_aff::get_space() const
-{
-  return space();
-}
-
-isl::multi_pw_aff multi_pw_aff::sub(isl::multi_pw_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_pw_aff::sub(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).sub(multi2);
-}
-
-isl::multi_pw_aff multi_pw_aff::sub(const isl::aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->sub(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::sub(const isl::multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->sub(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::sub(const isl::pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->sub(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::sub(const isl::pw_multi_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->sub(isl::multi_pw_aff(multi2));
-}
-
-isl::multi_pw_aff multi_pw_aff::unbind_params_insert_domain(isl::multi_id domain) const
-{
-  if (!ptr || domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_unbind_params_insert_domain(copy(), domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff multi_pw_aff::union_add(isl::multi_pw_aff mpa2) const
-{
-  if (!ptr || mpa2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_union_add(copy(), mpa2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_pw_aff::union_add(const isl::multi_union_pw_aff &mupa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).union_add(mupa2);
-}
-
-isl::multi_pw_aff multi_pw_aff::union_add(const isl::aff &mpa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->union_add(isl::multi_pw_aff(mpa2));
-}
-
-isl::multi_pw_aff multi_pw_aff::union_add(const isl::multi_aff &mpa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->union_add(isl::multi_pw_aff(mpa2));
-}
-
-isl::multi_pw_aff multi_pw_aff::union_add(const isl::pw_aff &mpa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->union_add(isl::multi_pw_aff(mpa2));
-}
-
-isl::multi_pw_aff multi_pw_aff::union_add(const isl::pw_multi_aff &mpa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->union_add(isl::multi_pw_aff(mpa2));
-}
-
-isl::multi_pw_aff multi_pw_aff::zero(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_pw_aff_zero(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const multi_pw_aff &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_pw_aff_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_multi_pw_aff_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::multi_union_pw_aff
-multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return multi_union_pw_aff(ptr);
-}
-multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_union_pw_aff_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_multi_union_pw_aff_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return multi_union_pw_aff(ptr);
-}
-
-multi_union_pw_aff::multi_union_pw_aff()
-    : ptr(nullptr) {}
-
-multi_union_pw_aff::multi_union_pw_aff(const multi_union_pw_aff &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_union_pw_aff_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr)
-    : ptr(ptr) {}
-
-multi_union_pw_aff::multi_union_pw_aff(isl::multi_pw_aff mpa)
-{
-  if (mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = mpa.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_from_multi_pw_aff(mpa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_union_pw_aff::multi_union_pw_aff(isl::union_pw_aff upa)
-{
-  if (upa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = upa.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_from_union_pw_aff(upa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_union_pw_aff::multi_union_pw_aff(isl::space space, isl::union_pw_aff_list list)
-{
-  if (space.is_null() || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_union_pw_aff::multi_union_pw_aff(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_union_pw_aff &multi_union_pw_aff::operator=(multi_union_pw_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-multi_union_pw_aff::~multi_union_pw_aff() {
-  if (ptr)
-    isl_multi_union_pw_aff_free(ptr);
-}
-
-__isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & {
-  return isl_multi_union_pw_aff_copy(ptr);
-}
-
-__isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_multi_union_pw_aff *multi_union_pw_aff::release() {
-  isl_multi_union_pw_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool multi_union_pw_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx multi_union_pw_aff::ctx() const {
-  return isl::ctx(isl_multi_union_pw_aff_get_ctx(ptr));
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::add(isl::multi_union_pw_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff multi_union_pw_aff::at(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_get_at(get(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff multi_union_pw_aff::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::union_set multi_union_pw_aff::bind(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_bind(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_coalesce(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set multi_union_pw_aff::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::flat_range_product(isl::multi_union_pw_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::gist(isl::union_set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool multi_union_pw_aff::has_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_has_range_tuple_id(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::intersect_domain(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_intersect_domain(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::intersect_params(isl::set params) const
-{
-  if (!ptr || params.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_intersect_params(copy(), params.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool multi_union_pw_aff::involves_nan() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_involves_nan(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::union_pw_aff_list multi_union_pw_aff::list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_get_list(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff_list multi_union_pw_aff::get_list() const
-{
-  return list();
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::neg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_neg(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool multi_union_pw_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::pullback(isl::union_pw_multi_aff upma) const
-{
-  if (!ptr || upma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::range_product(isl::multi_union_pw_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id multi_union_pw_aff::range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_get_range_tuple_id(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id multi_union_pw_aff::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::reset_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_reset_range_tuple_id(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::scale(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::scale(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::scale(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale(isl::val(ctx(), v));
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::scale_down(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale_down(isl::val(ctx(), v));
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::set_at(int pos, isl::union_pw_aff el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_set_at(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_set_range_tuple_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_range_tuple(isl::id(ctx(), id));
-}
-
-unsigned multi_union_pw_aff::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::space multi_union_pw_aff::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space multi_union_pw_aff::get_space() const
-{
-  return space();
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::sub(isl::multi_union_pw_aff multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::union_add(isl::multi_union_pw_aff mupa2) const
-{
-  if (!ptr || mupa2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_union_add(copy(), mupa2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff multi_union_pw_aff::zero(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_union_pw_aff_zero(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const multi_union_pw_aff &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_union_pw_aff_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_multi_union_pw_aff_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::multi_val
-multi_val manage(__isl_take isl_multi_val *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return multi_val(ptr);
-}
-multi_val manage_copy(__isl_keep isl_multi_val *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_val_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_multi_val_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return multi_val(ptr);
-}
-
-multi_val::multi_val()
-    : ptr(nullptr) {}
-
-multi_val::multi_val(const multi_val &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_val_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-multi_val::multi_val(__isl_take isl_multi_val *ptr)
-    : ptr(ptr) {}
-
-multi_val::multi_val(isl::space space, isl::val_list list)
-{
-  if (space.is_null() || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_from_val_list(space.release(), list.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_val::multi_val(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-multi_val &multi_val::operator=(multi_val obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-multi_val::~multi_val() {
-  if (ptr)
-    isl_multi_val_free(ptr);
-}
-
-__isl_give isl_multi_val *multi_val::copy() const & {
-  return isl_multi_val_copy(ptr);
-}
-
-__isl_keep isl_multi_val *multi_val::get() const {
-  return ptr;
-}
-
-__isl_give isl_multi_val *multi_val::release() {
-  isl_multi_val *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool multi_val::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx multi_val::ctx() const {
-  return isl::ctx(isl_multi_val_get_ctx(ptr));
-}
-
-isl::multi_val multi_val::add(isl::multi_val multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_add(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::add(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_add_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::add(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::val(ctx(), v));
-}
-
-isl::val multi_val::at(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_get_at(get(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val multi_val::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::multi_val multi_val::flat_range_product(isl::multi_val multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool multi_val::has_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_has_range_tuple_id(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool multi_val::involves_nan() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_involves_nan(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::val_list multi_val::list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_get_list(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val_list multi_val::get_list() const
-{
-  return list();
-}
-
-isl::multi_val multi_val::max(isl::multi_val multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_max(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::min(isl::multi_val multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_min(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::neg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_neg(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool multi_val::plain_is_equal(const isl::multi_val &multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::multi_val multi_val::product(isl::multi_val multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::range_product(isl::multi_val multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_range_product(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id multi_val::range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_get_range_tuple_id(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id multi_val::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::multi_val multi_val::reset_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_reset_range_tuple_id(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::scale(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::scale(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_scale_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::scale(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale(isl::val(ctx(), v));
-}
-
-isl::multi_val multi_val::scale_down(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::scale_down(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_scale_down_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::scale_down(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale_down(isl::val(ctx(), v));
-}
-
-isl::multi_val multi_val::set_at(int pos, isl::val el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_set_at(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::set_at(int pos, long el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_at(pos, isl::val(ctx(), el));
-}
-
-isl::multi_val multi_val::set_range_tuple(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_set_range_tuple_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::set_range_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_range_tuple(isl::id(ctx(), id));
-}
-
-unsigned multi_val::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::space multi_val::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space multi_val::get_space() const
-{
-  return space();
-}
-
-isl::multi_val multi_val::sub(isl::multi_val multi2) const
-{
-  if (!ptr || multi2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_sub(copy(), multi2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val multi_val::zero(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_multi_val_zero(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const multi_val &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_multi_val_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_multi_val_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::point
-point manage(__isl_take isl_point *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return point(ptr);
-}
-point manage_copy(__isl_keep isl_point *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_point_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_point_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return point(ptr);
-}
-
-point::point()
-    : ptr(nullptr) {}
-
-point::point(const point &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_point_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-point::point(__isl_take isl_point *ptr)
-    : ptr(ptr) {}
-
-point &point::operator=(point obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-point::~point() {
-  if (ptr)
-    isl_point_free(ptr);
-}
-
-__isl_give isl_point *point::copy() const & {
-  return isl_point_copy(ptr);
-}
-
-__isl_keep isl_point *point::get() const {
-  return ptr;
-}
-
-__isl_give isl_point *point::release() {
-  isl_point *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool point::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx point::ctx() const {
-  return isl::ctx(isl_point_get_ctx(ptr));
-}
-
-isl::basic_set point::affine_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).affine_hull();
-}
-
-isl::basic_set point::apply(const isl::basic_map &bmap) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).apply(bmap);
-}
-
-isl::set point::apply(const isl::map &map) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).apply(map);
-}
-
-isl::union_set point::apply(const isl::union_map &umap) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).apply(umap);
-}
-
-isl::pw_multi_aff point::as_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).as_pw_multi_aff();
-}
-
-isl::set point::as_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).as_set();
-}
-
-isl::set point::bind(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).bind(tuple);
-}
-
-isl::set point::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).coalesce();
-}
-
-isl::set point::complement() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).complement();
-}
-
-isl::union_set point::compute_divs() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).compute_divs();
-}
-
-isl::basic_set point::detect_equalities() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).detect_equalities();
-}
-
-isl::val point::dim_max_val(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).dim_max_val(pos);
-}
-
-isl::val point::dim_min_val(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).dim_min_val(pos);
-}
-
-bool point::every_set(const std::function<bool(isl::set)> &test) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).every_set(test);
-}
-
-isl::set point::extract_set(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).extract_set(space);
-}
-
-isl::basic_set point::flatten() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).flatten();
-}
-
-void point::foreach_basic_set(const std::function<void(isl::basic_set)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).foreach_basic_set(fn);
-}
-
-void point::foreach_point(const std::function<void(isl::point)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).foreach_point(fn);
-}
-
-void point::foreach_set(const std::function<void(isl::set)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).foreach_set(fn);
-}
-
-isl::basic_set point::gist(const isl::basic_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).gist(context);
-}
-
-isl::set point::gist(const isl::set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).gist(context);
-}
-
-isl::union_set point::gist(const isl::union_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).gist(context);
-}
-
-isl::union_set point::gist_params(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).gist_params(set);
-}
-
-isl::map point::identity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).identity();
-}
-
-isl::pw_aff point::indicator_function() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).indicator_function();
-}
-
-isl::map point::insert_domain(const isl::space &domain) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).insert_domain(domain);
-}
-
-isl::basic_set point::intersect(const isl::basic_set &bset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).intersect(bset2);
-}
-
-isl::set point::intersect(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).intersect(set2);
-}
-
-isl::union_set point::intersect(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).intersect(uset2);
-}
-
-isl::basic_set point::intersect_params(const isl::basic_set &bset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).intersect_params(bset2);
-}
-
-isl::set point::intersect_params(const isl::set &params) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).intersect_params(params);
-}
-
-bool point::involves_locals() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).involves_locals();
-}
-
-bool point::is_disjoint(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_disjoint(set2);
-}
-
-bool point::is_disjoint(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_disjoint(uset2);
-}
-
-bool point::is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_empty();
-}
-
-bool point::is_equal(const isl::basic_set &bset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_equal(bset2);
-}
-
-bool point::is_equal(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_equal(set2);
-}
-
-bool point::is_equal(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_equal(uset2);
-}
-
-bool point::is_singleton() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_singleton();
-}
-
-bool point::is_strict_subset(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_strict_subset(set2);
-}
-
-bool point::is_strict_subset(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_strict_subset(uset2);
-}
-
-bool point::is_subset(const isl::basic_set &bset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_subset(bset2);
-}
-
-bool point::is_subset(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_subset(set2);
-}
-
-bool point::is_subset(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_subset(uset2);
-}
-
-bool point::is_wrapping() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).is_wrapping();
-}
-
-bool point::isa_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).isa_set();
-}
-
-isl::set point::lexmax() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).lexmax();
-}
-
-isl::pw_multi_aff point::lexmax_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).lexmax_pw_multi_aff();
-}
-
-isl::set point::lexmin() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).lexmin();
-}
-
-isl::pw_multi_aff point::lexmin_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).lexmin_pw_multi_aff();
-}
-
-isl::set point::lower_bound(const isl::multi_pw_aff &lower) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).lower_bound(lower);
-}
-
-isl::set point::lower_bound(const isl::multi_val &lower) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).lower_bound(lower);
-}
-
-isl::multi_pw_aff point::max_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).max_multi_pw_aff();
-}
-
-isl::val point::max_val(const isl::aff &obj) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).max_val(obj);
-}
-
-isl::multi_pw_aff point::min_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).min_multi_pw_aff();
-}
-
-isl::val point::min_val(const isl::aff &obj) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).min_val(obj);
-}
-
-isl::multi_val point::multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_point_get_multi_val(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val point::get_multi_val() const
-{
-  return multi_val();
-}
-
-unsigned point::n_basic_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).n_basic_set();
-}
-
-isl::basic_set point::params() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).params();
-}
-
-isl::multi_val point::plain_multi_val_if_fixed() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).plain_multi_val_if_fixed();
-}
-
-isl::basic_set point::polyhedral_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).polyhedral_hull();
-}
-
-isl::set point::preimage(const isl::multi_aff &ma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).preimage(ma);
-}
-
-isl::set point::preimage(const isl::multi_pw_aff &mpa) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).preimage(mpa);
-}
-
-isl::set point::preimage(const isl::pw_multi_aff &pma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).preimage(pma);
-}
-
-isl::union_set point::preimage(const isl::union_pw_multi_aff &upma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).preimage(upma);
-}
-
-isl::set point::product(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).product(set2);
-}
-
-isl::set point::project_out_all_params() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).project_out_all_params();
-}
-
-isl::set point::project_out_param(const isl::id &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).project_out_param(id);
-}
-
-isl::set point::project_out_param(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->project_out_param(isl::id(ctx(), id));
-}
-
-isl::set point::project_out_param(const isl::id_list &list) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).project_out_param(list);
-}
-
-isl::pw_multi_aff point::pw_multi_aff_on_domain(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).pw_multi_aff_on_domain(mv);
-}
-
-isl::basic_set point::sample() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).sample();
-}
-
-isl::point point::sample_point() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).sample_point();
-}
-
-isl::set_list point::set_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).set_list();
-}
-
-isl::fixed_box point::simple_fixed_box_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).simple_fixed_box_hull();
-}
-
-isl::space point::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).space();
-}
-
-isl::val point::stride(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).stride(pos);
-}
-
-isl::set point::subtract(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).subtract(set2);
-}
-
-isl::union_set point::subtract(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).subtract(uset2);
-}
-
-isl::set_list point::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).to_list();
-}
-
-isl::set point::to_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_point_to_set(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set point::to_union_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).to_union_set();
-}
-
-isl::map point::translation() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).translation();
-}
-
-unsigned point::tuple_dim() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).tuple_dim();
-}
-
-isl::set point::unbind_params(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).unbind_params(tuple);
-}
-
-isl::map point::unbind_params_insert_domain(const isl::multi_id &domain) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).unbind_params_insert_domain(domain);
-}
-
-isl::set point::unite(const isl::basic_set &bset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).unite(bset2);
-}
-
-isl::set point::unite(const isl::set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).unite(set2);
-}
-
-isl::union_set point::unite(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).unite(uset2);
-}
-
-isl::basic_set point::unshifted_simple_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).unshifted_simple_hull();
-}
-
-isl::map point::unwrap() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).unwrap();
-}
-
-isl::set point::upper_bound(const isl::multi_pw_aff &upper) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).upper_bound(upper);
-}
-
-isl::set point::upper_bound(const isl::multi_val &upper) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::basic_set(*this).upper_bound(upper);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const point &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_point_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_point_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::pw_aff
-pw_aff manage(__isl_take isl_pw_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return pw_aff(ptr);
-}
-pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_aff_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_pw_aff_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return pw_aff(ptr);
-}
-
-pw_aff::pw_aff()
-    : ptr(nullptr) {}
-
-pw_aff::pw_aff(const pw_aff &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_aff_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-pw_aff::pw_aff(__isl_take isl_pw_aff *ptr)
-    : ptr(ptr) {}
-
-pw_aff::pw_aff(isl::aff aff)
-{
-  if (aff.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = aff.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_from_aff(aff.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-pw_aff::pw_aff(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-pw_aff &pw_aff::operator=(pw_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-pw_aff::~pw_aff() {
-  if (ptr)
-    isl_pw_aff_free(ptr);
-}
-
-__isl_give isl_pw_aff *pw_aff::copy() const & {
-  return isl_pw_aff_copy(ptr);
-}
-
-__isl_keep isl_pw_aff *pw_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_pw_aff *pw_aff::release() {
-  isl_pw_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool pw_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx pw_aff::ctx() const {
-  return isl::ctx(isl_pw_aff_get_ctx(ptr));
-}
-
-isl::multi_pw_aff pw_aff::add(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).add(multi2);
-}
-
-isl::multi_union_pw_aff pw_aff::add(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).add(multi2);
-}
-
-isl::pw_aff pw_aff::add(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_add(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_aff::add(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).add(pma2);
-}
-
-isl::union_pw_aff pw_aff::add(const isl::union_pw_aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).add(upa2);
-}
-
-isl::union_pw_multi_aff pw_aff::add(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).add(upma2);
-}
-
-isl::pw_aff pw_aff::add(const isl::aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::pw_aff(pwaff2));
-}
-
-isl::pw_aff pw_aff::add_constant(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_add_constant_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::add_constant(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add_constant(isl::val(ctx(), v));
-}
-
-isl::pw_multi_aff pw_aff::add_constant(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).add_constant(mv);
-}
-
-isl::union_pw_multi_aff pw_aff::apply(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).apply(upma2);
-}
-
-isl::aff pw_aff::as_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_as_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map pw_aff::as_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_as_map(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff pw_aff::as_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).as_multi_aff();
-}
-
-isl::multi_union_pw_aff pw_aff::as_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).as_multi_union_pw_aff();
-}
-
-isl::pw_multi_aff pw_aff::as_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).as_pw_multi_aff();
-}
-
-isl::set pw_aff::as_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).as_set();
-}
-
-isl::union_map pw_aff::as_union_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).as_union_map();
-}
-
-isl::pw_aff pw_aff::at(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).at(pos);
-}
-
-isl::set pw_aff::bind(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).bind(tuple);
-}
-
-isl::set pw_aff::bind(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_bind_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set pw_aff::bind(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->bind(isl::id(ctx(), id));
-}
-
-isl::pw_aff pw_aff::bind_domain(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_bind_domain(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::ceil() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_ceil(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_coalesce(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const
-{
-  if (!ptr || pwaff_true.is_null() || pwaff_false.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::div(isl::pw_aff pa2) const
-{
-  if (!ptr || pa2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_div(copy(), pa2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set pw_aff::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set pw_aff::eq_set(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val pw_aff::eval(isl::point pnt) const
-{
-  if (!ptr || pnt.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_eval(copy(), pnt.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_aff::extract_pw_multi_aff(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).extract_pw_multi_aff(space);
-}
-
-isl::multi_pw_aff pw_aff::flat_range_product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).flat_range_product(multi2);
-}
-
-isl::multi_union_pw_aff pw_aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::pw_multi_aff pw_aff::flat_range_product(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).flat_range_product(pma2);
-}
-
-isl::union_pw_multi_aff pw_aff::flat_range_product(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).flat_range_product(upma2);
-}
-
-isl::pw_aff pw_aff::floor() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_floor(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void pw_aff::foreach_piece(const std::function<void(isl::set, isl::multi_aff)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).foreach_piece(fn);
-}
-
-isl::set pw_aff::ge_set(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::gist(isl::set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff pw_aff::gist(const isl::union_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).gist(context);
-}
-
-isl::pw_aff pw_aff::gist(const isl::basic_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(context));
-}
-
-isl::pw_aff pw_aff::gist(const isl::point &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(context));
-}
-
-isl::set pw_aff::gt_set(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool pw_aff::has_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).has_range_tuple_id();
-}
-
-isl::multi_pw_aff pw_aff::identity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).identity();
-}
-
-isl::pw_aff pw_aff::insert_domain(isl::space domain) const
-{
-  if (!ptr || domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_insert_domain(copy(), domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::intersect_domain(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_intersect_domain(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff pw_aff::intersect_domain(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).intersect_domain(space);
-}
-
-isl::union_pw_aff pw_aff::intersect_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).intersect_domain(uset);
-}
-
-isl::pw_aff pw_aff::intersect_domain(const isl::basic_set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_domain(isl::set(set));
-}
-
-isl::pw_aff pw_aff::intersect_domain(const isl::point &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_domain(isl::set(set));
-}
-
-isl::union_pw_aff pw_aff::intersect_domain_wrapped_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).intersect_domain_wrapped_domain(uset);
-}
-
-isl::union_pw_aff pw_aff::intersect_domain_wrapped_range(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).intersect_domain_wrapped_range(uset);
-}
-
-isl::pw_aff pw_aff::intersect_params(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_intersect_params(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool pw_aff::involves_locals() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).involves_locals();
-}
-
-bool pw_aff::involves_nan() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).involves_nan();
-}
-
-bool pw_aff::involves_param(const isl::id &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).involves_param(id);
-}
-
-bool pw_aff::involves_param(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->involves_param(isl::id(ctx(), id));
-}
-
-bool pw_aff::involves_param(const isl::id_list &list) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).involves_param(list);
-}
-
-bool pw_aff::isa_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_isa_aff(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool pw_aff::isa_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).isa_multi_aff();
-}
-
-bool pw_aff::isa_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).isa_pw_multi_aff();
-}
-
-isl::set pw_aff::le_set(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff_list pw_aff::list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).list();
-}
-
-isl::set pw_aff::lt_set(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff pw_aff::max(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).max(multi2);
-}
-
-isl::pw_aff pw_aff::max(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_max(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::max(const isl::aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->max(isl::pw_aff(pwaff2));
-}
-
-isl::multi_val pw_aff::max_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).max_multi_val();
-}
-
-isl::multi_pw_aff pw_aff::min(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).min(multi2);
-}
-
-isl::pw_aff pw_aff::min(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_min(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::min(const isl::aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->min(isl::pw_aff(pwaff2));
-}
-
-isl::multi_val pw_aff::min_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).min_multi_val();
-}
-
-isl::pw_aff pw_aff::mod(isl::val mod) const
-{
-  if (!ptr || mod.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_mod_val(copy(), mod.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::mod(long mod) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->mod(isl::val(ctx(), mod));
-}
-
-isl::pw_aff pw_aff::mul(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_mul(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned pw_aff::n_piece() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).n_piece();
-}
-
-isl::set pw_aff::ne_set(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::neg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_neg(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::param_on_domain(isl::set domain, isl::id id)
-{
-  if (domain.is_null() || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = domain.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_param_on_domain_id(domain.release(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool pw_aff::plain_is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).plain_is_empty();
-}
-
-bool pw_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).plain_is_equal(multi2);
-}
-
-bool pw_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).plain_is_equal(multi2);
-}
-
-isl::pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
-}
-
-isl::union_pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).preimage_domain_wrapped_domain(upma2);
-}
-
-isl::multi_pw_aff pw_aff::product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).product(multi2);
-}
-
-isl::pw_multi_aff pw_aff::product(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).product(pma2);
-}
-
-isl::pw_aff pw_aff::pullback(isl::multi_aff ma) const
-{
-  if (!ptr || ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::pullback(isl::multi_pw_aff mpa) const
-{
-  if (!ptr || mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_pullback_multi_pw_aff(copy(), mpa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::pullback(isl::pw_multi_aff pma) const
-{
-  if (!ptr || pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff pw_aff::pullback(const isl::union_pw_multi_aff &upma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).pullback(upma);
-}
-
-isl::pw_multi_aff_list pw_aff::pw_multi_aff_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).pw_multi_aff_list();
-}
-
-isl::pw_multi_aff pw_aff::range_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).range_factor_domain();
-}
-
-isl::pw_multi_aff pw_aff::range_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).range_factor_range();
-}
-
-isl::multi_pw_aff pw_aff::range_product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).range_product(multi2);
-}
-
-isl::multi_union_pw_aff pw_aff::range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).range_product(multi2);
-}
-
-isl::pw_multi_aff pw_aff::range_product(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).range_product(pma2);
-}
-
-isl::union_pw_multi_aff pw_aff::range_product(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).range_product(upma2);
-}
-
-isl::id pw_aff::range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).range_tuple_id();
-}
-
-isl::multi_pw_aff pw_aff::reset_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).reset_range_tuple_id();
-}
-
-isl::multi_pw_aff pw_aff::scale(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).scale(mv);
-}
-
-isl::pw_aff pw_aff::scale(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_scale_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::scale(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale(isl::val(ctx(), v));
-}
-
-isl::multi_pw_aff pw_aff::scale_down(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).scale_down(mv);
-}
-
-isl::pw_aff pw_aff::scale_down(isl::val f) const
-{
-  if (!ptr || f.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_scale_down_val(copy(), f.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::scale_down(long f) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale_down(isl::val(ctx(), f));
-}
-
-isl::multi_pw_aff pw_aff::set_at(int pos, const isl::pw_aff &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).set_at(pos, el);
-}
-
-isl::multi_union_pw_aff pw_aff::set_at(int pos, const isl::union_pw_aff &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).set_at(pos, el);
-}
-
-isl::pw_multi_aff pw_aff::set_range_tuple(const isl::id &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).set_range_tuple(id);
-}
-
-isl::pw_multi_aff pw_aff::set_range_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_range_tuple(isl::id(ctx(), id));
-}
-
-unsigned pw_aff::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).size();
-}
-
-isl::space pw_aff::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space pw_aff::get_space() const
-{
-  return space();
-}
-
-isl::multi_pw_aff pw_aff::sub(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).sub(multi2);
-}
-
-isl::multi_union_pw_aff pw_aff::sub(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).sub(multi2);
-}
-
-isl::pw_aff pw_aff::sub(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_sub(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_aff::sub(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).sub(pma2);
-}
-
-isl::union_pw_aff pw_aff::sub(const isl::union_pw_aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).sub(upa2);
-}
-
-isl::union_pw_multi_aff pw_aff::sub(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).sub(upma2);
-}
-
-isl::pw_aff pw_aff::sub(const isl::aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->sub(isl::pw_aff(pwaff2));
-}
-
-isl::pw_aff pw_aff::subtract_domain(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_subtract_domain(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff pw_aff::subtract_domain(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).subtract_domain(space);
-}
-
-isl::union_pw_aff pw_aff::subtract_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).subtract_domain(uset);
-}
-
-isl::pw_aff pw_aff::subtract_domain(const isl::basic_set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->subtract_domain(isl::set(set));
-}
-
-isl::pw_aff pw_aff::subtract_domain(const isl::point &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->subtract_domain(isl::set(set));
-}
-
-isl::pw_aff pw_aff::tdiv_q(isl::pw_aff pa2) const
-{
-  if (!ptr || pa2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff::tdiv_r(isl::pw_aff pa2) const
-{
-  if (!ptr || pa2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff_list pw_aff::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_to_list(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff pw_aff::to_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).to_multi_pw_aff();
-}
-
-isl::union_pw_aff pw_aff::to_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_to_union_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_aff::to_union_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).to_union_pw_multi_aff();
-}
-
-isl::multi_pw_aff pw_aff::unbind_params_insert_domain(const isl::multi_id &domain) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).unbind_params_insert_domain(domain);
-}
-
-isl::multi_pw_aff pw_aff::union_add(const isl::multi_pw_aff &mpa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).union_add(mpa2);
-}
-
-isl::multi_union_pw_aff pw_aff::union_add(const isl::multi_union_pw_aff &mupa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).union_add(mupa2);
-}
-
-isl::pw_aff pw_aff::union_add(isl::pw_aff pwaff2) const
-{
-  if (!ptr || pwaff2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_aff::union_add(const isl::pw_multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::pw_multi_aff(*this).union_add(pma2);
-}
-
-isl::union_pw_aff pw_aff::union_add(const isl::union_pw_aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).union_add(upa2);
-}
-
-isl::union_pw_multi_aff pw_aff::union_add(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_aff(*this).union_add(upma2);
-}
-
-isl::pw_aff pw_aff::union_add(const isl::aff &pwaff2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->union_add(isl::pw_aff(pwaff2));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const pw_aff &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_aff_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_pw_aff_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::pw_aff_list
-pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return pw_aff_list(ptr);
-}
-pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_aff_list_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_pw_aff_list_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return pw_aff_list(ptr);
-}
-
-pw_aff_list::pw_aff_list()
-    : ptr(nullptr) {}
-
-pw_aff_list::pw_aff_list(const pw_aff_list &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_aff_list_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr)
-    : ptr(ptr) {}
-
-pw_aff_list::pw_aff_list(isl::ctx ctx, int n)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_list_alloc(ctx.release(), n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-pw_aff_list::pw_aff_list(isl::pw_aff el)
-{
-  if (el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = el.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_list_from_pw_aff(el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-pw_aff_list::pw_aff_list(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_list_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-pw_aff_list &pw_aff_list::operator=(pw_aff_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-pw_aff_list::~pw_aff_list() {
-  if (ptr)
-    isl_pw_aff_list_free(ptr);
-}
-
-__isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
-  return isl_pw_aff_list_copy(ptr);
-}
-
-__isl_keep isl_pw_aff_list *pw_aff_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_pw_aff_list *pw_aff_list::release() {
-  isl_pw_aff_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool pw_aff_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx pw_aff_list::ctx() const {
-  return isl::ctx(isl_pw_aff_list_get_ctx(ptr));
-}
-
-isl::pw_aff_list pw_aff_list::add(isl::pw_aff el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_list_add(copy(), el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff_list::at(int index) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_list_get_at(get(), index);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_aff_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::pw_aff_list pw_aff_list::clear() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_list_clear(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff_list pw_aff_list::concat(isl::pw_aff_list list2) const
-{
-  if (!ptr || list2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_list_concat(copy(), list2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_list_drop(copy(), first, n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void pw_aff_list::foreach(const std::function<void(isl::pw_aff)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::pw_aff)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::pw_aff_list pw_aff_list::insert(unsigned int pos, isl::pw_aff el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_list_insert(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned pw_aff_list::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_aff_list_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const pw_aff_list &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_aff_list_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_pw_aff_list_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::pw_multi_aff
-pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return pw_multi_aff(ptr);
-}
-pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_multi_aff_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_pw_multi_aff_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return pw_multi_aff(ptr);
-}
-
-pw_multi_aff::pw_multi_aff()
-    : ptr(nullptr) {}
-
-pw_multi_aff::pw_multi_aff(const pw_multi_aff &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_multi_aff_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr)
-    : ptr(ptr) {}
-
-pw_multi_aff::pw_multi_aff(isl::multi_aff ma)
-{
-  if (ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ma.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_from_multi_aff(ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-pw_multi_aff::pw_multi_aff(isl::pw_aff pa)
-{
-  if (pa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = pa.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_from_pw_aff(pa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-pw_multi_aff::pw_multi_aff(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-pw_multi_aff &pw_multi_aff::operator=(pw_multi_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-pw_multi_aff::~pw_multi_aff() {
-  if (ptr)
-    isl_pw_multi_aff_free(ptr);
-}
-
-__isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & {
-  return isl_pw_multi_aff_copy(ptr);
-}
-
-__isl_keep isl_pw_multi_aff *pw_multi_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_pw_multi_aff *pw_multi_aff::release() {
-  isl_pw_multi_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool pw_multi_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx pw_multi_aff::ctx() const {
-  return isl::ctx(isl_pw_multi_aff_get_ctx(ptr));
-}
-
-isl::multi_pw_aff pw_multi_aff::add(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).add(multi2);
-}
-
-isl::multi_union_pw_aff pw_multi_aff::add(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).add(multi2);
-}
-
-isl::pw_multi_aff pw_multi_aff::add(isl::pw_multi_aff pma2) const
-{
-  if (!ptr || pma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_add(copy(), pma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::add(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).add(upma2);
-}
-
-isl::pw_multi_aff pw_multi_aff::add(const isl::multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::pw_multi_aff(pma2));
-}
-
-isl::pw_multi_aff pw_multi_aff::add(const isl::pw_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::pw_multi_aff(pma2));
-}
-
-isl::pw_multi_aff pw_multi_aff::add_constant(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_add_constant_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::add_constant(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_add_constant_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::add_constant(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add_constant(isl::val(ctx(), v));
-}
-
-isl::union_pw_multi_aff pw_multi_aff::apply(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).apply(upma2);
-}
-
-isl::map pw_multi_aff::as_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_as_map(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff pw_multi_aff::as_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_as_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff pw_multi_aff::as_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).as_multi_union_pw_aff();
-}
-
-isl::pw_multi_aff pw_multi_aff::as_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).as_pw_multi_aff();
-}
-
-isl::set pw_multi_aff::as_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_as_set(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map pw_multi_aff::as_union_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).as_union_map();
-}
-
-isl::pw_aff pw_multi_aff::at(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_get_at(get(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff pw_multi_aff::get_at(int pos) const
-{
-  return at(pos);
-}
-
-isl::set pw_multi_aff::bind(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).bind(tuple);
-}
-
-isl::pw_multi_aff pw_multi_aff::bind_domain(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_bind_domain(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_coalesce(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set pw_multi_aff::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::domain_map(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_domain_map(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::extract_pw_multi_aff(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
-}
-
-isl::multi_pw_aff pw_multi_aff::flat_range_product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::multi_union_pw_aff pw_multi_aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::pw_multi_aff pw_multi_aff::flat_range_product(isl::pw_multi_aff pma2) const
-{
-  if (!ptr || pma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_flat_range_product(copy(), pma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::flat_range_product(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).flat_range_product(upma2);
-}
-
-isl::pw_multi_aff pw_multi_aff::flat_range_product(const isl::multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->flat_range_product(isl::pw_multi_aff(pma2));
-}
-
-isl::pw_multi_aff pw_multi_aff::flat_range_product(const isl::pw_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->flat_range_product(isl::pw_multi_aff(pma2));
-}
-
-void pw_multi_aff::foreach_piece(const std::function<void(isl::set, isl::multi_aff)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::set, isl::multi_aff)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_2);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0), manage(arg_1));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::pw_multi_aff pw_multi_aff::gist(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_gist(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::gist(const isl::union_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).gist(context);
-}
-
-isl::pw_multi_aff pw_multi_aff::gist(const isl::basic_set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(set));
-}
-
-isl::pw_multi_aff pw_multi_aff::gist(const isl::point &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(set));
-}
-
-bool pw_multi_aff::has_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_has_range_tuple_id(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::multi_pw_aff pw_multi_aff::identity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).identity();
-}
-
-isl::pw_multi_aff pw_multi_aff::identity_on_domain(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_identity_on_domain_space(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::insert_domain(isl::space domain) const
-{
-  if (!ptr || domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_insert_domain(copy(), domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::intersect_domain(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_intersect_domain(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).intersect_domain(space);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).intersect_domain(uset);
-}
-
-isl::pw_multi_aff pw_multi_aff::intersect_domain(const isl::basic_set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_domain(isl::set(set));
-}
-
-isl::pw_multi_aff pw_multi_aff::intersect_domain(const isl::point &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect_domain(isl::set(set));
-}
-
-isl::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_range(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
-}
-
-isl::pw_multi_aff pw_multi_aff::intersect_params(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_intersect_params(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool pw_multi_aff::involves_locals() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_involves_locals(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool pw_multi_aff::involves_nan() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).involves_nan();
-}
-
-bool pw_multi_aff::involves_param(const isl::id &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).involves_param(id);
-}
-
-bool pw_multi_aff::involves_param(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->involves_param(isl::id(ctx(), id));
-}
-
-bool pw_multi_aff::involves_param(const isl::id_list &list) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).involves_param(list);
-}
-
-bool pw_multi_aff::isa_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_isa_multi_aff(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool pw_multi_aff::isa_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).isa_pw_multi_aff();
-}
-
-isl::pw_aff_list pw_multi_aff::list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).list();
-}
-
-isl::multi_pw_aff pw_multi_aff::max(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).max(multi2);
-}
-
-isl::multi_val pw_multi_aff::max_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_max_multi_val(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff pw_multi_aff::min(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).min(multi2);
-}
-
-isl::multi_val pw_multi_aff::min_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_min_multi_val(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::multi_val_on_domain(isl::set domain, isl::multi_val mv)
-{
-  if (domain.is_null() || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = domain.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned pw_multi_aff::n_piece() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_n_piece(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::multi_pw_aff pw_multi_aff::neg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).neg();
-}
-
-bool pw_multi_aff::plain_is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).plain_is_empty();
-}
-
-bool pw_multi_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).plain_is_equal(multi2);
-}
-
-bool pw_multi_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).plain_is_equal(multi2);
-}
-
-isl::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(isl::pw_multi_aff pma2) const
-{
-  if (!ptr || pma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff(copy(), pma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
-}
-
-isl::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->preimage_domain_wrapped_domain(isl::pw_multi_aff(pma2));
-}
-
-isl::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::pw_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->preimage_domain_wrapped_domain(isl::pw_multi_aff(pma2));
-}
-
-isl::multi_pw_aff pw_multi_aff::product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).product(multi2);
-}
-
-isl::pw_multi_aff pw_multi_aff::product(isl::pw_multi_aff pma2) const
-{
-  if (!ptr || pma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_product(copy(), pma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::product(const isl::multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->product(isl::pw_multi_aff(pma2));
-}
-
-isl::pw_multi_aff pw_multi_aff::product(const isl::pw_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->product(isl::pw_multi_aff(pma2));
-}
-
-isl::multi_pw_aff pw_multi_aff::pullback(const isl::multi_pw_aff &mpa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).pullback(mpa2);
-}
-
-isl::pw_multi_aff pw_multi_aff::pullback(isl::multi_aff ma) const
-{
-  if (!ptr || ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::pullback(isl::pw_multi_aff pma2) const
-{
-  if (!ptr || pma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_pullback_pw_multi_aff(copy(), pma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::pullback(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).pullback(upma2);
-}
-
-isl::pw_multi_aff_list pw_multi_aff::pw_multi_aff_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).pw_multi_aff_list();
-}
-
-isl::pw_multi_aff pw_multi_aff::range_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_range_factor_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::range_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_range_factor_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::range_map(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_range_map(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff pw_multi_aff::range_product(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).range_product(multi2);
-}
-
-isl::multi_union_pw_aff pw_multi_aff::range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).range_product(multi2);
-}
-
-isl::pw_multi_aff pw_multi_aff::range_product(isl::pw_multi_aff pma2) const
-{
-  if (!ptr || pma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_range_product(copy(), pma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::range_product(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).range_product(upma2);
-}
-
-isl::pw_multi_aff pw_multi_aff::range_product(const isl::multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->range_product(isl::pw_multi_aff(pma2));
-}
-
-isl::pw_multi_aff pw_multi_aff::range_product(const isl::pw_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->range_product(isl::pw_multi_aff(pma2));
-}
-
-isl::id pw_multi_aff::range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_get_range_tuple_id(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id pw_multi_aff::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::multi_pw_aff pw_multi_aff::reset_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).reset_range_tuple_id();
-}
-
-isl::multi_pw_aff pw_multi_aff::scale(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).scale(mv);
-}
-
-isl::pw_multi_aff pw_multi_aff::scale(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_scale_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::scale(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale(isl::val(ctx(), v));
-}
-
-isl::multi_pw_aff pw_multi_aff::scale_down(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).scale_down(mv);
-}
-
-isl::pw_multi_aff pw_multi_aff::scale_down(isl::val v) const
-{
-  if (!ptr || v.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_scale_down_val(copy(), v.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::scale_down(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale_down(isl::val(ctx(), v));
-}
-
-isl::multi_pw_aff pw_multi_aff::set_at(int pos, const isl::pw_aff &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).set_at(pos, el);
-}
-
-isl::multi_union_pw_aff pw_multi_aff::set_at(int pos, const isl::union_pw_aff &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).set_at(pos, el);
-}
-
-isl::pw_multi_aff pw_multi_aff::set_range_tuple(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_set_range_tuple_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff::set_range_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_range_tuple(isl::id(ctx(), id));
-}
-
-unsigned pw_multi_aff::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).size();
-}
-
-isl::space pw_multi_aff::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space pw_multi_aff::get_space() const
-{
-  return space();
-}
-
-isl::multi_pw_aff pw_multi_aff::sub(const isl::multi_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).sub(multi2);
-}
-
-isl::multi_union_pw_aff pw_multi_aff::sub(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).sub(multi2);
-}
-
-isl::pw_multi_aff pw_multi_aff::sub(isl::pw_multi_aff pma2) const
-{
-  if (!ptr || pma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_sub(copy(), pma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::sub(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).sub(upma2);
-}
-
-isl::pw_multi_aff pw_multi_aff::sub(const isl::multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->sub(isl::pw_multi_aff(pma2));
-}
-
-isl::pw_multi_aff pw_multi_aff::sub(const isl::pw_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->sub(isl::pw_multi_aff(pma2));
-}
-
-isl::pw_multi_aff pw_multi_aff::subtract_domain(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_subtract_domain(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).subtract_domain(space);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::union_set &uset) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).subtract_domain(uset);
-}
-
-isl::pw_multi_aff pw_multi_aff::subtract_domain(const isl::basic_set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->subtract_domain(isl::set(set));
-}
-
-isl::pw_multi_aff pw_multi_aff::subtract_domain(const isl::point &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->subtract_domain(isl::set(set));
-}
-
-isl::pw_multi_aff_list pw_multi_aff::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_to_list(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff pw_multi_aff::to_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_to_multi_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::to_union_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_to_union_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff pw_multi_aff::unbind_params_insert_domain(const isl::multi_id &domain) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).unbind_params_insert_domain(domain);
-}
-
-isl::multi_pw_aff pw_multi_aff::union_add(const isl::multi_pw_aff &mpa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).union_add(mpa2);
-}
-
-isl::multi_union_pw_aff pw_multi_aff::union_add(const isl::multi_union_pw_aff &mupa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_pw_aff(*this).union_add(mupa2);
-}
-
-isl::pw_multi_aff pw_multi_aff::union_add(isl::pw_multi_aff pma2) const
-{
-  if (!ptr || pma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_union_add(copy(), pma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff pw_multi_aff::union_add(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).union_add(upma2);
-}
-
-isl::pw_multi_aff pw_multi_aff::union_add(const isl::multi_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->union_add(isl::pw_multi_aff(pma2));
-}
-
-isl::pw_multi_aff pw_multi_aff::union_add(const isl::pw_aff &pma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->union_add(isl::pw_multi_aff(pma2));
-}
-
-isl::pw_multi_aff pw_multi_aff::zero(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_zero(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_multi_aff_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_pw_multi_aff_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::pw_multi_aff_list
-pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return pw_multi_aff_list(ptr);
-}
-pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_multi_aff_list_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_pw_multi_aff_list_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return pw_multi_aff_list(ptr);
-}
-
-pw_multi_aff_list::pw_multi_aff_list()
-    : ptr(nullptr) {}
-
-pw_multi_aff_list::pw_multi_aff_list(const pw_multi_aff_list &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_multi_aff_list_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-pw_multi_aff_list::pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr)
-    : ptr(ptr) {}
-
-pw_multi_aff_list::pw_multi_aff_list(isl::ctx ctx, int n)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-pw_multi_aff_list::pw_multi_aff_list(isl::pw_multi_aff el)
-{
-  if (el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = el.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-pw_multi_aff_list::pw_multi_aff_list(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_list_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-pw_multi_aff_list &pw_multi_aff_list::operator=(pw_multi_aff_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-pw_multi_aff_list::~pw_multi_aff_list() {
-  if (ptr)
-    isl_pw_multi_aff_list_free(ptr);
-}
-
-__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
-  return isl_pw_multi_aff_list_copy(ptr);
-}
-
-__isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() {
-  isl_pw_multi_aff_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool pw_multi_aff_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx pw_multi_aff_list::ctx() const {
-  return isl::ctx(isl_pw_multi_aff_list_get_ctx(ptr));
-}
-
-isl::pw_multi_aff_list pw_multi_aff_list::add(isl::pw_multi_aff el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_list_add(copy(), el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff_list::at(int index) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_list_get_at(get(), index);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff pw_multi_aff_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::pw_multi_aff_list pw_multi_aff_list::clear() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_list_clear(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff_list pw_multi_aff_list::concat(isl::pw_multi_aff_list list2) const
-{
-  if (!ptr || list2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_list_concat(copy(), list2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_list_drop(copy(), first, n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void pw_multi_aff_list::foreach(const std::function<void(isl::pw_multi_aff)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::pw_multi_aff)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::pw_multi_aff_list pw_multi_aff_list::insert(unsigned int pos, isl::pw_multi_aff el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned pw_multi_aff_list::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_pw_multi_aff_list_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff_list &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_pw_multi_aff_list_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_pw_multi_aff_list_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule
-schedule manage(__isl_take isl_schedule *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return schedule(ptr);
-}
-schedule manage_copy(__isl_keep isl_schedule *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_schedule_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return schedule(ptr);
-}
-
-schedule::schedule()
-    : ptr(nullptr) {}
-
-schedule::schedule(const schedule &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-schedule::schedule(__isl_take isl_schedule *ptr)
-    : ptr(ptr) {}
-
-schedule::schedule(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-schedule &schedule::operator=(schedule obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-schedule::~schedule() {
-  if (ptr)
-    isl_schedule_free(ptr);
-}
-
-__isl_give isl_schedule *schedule::copy() const & {
-  return isl_schedule_copy(ptr);
-}
-
-__isl_keep isl_schedule *schedule::get() const {
-  return ptr;
-}
-
-__isl_give isl_schedule *schedule::release() {
-  isl_schedule *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool schedule::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx schedule::ctx() const {
-  return isl::ctx(isl_schedule_get_ctx(ptr));
-}
-
-isl::union_set schedule::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_get_domain(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set schedule::get_domain() const
-{
-  return domain();
-}
-
-isl::schedule schedule::from_domain(isl::union_set domain)
-{
-  if (domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = domain.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_from_domain(domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule::map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_get_map(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule::get_map() const
-{
-  return map();
-}
-
-isl::schedule schedule::pullback(isl::union_pw_multi_aff upma) const
-{
-  if (!ptr || upma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_pullback_union_pw_multi_aff(copy(), upma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule::root() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_get_root(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule::get_root() const
-{
-  return root();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_constraints
-schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return schedule_constraints(ptr);
-}
-schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_constraints_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_schedule_constraints_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return schedule_constraints(ptr);
-}
-
-schedule_constraints::schedule_constraints()
-    : ptr(nullptr) {}
-
-schedule_constraints::schedule_constraints(const schedule_constraints &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_constraints_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr)
-    : ptr(ptr) {}
-
-schedule_constraints::schedule_constraints(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-schedule_constraints &schedule_constraints::operator=(schedule_constraints obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-schedule_constraints::~schedule_constraints() {
-  if (ptr)
-    isl_schedule_constraints_free(ptr);
-}
-
-__isl_give isl_schedule_constraints *schedule_constraints::copy() const & {
-  return isl_schedule_constraints_copy(ptr);
-}
-
-__isl_keep isl_schedule_constraints *schedule_constraints::get() const {
-  return ptr;
-}
-
-__isl_give isl_schedule_constraints *schedule_constraints::release() {
-  isl_schedule_constraints *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool schedule_constraints::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx schedule_constraints::ctx() const {
-  return isl::ctx(isl_schedule_constraints_get_ctx(ptr));
-}
-
-isl::union_map schedule_constraints::coincidence() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_get_coincidence(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule_constraints::get_coincidence() const
-{
-  return coincidence();
-}
-
-isl::schedule schedule_constraints::compute_schedule() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_compute_schedule(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule_constraints::conditional_validity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_get_conditional_validity(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule_constraints::get_conditional_validity() const
-{
-  return conditional_validity();
-}
-
-isl::union_map schedule_constraints::conditional_validity_condition() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_get_conditional_validity_condition(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule_constraints::get_conditional_validity_condition() const
-{
-  return conditional_validity_condition();
-}
-
-isl::set schedule_constraints::context() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_get_context(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set schedule_constraints::get_context() const
-{
-  return context();
-}
-
-isl::union_set schedule_constraints::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_get_domain(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set schedule_constraints::get_domain() const
-{
-  return domain();
-}
-
-isl::schedule_constraints schedule_constraints::on_domain(isl::union_set domain)
-{
-  if (domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = domain.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_on_domain(domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule_constraints::proximity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_get_proximity(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule_constraints::get_proximity() const
-{
-  return proximity();
-}
-
-isl::schedule_constraints schedule_constraints::set_coincidence(isl::union_map coincidence) const
-{
-  if (!ptr || coincidence.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_set_coincidence(copy(), coincidence.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_constraints schedule_constraints::set_conditional_validity(isl::union_map condition, isl::union_map validity) const
-{
-  if (!ptr || condition.is_null() || validity.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_set_conditional_validity(copy(), condition.release(), validity.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_constraints schedule_constraints::set_context(isl::set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_set_context(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_constraints schedule_constraints::set_proximity(isl::union_map proximity) const
-{
-  if (!ptr || proximity.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_set_proximity(copy(), proximity.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_constraints schedule_constraints::set_validity(isl::union_map validity) const
-{
-  if (!ptr || validity.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_set_validity(copy(), validity.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule_constraints::validity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_constraints_get_validity(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule_constraints::get_validity() const
-{
-  return validity();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_constraints &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_constraints_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_constraints_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node
-schedule_node manage(__isl_take isl_schedule_node *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return schedule_node(ptr);
-}
-schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_schedule_node_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return schedule_node(ptr);
-}
-
-schedule_node::schedule_node()
-    : ptr(nullptr) {}
-
-schedule_node::schedule_node(const schedule_node &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-schedule_node::schedule_node(__isl_take isl_schedule_node *ptr)
-    : ptr(ptr) {}
-
-schedule_node &schedule_node::operator=(schedule_node obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-schedule_node::~schedule_node() {
-  if (ptr)
-    isl_schedule_node_free(ptr);
-}
-
-__isl_give isl_schedule_node *schedule_node::copy() const & {
-  return isl_schedule_node_copy(ptr);
-}
-
-__isl_keep isl_schedule_node *schedule_node::get() const {
-  return ptr;
-}
-
-__isl_give isl_schedule_node *schedule_node::release() {
-  isl_schedule_node *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool schedule_node::is_null() const {
-  return ptr == nullptr;
-}
-
-template <typename T, typename>
-bool schedule_node::isa_type(T subtype) const
-{
-  if (is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl_schedule_node_get_type(get()) == subtype;
-}
-template <class T>
-bool schedule_node::isa() const
-{
-  return isa_type<decltype(T::type)>(T::type);
-}
-template <class T>
-T schedule_node::as() const
-{
- if (!isa<T>())
-    exception::throw_invalid("not an object of the requested subtype", __FILE__, __LINE__);
-  return T(copy());
-}
-
-isl::ctx schedule_node::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::schedule_node schedule_node::ancestor(int generation) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_ancestor(copy(), generation);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned schedule_node::ancestor_child_position(const isl::schedule_node &ancestor) const
-{
-  if (!ptr || ancestor.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_get_ancestor_child_position(get(), ancestor.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-unsigned schedule_node::get_ancestor_child_position(const isl::schedule_node &ancestor) const
-{
-  return ancestor_child_position(ancestor);
-}
-
-isl::schedule_node schedule_node::child(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_child(copy(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned schedule_node::child_position() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_get_child_position(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-unsigned schedule_node::get_child_position() const
-{
-  return child_position();
-}
-
-bool schedule_node::every_descendant(const std::function<bool(isl::schedule_node)> &test) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct test_data {
-    std::function<bool(isl::schedule_node)> func;
-    std::exception_ptr eptr;
-  } test_data = { test };
-  auto test_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
-    auto *data = static_cast<struct test_data *>(arg_1);
-    ISL_CPP_TRY {
-      auto ret = (data->func)(manage_copy(arg_0));
-      return ret ? isl_bool_true : isl_bool_false;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_bool_error;
-    }
-  };
-  auto res = isl_schedule_node_every_descendant(get(), test_lambda, &test_data);
-  if (test_data.eptr)
-    std::rethrow_exception(test_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::schedule_node schedule_node::first_child() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_first_child(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void schedule_node::foreach_ancestor_top_down(const std::function<void(isl::schedule_node)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::schedule_node)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage_copy(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-void schedule_node::foreach_descendant_top_down(const std::function<bool(isl::schedule_node)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<bool(isl::schedule_node)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      auto ret = (data->func)(manage_copy(arg_0));
-      return ret ? isl_bool_true : isl_bool_false;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_bool_error;
-    }
-  };
-  auto res = isl_schedule_node_foreach_descendant_top_down(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::schedule_node schedule_node::from_domain(isl::union_set domain)
-{
-  if (domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = domain.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_from_domain(domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::from_extension(isl::union_map extension)
-{
-  if (extension.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = extension.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_from_extension(extension.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::graft_after(isl::schedule_node graft) const
-{
-  if (!ptr || graft.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_graft_after(copy(), graft.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::graft_before(isl::schedule_node graft) const
-{
-  if (!ptr || graft.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_graft_before(copy(), graft.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool schedule_node::has_children() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_has_children(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool schedule_node::has_next_sibling() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_has_next_sibling(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool schedule_node::has_parent() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_has_parent(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool schedule_node::has_previous_sibling() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_has_previous_sibling(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::schedule_node schedule_node::insert_context(isl::set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_insert_context(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::insert_filter(isl::union_set filter) const
-{
-  if (!ptr || filter.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_insert_filter(copy(), filter.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::insert_guard(isl::set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_insert_guard(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::insert_mark(isl::id mark) const
-{
-  if (!ptr || mark.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_insert_mark(copy(), mark.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::insert_mark(const std::string &mark) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->insert_mark(isl::id(ctx(), mark));
-}
-
-isl::schedule_node schedule_node::insert_partial_schedule(isl::multi_union_pw_aff schedule) const
-{
-  if (!ptr || schedule.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_insert_partial_schedule(copy(), schedule.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::insert_sequence(isl::union_set_list filters) const
-{
-  if (!ptr || filters.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_insert_sequence(copy(), filters.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::insert_set(isl::union_set_list filters) const
-{
-  if (!ptr || filters.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_insert_set(copy(), filters.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool schedule_node::is_equal(const isl::schedule_node &node2) const
-{
-  if (!ptr || node2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_is_equal(get(), node2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool schedule_node::is_subtree_anchored() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_is_subtree_anchored(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::schedule_node schedule_node::map_descendant_bottom_up(const std::function<isl::schedule_node(isl::schedule_node)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<isl::schedule_node(isl::schedule_node)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_schedule_node * {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      auto ret = (data->func)(manage(arg_0));
-      return ret.release();
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return NULL;
-    }
-  };
-  auto res = isl_schedule_node_map_descendant_bottom_up(copy(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned schedule_node::n_children() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_n_children(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::schedule_node schedule_node::next_sibling() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_next_sibling(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::order_after(isl::union_set filter) const
-{
-  if (!ptr || filter.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_order_after(copy(), filter.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::order_before(isl::union_set filter) const
-{
-  if (!ptr || filter.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_order_before(copy(), filter.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::parent() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_parent(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff schedule_node::prefix_schedule_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff schedule_node::get_prefix_schedule_multi_union_pw_aff() const
-{
-  return prefix_schedule_multi_union_pw_aff();
-}
-
-isl::union_map schedule_node::prefix_schedule_union_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_get_prefix_schedule_union_map(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule_node::get_prefix_schedule_union_map() const
-{
-  return prefix_schedule_union_map();
-}
-
-isl::union_pw_multi_aff schedule_node::prefix_schedule_union_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff schedule_node::get_prefix_schedule_union_pw_multi_aff() const
-{
-  return prefix_schedule_union_pw_multi_aff();
-}
-
-isl::schedule_node schedule_node::previous_sibling() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_previous_sibling(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::root() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_root(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule schedule_node::schedule() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_get_schedule(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule schedule_node::get_schedule() const
-{
-  return schedule();
-}
-
-isl::schedule_node schedule_node::shared_ancestor(const isl::schedule_node &node2) const
-{
-  if (!ptr || node2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_get_shared_ancestor(get(), node2.get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::schedule_node schedule_node::get_shared_ancestor(const isl::schedule_node &node2) const
-{
-  return shared_ancestor(node2);
-}
-
-unsigned schedule_node::tree_depth() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_get_tree_depth(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-unsigned schedule_node::get_tree_depth() const
-{
-  return tree_depth();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_band
-schedule_node_band::schedule_node_band()
-    : schedule_node() {}
-
-schedule_node_band::schedule_node_band(const schedule_node_band &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_band::schedule_node_band(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_band &schedule_node_band::operator=(schedule_node_band obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx schedule_node_band::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::union_set schedule_node_band::ast_build_options() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_get_ast_build_options(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set schedule_node_band::get_ast_build_options() const
-{
-  return ast_build_options();
-}
-
-isl::set schedule_node_band::ast_isolate_option() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_get_ast_isolate_option(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set schedule_node_band::get_ast_isolate_option() const
-{
-  return ast_isolate_option();
-}
-
-bool schedule_node_band::member_get_coincident(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_member_get_coincident(get(), pos);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-schedule_node_band schedule_node_band::member_set_coincident(int pos, int coincident) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_member_set_coincident(copy(), pos, coincident);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::mod(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_mod(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-unsigned schedule_node_band::n_member() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_n_member(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::multi_union_pw_aff schedule_node_band::partial_schedule() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_get_partial_schedule(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff schedule_node_band::get_partial_schedule() const
-{
-  return partial_schedule();
-}
-
-bool schedule_node_band::permutable() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_get_permutable(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool schedule_node_band::get_permutable() const
-{
-  return permutable();
-}
-
-schedule_node_band schedule_node_band::scale(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_scale(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::scale_down(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_scale_down(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::set_ast_build_options(isl::union_set options) const
-{
-  if (!ptr || options.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_set_ast_build_options(copy(), options.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::set_permutable(int permutable) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_set_permutable(copy(), permutable);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::shift(isl::multi_union_pw_aff shift) const
-{
-  if (!ptr || shift.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_shift(copy(), shift.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::split(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_split(copy(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::tile(isl::multi_val sizes) const
-{
-  if (!ptr || sizes.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_tile(copy(), sizes.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::member_set_ast_loop_default(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_default);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::member_set_ast_loop_atomic(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_atomic);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::member_set_ast_loop_unroll(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_unroll);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-schedule_node_band schedule_node_band::member_set_ast_loop_separate(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_separate);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res).as<schedule_node_band>();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_band &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_context
-schedule_node_context::schedule_node_context()
-    : schedule_node() {}
-
-schedule_node_context::schedule_node_context(const schedule_node_context &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_context::schedule_node_context(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_context &schedule_node_context::operator=(schedule_node_context obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx schedule_node_context::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::set schedule_node_context::context() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_context_get_context(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set schedule_node_context::get_context() const
-{
-  return context();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_context &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_domain
-schedule_node_domain::schedule_node_domain()
-    : schedule_node() {}
-
-schedule_node_domain::schedule_node_domain(const schedule_node_domain &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_domain::schedule_node_domain(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_domain &schedule_node_domain::operator=(schedule_node_domain obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx schedule_node_domain::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::union_set schedule_node_domain::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_domain_get_domain(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set schedule_node_domain::get_domain() const
-{
-  return domain();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_domain &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_expansion
-schedule_node_expansion::schedule_node_expansion()
-    : schedule_node() {}
-
-schedule_node_expansion::schedule_node_expansion(const schedule_node_expansion &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_expansion::schedule_node_expansion(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_expansion &schedule_node_expansion::operator=(schedule_node_expansion obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx schedule_node_expansion::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::union_pw_multi_aff schedule_node_expansion::contraction() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_expansion_get_contraction(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff schedule_node_expansion::get_contraction() const
-{
-  return contraction();
-}
-
-isl::union_map schedule_node_expansion::expansion() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_expansion_get_expansion(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule_node_expansion::get_expansion() const
-{
-  return expansion();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_expansion &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_extension
-schedule_node_extension::schedule_node_extension()
-    : schedule_node() {}
-
-schedule_node_extension::schedule_node_extension(const schedule_node_extension &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_extension::schedule_node_extension(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_extension &schedule_node_extension::operator=(schedule_node_extension obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx schedule_node_extension::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::union_map schedule_node_extension::extension() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_extension_get_extension(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map schedule_node_extension::get_extension() const
-{
-  return extension();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_extension &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_filter
-schedule_node_filter::schedule_node_filter()
-    : schedule_node() {}
-
-schedule_node_filter::schedule_node_filter(const schedule_node_filter &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_filter::schedule_node_filter(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_filter &schedule_node_filter::operator=(schedule_node_filter obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx schedule_node_filter::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::union_set schedule_node_filter::filter() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_filter_get_filter(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set schedule_node_filter::get_filter() const
-{
-  return filter();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_filter &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_guard
-schedule_node_guard::schedule_node_guard()
-    : schedule_node() {}
-
-schedule_node_guard::schedule_node_guard(const schedule_node_guard &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_guard::schedule_node_guard(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_guard &schedule_node_guard::operator=(schedule_node_guard obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx schedule_node_guard::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-isl::set schedule_node_guard::guard() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_schedule_node_guard_get_guard(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set schedule_node_guard::get_guard() const
-{
-  return guard();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_guard &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_leaf
-schedule_node_leaf::schedule_node_leaf()
-    : schedule_node() {}
-
-schedule_node_leaf::schedule_node_leaf(const schedule_node_leaf &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_leaf::schedule_node_leaf(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_leaf &schedule_node_leaf::operator=(schedule_node_leaf obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx schedule_node_leaf::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_leaf &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_mark
-schedule_node_mark::schedule_node_mark()
-    : schedule_node() {}
-
-schedule_node_mark::schedule_node_mark(const schedule_node_mark &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_mark::schedule_node_mark(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_mark &schedule_node_mark::operator=(schedule_node_mark obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx schedule_node_mark::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_mark &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_sequence
-schedule_node_sequence::schedule_node_sequence()
-    : schedule_node() {}
-
-schedule_node_sequence::schedule_node_sequence(const schedule_node_sequence &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_sequence::schedule_node_sequence(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_sequence &schedule_node_sequence::operator=(schedule_node_sequence obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx schedule_node_sequence::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_sequence &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::schedule_node_set
-schedule_node_set::schedule_node_set()
-    : schedule_node() {}
-
-schedule_node_set::schedule_node_set(const schedule_node_set &obj)
-    : schedule_node(obj)
-{
-}
-
-schedule_node_set::schedule_node_set(__isl_take isl_schedule_node *ptr)
-    : schedule_node(ptr) {}
-
-schedule_node_set &schedule_node_set::operator=(schedule_node_set obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-isl::ctx schedule_node_set::ctx() const {
-  return isl::ctx(isl_schedule_node_get_ctx(ptr));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const schedule_node_set &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_schedule_node_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_schedule_node_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::set
-set manage(__isl_take isl_set *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return set(ptr);
-}
-set manage_copy(__isl_keep isl_set *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_set_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_set_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return set(ptr);
-}
-
-set::set()
-    : ptr(nullptr) {}
-
-set::set(const set &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_set_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-set::set(__isl_take isl_set *ptr)
-    : ptr(ptr) {}
-
-set::set(isl::basic_set bset)
-{
-  if (bset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = bset.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_from_basic_set(bset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-set::set(isl::point pnt)
-{
-  if (pnt.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = pnt.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_from_point(pnt.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-set::set(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-set &set::operator=(set obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-set::~set() {
-  if (ptr)
-    isl_set_free(ptr);
-}
-
-__isl_give isl_set *set::copy() const & {
-  return isl_set_copy(ptr);
-}
-
-__isl_keep isl_set *set::get() const {
-  return ptr;
-}
-
-__isl_give isl_set *set::release() {
-  isl_set *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool set::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx set::ctx() const {
-  return isl::ctx(isl_set_get_ctx(ptr));
-}
-
-isl::basic_set set::affine_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_affine_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::apply(isl::map map) const
-{
-  if (!ptr || map.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_apply(copy(), map.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set set::apply(const isl::union_map &umap) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).apply(umap);
-}
-
-isl::set set::apply(const isl::basic_map &map) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->apply(isl::map(map));
-}
-
-isl::pw_multi_aff set::as_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_as_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::as_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).as_set();
-}
-
-isl::set set::bind(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_bind(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_coalesce(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::complement() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_complement(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set set::compute_divs() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).compute_divs();
-}
-
-isl::set set::detect_equalities() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_detect_equalities(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val set::dim_max_val(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_dim_max_val(copy(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val set::dim_min_val(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_dim_min_val(copy(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::empty(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_empty(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool set::every_set(const std::function<bool(isl::set)> &test) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).every_set(test);
-}
-
-isl::set set::extract_set(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).extract_set(space);
-}
-
-isl::set set::flatten() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_flatten(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void set::foreach_basic_set(const std::function<void(isl::basic_set)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::basic_set)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-void set::foreach_point(const std::function<void(isl::point)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::point)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_set_foreach_point(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-void set::foreach_set(const std::function<void(isl::set)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).foreach_set(fn);
-}
-
-isl::set set::gist(isl::set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set set::gist(const isl::union_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).gist(context);
-}
-
-isl::set set::gist(const isl::basic_set &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(context));
-}
-
-isl::set set::gist(const isl::point &context) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gist(isl::set(context));
-}
-
-isl::union_set set::gist_params(const isl::set &set) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).gist_params(set);
-}
-
-isl::map set::identity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_identity(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_aff set::indicator_function() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_indicator_function(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map set::insert_domain(isl::space domain) const
-{
-  if (!ptr || domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_insert_domain(copy(), domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::intersect(isl::set set2) const
-{
-  if (!ptr || set2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_intersect(copy(), set2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set set::intersect(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).intersect(uset2);
-}
-
-isl::set set::intersect(const isl::basic_set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect(isl::set(set2));
-}
-
-isl::set set::intersect(const isl::point &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->intersect(isl::set(set2));
-}
-
-isl::set set::intersect_params(isl::set params) const
-{
-  if (!ptr || params.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_intersect_params(copy(), params.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool set::involves_locals() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_involves_locals(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool set::is_disjoint(const isl::set &set2) const
-{
-  if (!ptr || set2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_is_disjoint(get(), set2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool set::is_disjoint(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).is_disjoint(uset2);
-}
-
-bool set::is_disjoint(const isl::basic_set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_disjoint(isl::set(set2));
-}
-
-bool set::is_disjoint(const isl::point &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_disjoint(isl::set(set2));
-}
-
-bool set::is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_is_empty(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool set::is_equal(const isl::set &set2) const
-{
-  if (!ptr || set2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_is_equal(get(), set2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool set::is_equal(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).is_equal(uset2);
-}
-
-bool set::is_equal(const isl::basic_set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_equal(isl::set(set2));
-}
-
-bool set::is_equal(const isl::point &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_equal(isl::set(set2));
-}
-
-bool set::is_singleton() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_is_singleton(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool set::is_strict_subset(const isl::set &set2) const
-{
-  if (!ptr || set2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_is_strict_subset(get(), set2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool set::is_strict_subset(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).is_strict_subset(uset2);
-}
-
-bool set::is_strict_subset(const isl::basic_set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_strict_subset(isl::set(set2));
-}
-
-bool set::is_strict_subset(const isl::point &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_strict_subset(isl::set(set2));
-}
-
-bool set::is_subset(const isl::set &set2) const
-{
-  if (!ptr || set2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_is_subset(get(), set2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool set::is_subset(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).is_subset(uset2);
-}
-
-bool set::is_subset(const isl::basic_set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_subset(isl::set(set2));
-}
-
-bool set::is_subset(const isl::point &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_subset(isl::set(set2));
-}
-
-bool set::is_wrapping() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_is_wrapping(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool set::isa_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).isa_set();
-}
-
-isl::set set::lexmax() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_lexmax(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff set::lexmax_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_lexmax_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::lexmin() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_lexmin(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff set::lexmin_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_lexmin_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::lower_bound(isl::multi_pw_aff lower) const
-{
-  if (!ptr || lower.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_lower_bound_multi_pw_aff(copy(), lower.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::lower_bound(isl::multi_val lower) const
-{
-  if (!ptr || lower.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_lower_bound_multi_val(copy(), lower.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff set::max_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_max_multi_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val set::max_val(const isl::aff &obj) const
-{
-  if (!ptr || obj.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_max_val(get(), obj.get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff set::min_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_min_multi_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val set::min_val(const isl::aff &obj) const
-{
-  if (!ptr || obj.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_min_val(get(), obj.get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned set::n_basic_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_n_basic_set(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::set set::params() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_params(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val set::plain_multi_val_if_fixed() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_get_plain_multi_val_if_fixed(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val set::get_plain_multi_val_if_fixed() const
-{
-  return plain_multi_val_if_fixed();
-}
-
-isl::basic_set set::polyhedral_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_polyhedral_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::preimage(isl::multi_aff ma) const
-{
-  if (!ptr || ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_preimage_multi_aff(copy(), ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::preimage(isl::multi_pw_aff mpa) const
-{
-  if (!ptr || mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_preimage_multi_pw_aff(copy(), mpa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::preimage(isl::pw_multi_aff pma) const
-{
-  if (!ptr || pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set set::preimage(const isl::union_pw_multi_aff &upma) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).preimage(upma);
-}
-
-isl::set set::product(isl::set set2) const
-{
-  if (!ptr || set2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_product(copy(), set2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::project_out_all_params() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_project_out_all_params(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::project_out_param(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_project_out_param_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::project_out_param(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->project_out_param(isl::id(ctx(), id));
-}
-
-isl::set set::project_out_param(isl::id_list list) const
-{
-  if (!ptr || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_project_out_param_id_list(copy(), list.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff set::pw_multi_aff_on_domain(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_pw_multi_aff_on_domain_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::basic_set set::sample() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_sample(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::point set::sample_point() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_sample_point(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set_list set::set_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).set_list();
-}
-
-isl::fixed_box set::simple_fixed_box_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_get_simple_fixed_box_hull(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::fixed_box set::get_simple_fixed_box_hull() const
-{
-  return simple_fixed_box_hull();
-}
-
-isl::space set::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space set::get_space() const
-{
-  return space();
-}
-
-isl::val set::stride(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_get_stride(get(), pos);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val set::get_stride(int pos) const
-{
-  return stride(pos);
-}
-
-isl::set set::subtract(isl::set set2) const
-{
-  if (!ptr || set2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_subtract(copy(), set2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set set::subtract(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).subtract(uset2);
-}
-
-isl::set set::subtract(const isl::basic_set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->subtract(isl::set(set2));
-}
-
-isl::set set::subtract(const isl::point &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->subtract(isl::set(set2));
-}
-
-isl::set_list set::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_to_list(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set set::to_union_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_to_union_set(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map set::translation() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_translation(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned set::tuple_dim() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_tuple_dim(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::set set::unbind_params(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_unbind_params(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map set::unbind_params_insert_domain(isl::multi_id domain) const
-{
-  if (!ptr || domain.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_unbind_params_insert_domain(copy(), domain.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::unite(isl::set set2) const
-{
-  if (!ptr || set2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_union(copy(), set2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set set::unite(const isl::union_set &uset2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_set(*this).unite(uset2);
-}
-
-isl::set set::unite(const isl::basic_set &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->unite(isl::set(set2));
-}
-
-isl::set set::unite(const isl::point &set2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->unite(isl::set(set2));
-}
-
-isl::set set::universe(isl::space space)
-{
-  if (space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = space.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_universe(space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::basic_set set::unshifted_simple_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_unshifted_simple_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map set::unwrap() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_unwrap(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::upper_bound(isl::multi_pw_aff upper) const
-{
-  if (!ptr || upper.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_upper_bound_multi_pw_aff(copy(), upper.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set::upper_bound(isl::multi_val upper) const
-{
-  if (!ptr || upper.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_upper_bound_multi_val(copy(), upper.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const set &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_set_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_set_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::set_list
-set_list manage(__isl_take isl_set_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return set_list(ptr);
-}
-set_list manage_copy(__isl_keep isl_set_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_set_list_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_set_list_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return set_list(ptr);
-}
-
-set_list::set_list()
-    : ptr(nullptr) {}
-
-set_list::set_list(const set_list &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_set_list_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-set_list::set_list(__isl_take isl_set_list *ptr)
-    : ptr(ptr) {}
-
-set_list::set_list(isl::ctx ctx, int n)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_list_alloc(ctx.release(), n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-set_list::set_list(isl::set el)
-{
-  if (el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = el.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_list_from_set(el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-set_list::set_list(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_list_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-set_list &set_list::operator=(set_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-set_list::~set_list() {
-  if (ptr)
-    isl_set_list_free(ptr);
-}
-
-__isl_give isl_set_list *set_list::copy() const & {
-  return isl_set_list_copy(ptr);
-}
-
-__isl_keep isl_set_list *set_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_set_list *set_list::release() {
-  isl_set_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool set_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx set_list::ctx() const {
-  return isl::ctx(isl_set_list_get_ctx(ptr));
-}
-
-isl::set_list set_list::add(isl::set el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_list_add(copy(), el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set_list::at(int index) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_list_get_at(get(), index);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set set_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::set_list set_list::clear() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_list_clear(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set_list set_list::concat(isl::set_list list2) const
-{
-  if (!ptr || list2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_list_concat(copy(), list2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set_list set_list::drop(unsigned int first, unsigned int n) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_list_drop(copy(), first, n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void set_list::foreach(const std::function<void(isl::set)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::set)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_set_list_foreach(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::set_list set_list::insert(unsigned int pos, isl::set el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_list_insert(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned set_list::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_set_list_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const set_list &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_set_list_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_set_list_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::space
-space manage(__isl_take isl_space *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return space(ptr);
-}
-space manage_copy(__isl_keep isl_space *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_space_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_space_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return space(ptr);
-}
-
-space::space()
-    : ptr(nullptr) {}
-
-space::space(const space &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_space_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-space::space(__isl_take isl_space *ptr)
-    : ptr(ptr) {}
-
-space &space::operator=(space obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-space::~space() {
-  if (ptr)
-    isl_space_free(ptr);
-}
-
-__isl_give isl_space *space::copy() const & {
-  return isl_space_copy(ptr);
-}
-
-__isl_keep isl_space *space::get() const {
-  return ptr;
-}
-
-__isl_give isl_space *space::release() {
-  isl_space *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool space::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx space::ctx() const {
-  return isl::ctx(isl_space_get_ctx(ptr));
-}
-
-isl::space space::add_named_tuple(isl::id tuple_id, unsigned int dim) const
-{
-  if (!ptr || tuple_id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_add_named_tuple_id_ui(copy(), tuple_id.release(), dim);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add_named_tuple(isl::id(ctx(), tuple_id), dim);
-}
-
-isl::space space::add_param(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_add_param_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::add_param(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add_param(isl::id(ctx(), id));
-}
-
-isl::space space::add_unnamed_tuple(unsigned int dim) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_add_unnamed_tuple_ui(copy(), dim);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::curry() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_curry(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff space::domain_map_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_domain_map_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff space::domain_map_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_domain_map_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id space::domain_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_get_domain_tuple_id(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id space::get_domain_tuple_id() const
-{
-  return domain_tuple_id();
-}
-
-isl::space space::flatten_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_flatten_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::flatten_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_flatten_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool space::has_domain_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_has_domain_tuple_id(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool space::has_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_has_range_tuple_id(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::multi_aff space::identity_multi_aff_on_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_identity_multi_aff_on_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff space::identity_multi_pw_aff_on_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_identity_multi_pw_aff_on_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff space::identity_pw_multi_aff_on_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_identity_pw_multi_aff_on_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool space::is_equal(const isl::space &space2) const
-{
-  if (!ptr || space2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_is_equal(get(), space2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool space::is_wrapping() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_is_wrapping(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::space space::map_from_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_map_from_set(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff space::multi_aff(isl::aff_list list) const
-{
-  if (!ptr || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_multi_aff(copy(), list.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff space::multi_aff_on_domain(isl::multi_val mv) const
-{
-  if (!ptr || mv.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_multi_aff_on_domain_multi_val(copy(), mv.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_id space::multi_id(isl::id_list list) const
-{
-  if (!ptr || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_multi_id(copy(), list.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff space::multi_pw_aff(isl::pw_aff_list list) const
-{
-  if (!ptr || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_multi_pw_aff(copy(), list.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff space::multi_union_pw_aff(isl::union_pw_aff_list list) const
-{
-  if (!ptr || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_multi_union_pw_aff(copy(), list.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val space::multi_val(isl::val_list list) const
-{
-  if (!ptr || list.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_multi_val(copy(), list.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff space::param_aff_on_domain(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_param_aff_on_domain_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff space::param_aff_on_domain(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->param_aff_on_domain(isl::id(ctx(), id));
-}
-
-isl::space space::params() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_params(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::product(isl::space right) const
-{
-  if (!ptr || right.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_product(copy(), right.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff space::range_map_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_range_map_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff space::range_map_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_range_map_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::range_reverse() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_range_reverse(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id space::range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_get_range_tuple_id(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::id space::get_range_tuple_id() const
-{
-  return range_tuple_id();
-}
-
-isl::space space::reverse() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_reverse(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::set_domain_tuple(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_set_domain_tuple_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::set_domain_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_domain_tuple(isl::id(ctx(), id));
-}
-
-isl::space space::set_range_tuple(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_set_range_tuple_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::set_range_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_range_tuple(isl::id(ctx(), id));
-}
-
-isl::space space::uncurry() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_uncurry(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::unit(isl::ctx ctx)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_unit(ctx.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map space::universe_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_universe_map(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set space::universe_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_universe_set(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::unwrap() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_unwrap(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space space::wrap() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_wrap(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::aff space::zero_aff_on_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_zero_aff_on_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_aff space::zero_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_zero_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_pw_aff space::zero_multi_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_zero_multi_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff space::zero_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_zero_multi_union_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_val space::zero_multi_val() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_space_zero_multi_val(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const space &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_space_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_space_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_access_info
-union_access_info manage(__isl_take isl_union_access_info *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return union_access_info(ptr);
-}
-union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_access_info_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_union_access_info_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return union_access_info(ptr);
-}
-
-union_access_info::union_access_info()
-    : ptr(nullptr) {}
-
-union_access_info::union_access_info(const union_access_info &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_access_info_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-union_access_info::union_access_info(__isl_take isl_union_access_info *ptr)
-    : ptr(ptr) {}
-
-union_access_info::union_access_info(isl::union_map sink)
-{
-  if (sink.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = sink.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_access_info_from_sink(sink.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_access_info &union_access_info::operator=(union_access_info obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_access_info::~union_access_info() {
-  if (ptr)
-    isl_union_access_info_free(ptr);
-}
-
-__isl_give isl_union_access_info *union_access_info::copy() const & {
-  return isl_union_access_info_copy(ptr);
-}
-
-__isl_keep isl_union_access_info *union_access_info::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_access_info *union_access_info::release() {
-  isl_union_access_info *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_access_info::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx union_access_info::ctx() const {
-  return isl::ctx(isl_union_access_info_get_ctx(ptr));
-}
-
-isl::union_flow union_access_info::compute_flow() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_access_info_compute_flow(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_access_info union_access_info::set_kill(isl::union_map kill) const
-{
-  if (!ptr || kill.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_access_info_set_kill(copy(), kill.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_access_info union_access_info::set_may_source(isl::union_map may_source) const
-{
-  if (!ptr || may_source.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_access_info_set_may_source(copy(), may_source.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_access_info union_access_info::set_must_source(isl::union_map must_source) const
-{
-  if (!ptr || must_source.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_access_info_set_must_source(copy(), must_source.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_access_info union_access_info::set_schedule(isl::schedule schedule) const
-{
-  if (!ptr || schedule.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_access_info_set_schedule(copy(), schedule.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_access_info union_access_info::set_schedule_map(isl::union_map schedule_map) const
-{
-  if (!ptr || schedule_map.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_access_info &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_access_info_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_union_access_info_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_flow
-union_flow manage(__isl_take isl_union_flow *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return union_flow(ptr);
-}
-union_flow manage_copy(__isl_keep isl_union_flow *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_flow_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_union_flow_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return union_flow(ptr);
-}
-
-union_flow::union_flow()
-    : ptr(nullptr) {}
-
-union_flow::union_flow(const union_flow &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_flow_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-union_flow::union_flow(__isl_take isl_union_flow *ptr)
-    : ptr(ptr) {}
-
-union_flow &union_flow::operator=(union_flow obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_flow::~union_flow() {
-  if (ptr)
-    isl_union_flow_free(ptr);
-}
-
-__isl_give isl_union_flow *union_flow::copy() const & {
-  return isl_union_flow_copy(ptr);
-}
-
-__isl_keep isl_union_flow *union_flow::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_flow *union_flow::release() {
-  isl_union_flow *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_flow::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx union_flow::ctx() const {
-  return isl::ctx(isl_union_flow_get_ctx(ptr));
-}
-
-isl::union_map union_flow::full_may_dependence() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_flow_get_full_may_dependence(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_flow::get_full_may_dependence() const
-{
-  return full_may_dependence();
-}
-
-isl::union_map union_flow::full_must_dependence() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_flow_get_full_must_dependence(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_flow::get_full_must_dependence() const
-{
-  return full_must_dependence();
-}
-
-isl::union_map union_flow::may_dependence() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_flow_get_may_dependence(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_flow::get_may_dependence() const
-{
-  return may_dependence();
-}
-
-isl::union_map union_flow::may_no_source() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_flow_get_may_no_source(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_flow::get_may_no_source() const
-{
-  return may_no_source();
-}
-
-isl::union_map union_flow::must_dependence() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_flow_get_must_dependence(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_flow::get_must_dependence() const
-{
-  return must_dependence();
-}
-
-isl::union_map union_flow::must_no_source() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_flow_get_must_no_source(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_flow::get_must_no_source() const
-{
-  return must_no_source();
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_flow &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_flow_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_union_flow_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_map
-union_map manage(__isl_take isl_union_map *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return union_map(ptr);
-}
-union_map manage_copy(__isl_keep isl_union_map *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_map_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_union_map_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return union_map(ptr);
-}
-
-union_map::union_map()
-    : ptr(nullptr) {}
-
-union_map::union_map(const union_map &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_map_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-union_map::union_map(__isl_take isl_union_map *ptr)
-    : ptr(ptr) {}
-
-union_map::union_map(isl::basic_map bmap)
-{
-  if (bmap.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = bmap.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_from_basic_map(bmap.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_map::union_map(isl::map map)
-{
-  if (map.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = map.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_from_map(map.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_map::union_map(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_map &union_map::operator=(union_map obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_map::~union_map() {
-  if (ptr)
-    isl_union_map_free(ptr);
-}
-
-__isl_give isl_union_map *union_map::copy() const & {
-  return isl_union_map_copy(ptr);
-}
-
-__isl_keep isl_union_map *union_map::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_map *union_map::release() {
-  isl_union_map *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_map::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx union_map::ctx() const {
-  return isl::ctx(isl_union_map_get_ctx(ptr));
-}
-
-isl::union_map union_map::affine_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_affine_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::apply_domain(isl::union_map umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_apply_domain(copy(), umap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::apply_range(isl::union_map umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_apply_range(copy(), umap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map union_map::as_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_as_map(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff union_map::as_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_as_multi_union_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_map::as_union_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_as_union_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_map::bind_range(isl::multi_id tuple) const
-{
-  if (!ptr || tuple.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_bind_range(copy(), tuple.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_coalesce(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::compute_divs() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_compute_divs(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::curry() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_curry(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_map::deltas() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_deltas(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::detect_equalities() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_detect_equalities(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_map::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::domain_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_domain_factor_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::domain_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_domain_factor_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::domain_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_domain_map(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_map::domain_map_union_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_domain_map_union_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::domain_product(isl::union_map umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_domain_product(copy(), umap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::empty(isl::ctx ctx)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_empty_ctx(ctx.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::eq_at(isl::multi_union_pw_aff mupa) const
-{
-  if (!ptr || mupa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_eq_at_multi_union_pw_aff(copy(), mupa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool union_map::every_map(const std::function<bool(isl::map)> &test) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct test_data {
-    std::function<bool(isl::map)> func;
-    std::exception_ptr eptr;
-  } test_data = { test };
-  auto test_lambda = [](isl_map *arg_0, void *arg_1) -> isl_bool {
-    auto *data = static_cast<struct test_data *>(arg_1);
-    ISL_CPP_TRY {
-      auto ret = (data->func)(manage_copy(arg_0));
-      return ret ? isl_bool_true : isl_bool_false;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_bool_error;
-    }
-  };
-  auto res = isl_union_map_every_map(get(), test_lambda, &test_data);
-  if (test_data.eptr)
-    std::rethrow_exception(test_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::map union_map::extract_map(isl::space space) const
-{
-  if (!ptr || space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_extract_map(get(), space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_factor_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_factor_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::fixed_power(isl::val exp) const
-{
-  if (!ptr || exp.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_fixed_power_val(copy(), exp.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::fixed_power(long exp) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->fixed_power(isl::val(ctx(), exp));
-}
-
-void union_map::foreach_map(const std::function<void(isl::map)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::map)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::union_map union_map::from(isl::multi_union_pw_aff mupa)
-{
-  if (mupa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = mupa.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_from_multi_union_pw_aff(mupa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::from(isl::union_pw_multi_aff upma)
-{
-  if (upma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = upma.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_from_union_pw_multi_aff(upma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::from_domain(isl::union_set uset)
-{
-  if (uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = uset.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_from_domain(uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::from_domain_and_range(isl::union_set domain, isl::union_set range)
-{
-  if (domain.is_null() || range.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = domain.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_from_domain_and_range(domain.release(), range.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::from_range(isl::union_set uset)
-{
-  if (uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = uset.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_from_range(uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::gist(isl::union_map context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::gist_domain(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_gist_domain(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::gist_params(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_gist_params(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::gist_range(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_gist_range(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::intersect(isl::union_map umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_intersect(copy(), umap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::intersect_domain(isl::space space) const
-{
-  if (!ptr || space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_intersect_domain_space(copy(), space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::intersect_domain(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_intersect_domain_union_set(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::intersect_domain_factor_domain(isl::union_map factor) const
-{
-  if (!ptr || factor.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_intersect_domain_factor_domain(copy(), factor.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::intersect_domain_factor_range(isl::union_map factor) const
-{
-  if (!ptr || factor.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_intersect_domain_factor_range(copy(), factor.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::intersect_params(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_intersect_params(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::intersect_range(isl::space space) const
-{
-  if (!ptr || space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_intersect_range_space(copy(), space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::intersect_range(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_intersect_range_union_set(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::intersect_range_factor_domain(isl::union_map factor) const
-{
-  if (!ptr || factor.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_intersect_range_factor_domain(copy(), factor.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::intersect_range_factor_range(isl::union_map factor) const
-{
-  if (!ptr || factor.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_intersect_range_factor_range(copy(), factor.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool union_map::is_bijective() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_is_bijective(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_map::is_disjoint(const isl::union_map &umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_is_disjoint(get(), umap2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_map::is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_is_empty(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_map::is_equal(const isl::union_map &umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_is_equal(get(), umap2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_map::is_injective() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_is_injective(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_map::is_single_valued() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_is_single_valued(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_map::is_strict_subset(const isl::union_map &umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_is_strict_subset(get(), umap2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_map::is_subset(const isl::union_map &umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_is_subset(get(), umap2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_map::isa_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_isa_map(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::union_map union_map::lexmax() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_lexmax(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::lexmin() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_lexmin(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map_list union_map::map_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_get_map_list(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::map_list union_map::get_map_list() const
-{
-  return map_list();
-}
-
-isl::union_map union_map::polyhedral_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_polyhedral_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::preimage_domain(isl::multi_aff ma) const
-{
-  if (!ptr || ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_preimage_domain_multi_aff(copy(), ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::preimage_domain(isl::multi_pw_aff mpa) const
-{
-  if (!ptr || mpa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::preimage_domain(isl::pw_multi_aff pma) const
-{
-  if (!ptr || pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_preimage_domain_pw_multi_aff(copy(), pma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::preimage_domain(isl::union_pw_multi_aff upma) const
-{
-  if (!ptr || upma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_preimage_domain_union_pw_multi_aff(copy(), upma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::preimage_range(isl::multi_aff ma) const
-{
-  if (!ptr || ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_preimage_range_multi_aff(copy(), ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::preimage_range(isl::pw_multi_aff pma) const
-{
-  if (!ptr || pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_preimage_range_pw_multi_aff(copy(), pma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::preimage_range(isl::union_pw_multi_aff upma) const
-{
-  if (!ptr || upma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_preimage_range_union_pw_multi_aff(copy(), upma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::product(isl::union_map umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_product(copy(), umap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::project_out_all_params() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_project_out_all_params(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_map::range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::range_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_range_factor_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::range_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_range_factor_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::range_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_range_map(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::range_product(isl::union_map umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_range_product(copy(), umap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::range_reverse() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_range_reverse(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::reverse() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_reverse(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space union_map::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space union_map::get_space() const
-{
-  return space();
-}
-
-isl::union_map union_map::subtract(isl::union_map umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_subtract(copy(), umap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::subtract_domain(isl::union_set dom) const
-{
-  if (!ptr || dom.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_subtract_domain(copy(), dom.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::subtract_range(isl::union_set dom) const
-{
-  if (!ptr || dom.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_subtract_range(copy(), dom.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::uncurry() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_uncurry(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::unite(isl::union_map umap2) const
-{
-  if (!ptr || umap2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_union(copy(), umap2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::universe() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_universe(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_map::wrap() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_wrap(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_map::zip() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_map_zip(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_map &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_map_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_union_map_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_pw_aff
-union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return union_pw_aff(ptr);
-}
-union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_pw_aff_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_union_pw_aff_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return union_pw_aff(ptr);
-}
-
-union_pw_aff::union_pw_aff()
-    : ptr(nullptr) {}
-
-union_pw_aff::union_pw_aff(const union_pw_aff &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_pw_aff_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr)
-    : ptr(ptr) {}
-
-union_pw_aff::union_pw_aff(isl::aff aff)
-{
-  if (aff.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = aff.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_from_aff(aff.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_pw_aff::union_pw_aff(isl::pw_aff pa)
-{
-  if (pa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = pa.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_from_pw_aff(pa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_pw_aff::union_pw_aff(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_pw_aff &union_pw_aff::operator=(union_pw_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_pw_aff::~union_pw_aff() {
-  if (ptr)
-    isl_union_pw_aff_free(ptr);
-}
-
-__isl_give isl_union_pw_aff *union_pw_aff::copy() const & {
-  return isl_union_pw_aff_copy(ptr);
-}
-
-__isl_keep isl_union_pw_aff *union_pw_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_pw_aff *union_pw_aff::release() {
-  isl_union_pw_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_pw_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx union_pw_aff::ctx() const {
-  return isl::ctx(isl_union_pw_aff_get_ctx(ptr));
-}
-
-isl::multi_union_pw_aff union_pw_aff::add(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).add(multi2);
-}
-
-isl::union_pw_aff union_pw_aff::add(isl::union_pw_aff upa2) const
-{
-  if (!ptr || upa2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_add(copy(), upa2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_aff::add(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).add(upma2);
-}
-
-isl::union_pw_aff union_pw_aff::add(const isl::aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::union_pw_aff(upa2));
-}
-
-isl::union_pw_aff union_pw_aff::add(const isl::pw_aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::union_pw_aff(upa2));
-}
-
-isl::union_pw_multi_aff union_pw_aff::apply(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).apply(upma2);
-}
-
-isl::multi_union_pw_aff union_pw_aff::as_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).as_multi_union_pw_aff();
-}
-
-isl::pw_multi_aff union_pw_aff::as_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).as_pw_multi_aff();
-}
-
-isl::union_map union_pw_aff::as_union_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).as_union_map();
-}
-
-isl::union_pw_aff union_pw_aff::at(int pos) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).at(pos);
-}
-
-isl::union_set union_pw_aff::bind(const isl::multi_id &tuple) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).bind(tuple);
-}
-
-isl::union_set union_pw_aff::bind(isl::id id) const
-{
-  if (!ptr || id.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_bind_id(copy(), id.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_pw_aff::bind(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->bind(isl::id(ctx(), id));
-}
-
-isl::union_pw_aff union_pw_aff::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_coalesce(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_pw_aff::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff union_pw_aff::extract_pw_multi_aff(const isl::space &space) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
-}
-
-isl::multi_union_pw_aff union_pw_aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).flat_range_product(multi2);
-}
-
-isl::union_pw_multi_aff union_pw_aff::flat_range_product(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).flat_range_product(upma2);
-}
-
-isl::union_pw_aff union_pw_aff::gist(isl::union_set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool union_pw_aff::has_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).has_range_tuple_id();
-}
-
-isl::union_pw_aff union_pw_aff::intersect_domain(isl::space space) const
-{
-  if (!ptr || space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_intersect_domain_space(copy(), space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff union_pw_aff::intersect_domain(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_intersect_domain_union_set(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff union_pw_aff::intersect_domain_wrapped_domain(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_intersect_domain_wrapped_domain(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff union_pw_aff::intersect_domain_wrapped_range(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_intersect_domain_wrapped_range(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff union_pw_aff::intersect_params(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_intersect_params(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool union_pw_aff::involves_locals() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).involves_locals();
-}
-
-bool union_pw_aff::involves_nan() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).involves_nan();
-}
-
-bool union_pw_aff::isa_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).isa_pw_multi_aff();
-}
-
-isl::union_pw_aff_list union_pw_aff::list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).list();
-}
-
-isl::multi_union_pw_aff union_pw_aff::neg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).neg();
-}
-
-bool union_pw_aff::plain_is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).plain_is_empty();
-}
-
-bool union_pw_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).plain_is_equal(multi2);
-}
-
-isl::union_pw_multi_aff union_pw_aff::preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
-}
-
-isl::union_pw_aff union_pw_aff::pullback(isl::union_pw_multi_aff upma) const
-{
-  if (!ptr || upma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff_list union_pw_aff::pw_multi_aff_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).pw_multi_aff_list();
-}
-
-isl::union_pw_multi_aff union_pw_aff::range_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).range_factor_domain();
-}
-
-isl::union_pw_multi_aff union_pw_aff::range_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).range_factor_range();
-}
-
-isl::multi_union_pw_aff union_pw_aff::range_product(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).range_product(multi2);
-}
-
-isl::union_pw_multi_aff union_pw_aff::range_product(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).range_product(upma2);
-}
-
-isl::id union_pw_aff::range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).range_tuple_id();
-}
-
-isl::multi_union_pw_aff union_pw_aff::reset_range_tuple_id() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).reset_range_tuple_id();
-}
-
-isl::multi_union_pw_aff union_pw_aff::scale(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).scale(mv);
-}
-
-isl::multi_union_pw_aff union_pw_aff::scale(const isl::val &v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).scale(v);
-}
-
-isl::multi_union_pw_aff union_pw_aff::scale(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale(isl::val(ctx(), v));
-}
-
-isl::multi_union_pw_aff union_pw_aff::scale_down(const isl::multi_val &mv) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).scale_down(mv);
-}
-
-isl::multi_union_pw_aff union_pw_aff::scale_down(const isl::val &v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).scale_down(v);
-}
-
-isl::multi_union_pw_aff union_pw_aff::scale_down(long v) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->scale_down(isl::val(ctx(), v));
-}
-
-isl::multi_union_pw_aff union_pw_aff::set_at(int pos, const isl::union_pw_aff &el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).set_at(pos, el);
-}
-
-isl::multi_union_pw_aff union_pw_aff::set_range_tuple(const isl::id &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).set_range_tuple(id);
-}
-
-isl::multi_union_pw_aff union_pw_aff::set_range_tuple(const std::string &id) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->set_range_tuple(isl::id(ctx(), id));
-}
-
-unsigned union_pw_aff::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).size();
-}
-
-isl::space union_pw_aff::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space union_pw_aff::get_space() const
-{
-  return space();
-}
-
-isl::multi_union_pw_aff union_pw_aff::sub(const isl::multi_union_pw_aff &multi2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).sub(multi2);
-}
-
-isl::union_pw_aff union_pw_aff::sub(isl::union_pw_aff upa2) const
-{
-  if (!ptr || upa2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_sub(copy(), upa2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_aff::sub(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).sub(upma2);
-}
-
-isl::union_pw_aff union_pw_aff::sub(const isl::aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->sub(isl::union_pw_aff(upa2));
-}
-
-isl::union_pw_aff union_pw_aff::sub(const isl::pw_aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->sub(isl::union_pw_aff(upa2));
-}
-
-isl::union_pw_aff union_pw_aff::subtract_domain(isl::space space) const
-{
-  if (!ptr || space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_subtract_domain_space(copy(), space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff union_pw_aff::subtract_domain(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_subtract_domain_union_set(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff_list union_pw_aff::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_to_list(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff union_pw_aff::union_add(const isl::multi_union_pw_aff &mupa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::multi_union_pw_aff(*this).union_add(mupa2);
-}
-
-isl::union_pw_aff union_pw_aff::union_add(isl::union_pw_aff upa2) const
-{
-  if (!ptr || upa2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_union_add(copy(), upa2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_aff::union_add(const isl::union_pw_multi_aff &upma2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return isl::union_pw_multi_aff(*this).union_add(upma2);
-}
-
-isl::union_pw_aff union_pw_aff::union_add(const isl::aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->union_add(isl::union_pw_aff(upa2));
-}
-
-isl::union_pw_aff union_pw_aff::union_add(const isl::pw_aff &upa2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->union_add(isl::union_pw_aff(upa2));
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_pw_aff &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_pw_aff_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_union_pw_aff_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_pw_aff_list
-union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return union_pw_aff_list(ptr);
-}
-union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_pw_aff_list_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_union_pw_aff_list_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return union_pw_aff_list(ptr);
-}
-
-union_pw_aff_list::union_pw_aff_list()
-    : ptr(nullptr) {}
-
-union_pw_aff_list::union_pw_aff_list(const union_pw_aff_list &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_pw_aff_list_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr)
-    : ptr(ptr) {}
-
-union_pw_aff_list::union_pw_aff_list(isl::ctx ctx, int n)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_list_alloc(ctx.release(), n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_pw_aff_list::union_pw_aff_list(isl::union_pw_aff el)
-{
-  if (el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = el.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_list_from_union_pw_aff(el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_pw_aff_list::union_pw_aff_list(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_list_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_pw_aff_list &union_pw_aff_list::operator=(union_pw_aff_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_pw_aff_list::~union_pw_aff_list() {
-  if (ptr)
-    isl_union_pw_aff_list_free(ptr);
-}
-
-__isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
-  return isl_union_pw_aff_list_copy(ptr);
-}
-
-__isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_pw_aff_list *union_pw_aff_list::release() {
-  isl_union_pw_aff_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_pw_aff_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx union_pw_aff_list::ctx() const {
-  return isl::ctx(isl_union_pw_aff_list_get_ctx(ptr));
-}
-
-isl::union_pw_aff_list union_pw_aff_list::add(isl::union_pw_aff el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_list_add(copy(), el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff union_pw_aff_list::at(int index) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_list_get_at(get(), index);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff union_pw_aff_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::union_pw_aff_list union_pw_aff_list::clear() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_list_clear(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff_list union_pw_aff_list::concat(isl::union_pw_aff_list list2) const
-{
-  if (!ptr || list2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_list_concat(copy(), list2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_aff_list union_pw_aff_list::drop(unsigned int first, unsigned int n) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_list_drop(copy(), first, n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void union_pw_aff_list::foreach(const std::function<void(isl::union_pw_aff)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::union_pw_aff)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_union_pw_aff *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_union_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::union_pw_aff_list union_pw_aff_list::insert(unsigned int pos, isl::union_pw_aff el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_list_insert(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned union_pw_aff_list::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_aff_list_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_pw_aff_list &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_pw_aff_list_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_union_pw_aff_list_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_pw_multi_aff
-union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return union_pw_multi_aff(ptr);
-}
-union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_pw_multi_aff_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_union_pw_multi_aff_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return union_pw_multi_aff(ptr);
-}
-
-union_pw_multi_aff::union_pw_multi_aff()
-    : ptr(nullptr) {}
-
-union_pw_multi_aff::union_pw_multi_aff(const union_pw_multi_aff &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_pw_multi_aff_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr)
-    : ptr(ptr) {}
-
-union_pw_multi_aff::union_pw_multi_aff(isl::multi_aff ma)
-{
-  if (ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ma.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_from_multi_aff(ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_pw_multi_aff::union_pw_multi_aff(isl::pw_multi_aff pma)
-{
-  if (pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = pma.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_from_pw_multi_aff(pma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_pw_multi_aff::union_pw_multi_aff(isl::union_pw_aff upa)
-{
-  if (upa.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = upa.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_from_union_pw_aff(upa.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_pw_multi_aff::union_pw_multi_aff(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_pw_multi_aff &union_pw_multi_aff::operator=(union_pw_multi_aff obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_pw_multi_aff::~union_pw_multi_aff() {
-  if (ptr)
-    isl_union_pw_multi_aff_free(ptr);
-}
-
-__isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & {
-  return isl_union_pw_multi_aff_copy(ptr);
-}
-
-__isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_pw_multi_aff *union_pw_multi_aff::release() {
-  isl_union_pw_multi_aff *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_pw_multi_aff::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx union_pw_multi_aff::ctx() const {
-  return isl::ctx(isl_union_pw_multi_aff_get_ctx(ptr));
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::add(isl::union_pw_multi_aff upma2) const
-{
-  if (!ptr || upma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_add(copy(), upma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::apply(isl::union_pw_multi_aff upma2) const
-{
-  if (!ptr || upma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_apply_union_pw_multi_aff(copy(), upma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::multi_union_pw_aff union_pw_multi_aff::as_multi_union_pw_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_as_multi_union_pw_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff union_pw_multi_aff::as_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_as_pw_multi_aff(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_pw_multi_aff::as_union_map() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_as_union_map(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_coalesce(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_pw_multi_aff::domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::empty(isl::ctx ctx)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_empty_ctx(ctx.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff union_pw_multi_aff::extract_pw_multi_aff(isl::space space) const
-{
-  if (!ptr || space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_extract_pw_multi_aff(get(), space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::flat_range_product(isl::union_pw_multi_aff upma2) const
-{
-  if (!ptr || upma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_flat_range_product(copy(), upma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::gist(isl::union_set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::space space) const
-{
-  if (!ptr || space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_intersect_domain_space(copy(), space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_intersect_domain_union_set(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_domain(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_domain(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_range(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_range(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::intersect_params(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_intersect_params(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool union_pw_multi_aff::involves_locals() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_involves_locals(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_pw_multi_aff::isa_pw_multi_aff() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_isa_pw_multi_aff(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_pw_multi_aff::plain_is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_plain_is_empty(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::preimage_domain_wrapped_domain(isl::union_pw_multi_aff upma2) const
-{
-  if (!ptr || upma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff(copy(), upma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::pullback(isl::union_pw_multi_aff upma2) const
-{
-  if (!ptr || upma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_pullback_union_pw_multi_aff(copy(), upma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff_list union_pw_multi_aff::pw_multi_aff_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_get_pw_multi_aff_list(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::pw_multi_aff_list union_pw_multi_aff::get_pw_multi_aff_list() const
-{
-  return pw_multi_aff_list();
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::range_factor_domain() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_range_factor_domain(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::range_factor_range() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_range_factor_range(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::range_product(isl::union_pw_multi_aff upma2) const
-{
-  if (!ptr || upma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_range_product(copy(), upma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space union_pw_multi_aff::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space union_pw_multi_aff::get_space() const
-{
-  return space();
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::sub(isl::union_pw_multi_aff upma2) const
-{
-  if (!ptr || upma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::space space) const
-{
-  if (!ptr || space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_subtract_domain_space(copy(), space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::union_set uset) const
-{
-  if (!ptr || uset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_subtract_domain_union_set(copy(), uset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_pw_multi_aff union_pw_multi_aff::union_add(isl::union_pw_multi_aff upma2) const
-{
-  if (!ptr || upma2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_pw_multi_aff_union_add(copy(), upma2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_pw_multi_aff &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_pw_multi_aff_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_union_pw_multi_aff_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_set
-union_set manage(__isl_take isl_union_set *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return union_set(ptr);
-}
-union_set manage_copy(__isl_keep isl_union_set *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_set_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_union_set_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return union_set(ptr);
-}
-
-union_set::union_set()
-    : ptr(nullptr) {}
-
-union_set::union_set(const union_set &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_set_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-union_set::union_set(__isl_take isl_union_set *ptr)
-    : ptr(ptr) {}
-
-union_set::union_set(isl::basic_set bset)
-{
-  if (bset.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = bset.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_from_basic_set(bset.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_set::union_set(isl::point pnt)
-{
-  if (pnt.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = pnt.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_from_point(pnt.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_set::union_set(isl::set set)
-{
-  if (set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = set.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_from_set(set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_set::union_set(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_set &union_set::operator=(union_set obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_set::~union_set() {
-  if (ptr)
-    isl_union_set_free(ptr);
-}
-
-__isl_give isl_union_set *union_set::copy() const & {
-  return isl_union_set_copy(ptr);
-}
-
-__isl_keep isl_union_set *union_set::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_set *union_set::release() {
-  isl_union_set *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_set::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx union_set::ctx() const {
-  return isl::ctx(isl_union_set_get_ctx(ptr));
-}
-
-isl::union_set union_set::affine_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_affine_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::apply(isl::union_map umap) const
-{
-  if (!ptr || umap.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_apply(copy(), umap.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set union_set::as_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_as_set(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::coalesce() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_coalesce(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::compute_divs() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_compute_divs(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::detect_equalities() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_detect_equalities(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::empty(isl::ctx ctx)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_empty_ctx(ctx.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool union_set::every_set(const std::function<bool(isl::set)> &test) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct test_data {
-    std::function<bool(isl::set)> func;
-    std::exception_ptr eptr;
-  } test_data = { test };
-  auto test_lambda = [](isl_set *arg_0, void *arg_1) -> isl_bool {
-    auto *data = static_cast<struct test_data *>(arg_1);
-    ISL_CPP_TRY {
-      auto ret = (data->func)(manage_copy(arg_0));
-      return ret ? isl_bool_true : isl_bool_false;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_bool_error;
-    }
-  };
-  auto res = isl_union_set_every_set(get(), test_lambda, &test_data);
-  if (test_data.eptr)
-    std::rethrow_exception(test_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::set union_set::extract_set(isl::space space) const
-{
-  if (!ptr || space.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_extract_set(get(), space.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void union_set::foreach_point(const std::function<void(isl::point)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::point)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-void union_set::foreach_set(const std::function<void(isl::set)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::set)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::union_set union_set::gist(isl::union_set context) const
-{
-  if (!ptr || context.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_gist(copy(), context.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::gist_params(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_gist_params(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_set::identity() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_identity(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::intersect(isl::union_set uset2) const
-{
-  if (!ptr || uset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_intersect(copy(), uset2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::intersect_params(isl::set set) const
-{
-  if (!ptr || set.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_intersect_params(copy(), set.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool union_set::is_disjoint(const isl::union_set &uset2) const
-{
-  if (!ptr || uset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_is_disjoint(get(), uset2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_set::is_empty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_is_empty(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_set::is_equal(const isl::union_set &uset2) const
-{
-  if (!ptr || uset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_is_equal(get(), uset2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_set::is_strict_subset(const isl::union_set &uset2) const
-{
-  if (!ptr || uset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_is_strict_subset(get(), uset2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_set::is_subset(const isl::union_set &uset2) const
-{
-  if (!ptr || uset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_is_subset(get(), uset2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool union_set::isa_set() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_isa_set(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-isl::union_set union_set::lexmax() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_lexmax(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::lexmin() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_lexmin(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::polyhedral_hull() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_polyhedral_hull(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::preimage(isl::multi_aff ma) const
-{
-  if (!ptr || ma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_preimage_multi_aff(copy(), ma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::preimage(isl::pw_multi_aff pma) const
-{
-  if (!ptr || pma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::preimage(isl::union_pw_multi_aff upma) const
-{
-  if (!ptr || upma.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_preimage_union_pw_multi_aff(copy(), upma.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::point union_set::sample_point() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_sample_point(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set_list union_set::set_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_get_set_list(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::set_list union_set::get_set_list() const
-{
-  return set_list();
-}
-
-isl::space union_set::space() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_get_space(get());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::space union_set::get_space() const
-{
-  return space();
-}
-
-isl::union_set union_set::subtract(isl::union_set uset2) const
-{
-  if (!ptr || uset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_subtract(copy(), uset2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set_list union_set::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_to_list(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::unite(isl::union_set uset2) const
-{
-  if (!ptr || uset2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_union(copy(), uset2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set::universe() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_universe(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_map union_set::unwrap() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_unwrap(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_set &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_set_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_union_set_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::union_set_list
-union_set_list manage(__isl_take isl_union_set_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return union_set_list(ptr);
-}
-union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_set_list_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_union_set_list_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return union_set_list(ptr);
-}
-
-union_set_list::union_set_list()
-    : ptr(nullptr) {}
-
-union_set_list::union_set_list(const union_set_list &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_set_list_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-union_set_list::union_set_list(__isl_take isl_union_set_list *ptr)
-    : ptr(ptr) {}
-
-union_set_list::union_set_list(isl::ctx ctx, int n)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_list_alloc(ctx.release(), n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_set_list::union_set_list(isl::union_set el)
-{
-  if (el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = el.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_list_from_union_set(el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_set_list::union_set_list(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_list_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-union_set_list &union_set_list::operator=(union_set_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-union_set_list::~union_set_list() {
-  if (ptr)
-    isl_union_set_list_free(ptr);
-}
-
-__isl_give isl_union_set_list *union_set_list::copy() const & {
-  return isl_union_set_list_copy(ptr);
-}
-
-__isl_keep isl_union_set_list *union_set_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_union_set_list *union_set_list::release() {
-  isl_union_set_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool union_set_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx union_set_list::ctx() const {
-  return isl::ctx(isl_union_set_list_get_ctx(ptr));
-}
-
-isl::union_set_list union_set_list::add(isl::union_set el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_list_add(copy(), el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set_list::at(int index) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_list_get_at(get(), index);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set union_set_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::union_set_list union_set_list::clear() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_list_clear(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set_list union_set_list::concat(isl::union_set_list list2) const
-{
-  if (!ptr || list2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_list_concat(copy(), list2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::union_set_list union_set_list::drop(unsigned int first, unsigned int n) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_list_drop(copy(), first, n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void union_set_list::foreach(const std::function<void(isl::union_set)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::union_set)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_union_set *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_union_set_list_foreach(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::union_set_list union_set_list::insert(unsigned int pos, isl::union_set el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_list_insert(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-unsigned union_set_list::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_union_set_list_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const union_set_list &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_union_set_list_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_union_set_list_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::val
-val manage(__isl_take isl_val *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return val(ptr);
-}
-val manage_copy(__isl_keep isl_val *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_val_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_val_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return val(ptr);
-}
-
-val::val()
-    : ptr(nullptr) {}
-
-val::val(const val &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_val_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-val::val(__isl_take isl_val *ptr)
-    : ptr(ptr) {}
-
-val::val(isl::ctx ctx, long i)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_int_from_si(ctx.release(), i);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-val::val(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-val &val::operator=(val obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-val::~val() {
-  if (ptr)
-    isl_val_free(ptr);
-}
-
-__isl_give isl_val *val::copy() const & {
-  return isl_val_copy(ptr);
-}
-
-__isl_keep isl_val *val::get() const {
-  return ptr;
-}
-
-__isl_give isl_val *val::release() {
-  isl_val *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool val::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx val::ctx() const {
-  return isl::ctx(isl_val_get_ctx(ptr));
-}
-
-isl::val val::abs() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_abs(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool val::abs_eq(const isl::val &v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_abs_eq(get(), v2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::abs_eq(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->abs_eq(isl::val(ctx(), v2));
-}
-
-isl::val val::add(isl::val v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_add(copy(), v2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::add(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::val(ctx(), v2));
-}
-
-isl::val val::ceil() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_ceil(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-int val::cmp_si(long i) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_cmp_si(get(), i);
-  return res;
-}
-
-long val::den_si() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_get_den_si(get());
-  return res;
-}
-
-long val::get_den_si() const
-{
-  return den_si();
-}
-
-isl::val val::div(isl::val v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_div(copy(), v2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::div(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->div(isl::val(ctx(), v2));
-}
-
-bool val::eq(const isl::val &v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_eq(get(), v2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::eq(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->eq(isl::val(ctx(), v2));
-}
-
-isl::val val::floor() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_floor(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::gcd(isl::val v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_gcd(copy(), v2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::gcd(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gcd(isl::val(ctx(), v2));
-}
-
-bool val::ge(const isl::val &v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_ge(get(), v2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::ge(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->ge(isl::val(ctx(), v2));
-}
-
-bool val::gt(const isl::val &v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_gt(get(), v2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::gt(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->gt(isl::val(ctx(), v2));
-}
-
-isl::val val::infty(isl::ctx ctx)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_infty(ctx.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::inv() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_inv(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool val::is_divisible_by(const isl::val &v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_divisible_by(get(), v2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_divisible_by(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->is_divisible_by(isl::val(ctx(), v2));
-}
-
-bool val::is_infty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_infty(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_int() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_int(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_nan() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_nan(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_neg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_neg(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_neginfty() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_neginfty(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_negone() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_negone(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_nonneg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_nonneg(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_nonpos() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_nonpos(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_one() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_one(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_pos() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_pos(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_rat() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_rat(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::is_zero() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_is_zero(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::le(const isl::val &v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_le(get(), v2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::le(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->le(isl::val(ctx(), v2));
-}
-
-bool val::lt(const isl::val &v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_lt(get(), v2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::lt(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->lt(isl::val(ctx(), v2));
-}
-
-isl::val val::max(isl::val v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_max(copy(), v2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::max(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->max(isl::val(ctx(), v2));
-}
-
-isl::val val::min(isl::val v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_min(copy(), v2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::min(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->min(isl::val(ctx(), v2));
-}
-
-isl::val val::mod(isl::val v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_mod(copy(), v2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::mod(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->mod(isl::val(ctx(), v2));
-}
-
-isl::val val::mul(isl::val v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_mul(copy(), v2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::mul(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->mul(isl::val(ctx(), v2));
-}
-
-isl::val val::nan(isl::ctx ctx)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_nan(ctx.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-bool val::ne(const isl::val &v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_ne(get(), v2.get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-bool val::ne(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->ne(isl::val(ctx(), v2));
-}
-
-isl::val val::neg() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_neg(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::neginfty(isl::ctx ctx)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_neginfty(ctx.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::negone(isl::ctx ctx)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_negone(ctx.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-long val::num_si() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_get_num_si(get());
-  return res;
-}
-
-long val::get_num_si() const
-{
-  return num_si();
-}
-
-isl::val val::one(isl::ctx ctx)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_one(ctx.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::pow2() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_pow2(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-int val::sgn() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_sgn(get());
-  return res;
-}
-
-isl::val val::sub(isl::val v2) const
-{
-  if (!ptr || v2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_sub(copy(), v2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::sub(long v2) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->sub(isl::val(ctx(), v2));
-}
-
-isl::val_list val::to_list() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_to_list(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::trunc() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_trunc(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val::zero(isl::ctx ctx)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_zero(ctx.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-inline std::ostream &operator<<(std::ostream &os, const val &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_val_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_val_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-
-// implementations for isl::val_list
-val_list manage(__isl_take isl_val_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return val_list(ptr);
-}
-val_list manage_copy(__isl_keep isl_val_list *ptr) {
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_val_list_get_ctx(ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = isl_val_list_copy(ptr);
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-  return val_list(ptr);
-}
-
-val_list::val_list()
-    : ptr(nullptr) {}
-
-val_list::val_list(const val_list &obj)
-    : ptr(nullptr)
-{
-  if (!obj.ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_val_list_get_ctx(obj.ptr);
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  ptr = obj.copy();
-  if (!ptr)
-    exception::throw_last_error(saved_ctx);
-}
-
-val_list::val_list(__isl_take isl_val_list *ptr)
-    : ptr(ptr) {}
-
-val_list::val_list(isl::ctx ctx, int n)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_list_alloc(ctx.release(), n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-val_list::val_list(isl::val el)
-{
-  if (el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = el.ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_list_from_val(el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-val_list::val_list(isl::ctx ctx, const std::string &str)
-{
-  auto saved_ctx = ctx;
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_list_read_from_str(ctx.release(), str.c_str());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  ptr = res;
-}
-
-val_list &val_list::operator=(val_list obj) {
-  std::swap(this->ptr, obj.ptr);
-  return *this;
-}
-
-val_list::~val_list() {
-  if (ptr)
-    isl_val_list_free(ptr);
-}
-
-__isl_give isl_val_list *val_list::copy() const & {
-  return isl_val_list_copy(ptr);
-}
-
-__isl_keep isl_val_list *val_list::get() const {
-  return ptr;
-}
-
-__isl_give isl_val_list *val_list::release() {
-  isl_val_list *tmp = ptr;
-  ptr = nullptr;
-  return tmp;
-}
-
-bool val_list::is_null() const {
-  return ptr == nullptr;
-}
-
-isl::ctx val_list::ctx() const {
-  return isl::ctx(isl_val_list_get_ctx(ptr));
-}
-
-isl::val_list val_list::add(isl::val el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_list_add(copy(), el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val_list val_list::add(long el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->add(isl::val(ctx(), el));
-}
-
-isl::val val_list::at(int index) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_list_get_at(get(), index);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val val_list::get_at(int index) const
-{
-  return at(index);
-}
-
-isl::val_list val_list::clear() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_list_clear(copy());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val_list val_list::concat(isl::val_list list2) const
-{
-  if (!ptr || list2.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_list_concat(copy(), list2.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val_list val_list::drop(unsigned int first, unsigned int n) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_list_drop(copy(), first, n);
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-void val_list::foreach(const std::function<void(isl::val)> &fn) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  struct fn_data {
-    std::function<void(isl::val)> func;
-    std::exception_ptr eptr;
-  } fn_data = { fn };
-  auto fn_lambda = [](isl_val *arg_0, void *arg_1) -> isl_stat {
-    auto *data = static_cast<struct fn_data *>(arg_1);
-    ISL_CPP_TRY {
-      (data->func)(manage(arg_0));
-      return isl_stat_ok;
-    } ISL_CPP_CATCH_ALL {
-      data->eptr = std::current_exception();
-      return isl_stat_error;
-    }
-  };
-  auto res = isl_val_list_foreach(get(), fn_lambda, &fn_data);
-  if (fn_data.eptr)
-    std::rethrow_exception(fn_data.eptr);
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return;
-}
-
-isl::val_list val_list::insert(unsigned int pos, isl::val el) const
-{
-  if (!ptr || el.is_null())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_list_insert(copy(), pos, el.release());
-  if (!res)
-    exception::throw_last_error(saved_ctx);
-  return manage(res);
-}
-
-isl::val_list val_list::insert(unsigned int pos, long el) const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  return this->insert(pos, isl::val(ctx(), el));
-}
-
-unsigned val_list::size() const
-{
-  if (!ptr)
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = ctx();
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  auto res = isl_val_list_size(get());
-  if (res < 0)
-    exception::throw_last_error(saved_ctx);
-  return res;
-}
-
-inline std::ostream &operator<<(std::ostream &os, const val_list &obj)
-{
-  if (!obj.get())
-    exception::throw_invalid("NULL input", __FILE__, __LINE__);
-  auto saved_ctx = isl_val_list_get_ctx(obj.get());
-  options_scoped_set_on_error saved_on_error(saved_ctx, exception::on_error);
-  char *str = isl_val_list_to_str(obj.get());
-  if (!str)
-    exception::throw_last_error(saved_ctx);
-  os << str;
-  free(str);
-  return os;
-}
-} // namespace isl
-
-#endif /* ISL_CPP */
diff --git a/polly/lib/External/isl/include/isl/typed_cpp.h b/polly/lib/External/isl/include/isl/typed_cpp.h
deleted file mode 100644 (file)
index 30c47eb..0000000
+++ /dev/null
@@ -1,48863 +0,0 @@
-/// These are automatically generated templated C++ bindings for isl.
-///
-/// isl is a library for computing with integer sets and maps described by
-/// Presburger formulas. On top of this, isl provides various tools for
-/// polyhedral compilation, ranging from dependence analysis over scheduling
-/// to AST generation.
-
-#ifndef ISL_TYPED_CPP
-#define ISL_TYPED_CPP
-
-#include <type_traits>
-
-#include <isl/cpp.h>
-
-namespace isl {
-namespace typed {
-
-template <typename Domain, typename Range>
-struct pair {};
-
-struct Anonymous;
-
-
-template <typename...>
-struct aff;
-
-template <typename...Ts>
-using aff_on = aff<Ts..., Anonymous>;
-
-template <typename...>
-struct aff_list;
-
-template <typename...Ts>
-using aff_list_on = aff_list<Ts..., Anonymous>;
-
-template <typename...>
-struct basic_map;
-
-template <typename...>
-struct basic_set;
-
-template <typename...>
-struct fixed_box;
-
-template <typename...>
-struct id;
-
-template <typename...>
-struct id_list;
-
-template <typename...>
-struct map;
-
-template <typename...>
-struct map_list;
-
-template <typename...>
-struct multi_aff;
-
-template <typename...>
-struct multi_id;
-
-template <typename...>
-struct multi_pw_aff;
-
-template <typename...>
-struct multi_union_pw_aff;
-
-template <typename...>
-struct multi_val;
-
-template <typename...>
-struct point;
-
-template <typename...>
-struct pw_aff;
-
-template <typename...Ts>
-using pw_aff_on = pw_aff<Ts..., Anonymous>;
-
-template <typename...>
-struct pw_aff_list;
-
-template <typename...Ts>
-using pw_aff_list_on = pw_aff_list<Ts..., Anonymous>;
-
-template <typename...>
-struct pw_multi_aff;
-
-template <typename...>
-struct pw_multi_aff_list;
-
-template <typename...>
-struct set;
-
-template <typename...>
-struct set_list;
-
-template <typename...>
-struct space;
-
-template <typename...>
-struct union_map;
-
-template <typename...>
-struct union_pw_aff;
-
-template <typename...Ts>
-using union_pw_aff_on = union_pw_aff<Ts..., Anonymous>;
-
-template <typename...>
-struct union_pw_aff_list;
-
-template <typename...Ts>
-using union_pw_aff_list_on = union_pw_aff_list<Ts..., Anonymous>;
-
-template <typename...>
-struct union_pw_multi_aff;
-
-template <typename...>
-struct union_set;
-
-template <typename...>
-struct union_set_list;
-
-template <typename...>
-struct val;
-
-template <typename...>
-struct val_list;
-
-template <>
-struct aff<Anonymous> : public isl::aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  aff() = default;
-  aff(const isl::aff &obj) : isl::aff(obj) {}
-  static aff from(const isl::aff &obj) {
-    return aff(obj);
-  }
-  inline explicit aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::aff<Anonymous> add(const typed::aff<Anonymous> &aff2) const;
-  inline typed::multi_aff<Anonymous> add(const typed::multi_aff<Anonymous> &multi2) const;
-  inline typed::multi_pw_aff<Anonymous> add(const typed::multi_pw_aff<Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<Anonymous> add(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
-  inline typed::pw_aff<Anonymous> add(const typed::pw_aff<Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Anonymous> add(const typed::pw_multi_aff<Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Anonymous> add(const typed::union_pw_aff<Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Anonymous> add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
-  inline typed::aff<Anonymous> add_constant(const typed::val<Anonymous> &v) const;
-  inline typed::aff<Anonymous> add_constant(long v) const;
-  inline typed::multi_aff<Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
-  template <typename Range>
-  inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const;
-  inline typed::aff<Anonymous> as_aff() const;
-  inline typed::map<Anonymous> as_map() const = delete;
-  inline typed::multi_aff<Anonymous> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<Anonymous> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Anonymous> as_pw_multi_aff() const;
-  inline typed::set<Anonymous> as_set() const;
-  inline typed::union_map<Anonymous> as_union_map() const = delete;
-  inline typed::aff<Anonymous> at(int pos) const;
-  inline typed::basic_set<> bind(const typed::id<Anonymous> &id) const;
-  inline typed::basic_set<> bind(const std::string &id) const;
-  inline typed::basic_set<> bind(const typed::multi_id<Anonymous> &tuple) const;
-  inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::pw_aff<Anonymous> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::aff<Anonymous> ceil() const;
-  inline typed::pw_aff<Anonymous> coalesce() const;
-  inline typed::pw_aff<Anonymous> cond(const typed::pw_aff<Anonymous> &pwaff_true, const typed::pw_aff<Anonymous> &pwaff_false) const;
-  inline typed::multi_val<Anonymous> constant_multi_val() const;
-  inline typed::val<Anonymous> get_constant_val() const = delete;
-  inline typed::set<> domain() const;
-  inline typed::pw_multi_aff<Anonymous> extract_pw_multi_aff(const typed::space<Anonymous> &space) const;
-  inline typed::aff<Anonymous> floor() const;
-  inline typed::set<Anonymous> ge_set(const typed::aff<> &aff2) const = delete;
-  inline typed::set<Anonymous> ge_set(const typed::pw_aff<> &pwaff2) const = delete;
-  inline typed::aff<Anonymous> gist(const typed::set<> &context) const;
-  inline typed::union_pw_aff<Anonymous> gist(const typed::union_set<> &context) const;
-  inline typed::aff<Anonymous> gist(const typed::basic_set<> &context) const;
-  inline typed::aff<Anonymous> gist(const typed::point<> &context) const;
-  inline typed::set<Anonymous> gt_set(const typed::aff<> &aff2) const = delete;
-  inline typed::set<Anonymous> gt_set(const typed::pw_aff<> &pwaff2) const = delete;
-  inline typed::multi_aff<Anonymous, Anonymous> identity() const;
-  template <typename Domain>
-  inline typed::pw_aff<Domain, Anonymous> insert_domain(const typed::space<Domain> &domain) const;
-  inline typed::pw_aff<Anonymous> intersect_domain(const typed::set<> &set) const = delete;
-  inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::pw_aff<Anonymous> intersect_params(const typed::set<> &set) const;
-  inline typed::set<Anonymous> le_set(const typed::aff<> &aff2) const = delete;
-  inline typed::set<Anonymous> le_set(const typed::pw_aff<> &pwaff2) const = delete;
-  inline typed::aff_list<Anonymous> list() const;
-  inline typed::set<Anonymous> lt_set(const typed::aff<> &aff2) const = delete;
-  inline typed::set<Anonymous> lt_set(const typed::pw_aff<> &pwaff2) const = delete;
-  inline typed::multi_pw_aff<Anonymous> max(const typed::multi_pw_aff<Anonymous> &multi2) const;
-  inline typed::pw_aff<Anonymous> max(const typed::pw_aff<Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> max_multi_val() const;
-  inline typed::multi_pw_aff<Anonymous> min(const typed::multi_pw_aff<Anonymous> &multi2) const;
-  inline typed::pw_aff<Anonymous> min(const typed::pw_aff<Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> min_multi_val() const;
-  inline typed::aff<Anonymous> mod(const typed::val<Anonymous> &mod) const;
-  inline typed::aff<Anonymous> mod(long mod) const;
-  inline typed::aff<Anonymous> neg() const;
-  inline typed::pw_multi_aff<Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  template <typename Range>
-  inline typed::multi_aff<pair<Anonymous, Range>> product(const typed::multi_aff<Range> &multi2) const;
-  template <typename Range>
-  inline typed::multi_pw_aff<pair<Anonymous, Range>> product(const typed::multi_pw_aff<Range> &multi2) const;
-  template <typename Range>
-  inline typed::pw_multi_aff<pair<Anonymous, Range>> product(const typed::pw_multi_aff<Range> &pma2) const;
-  inline typed::aff<Anonymous> pullback(const typed::multi_aff<> &ma) const = delete;
-  inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<> &pma) const = delete;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<> &upma) const = delete;
-  inline typed::aff<Anonymous> pullback(const typed::aff<> &ma) const = delete;
-  inline typed::pw_multi_aff_list<Anonymous> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<Anonymous> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<Anonymous> range_factor_range() const = delete;
-  inline typed::multi_aff<Anonymous> range_product(const typed::multi_aff<> &multi2) const = delete;
-  inline typed::multi_pw_aff<Anonymous> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
-  inline typed::multi_union_pw_aff<Anonymous> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
-  inline typed::pw_multi_aff<Anonymous> range_product(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Anonymous> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::aff<Anonymous> scale(const typed::val<Anonymous> &v) const;
-  inline typed::aff<Anonymous> scale(long v) const;
-  inline typed::multi_aff<Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::aff<Anonymous> scale_down(const typed::val<Anonymous> &v) const;
-  inline typed::aff<Anonymous> scale_down(long v) const;
-  inline typed::multi_aff<Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::multi_aff<Anonymous> set_at(int pos, const typed::aff<Anonymous> &el) const;
-  inline typed::multi_pw_aff<Anonymous> set_at(int pos, const typed::pw_aff<Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Anonymous> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
-  template <typename Domain2>
-  inline typed::multi_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::multi_aff<Domain2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Anonymous> space() const;
-  inline typed::aff<Anonymous> sub(const typed::aff<Anonymous> &aff2) const;
-  inline typed::multi_aff<Anonymous> sub(const typed::multi_aff<Anonymous> &multi2) const;
-  inline typed::multi_pw_aff<Anonymous> sub(const typed::multi_pw_aff<Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<Anonymous> sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
-  inline typed::pw_aff<Anonymous> sub(const typed::pw_aff<Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Anonymous> sub(const typed::pw_multi_aff<Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Anonymous> sub(const typed::union_pw_aff<Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Anonymous> sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
-  inline typed::pw_aff<Anonymous> subtract_domain(const typed::set<> &set) const = delete;
-  inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::multi_pw_aff<Anonymous> to_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<Anonymous> to_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Anonymous> to_pw_multi_aff() const;
-  inline typed::union_pw_aff<Anonymous> to_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<Anonymous> to_union_pw_multi_aff() const;
-  template <typename Domain>
-  inline typed::aff<Domain, Anonymous> unbind_params_insert_domain(const typed::multi_id<Domain> &domain) const;
-  inline typed::multi_pw_aff<Anonymous> union_add(const typed::multi_pw_aff<Anonymous> &mpa2) const;
-  inline typed::multi_union_pw_aff<Anonymous> union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const;
-  inline typed::pw_aff<Anonymous> union_add(const typed::pw_aff<Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Anonymous> union_add(const typed::pw_multi_aff<Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Anonymous> union_add(const typed::union_pw_aff<Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Anonymous> union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
-};
-
-template <typename Domain>
-struct aff<Domain, Anonymous> : public isl::aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  aff() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  aff(const aff<Arg1, Anonymous> &obj) : isl::aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::aff>{}, bool>::type = true>
-  aff(const base &obj) : isl::aff(obj) {}
- public:
-  static aff from(const isl::aff &obj) {
-    return aff(obj);
-  }
-  inline explicit aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::aff<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &aff2) const;
-  inline typed::multi_aff<Domain, Anonymous> add(const typed::multi_aff<Domain, Anonymous> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Anonymous> add(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::pw_aff<Domain, Anonymous> add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Domain, Anonymous> add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
-  inline typed::aff<Domain, Anonymous> add_constant(const typed::val<Anonymous> &v) const;
-  inline typed::aff<Domain, Anonymous> add_constant(long v) const;
-  inline typed::multi_aff<Domain, Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const;
-  inline typed::aff<Domain, Anonymous> as_aff() const;
-  inline typed::map<Domain, Anonymous> as_map() const;
-  inline typed::multi_aff<Domain, Anonymous> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Anonymous> as_pw_multi_aff() const;
-  inline typed::set<Domain, Anonymous> as_set() const = delete;
-  inline typed::union_map<Domain, Anonymous> as_union_map() const;
-  inline typed::aff<Domain, Anonymous> at(int pos) const;
-  inline typed::basic_set<Domain> bind(const typed::id<Anonymous> &id) const;
-  inline typed::basic_set<Domain> bind(const std::string &id) const;
-  inline typed::basic_set<Domain> bind(const typed::multi_id<Anonymous> &tuple) const;
-  inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::pw_aff<Domain, Anonymous> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::aff<Domain, Anonymous> ceil() const;
-  inline typed::pw_aff<Domain, Anonymous> coalesce() const;
-  inline typed::pw_aff<Domain, Anonymous> cond(const typed::pw_aff<Domain, Anonymous> &pwaff_true, const typed::pw_aff<Domain, Anonymous> &pwaff_false) const;
-  inline typed::multi_val<Anonymous> constant_multi_val() const;
-  inline typed::val<Domain, Anonymous> get_constant_val() const = delete;
-  inline typed::set<Domain> domain() const;
-  inline typed::pw_multi_aff<Domain, Anonymous> extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const;
-  inline typed::aff<Domain, Anonymous> floor() const;
-  inline typed::set<Domain> ge_set(const typed::aff<Domain, Anonymous> &aff2) const;
-  inline typed::set<Domain> ge_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::aff<Domain, Anonymous> gist(const typed::set<Domain> &context) const;
-  inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::union_set<Domain> &context) const;
-  inline typed::aff<Domain, Anonymous> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::aff<Domain, Anonymous> gist(const typed::point<Domain> &context) const;
-  inline typed::set<Domain> gt_set(const typed::aff<Domain, Anonymous> &aff2) const;
-  inline typed::set<Domain> gt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::multi_aff<Domain, Anonymous> identity() const;
-  inline typed::pw_aff<Domain, Anonymous> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_aff<Domain, Anonymous> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::pw_aff<Domain, Anonymous> intersect_params(const typed::set<> &set) const;
-  inline typed::set<Domain> le_set(const typed::aff<Domain, Anonymous> &aff2) const;
-  inline typed::set<Domain> le_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::aff_list<Domain, Anonymous> list() const;
-  inline typed::set<Domain> lt_set(const typed::aff<Domain, Anonymous> &aff2) const;
-  inline typed::set<Domain> lt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::multi_pw_aff<Domain, Anonymous> max(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::pw_aff<Domain, Anonymous> max(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> max_multi_val() const;
-  inline typed::multi_pw_aff<Domain, Anonymous> min(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::pw_aff<Domain, Anonymous> min(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> min_multi_val() const;
-  inline typed::aff<Domain, Anonymous> mod(const typed::val<Anonymous> &mod) const;
-  inline typed::aff<Domain, Anonymous> mod(long mod) const;
-  inline typed::aff<Domain, Anonymous> neg() const;
-  inline typed::pw_multi_aff<Domain, Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> product(const typed::multi_aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const;
-  template <typename Domain2>
-  inline typed::aff<Domain2, Anonymous> pullback(const typed::multi_aff<Domain2, Domain> &ma) const;
-  inline typed::aff<Anonymous> pullback(const typed::multi_aff<Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::pw_aff<Domain2, Anonymous> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::pw_aff<Domain2, Anonymous> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<Domain> &upma) const;
-  template <typename Domain2>
-  inline typed::aff<Domain2, Anonymous> pullback(const typed::aff<Domain2, Domain> &ma) const;
-  inline typed::aff<Anonymous> pullback(const typed::aff<Domain> &ma) const;
-  inline typed::pw_multi_aff_list<Domain, Anonymous> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<Domain, Anonymous> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<Domain, Anonymous> range_factor_range() const = delete;
-  template <typename Range2>
-  inline typed::multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_pw_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::pw_multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
-  inline typed::aff<Domain, Anonymous> scale(const typed::val<Anonymous> &v) const;
-  inline typed::aff<Domain, Anonymous> scale(long v) const;
-  inline typed::multi_aff<Domain, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::aff<Domain, Anonymous> scale_down(const typed::val<Anonymous> &v) const;
-  inline typed::aff<Domain, Anonymous> scale_down(long v) const;
-  inline typed::multi_aff<Domain, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::multi_aff<Domain, Anonymous> set_at(int pos, const typed::aff<Domain, Anonymous> &el) const;
-  inline typed::multi_pw_aff<Domain, Anonymous> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
-  template <typename Range2>
-  inline typed::multi_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::multi_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain, Anonymous> space() const;
-  inline typed::aff<Domain, Anonymous> sub(const typed::aff<Domain, Anonymous> &aff2) const;
-  inline typed::multi_aff<Domain, Anonymous> sub(const typed::multi_aff<Domain, Anonymous> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Anonymous> sub(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::pw_aff<Domain, Anonymous> sub(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Domain, Anonymous> sub(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
-  inline typed::pw_aff<Domain, Anonymous> subtract_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::multi_pw_aff<Domain, Anonymous> to_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> to_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Anonymous> to_pw_multi_aff() const;
-  inline typed::union_pw_aff<Domain, Anonymous> to_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> to_union_pw_multi_aff() const;
-  inline typed::aff<Domain, Anonymous> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<Domain, Anonymous> union_add(const typed::multi_pw_aff<Domain, Anonymous> &mpa2) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const;
-  inline typed::pw_aff<Domain, Anonymous> union_add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Domain, Anonymous> union_add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
-};
-
-template <typename Domain2, typename Range2>
-struct aff<pair<Domain2, Range2>, Anonymous> : public isl::aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  aff() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain2, Arg1>{} &&
-              std::is_base_of<Range2, Arg2>{},
-            bool>::type = true>
-  aff(const aff<pair<Arg1, Arg2>, Anonymous> &obj) : isl::aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::aff>{}, bool>::type = true>
-  aff(const base &obj) : isl::aff(obj) {}
- public:
-  static aff from(const isl::aff &obj) {
-    return aff(obj);
-  }
-  inline explicit aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> add(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> add(const typed::multi_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> add_constant(const typed::val<Anonymous> &v) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> add_constant(long v) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
-  template <typename Arg1>
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> apply(const typed::union_pw_multi_aff<Anonymous, Arg1> &upma2) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> as_aff() const;
-  inline typed::map<pair<Domain2, Range2>, Anonymous> as_map() const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> as_pw_multi_aff() const;
-  inline typed::set<pair<Domain2, Range2>, Anonymous> as_set() const = delete;
-  inline typed::union_map<pair<Domain2, Range2>, Anonymous> as_union_map() const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> at(int pos) const;
-  inline typed::basic_set<pair<Domain2, Range2>> bind(const typed::id<Anonymous> &id) const;
-  inline typed::basic_set<pair<Domain2, Range2>> bind(const std::string &id) const;
-  inline typed::basic_set<pair<Domain2, Range2>> bind(const typed::multi_id<Anonymous> &tuple) const;
-  inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const;
-  inline typed::pw_aff<Range2, Anonymous> bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> ceil() const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> coalesce() const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> cond(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_true, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_false) const;
-  inline typed::multi_val<Anonymous> constant_multi_val() const;
-  inline typed::val<pair<Domain2, Range2>, Anonymous> get_constant_val() const = delete;
-  inline typed::set<pair<Domain2, Range2>> domain() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Anonymous> &space) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> floor() const;
-  inline typed::set<pair<Domain2, Range2>> ge_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
-  inline typed::set<pair<Domain2, Range2>> ge_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> gist(const typed::set<pair<Domain2, Range2>> &context) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> gist(const typed::union_set<pair<Domain2, Range2>> &context) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> gist(const typed::basic_set<pair<Domain2, Range2>> &context) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> gist(const typed::point<pair<Domain2, Range2>> &context) const;
-  inline typed::set<pair<Domain2, Range2>> gt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
-  inline typed::set<pair<Domain2, Range2>> gt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> identity() const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_params(const typed::set<> &set) const;
-  inline typed::set<pair<Domain2, Range2>> le_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
-  inline typed::set<pair<Domain2, Range2>> le_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::aff_list<pair<Domain2, Range2>, Anonymous> list() const;
-  inline typed::set<pair<Domain2, Range2>> lt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
-  inline typed::set<pair<Domain2, Range2>> lt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> max(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> max(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> max_multi_val() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> min(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> min(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> min_multi_val() const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> mod(const typed::val<Anonymous> &mod) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> mod(long mod) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> neg() const;
-  template <typename Domain3>
-  inline typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const;
-  template <typename Arg1, typename Arg2>
-  inline typed::multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> product(const typed::multi_aff<Arg1, Arg2> &multi2) const;
-  template <typename Arg1, typename Arg2>
-  inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> product(const typed::multi_pw_aff<Arg1, Arg2> &multi2) const;
-  template <typename Arg1, typename Arg2>
-  inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> product(const typed::pw_multi_aff<Arg1, Arg2> &pma2) const;
-  template <typename Arg1>
-  inline typed::aff<Arg1, Anonymous> pullback(const typed::multi_aff<Arg1, pair<Domain2, Range2>> &ma) const;
-  inline typed::aff<Anonymous> pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const;
-  template <typename Arg1>
-  inline typed::pw_aff<Arg1, Anonymous> pullback(const typed::multi_pw_aff<Arg1, pair<Domain2, Range2>> &mpa) const;
-  inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa) const;
-  template <typename Arg1>
-  inline typed::pw_aff<Arg1, Anonymous> pullback(const typed::pw_multi_aff<Arg1, pair<Domain2, Range2>> &pma) const;
-  inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const;
-  template <typename Arg1>
-  inline typed::union_pw_aff<Arg1, Anonymous> pullback(const typed::union_pw_multi_aff<Arg1, pair<Domain2, Range2>> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const;
-  template <typename Arg1>
-  inline typed::aff<Arg1, Anonymous> pullback(const typed::aff<Arg1, pair<Domain2, Range2>> &ma) const;
-  inline typed::aff<Anonymous> pullback(const typed::aff<pair<Domain2, Range2>> &ma) const;
-  inline typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> range_factor_range() const = delete;
-  template <typename Arg1>
-  inline typed::multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg1> &multi2) const;
-  template <typename Arg1>
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const;
-  template <typename Arg1>
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const;
-  template <typename Arg1>
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> &pma2) const;
-  template <typename Arg1>
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> &upma2) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> scale(const typed::val<Anonymous> &v) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> scale(long v) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> scale_down(const typed::val<Anonymous> &v) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> scale_down(long v) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> set_at(int pos, const typed::aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  template <typename Arg1>
-  inline typed::multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Arg1>
-  inline typed::multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const std::string &id) const;
-  inline typed::space<pair<Domain2, Range2>, Anonymous> space() const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> sub(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::multi_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> to_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> to_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> to_pw_multi_aff() const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> to_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> to_union_pw_multi_aff() const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &mpa2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &mupa2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
-};
-
-template <>
-struct aff_list<Anonymous> : public isl::aff_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  aff_list() = default;
-  aff_list(const isl::aff_list &obj) : isl::aff_list(obj) {}
-  static aff_list from(const isl::aff_list &obj) {
-    return aff_list(obj);
-  }
-  inline explicit aff_list(const isl::ctx &ctx, int n);
-  inline explicit aff_list(const typed::aff<Anonymous> &el);
-  inline explicit aff_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::aff_list<Anonymous> add(const typed::aff<Anonymous> &el) const;
-  inline typed::aff<Anonymous> at(int index) const;
-  inline typed::aff<Anonymous> get_at(int index) const = delete;
-  inline typed::aff_list<Anonymous> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::aff<Anonymous>)> &fn) const;
-};
-
-template <typename Domain>
-struct aff_list<Domain, Anonymous> : public isl::aff_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  aff_list() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  aff_list(const aff_list<Arg1, Anonymous> &obj) : isl::aff_list(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::aff_list>{}, bool>::type = true>
-  aff_list(const base &obj) : isl::aff_list(obj) {}
- public:
-  static aff_list from(const isl::aff_list &obj) {
-    return aff_list(obj);
-  }
-  inline explicit aff_list(const isl::ctx &ctx, int n);
-  inline explicit aff_list(const typed::aff<Domain, Anonymous> &el);
-  inline explicit aff_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::aff_list<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &el) const;
-  inline typed::aff<Domain, Anonymous> at(int index) const;
-  inline typed::aff<Domain, Anonymous> get_at(int index) const = delete;
-  inline typed::aff_list<Domain, Anonymous> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::aff<Domain, Anonymous>)> &fn) const;
-};
-
-template <typename Domain, typename Range>
-struct basic_map<Domain, Range> : public isl::basic_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  basic_map() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  basic_map(const basic_map<Arg1, Arg2> &obj) : isl::basic_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::basic_map>{}, bool>::type = true>
-  basic_map(const base &obj) : isl::basic_map(obj) {}
- public:
-  static basic_map from(const isl::basic_map &obj) {
-    return basic_map(obj);
-  }
-  inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::basic_map<Domain2, Range> apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> apply_domain(const typed::map<Domain, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
-  template <typename Range2>
-  inline typed::basic_map<Domain, Range2> apply_range(const typed::basic_map<Range, Range2> &bmap2) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> apply_range(const typed::map<Range, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Range, Range2> &umap2) const;
-  inline typed::map<Domain, Range> as_map() const;
-  inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Range> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<Domain, Range> as_union_pw_multi_aff() const;
-  inline typed::set<Range> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::set<Domain> bind_range(const typed::multi_id<Range> &tuple) const;
-  inline typed::map<Domain, Range> coalesce() const;
-  inline typed::map<Domain, Range> curry() const = delete;
-  inline typed::basic_set<Domain, Range> deltas() const = delete;
-  inline typed::basic_map<Domain, Range> detect_equalities() const;
-  inline typed::set<Domain> domain() const;
-  inline typed::map<Domain, Range> domain_factor_domain() const = delete;
-  inline typed::map<Domain, Range> domain_factor_range() const = delete;
-  inline typed::union_map<pair<Domain, Range>, Domain> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<Domain, Range>, Domain> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<Domain, Domain2>, Range> domain_product(const typed::map<Domain2, Range> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, Range> domain_product(const typed::union_map<Domain2, Range> &umap2) const;
-  inline typed::map<Domain, Range> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::union_map<Domain, Range> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const;
-  inline typed::map<Domain, Range> extract_map(const typed::space<Domain, Range> &space) const;
-  inline typed::basic_map<Domain, Range> flatten_domain() const = delete;
-  inline typed::basic_map<Domain, Range> flatten_range() const = delete;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, Range>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const;
-  inline typed::basic_map<Domain, Range> gist(const typed::basic_map<Domain, Range> &context) const;
-  inline typed::map<Domain, Range> gist(const typed::map<Domain, Range> &context) const;
-  inline typed::union_map<Domain, Range> gist(const typed::union_map<Domain, Range> &context) const;
-  inline typed::map<Domain, Range> gist_domain(const typed::set<Domain> &context) const;
-  inline typed::union_map<Domain, Range> gist_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::basic_map<Domain, Range> intersect(const typed::basic_map<Domain, Range> &bmap2) const;
-  inline typed::map<Domain, Range> intersect(const typed::map<Domain, Range> &map2) const;
-  inline typed::union_map<Domain, Range> intersect(const typed::union_map<Domain, Range> &umap2) const;
-  inline typed::basic_map<Domain, Range> intersect_domain(const typed::basic_set<Domain> &bset) const;
-  inline typed::map<Domain, Range> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_map<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::basic_map<Domain, Range> intersect_domain(const typed::point<Domain> &bset) const;
-  inline typed::map<Domain, Range> intersect_params(const typed::set<> &params) const;
-  inline typed::basic_map<Domain, Range> intersect_range(const typed::basic_set<Range> &bset) const;
-  inline typed::map<Domain, Range> intersect_range(const typed::set<Range> &set) const;
-  inline typed::union_map<Domain, Range> intersect_range(const typed::space<Range> &space) const;
-  inline typed::union_map<Domain, Range> intersect_range(const typed::union_set<Range> &uset) const;
-  inline typed::basic_map<Domain, Range> intersect_range(const typed::point<Range> &bset) const;
-  inline typed::map<Domain, Range> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lexmax() const;
-  inline typed::pw_multi_aff<Domain, Range> lexmax_pw_multi_aff() const;
-  inline typed::map<Domain, Range> lexmin() const;
-  inline typed::pw_multi_aff<Domain, Range> lexmin_pw_multi_aff() const;
-  inline typed::map<Domain, Range> lower_bound(const typed::multi_pw_aff<Domain, Range> &lower) const;
-  inline typed::map_list<Domain, Range> map_list() const;
-  inline typed::multi_pw_aff<Domain, Range> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<Domain, Range> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Range> &ma) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const;
-  template <typename Domain2, typename Range2>
-  inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
-  inline typed::map<Domain, Range> project_out_all_params() const;
-  inline typed::set<Range> range() const;
-  inline typed::map<Domain, Range> range_factor_domain() const = delete;
-  inline typed::map<Domain, Range> range_factor_range() const = delete;
-  inline typed::fixed_box<Domain, Range> range_lattice_tile() const;
-  inline typed::union_map<pair<Domain, Range>, Range> range_map() const;
-  template <typename Range2>
-  inline typed::map<Domain, pair<Range, Range2>> range_product(const typed::map<Domain, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, pair<Range, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
-  inline typed::map<Domain, Range> range_reverse() const = delete;
-  inline typed::fixed_box<Domain, Range> range_simple_fixed_box_hull() const;
-  inline typed::basic_map<Range, Domain> reverse() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> set_domain_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> set_domain_tuple(const std::string &id) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain, Range> space() const;
-  inline typed::map<Domain, Range> subtract(const typed::map<Domain, Range> &map2) const;
-  inline typed::union_map<Domain, Range> subtract(const typed::union_map<Domain, Range> &umap2) const;
-  inline typed::union_map<Domain, Range> subtract_domain(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Range> subtract_range(const typed::union_set<Range> &dom) const;
-  inline typed::union_map<Domain, Range> to_union_map() const;
-  inline typed::map<Domain, Range> uncurry() const = delete;
-  inline typed::map<Domain, Range> unite(const typed::basic_map<Domain, Range> &bmap2) const;
-  inline typed::map<Domain, Range> unite(const typed::map<Domain, Range> &map2) const;
-  inline typed::union_map<Domain, Range> unite(const typed::union_map<Domain, Range> &umap2) const;
-  inline typed::map<Domain, Range> upper_bound(const typed::multi_pw_aff<Domain, Range> &upper) const;
-  inline typed::set<pair<Domain, Range>> wrap() const;
-};
-
-template <typename Domain, typename Range, typename Range2>
-struct basic_map<pair<Domain, Range>, Range2> : public isl::basic_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  basic_map() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{} &&
-              std::is_base_of<Range2, Arg3>{},
-            bool>::type = true>
-  basic_map(const basic_map<pair<Arg1, Arg2>, Arg3> &obj) : isl::basic_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::basic_map>{}, bool>::type = true>
-  basic_map(const base &obj) : isl::basic_map(obj) {}
- public:
-  static basic_map from(const isl::basic_map &obj) {
-    return basic_map(obj);
-  }
-  inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::basic_map<Domain2, Range2> apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &bmap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range2> apply_domain(const typed::map<pair<Domain, Range>, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range2> apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const;
-  template <typename Arg3>
-  inline typed::basic_map<pair<Domain, Range>, Arg3> apply_range(const typed::basic_map<Range2, Arg3> &bmap2) const;
-  template <typename Arg3>
-  inline typed::map<pair<Domain, Range>, Arg3> apply_range(const typed::map<Range2, Arg3> &map2) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, Arg3> apply_range(const typed::union_map<Range2, Arg3> &umap2) const;
-  inline typed::map<pair<Domain, Range>, Range2> as_map() const;
-  inline typed::multi_union_pw_aff<pair<Domain, Range>, Range2> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>, Range2> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<pair<Domain, Range>, Range2> as_union_pw_multi_aff() const;
-  inline typed::set<Range2> bind_domain(const typed::multi_id<pair<Domain, Range>> &tuple) const;
-  inline typed::set<pair<Domain, Range>> bind_range(const typed::multi_id<Range2> &tuple) const;
-  inline typed::map<pair<Domain, Range>, Range2> coalesce() const;
-  inline typed::map<Domain, pair<Range, Range2>> curry() const;
-  inline typed::basic_set<pair<Domain, Range>, Range2> deltas() const = delete;
-  inline typed::basic_map<pair<Domain, Range>, Range2> detect_equalities() const;
-  inline typed::set<pair<Domain, Range>> domain() const;
-  inline typed::map<Domain, Range2> domain_factor_domain() const;
-  inline typed::map<Range, Range2> domain_factor_range() const;
-  inline typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::map<Domain2, Range2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::union_map<Domain2, Range2> &umap2) const;
-  inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::union_map<pair<Domain, Range>, Range2> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const;
-  inline typed::map<pair<Domain, Range>, Range2> extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const;
-  inline typed::basic_map<Anonymous, Range2> flatten_domain() const;
-  inline typed::basic_map<pair<Domain, Range>, Range2> flatten_range() const = delete;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<Domain, Range>, Range2>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const;
-  inline typed::basic_map<pair<Domain, Range>, Range2> gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const;
-  inline typed::map<pair<Domain, Range>, Range2> gist(const typed::map<pair<Domain, Range>, Range2> &context) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const;
-  inline typed::map<pair<Domain, Range>, Range2> gist_domain(const typed::set<pair<Domain, Range>> &context) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
-  inline typed::basic_map<pair<Domain, Range>, Range2> intersect(const typed::basic_map<pair<Domain, Range>, Range2> &bmap2) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect(const typed::map<pair<Domain, Range>, Range2> &map2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::basic_map<pair<Domain, Range>, Range2> intersect_domain(const typed::basic_set<pair<Domain, Range>> &bset) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_domain(const typed::set<pair<Domain, Range>> &set) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::space<pair<Domain, Range>> &space) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
-  inline typed::basic_map<pair<Domain, Range>, Range2> intersect_domain(const typed::point<pair<Domain, Range>> &bset) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_params(const typed::set<> &params) const;
-  inline typed::basic_map<pair<Domain, Range>, Range2> intersect_range(const typed::basic_set<Range2> &bset) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_range(const typed::set<Range2> &set) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::space<Range2> &space) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::union_set<Range2> &uset) const;
-  inline typed::basic_map<pair<Domain, Range>, Range2> intersect_range(const typed::point<Range2> &bset) const;
-  inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lexmax() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>, Range2> lexmax_pw_multi_aff() const;
-  inline typed::map<pair<Domain, Range>, Range2> lexmin() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>, Range2> lexmin_pw_multi_aff() const;
-  inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &lower) const;
-  inline typed::map_list<pair<Domain, Range>, Range2> map_list() const;
-  inline typed::multi_pw_aff<pair<Domain, Range>, Range2> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<pair<Domain, Range>, Range2> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range2> preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range2> preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range2> preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range2> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
-  template <typename Arg3>
-  inline typed::map<pair<Domain, Range>, Arg3> preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const;
-  template <typename Arg3>
-  inline typed::map<pair<Domain, Range>, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::map<Domain2, Arg3> &map2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
-  inline typed::map<pair<Domain, Range>, Range2> project_out_all_params() const;
-  inline typed::set<Range2> range() const;
-  inline typed::map<pair<Domain, Range>, Range2> range_factor_domain() const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> range_factor_range() const = delete;
-  inline typed::fixed_box<pair<Domain, Range>, Range2> range_lattice_tile() const;
-  inline typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> range_map() const;
-  template <typename Arg3>
-  inline typed::map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::map<pair<Domain, Range>, Arg3> &map2) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const;
-  inline typed::map<pair<Domain, Range>, Range2> range_reverse() const = delete;
-  inline typed::fixed_box<pair<Domain, Range>, Range2> range_simple_fixed_box_hull() const;
-  inline typed::basic_map<Range2, pair<Domain, Range>> reverse() const;
-  inline typed::map<pair<Domain, Range>, Range2> set_domain_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> set_domain_tuple(const std::string &id) const = delete;
-  template <typename Arg2>
-  inline typed::map<pair<Domain, Range>, Arg2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Arg2>
-  inline typed::map<pair<Domain, Range>, Arg2> set_range_tuple(const std::string &id) const;
-  inline typed::space<pair<Domain, Range>, Range2> space() const;
-  inline typed::map<pair<Domain, Range>, Range2> subtract(const typed::map<pair<Domain, Range>, Range2> &map2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::union_set<Range2> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> to_union_map() const;
-  inline typed::map<pair<Domain, Range>, Range2> uncurry() const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> unite(const typed::basic_map<pair<Domain, Range>, Range2> &bmap2) const;
-  inline typed::map<pair<Domain, Range>, Range2> unite(const typed::map<pair<Domain, Range>, Range2> &map2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &upper) const;
-  inline typed::set<pair<pair<Domain, Range>, Range2>> wrap() const;
-};
-
-template <typename Domain>
-struct basic_map<Domain, Domain> : public isl::basic_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  basic_map() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  basic_map(const basic_map<Arg1, Arg1> &obj) : isl::basic_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::basic_map>{}, bool>::type = true>
-  basic_map(const base &obj) : isl::basic_map(obj) {}
- public:
-  static basic_map from(const isl::basic_map &obj) {
-    return basic_map(obj);
-  }
-  inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::basic_map<Domain2, Domain> apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> apply_domain(const typed::map<Domain, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Domain> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
-  template <typename Range2>
-  inline typed::basic_map<Domain, Range2> apply_range(const typed::basic_map<Domain, Range2> &bmap2) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> apply_range(const typed::map<Domain, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Domain, Range2> &umap2) const;
-  inline typed::map<Domain, Domain> as_map() const;
-  inline typed::multi_union_pw_aff<Domain, Domain> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Domain> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<Domain, Domain> as_union_pw_multi_aff() const;
-  inline typed::set<Domain> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::set<Domain> bind_range(const typed::multi_id<Domain> &tuple) const;
-  inline typed::map<Domain, Domain> coalesce() const;
-  inline typed::map<Domain, Domain> curry() const = delete;
-  inline typed::basic_set<Domain> deltas() const;
-  inline typed::basic_map<Domain, Domain> detect_equalities() const;
-  inline typed::set<Domain> domain() const;
-  inline typed::map<Domain, Domain> domain_factor_domain() const = delete;
-  inline typed::map<Domain, Domain> domain_factor_range() const = delete;
-  inline typed::union_map<pair<Domain, Domain>, Domain> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<Domain, Domain2>, Domain> domain_product(const typed::map<Domain2, Domain> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, Domain> domain_product(const typed::union_map<Domain2, Domain> &umap2) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> eq_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::union_map<Domain, Domain> eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const;
-  inline bool every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const;
-  inline typed::map<Domain, Domain> extract_map(const typed::space<Domain, Domain> &space) const;
-  inline typed::basic_map<Domain, Domain> flatten_domain() const = delete;
-  inline typed::basic_map<Domain, Domain> flatten_range() const = delete;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, Domain>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const;
-  inline typed::basic_map<Domain, Domain> gist(const typed::basic_map<Domain, Domain> &context) const;
-  inline typed::map<Domain, Domain> gist(const typed::map<Domain, Domain> &context) const;
-  inline typed::union_map<Domain, Domain> gist(const typed::union_map<Domain, Domain> &context) const;
-  inline typed::map<Domain, Domain> gist_domain(const typed::set<Domain> &context) const;
-  inline typed::union_map<Domain, Domain> gist_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::basic_map<Domain, Domain> intersect(const typed::basic_map<Domain, Domain> &bmap2) const;
-  inline typed::map<Domain, Domain> intersect(const typed::map<Domain, Domain> &map2) const;
-  inline typed::union_map<Domain, Domain> intersect(const typed::union_map<Domain, Domain> &umap2) const;
-  inline typed::basic_map<Domain, Domain> intersect_domain(const typed::basic_set<Domain> &bset) const;
-  inline typed::map<Domain, Domain> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_map<Domain, Domain> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, Domain> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::basic_map<Domain, Domain> intersect_domain(const typed::point<Domain> &bset) const;
-  inline typed::map<Domain, Domain> intersect_params(const typed::set<> &params) const;
-  inline typed::basic_map<Domain, Domain> intersect_range(const typed::basic_set<Domain> &bset) const;
-  inline typed::map<Domain, Domain> intersect_range(const typed::set<Domain> &set) const;
-  inline typed::union_map<Domain, Domain> intersect_range(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, Domain> intersect_range(const typed::union_set<Domain> &uset) const;
-  inline typed::basic_map<Domain, Domain> intersect_range(const typed::point<Domain> &bset) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_ge_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_gt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_le_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_lt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
-  inline typed::map<Domain, Domain> lexmax() const;
-  inline typed::pw_multi_aff<Domain, Domain> lexmax_pw_multi_aff() const;
-  inline typed::map<Domain, Domain> lexmin() const;
-  inline typed::pw_multi_aff<Domain, Domain> lexmin_pw_multi_aff() const;
-  inline typed::map<Domain, Domain> lower_bound(const typed::multi_pw_aff<Domain, Domain> &lower) const;
-  inline typed::map_list<Domain, Domain> map_list() const;
-  inline typed::multi_pw_aff<Domain, Domain> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<Domain, Domain> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Domain> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Domain> &ma) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const;
-  template <typename Domain2, typename Range2>
-  inline typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
-  inline typed::map<Domain, Domain> project_out_all_params() const;
-  inline typed::set<Domain> range() const;
-  inline typed::map<Domain, Domain> range_factor_domain() const = delete;
-  inline typed::map<Domain, Domain> range_factor_range() const = delete;
-  inline typed::fixed_box<Domain, Domain> range_lattice_tile() const;
-  inline typed::union_map<pair<Domain, Domain>, Domain> range_map() const;
-  template <typename Range2>
-  inline typed::map<Domain, pair<Domain, Range2>> range_product(const typed::map<Domain, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, pair<Domain, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
-  inline typed::map<Domain, Domain> range_reverse() const = delete;
-  inline typed::fixed_box<Domain, Domain> range_simple_fixed_box_hull() const;
-  inline typed::basic_map<Domain, Domain> reverse() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> set_domain_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> set_domain_tuple(const std::string &id) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain, Domain> space() const;
-  inline typed::map<Domain, Domain> subtract(const typed::map<Domain, Domain> &map2) const;
-  inline typed::union_map<Domain, Domain> subtract(const typed::union_map<Domain, Domain> &umap2) const;
-  inline typed::union_map<Domain, Domain> subtract_domain(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> subtract_range(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> to_union_map() const;
-  inline typed::map<Domain, Domain> uncurry() const = delete;
-  inline typed::map<Domain, Domain> unite(const typed::basic_map<Domain, Domain> &bmap2) const;
-  inline typed::map<Domain, Domain> unite(const typed::map<Domain, Domain> &map2) const;
-  inline typed::union_map<Domain, Domain> unite(const typed::union_map<Domain, Domain> &umap2) const;
-  inline typed::map<Domain, Domain> upper_bound(const typed::multi_pw_aff<Domain, Domain> &upper) const;
-  inline typed::set<pair<Domain, Domain>> wrap() const;
-};
-
-template <typename Domain, typename Range, typename Range2>
-struct basic_map<Domain, pair<Range, Range2>> : public isl::basic_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  basic_map() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{} &&
-              std::is_base_of<Range2, Arg3>{},
-            bool>::type = true>
-  basic_map(const basic_map<Arg1, pair<Arg2, Arg3>> &obj) : isl::basic_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::basic_map>{}, bool>::type = true>
-  basic_map(const base &obj) : isl::basic_map(obj) {}
- public:
-  static basic_map from(const isl::basic_map &obj) {
-    return basic_map(obj);
-  }
-  inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::basic_map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<Domain, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
-  template <typename Arg3>
-  inline typed::basic_map<Domain, Arg3> apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &bmap2) const;
-  template <typename Arg3>
-  inline typed::map<Domain, Arg3> apply_range(const typed::map<pair<Range, Range2>, Arg3> &map2) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, Arg3> apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const;
-  inline typed::map<Domain, pair<Range, Range2>> as_map() const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> as_union_pw_multi_aff() const;
-  inline typed::set<pair<Range, Range2>> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::set<Domain> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
-  inline typed::map<Domain, pair<Range, Range2>> coalesce() const;
-  inline typed::map<Domain, pair<Range, Range2>> curry() const = delete;
-  inline typed::basic_set<Domain, pair<Range, Range2>> deltas() const = delete;
-  inline typed::basic_map<Domain, pair<Range, Range2>> detect_equalities() const;
-  inline typed::set<Domain> domain() const;
-  inline typed::map<Domain, pair<Range, Range2>> domain_factor_domain() const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> domain_factor_range() const = delete;
-  inline typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
-  inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::union_map<Domain, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const;
-  inline typed::map<Domain, pair<Range, Range2>> extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const;
-  inline typed::basic_map<Domain, pair<Range, Range2>> flatten_domain() const = delete;
-  inline typed::basic_map<Domain, Anonymous> flatten_range() const;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, pair<Range, Range2>>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const;
-  inline typed::basic_map<Domain, pair<Range, Range2>> gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const;
-  inline typed::map<Domain, pair<Range, Range2>> gist(const typed::map<Domain, pair<Range, Range2>> &context) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const;
-  inline typed::map<Domain, pair<Range, Range2>> gist_domain(const typed::set<Domain> &context) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::basic_map<Domain, pair<Range, Range2>> intersect(const typed::basic_map<Domain, pair<Range, Range2>> &bmap2) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect(const typed::map<Domain, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::basic_map<Domain, pair<Range, Range2>> intersect_domain(const typed::basic_set<Domain> &bset) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::basic_map<Domain, pair<Range, Range2>> intersect_domain(const typed::point<Domain> &bset) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &params) const;
-  inline typed::basic_map<Domain, pair<Range, Range2>> intersect_range(const typed::basic_set<pair<Range, Range2>> &bset) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_range(const typed::set<pair<Range, Range2>> &set) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
-  inline typed::basic_map<Domain, pair<Range, Range2>> intersect_range(const typed::point<pair<Range, Range2>> &bset) const;
-  inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lexmax() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> lexmax_pw_multi_aff() const;
-  inline typed::map<Domain, pair<Range, Range2>> lexmin() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> lexmin_pw_multi_aff() const;
-  inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &lower) const;
-  inline typed::map_list<Domain, pair<Range, Range2>> map_list() const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Arg3>
-  inline typed::map<Domain, Arg3> preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const;
-  template <typename Arg3>
-  inline typed::map<Domain, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::map<Domain2, Arg3> &map2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
-  inline typed::map<Domain, pair<Range, Range2>> project_out_all_params() const;
-  inline typed::set<pair<Range, Range2>> range() const;
-  inline typed::map<Domain, Range> range_factor_domain() const;
-  inline typed::map<Domain, Range2> range_factor_range() const;
-  inline typed::fixed_box<Domain, pair<Range, Range2>> range_lattice_tile() const;
-  inline typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
-  template <typename Arg3>
-  inline typed::map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::map<Domain, Arg3> &map2) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_map<Domain, Arg3> &umap2) const;
-  inline typed::map<Domain, pair<Range2, Range>> range_reverse() const;
-  inline typed::fixed_box<Domain, pair<Range, Range2>> range_simple_fixed_box_hull() const;
-  inline typed::basic_map<pair<Range, Range2>, Domain> reverse() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> set_domain_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> set_domain_tuple(const std::string &id) const;
-  inline typed::map<Domain, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> space() const;
-  inline typed::map<Domain, pair<Range, Range2>> subtract(const typed::map<Domain, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> to_union_map() const;
-  inline typed::map<pair<Domain, Range>, Range2> uncurry() const;
-  inline typed::map<Domain, pair<Range, Range2>> unite(const typed::basic_map<Domain, pair<Range, Range2>> &bmap2) const;
-  inline typed::map<Domain, pair<Range, Range2>> unite(const typed::map<Domain, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &upper) const;
-  inline typed::set<pair<Domain, pair<Range, Range2>>> wrap() const;
-};
-
-template <typename T1, typename T2>
-struct basic_map<pair<T1, T2>, pair<T1, T2>> : public isl::basic_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  basic_map() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<T1, Arg1>{} &&
-              std::is_base_of<T2, Arg2>{},
-            bool>::type = true>
-  basic_map(const basic_map<pair<Arg1, Arg2>, pair<Arg1, Arg2>> &obj) : isl::basic_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::basic_map>{}, bool>::type = true>
-  basic_map(const base &obj) : isl::basic_map(obj) {}
- public:
-  static basic_map from(const isl::basic_map &obj) {
-    return basic_map(obj);
-  }
-  inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::basic_map<Domain2, pair<T1, T2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &bmap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<T1, T2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<T1, T2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
-  template <typename Range2>
-  inline typed::basic_map<pair<T1, T2>, Range2> apply_range(const typed::basic_map<pair<T1, T2>, Range2> &bmap2) const;
-  template <typename Range2>
-  inline typed::map<pair<T1, T2>, Range2> apply_range(const typed::map<pair<T1, T2>, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, Range2> apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> as_map() const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> as_union_pw_multi_aff() const;
-  inline typed::set<pair<T1, T2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
-  inline typed::set<pair<T1, T2>> bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> coalesce() const;
-  inline typed::map<T1, pair<T2, pair<T1, T2>>> curry() const;
-  inline typed::basic_set<pair<T1, T2>> deltas() const;
-  inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> detect_equalities() const;
-  inline typed::set<pair<T1, T2>> domain() const;
-  inline typed::map<T1, pair<T1, T2>> domain_factor_domain() const;
-  inline typed::map<T2, pair<T1, T2>> domain_factor_range() const;
-  inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::map<Domain2, pair<T1, T2>> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const;
-  inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const;
-  inline typed::basic_map<Anonymous, pair<T1, T2>> flatten_domain() const;
-  inline typed::basic_map<pair<T1, T2>, Anonymous> flatten_range() const;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<T1, T2>>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const;
-  inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::set<pair<T1, T2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::basic_set<pair<T1, T2>> &bset) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::point<pair<T1, T2>> &bset) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::set<> &params) const;
-  inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::basic_set<pair<T1, T2>> &bset) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::set<pair<T1, T2>> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::point<pair<T1, T2>> &bset) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lexmax() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> lexmax_pw_multi_aff() const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lexmin() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> lexmin_pw_multi_aff() const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
-  inline typed::map_list<pair<T1, T2>, pair<T1, T2>> map_list() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
-  template <typename Range2>
-  inline typed::map<pair<T1, T2>, Range2> preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const;
-  template <typename Range2>
-  inline typed::map<pair<T1, T2>, Range2> preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const;
-  template <typename Domain2, typename Range2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> project_out_all_params() const;
-  inline typed::set<pair<T1, T2>> range() const;
-  inline typed::map<pair<T1, T2>, T1> range_factor_domain() const;
-  inline typed::map<pair<T1, T2>, T2> range_factor_range() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> range_lattice_tile() const;
-  inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> range_map() const;
-  template <typename Range2>
-  inline typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::map<pair<T1, T2>, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<T2, T1>> range_reverse() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> range_simple_fixed_box_hull() const;
-  inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> reverse() const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> set_domain_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> set_domain_tuple(const std::string &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<pair<T1, T2>, pair<T1, T2>> space() const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::union_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> to_union_map() const;
-  inline typed::map<pair<pair<T1, T2>, T1>, T2> uncurry() const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
-  inline typed::set<pair<pair<T1, T2>, pair<T1, T2>>> wrap() const;
-};
-
-template <typename T1, typename T2, typename Range, typename Range2>
-struct basic_map<pair<T1, T2>, pair<Range, Range2>> : public isl::basic_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  basic_map() = default;
-  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
-            typename std::enable_if<
-              std::is_base_of<T1, Arg1>{} &&
-              std::is_base_of<T2, Arg2>{} &&
-              std::is_base_of<Range, Arg3>{} &&
-              std::is_base_of<Range2, Arg4>{},
-            bool>::type = true>
-  basic_map(const basic_map<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::basic_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::basic_map>{}, bool>::type = true>
-  basic_map(const base &obj) : isl::basic_map(obj) {}
- public:
-  static basic_map from(const isl::basic_map &obj) {
-    return basic_map(obj);
-  }
-  inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::basic_map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &bmap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
-  template <typename Arg2>
-  inline typed::basic_map<pair<T1, T2>, Arg2> apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &bmap2) const;
-  template <typename Arg2>
-  inline typed::map<pair<T1, T2>, Arg2> apply_range(const typed::map<pair<Range, Range2>, Arg2> &map2) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, Arg2> apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> as_map() const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_union_pw_multi_aff() const;
-  inline typed::set<pair<Range, Range2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
-  inline typed::set<pair<T1, T2>> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
-  inline typed::map<T1, pair<T2, pair<Range, Range2>>> curry() const;
-  inline typed::basic_set<pair<T1, T2>, pair<Range, Range2>> deltas() const = delete;
-  inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> detect_equalities() const;
-  inline typed::set<pair<T1, T2>> domain() const;
-  inline typed::map<T1, pair<Range, Range2>> domain_factor_domain() const;
-  inline typed::map<T2, pair<Range, Range2>> domain_factor_range() const;
-  inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
-  inline typed::basic_map<Anonymous, pair<Range, Range2>> flatten_domain() const;
-  inline typed::basic_map<pair<T1, T2>, Anonymous> flatten_range() const;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const;
-  inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::set<pair<T1, T2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::basic_set<pair<T1, T2>> &bset) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::point<pair<T1, T2>> &bset) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &params) const;
-  inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::basic_set<pair<Range, Range2>> &bset) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::set<pair<Range, Range2>> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
-  inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::point<pair<Range, Range2>> &bset) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lexmax() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> lexmax_pw_multi_aff() const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lexmin() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> lexmin_pw_multi_aff() const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
-  inline typed::map_list<pair<T1, T2>, pair<Range, Range2>> map_list() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
-  template <typename Arg2>
-  inline typed::map<pair<T1, T2>, Arg2> preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const;
-  template <typename Arg2>
-  inline typed::map<pair<T1, T2>, Arg2> preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, Arg2> preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::map<Domain2, Arg2> &map2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::union_map<Domain2, Arg2> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> project_out_all_params() const;
-  inline typed::set<pair<Range, Range2>> range() const;
-  inline typed::map<pair<T1, T2>, Range> range_factor_domain() const;
-  inline typed::map<pair<T1, T2>, Range2> range_factor_range() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> range_lattice_tile() const;
-  inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
-  template <typename Arg2>
-  inline typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::map<pair<T1, T2>, Arg2> &map2) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<Range2, Range>> range_reverse() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> range_simple_fixed_box_hull() const;
-  inline typed::basic_map<pair<Range, Range2>, pair<T1, T2>> reverse() const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const std::string &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> space() const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> to_union_map() const;
-  inline typed::map<pair<pair<T1, T2>, Range>, Range2> uncurry() const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
-  inline typed::set<pair<pair<T1, T2>, pair<Range, Range2>>> wrap() const;
-};
-
-template <>
-struct basic_set<> : public isl::basic_set {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  basic_set() = default;
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::basic_set>{}, bool>::type = true>
-  basic_set(const base &obj) : isl::basic_set(obj) {}
- public:
-  static basic_set from(const isl::basic_set &obj) {
-    return basic_set(obj);
-  }
-  inline /* implicit */ basic_set(const typed::point<> &pnt);
-  inline explicit basic_set(const isl::ctx &ctx, const std::string &str);
-  inline typed::basic_set<> apply(const typed::basic_map<> &bmap) const = delete;
-  inline typed::set<> apply(const typed::map<> &map) const = delete;
-  inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete;
-  inline typed::pw_multi_aff<> as_pw_multi_aff() const = delete;
-  inline typed::set<> as_set() const = delete;
-  inline typed::set<> bind(const typed::multi_id<> &tuple) const = delete;
-  inline typed::set<> coalesce() const;
-  inline typed::basic_set<> detect_equalities() const;
-  inline bool every_set(const std::function<bool(typed::set<>)> &test) const;
-  inline typed::set<> extract_set(const typed::space<> &space) const;
-  inline void foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const;
-  inline void foreach_point(const std::function<void(typed::point<>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<>)> &fn) const;
-  inline typed::basic_set<> gist(const typed::basic_set<> &context) const;
-  inline typed::set<> gist(const typed::set<> &context) const;
-  inline typed::union_set<> gist(const typed::union_set<> &context) const;
-  inline typed::basic_set<> gist(const typed::point<> &context) const;
-  inline typed::map<> identity() const = delete;
-  inline typed::pw_aff<Anonymous> indicator_function() const;
-  inline typed::map<> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::basic_set<> intersect(const typed::basic_set<> &bset2) const;
-  inline typed::set<> intersect(const typed::set<> &set2) const;
-  inline typed::union_set<> intersect(const typed::union_set<> &uset2) const;
-  inline typed::basic_set<> intersect(const typed::point<> &bset2) const;
-  inline typed::basic_set<> intersect_params(const typed::basic_set<> &bset2) const = delete;
-  inline typed::set<> intersect_params(const typed::set<> &params) const = delete;
-  inline typed::basic_set<> intersect_params(const typed::point<> &bset2) const = delete;
-  inline typed::set<> lexmax() const = delete;
-  inline typed::pw_multi_aff<> lexmax_pw_multi_aff() const = delete;
-  inline typed::set<> lexmin() const = delete;
-  inline typed::pw_multi_aff<> lexmin_pw_multi_aff() const = delete;
-  inline typed::set<> lower_bound(const typed::multi_pw_aff<> &lower) const = delete;
-  inline typed::set<> lower_bound(const typed::multi_val<> &lower) const = delete;
-  inline typed::multi_pw_aff<> max_multi_pw_aff() const = delete;
-  inline typed::val<> max_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_pw_aff<> min_multi_pw_aff() const = delete;
-  inline typed::val<> min_val(const typed::aff<> &obj) const = delete;
-  inline typed::basic_set<> params() const = delete;
-  inline typed::multi_val<> plain_multi_val_if_fixed() const = delete;
-  inline typed::set<> preimage(const typed::multi_aff<> &ma) const = delete;
-  inline typed::set<> preimage(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::set<> preimage(const typed::pw_multi_aff<> &pma) const = delete;
-  inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete;
-  inline typed::set<> product(const typed::set<> &set2) const = delete;
-  inline typed::set<> project_out_all_params() const;
-  inline typed::set<> project_out_param(const typed::id<Anonymous> &id) const;
-  inline typed::set<> project_out_param(const std::string &id) const;
-  inline typed::set<> project_out_param(const typed::id_list<Anonymous> &list) const;
-  inline typed::pw_multi_aff<> pw_multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
-  inline typed::set_list<> set_list() const;
-  inline typed::fixed_box<> simple_fixed_box_hull() const = delete;
-  inline typed::space<> space() const;
-  inline typed::set<> subtract(const typed::set<> &set2) const;
-  inline typed::union_set<> subtract(const typed::union_set<> &uset2) const;
-  inline typed::set<> to_set() const;
-  inline typed::union_set<> to_union_set() const;
-  inline typed::map<> translation() const = delete;
-  template <typename Domain>
-  inline typed::set<Domain> unbind_params(const typed::multi_id<Domain> &tuple) const;
-  inline typed::map<> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::set<> unite(const typed::basic_set<> &bset2) const;
-  inline typed::set<> unite(const typed::set<> &set2) const;
-  inline typed::union_set<> unite(const typed::union_set<> &uset2) const;
-  inline typed::set<> unite(const typed::point<> &bset2) const;
-  inline typed::map<> unwrap() const = delete;
-  inline typed::set<> upper_bound(const typed::multi_pw_aff<> &upper) const = delete;
-  inline typed::set<> upper_bound(const typed::multi_val<> &upper) const = delete;
-};
-
-template <typename Domain>
-struct basic_set<Domain> : public isl::basic_set {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  basic_set() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  basic_set(const basic_set<Arg1> &obj) : isl::basic_set(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::basic_set>{}, bool>::type = true>
-  basic_set(const base &obj) : isl::basic_set(obj) {}
- public:
-  static basic_set from(const isl::basic_set &obj) {
-    return basic_set(obj);
-  }
-  inline /* implicit */ basic_set(const typed::point<Domain> &pnt);
-  inline explicit basic_set(const isl::ctx &ctx, const std::string &str);
-  template <typename Range>
-  inline typed::basic_set<Range> apply(const typed::basic_map<Domain, Range> &bmap) const;
-  template <typename Range>
-  inline typed::set<Range> apply(const typed::map<Domain, Range> &map) const;
-  template <typename Range>
-  inline typed::union_set<Range> apply(const typed::union_map<Domain, Range> &umap) const;
-  inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
-  inline typed::set<Domain> as_set() const;
-  inline typed::set<> bind(const typed::multi_id<Domain> &tuple) const;
-  inline typed::set<Domain> coalesce() const;
-  inline typed::basic_set<Domain> detect_equalities() const;
-  inline bool every_set(const std::function<bool(typed::set<Domain>)> &test) const;
-  inline typed::set<Domain> extract_set(const typed::space<Domain> &space) const;
-  inline void foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const;
-  inline void foreach_point(const std::function<void(typed::point<Domain>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<Domain>)> &fn) const;
-  inline typed::basic_set<Domain> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::set<Domain> gist(const typed::set<Domain> &context) const;
-  inline typed::union_set<Domain> gist(const typed::union_set<Domain> &context) const;
-  inline typed::basic_set<Domain> gist(const typed::point<Domain> &context) const;
-  inline typed::map<Domain, Domain> identity() const;
-  inline typed::pw_aff<Domain, Anonymous> indicator_function() const;
-  template <typename Arg1>
-  inline typed::map<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
-  inline typed::basic_set<Domain> intersect(const typed::basic_set<Domain> &bset2) const;
-  inline typed::set<Domain> intersect(const typed::set<Domain> &set2) const;
-  inline typed::union_set<Domain> intersect(const typed::union_set<Domain> &uset2) const;
-  inline typed::basic_set<Domain> intersect(const typed::point<Domain> &bset2) const;
-  inline typed::basic_set<Domain> intersect_params(const typed::basic_set<> &bset2) const;
-  inline typed::set<Domain> intersect_params(const typed::set<> &params) const;
-  inline typed::basic_set<Domain> intersect_params(const typed::point<> &bset2) const;
-  inline typed::set<Domain> lexmax() const;
-  inline typed::pw_multi_aff<Domain> lexmax_pw_multi_aff() const;
-  inline typed::set<Domain> lexmin() const;
-  inline typed::pw_multi_aff<Domain> lexmin_pw_multi_aff() const;
-  inline typed::set<Domain> lower_bound(const typed::multi_pw_aff<Domain> &lower) const;
-  inline typed::set<Domain> lower_bound(const typed::multi_val<Domain> &lower) const;
-  inline typed::multi_pw_aff<Domain> max_multi_pw_aff() const;
-  inline typed::val<Domain> max_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_pw_aff<Domain> min_multi_pw_aff() const;
-  inline typed::val<Domain> min_val(const typed::aff<> &obj) const = delete;
-  inline typed::basic_set<> params() const;
-  inline typed::multi_val<Domain> plain_multi_val_if_fixed() const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Range>
-  inline typed::set<pair<Domain, Range>> product(const typed::set<Range> &set2) const;
-  inline typed::set<Domain> project_out_all_params() const;
-  inline typed::set<Domain> project_out_param(const typed::id<Anonymous> &id) const;
-  inline typed::set<Domain> project_out_param(const std::string &id) const;
-  inline typed::set<Domain> project_out_param(const typed::id_list<Anonymous> &list) const;
-  template <typename Range>
-  inline typed::pw_multi_aff<Domain, Range> pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const;
-  inline typed::set_list<Domain> set_list() const;
-  inline typed::fixed_box<Domain> simple_fixed_box_hull() const;
-  inline typed::space<Domain> space() const;
-  inline typed::set<Domain> subtract(const typed::set<Domain> &set2) const;
-  inline typed::union_set<Domain> subtract(const typed::union_set<Domain> &uset2) const;
-  inline typed::set<Domain> to_set() const;
-  inline typed::union_set<Domain> to_union_set() const;
-  inline typed::map<Domain, Domain> translation() const;
-  inline typed::set<Domain> unbind_params(const typed::multi_id<> &tuple) const = delete;
-  template <typename Arg1>
-  inline typed::map<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
-  inline typed::set<Domain> unite(const typed::basic_set<Domain> &bset2) const;
-  inline typed::set<Domain> unite(const typed::set<Domain> &set2) const;
-  inline typed::union_set<Domain> unite(const typed::union_set<Domain> &uset2) const;
-  inline typed::set<Domain> unite(const typed::point<Domain> &bset2) const;
-  inline typed::map<Domain> unwrap() const = delete;
-  inline typed::set<Domain> upper_bound(const typed::multi_pw_aff<Domain> &upper) const;
-  inline typed::set<Domain> upper_bound(const typed::multi_val<Domain> &upper) const;
-};
-
-template <typename Domain, typename Range>
-struct basic_set<pair<Domain, Range>> : public isl::basic_set {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  basic_set() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  basic_set(const basic_set<pair<Arg1, Arg2>> &obj) : isl::basic_set(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::basic_set>{}, bool>::type = true>
-  basic_set(const base &obj) : isl::basic_set(obj) {}
- public:
-  static basic_set from(const isl::basic_set &obj) {
-    return basic_set(obj);
-  }
-  inline /* implicit */ basic_set(const typed::point<pair<Domain, Range>> &pnt);
-  inline explicit basic_set(const isl::ctx &ctx, const std::string &str);
-  template <typename Arg2>
-  inline typed::basic_set<Arg2> apply(const typed::basic_map<pair<Domain, Range>, Arg2> &bmap) const;
-  template <typename Arg2>
-  inline typed::set<Arg2> apply(const typed::map<pair<Domain, Range>, Arg2> &map) const;
-  template <typename Arg2>
-  inline typed::union_set<Arg2> apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const;
-  inline typed::pw_multi_aff<pair<Domain, Range>> as_pw_multi_aff() const;
-  inline typed::set<pair<Domain, Range>> as_set() const;
-  inline typed::set<> bind(const typed::multi_id<pair<Domain, Range>> &tuple) const;
-  inline typed::set<pair<Domain, Range>> coalesce() const;
-  inline typed::basic_set<pair<Domain, Range>> detect_equalities() const;
-  inline bool every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const;
-  inline typed::set<pair<Domain, Range>> extract_set(const typed::space<pair<Domain, Range>> &space) const;
-  inline void foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const;
-  inline void foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const;
-  inline typed::basic_set<pair<Domain, Range>> gist(const typed::basic_set<pair<Domain, Range>> &context) const;
-  inline typed::set<pair<Domain, Range>> gist(const typed::set<pair<Domain, Range>> &context) const;
-  inline typed::union_set<pair<Domain, Range>> gist(const typed::union_set<pair<Domain, Range>> &context) const;
-  inline typed::basic_set<pair<Domain, Range>> gist(const typed::point<pair<Domain, Range>> &context) const;
-  inline typed::map<pair<Domain, Range>, pair<Domain, Range>> identity() const;
-  inline typed::pw_aff<pair<Domain, Range>, Anonymous> indicator_function() const;
-  template <typename Arg2>
-  inline typed::map<Arg2, pair<Domain, Range>> insert_domain(const typed::space<Arg2> &domain) const;
-  inline typed::basic_set<pair<Domain, Range>> intersect(const typed::basic_set<pair<Domain, Range>> &bset2) const;
-  inline typed::set<pair<Domain, Range>> intersect(const typed::set<pair<Domain, Range>> &set2) const;
-  inline typed::union_set<pair<Domain, Range>> intersect(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::basic_set<pair<Domain, Range>> intersect(const typed::point<pair<Domain, Range>> &bset2) const;
-  inline typed::basic_set<pair<Domain, Range>> intersect_params(const typed::basic_set<> &bset2) const;
-  inline typed::set<pair<Domain, Range>> intersect_params(const typed::set<> &params) const;
-  inline typed::basic_set<pair<Domain, Range>> intersect_params(const typed::point<> &bset2) const;
-  inline typed::set<pair<Domain, Range>> lexmax() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>> lexmax_pw_multi_aff() const;
-  inline typed::set<pair<Domain, Range>> lexmin() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>> lexmin_pw_multi_aff() const;
-  inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const;
-  inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const;
-  inline typed::multi_pw_aff<pair<Domain, Range>> max_multi_pw_aff() const;
-  inline typed::val<pair<Domain, Range>> max_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_pw_aff<pair<Domain, Range>> min_multi_pw_aff() const;
-  inline typed::val<pair<Domain, Range>> min_val(const typed::aff<> &obj) const = delete;
-  inline typed::basic_set<> params() const;
-  inline typed::multi_val<pair<Domain, Range>> plain_multi_val_if_fixed() const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
-  template <typename Arg2>
-  inline typed::set<pair<pair<Domain, Range>, Arg2>> product(const typed::set<Arg2> &set2) const;
-  inline typed::set<pair<Domain, Range>> project_out_all_params() const;
-  inline typed::set<pair<Domain, Range>> project_out_param(const typed::id<Anonymous> &id) const;
-  inline typed::set<pair<Domain, Range>> project_out_param(const std::string &id) const;
-  inline typed::set<pair<Domain, Range>> project_out_param(const typed::id_list<Anonymous> &list) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<pair<Domain, Range>, Arg2> pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const;
-  inline typed::set_list<pair<Domain, Range>> set_list() const;
-  inline typed::fixed_box<pair<Domain, Range>> simple_fixed_box_hull() const;
-  inline typed::space<pair<Domain, Range>> space() const;
-  inline typed::set<pair<Domain, Range>> subtract(const typed::set<pair<Domain, Range>> &set2) const;
-  inline typed::union_set<pair<Domain, Range>> subtract(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::set<pair<Domain, Range>> to_set() const;
-  inline typed::union_set<pair<Domain, Range>> to_union_set() const;
-  inline typed::map<pair<Domain, Range>, pair<Domain, Range>> translation() const;
-  inline typed::set<pair<Domain, Range>> unbind_params(const typed::multi_id<> &tuple) const = delete;
-  template <typename Arg2>
-  inline typed::map<Arg2, pair<Domain, Range>> unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const;
-  inline typed::set<pair<Domain, Range>> unite(const typed::basic_set<pair<Domain, Range>> &bset2) const;
-  inline typed::set<pair<Domain, Range>> unite(const typed::set<pair<Domain, Range>> &set2) const;
-  inline typed::union_set<pair<Domain, Range>> unite(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::set<pair<Domain, Range>> unite(const typed::point<pair<Domain, Range>> &bset2) const;
-  inline typed::map<Domain, Range> unwrap() const;
-  inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const;
-  inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const;
-};
-
-template <typename Domain>
-struct fixed_box<Domain> : public isl::fixed_box {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  fixed_box() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  fixed_box(const fixed_box<Arg1> &obj) : isl::fixed_box(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::fixed_box>{}, bool>::type = true>
-  fixed_box(const base &obj) : isl::fixed_box(obj) {}
- public:
-  static fixed_box from(const isl::fixed_box &obj) {
-    return fixed_box(obj);
-  }
-  inline typed::multi_aff<Domain> offset() const;
-  inline typed::multi_aff<Domain> get_offset() const = delete;
-  inline typed::multi_val<Domain> size() const;
-  inline typed::multi_val<Domain> get_size() const = delete;
-  inline typed::space<Domain> space() const;
-  inline typed::space<Domain> get_space() const = delete;
-};
-
-template <typename Domain, typename Range>
-struct fixed_box<Domain, Range> : public isl::fixed_box {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  fixed_box() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  fixed_box(const fixed_box<Arg1, Arg2> &obj) : isl::fixed_box(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::fixed_box>{}, bool>::type = true>
-  fixed_box(const base &obj) : isl::fixed_box(obj) {}
- public:
-  static fixed_box from(const isl::fixed_box &obj) {
-    return fixed_box(obj);
-  }
-  inline typed::multi_aff<Domain, Range> offset() const;
-  inline typed::multi_aff<Domain, Range> get_offset() const = delete;
-  inline typed::multi_val<Range> size() const;
-  inline typed::multi_val<Domain, Range> get_size() const = delete;
-  inline typed::space<Domain, Range> space() const;
-  inline typed::space<Domain, Range> get_space() const = delete;
-};
-
-template <>
-struct id<Anonymous> : public isl::id {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  id() = default;
-  id(const isl::id &obj) : isl::id(obj) {}
-  static id from(const isl::id &obj) {
-    return id(obj);
-  }
-  inline explicit id(const isl::ctx &ctx, const std::string &str);
-  inline std::string get_name() const = delete;
-};
-
-template <>
-struct id_list<Anonymous> : public isl::id_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  id_list() = default;
-  id_list(const isl::id_list &obj) : isl::id_list(obj) {}
-  static id_list from(const isl::id_list &obj) {
-    return id_list(obj);
-  }
-  inline explicit id_list(const isl::ctx &ctx, int n);
-  inline explicit id_list(const typed::id<Anonymous> &el);
-  inline explicit id_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::id_list<Anonymous> add(const typed::id<Anonymous> &el) const;
-  inline typed::id_list<Anonymous> add(const std::string &el) const;
-  inline typed::id<Anonymous> at(int index) const;
-  inline typed::id<Anonymous> get_at(int index) const = delete;
-  inline typed::id_list<Anonymous> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::id<Anonymous>)> &fn) const;
-};
-
-template <typename Domain, typename Range>
-struct map<Domain, Range> : public isl::map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  map() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  map(const map<Arg1, Arg2> &obj) : isl::map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::map>{}, bool>::type = true>
-  map(const base &obj) : isl::map(obj) {}
- public:
-  static map from(const isl::map &obj) {
-    return map(obj);
-  }
-  inline /* implicit */ map(const typed::basic_map<Domain, Range> &bmap);
-  inline explicit map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> apply_domain(const typed::map<Domain, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> apply_domain(const typed::basic_map<Domain, Domain2> &map2) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> apply_range(const typed::map<Range, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Range, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> apply_range(const typed::basic_map<Range, Range2> &map2) const;
-  inline typed::map<Domain, Range> as_map() const;
-  inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Range> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<Domain, Range> as_union_pw_multi_aff() const;
-  inline typed::set<Range> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::set<Domain> bind_range(const typed::multi_id<Range> &tuple) const;
-  inline typed::map<Domain, Range> coalesce() const;
-  inline typed::map<Domain, Range> curry() const = delete;
-  inline typed::set<Domain, Range> deltas() const = delete;
-  inline typed::map<Domain, Range> detect_equalities() const;
-  inline typed::set<Domain> domain() const;
-  inline typed::map<Domain, Range> domain_factor_domain() const = delete;
-  inline typed::map<Domain, Range> domain_factor_range() const = delete;
-  inline typed::union_map<pair<Domain, Range>, Domain> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<Domain, Range>, Domain> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<Domain, Domain2>, Range> domain_product(const typed::map<Domain2, Range> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, Range> domain_product(const typed::union_map<Domain2, Range> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<pair<Domain, Domain2>, Range> domain_product(const typed::basic_map<Domain2, Range> &map2) const;
-  inline typed::id<Domain, Range> get_domain_tuple_id() const = delete;
-  inline typed::map<Domain, Range> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::union_map<Domain, Range> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline typed::map<Domain, Range> eq_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> eq_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> eq_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> eq_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const;
-  inline typed::map<Domain, Range> extract_map(const typed::space<Domain, Range> &space) const;
-  inline typed::map<Domain, Range> flatten_domain() const = delete;
-  inline typed::map<Domain, Range> flatten_range() const = delete;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, Range>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const;
-  inline typed::map<Domain, Range> gist(const typed::map<Domain, Range> &context) const;
-  inline typed::union_map<Domain, Range> gist(const typed::union_map<Domain, Range> &context) const;
-  inline typed::map<Domain, Range> gist(const typed::basic_map<Domain, Range> &context) const;
-  inline typed::map<Domain, Range> gist_domain(const typed::set<Domain> &context) const;
-  inline typed::union_map<Domain, Range> gist_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::map<Domain, Range> gist_domain(const typed::basic_set<Domain> &context) const;
-  inline typed::map<Domain, Range> gist_domain(const typed::point<Domain> &context) const;
-  inline typed::map<Domain, Range> intersect(const typed::map<Domain, Range> &map2) const;
-  inline typed::union_map<Domain, Range> intersect(const typed::union_map<Domain, Range> &umap2) const;
-  inline typed::map<Domain, Range> intersect(const typed::basic_map<Domain, Range> &map2) const;
-  inline typed::map<Domain, Range> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_map<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::map<Domain, Range> intersect_domain(const typed::basic_set<Domain> &set) const;
-  inline typed::map<Domain, Range> intersect_domain(const typed::point<Domain> &set) const;
-  inline typed::map<Domain, Range> intersect_params(const typed::set<> &params) const;
-  inline typed::map<Domain, Range> intersect_params(const typed::basic_set<> &params) const;
-  inline typed::map<Domain, Range> intersect_params(const typed::point<> &params) const;
-  inline typed::map<Domain, Range> intersect_range(const typed::set<Range> &set) const;
-  inline typed::union_map<Domain, Range> intersect_range(const typed::space<Range> &space) const;
-  inline typed::union_map<Domain, Range> intersect_range(const typed::union_set<Range> &uset) const;
-  inline typed::map<Domain, Range> intersect_range(const typed::basic_set<Range> &set) const;
-  inline typed::map<Domain, Range> intersect_range(const typed::point<Range> &set) const;
-  inline typed::map<Domain, Range> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_ge_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_ge_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_ge_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_gt_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_gt_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_gt_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_le_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_le_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_le_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_lt_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_lt_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_lt_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, Range> lexmax() const;
-  inline typed::pw_multi_aff<Domain, Range> lexmax_pw_multi_aff() const;
-  inline typed::map<Domain, Range> lexmin() const;
-  inline typed::pw_multi_aff<Domain, Range> lexmin_pw_multi_aff() const;
-  inline typed::map<Domain, Range> lower_bound(const typed::multi_pw_aff<Domain, Range> &lower) const;
-  inline typed::map<Domain, Range> lower_bound(const typed::aff<Domain, Range> &lower) const;
-  inline typed::map<Domain, Range> lower_bound(const typed::multi_aff<Domain, Range> &lower) const;
-  inline typed::map<Domain, Range> lower_bound(const typed::pw_aff<Domain, Range> &lower) const;
-  inline typed::map<Domain, Range> lower_bound(const typed::pw_multi_aff<Domain, Range> &lower) const;
-  inline typed::map_list<Domain, Range> map_list() const;
-  inline typed::multi_pw_aff<Domain, Range> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<Domain, Range> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Range> &ma) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const;
-  template <typename Domain2, typename Range2>
-  inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::basic_map<Domain2, Range2> &map2) const;
-  inline typed::map<Domain, Range> project_out_all_params() const;
-  inline typed::set<Range> range() const;
-  inline typed::map<Domain, Range> range_factor_domain() const = delete;
-  inline typed::map<Domain, Range> range_factor_range() const = delete;
-  inline typed::fixed_box<Domain, Range> range_lattice_tile() const;
-  inline typed::fixed_box<Domain, Range> get_range_lattice_tile() const = delete;
-  inline typed::union_map<pair<Domain, Range>, Range> range_map() const;
-  template <typename Range2>
-  inline typed::map<Domain, pair<Range, Range2>> range_product(const typed::map<Domain, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, pair<Range, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::map<Domain, pair<Range, Range2>> range_product(const typed::basic_map<Domain, Range2> &map2) const;
-  inline typed::map<Domain, Range> range_reverse() const = delete;
-  inline typed::fixed_box<Domain, Range> range_simple_fixed_box_hull() const;
-  inline typed::fixed_box<Domain, Range> get_range_simple_fixed_box_hull() const = delete;
-  inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
-  inline typed::map<Range, Domain> reverse() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> set_domain_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range> set_domain_tuple(const std::string &id) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain, Range> space() const;
-  inline typed::space<Domain, Range> get_space() const = delete;
-  inline typed::map<Domain, Range> subtract(const typed::map<Domain, Range> &map2) const;
-  inline typed::union_map<Domain, Range> subtract(const typed::union_map<Domain, Range> &umap2) const;
-  inline typed::map<Domain, Range> subtract(const typed::basic_map<Domain, Range> &map2) const;
-  inline typed::union_map<Domain, Range> subtract_domain(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Range> subtract_range(const typed::union_set<Range> &dom) const;
-  inline typed::union_map<Domain, Range> to_union_map() const;
-  inline typed::map<Domain, Range> uncurry() const = delete;
-  inline typed::map<Domain, Range> unite(const typed::map<Domain, Range> &map2) const;
-  inline typed::union_map<Domain, Range> unite(const typed::union_map<Domain, Range> &umap2) const;
-  inline typed::map<Domain, Range> unite(const typed::basic_map<Domain, Range> &map2) const;
-  static inline typed::map<Domain, Range> universe(const typed::space<Domain, Range> &space);
-  inline typed::map<Domain, Range> upper_bound(const typed::multi_pw_aff<Domain, Range> &upper) const;
-  inline typed::map<Domain, Range> upper_bound(const typed::aff<Domain, Range> &upper) const;
-  inline typed::map<Domain, Range> upper_bound(const typed::multi_aff<Domain, Range> &upper) const;
-  inline typed::map<Domain, Range> upper_bound(const typed::pw_aff<Domain, Range> &upper) const;
-  inline typed::map<Domain, Range> upper_bound(const typed::pw_multi_aff<Domain, Range> &upper) const;
-  inline typed::set<pair<Domain, Range>> wrap() const;
-};
-
-template <typename Domain, typename Range, typename Range2>
-struct map<pair<Domain, Range>, Range2> : public isl::map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  map() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{} &&
-              std::is_base_of<Range2, Arg3>{},
-            bool>::type = true>
-  map(const map<pair<Arg1, Arg2>, Arg3> &obj) : isl::map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::map>{}, bool>::type = true>
-  map(const base &obj) : isl::map(obj) {}
- public:
-  static map from(const isl::map &obj) {
-    return map(obj);
-  }
-  inline /* implicit */ map(const typed::basic_map<pair<Domain, Range>, Range2> &bmap);
-  inline explicit map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::map<Domain2, Range2> apply_domain(const typed::map<pair<Domain, Range>, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range2> apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range2> apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &map2) const;
-  template <typename Arg3>
-  inline typed::map<pair<Domain, Range>, Arg3> apply_range(const typed::map<Range2, Arg3> &map2) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, Arg3> apply_range(const typed::union_map<Range2, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::map<pair<Domain, Range>, Arg3> apply_range(const typed::basic_map<Range2, Arg3> &map2) const;
-  inline typed::map<pair<Domain, Range>, Range2> as_map() const;
-  inline typed::multi_union_pw_aff<pair<Domain, Range>, Range2> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>, Range2> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<pair<Domain, Range>, Range2> as_union_pw_multi_aff() const;
-  inline typed::set<Range2> bind_domain(const typed::multi_id<pair<Domain, Range>> &tuple) const;
-  inline typed::set<pair<Domain, Range>> bind_range(const typed::multi_id<Range2> &tuple) const;
-  inline typed::map<pair<Domain, Range>, Range2> coalesce() const;
-  inline typed::map<Domain, pair<Range, Range2>> curry() const;
-  inline typed::set<pair<Domain, Range>, Range2> deltas() const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> detect_equalities() const;
-  inline typed::set<pair<Domain, Range>> domain() const;
-  inline typed::map<Domain, Range2> domain_factor_domain() const;
-  inline typed::map<Range, Range2> domain_factor_range() const;
-  inline typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::map<Domain2, Range2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::union_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::basic_map<Domain2, Range2> &map2) const;
-  inline typed::id<pair<Domain, Range>, Range2> get_domain_tuple_id() const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::union_map<pair<Domain, Range>, Range2> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const;
-  inline typed::map<pair<Domain, Range>, Range2> extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const;
-  inline typed::map<Anonymous, Range2> flatten_domain() const;
-  inline typed::map<pair<Domain, Range>, Range2> flatten_range() const = delete;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<Domain, Range>, Range2>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const;
-  inline typed::map<pair<Domain, Range>, Range2> gist(const typed::map<pair<Domain, Range>, Range2> &context) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const;
-  inline typed::map<pair<Domain, Range>, Range2> gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const;
-  inline typed::map<pair<Domain, Range>, Range2> gist_domain(const typed::set<pair<Domain, Range>> &context) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
-  inline typed::map<pair<Domain, Range>, Range2> gist_domain(const typed::basic_set<pair<Domain, Range>> &context) const;
-  inline typed::map<pair<Domain, Range>, Range2> gist_domain(const typed::point<pair<Domain, Range>> &context) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect(const typed::map<pair<Domain, Range>, Range2> &map2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_domain(const typed::set<pair<Domain, Range>> &set) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::space<pair<Domain, Range>> &space) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_domain(const typed::basic_set<pair<Domain, Range>> &set) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_domain(const typed::point<pair<Domain, Range>> &set) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_params(const typed::set<> &params) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_params(const typed::basic_set<> &params) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_params(const typed::point<> &params) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_range(const typed::set<Range2> &set) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::space<Range2> &space) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::union_set<Range2> &uset) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_range(const typed::basic_set<Range2> &set) const;
-  inline typed::map<pair<Domain, Range>, Range2> intersect_range(const typed::point<Range2> &set) const;
-  inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> lexmax() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>, Range2> lexmax_pw_multi_aff() const;
-  inline typed::map<pair<Domain, Range>, Range2> lexmin() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>, Range2> lexmin_pw_multi_aff() const;
-  inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &lower) const;
-  inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::aff<pair<Domain, Range>, Range2> &lower) const;
-  inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::multi_aff<pair<Domain, Range>, Range2> &lower) const;
-  inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::pw_aff<pair<Domain, Range>, Range2> &lower) const;
-  inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::pw_multi_aff<pair<Domain, Range>, Range2> &lower) const;
-  inline typed::map_list<pair<Domain, Range>, Range2> map_list() const;
-  inline typed::multi_pw_aff<pair<Domain, Range>, Range2> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<pair<Domain, Range>, Range2> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range2> preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range2> preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Range2> preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range2> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
-  template <typename Arg3>
-  inline typed::map<pair<Domain, Range>, Arg3> preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const;
-  template <typename Arg3>
-  inline typed::map<pair<Domain, Range>, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::map<Domain2, Arg3> &map2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::basic_map<Domain2, Arg3> &map2) const;
-  inline typed::map<pair<Domain, Range>, Range2> project_out_all_params() const;
-  inline typed::set<Range2> range() const;
-  inline typed::map<pair<Domain, Range>, Range2> range_factor_domain() const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> range_factor_range() const = delete;
-  inline typed::fixed_box<pair<Domain, Range>, Range2> range_lattice_tile() const;
-  inline typed::fixed_box<pair<Domain, Range>, Range2> get_range_lattice_tile() const = delete;
-  inline typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> range_map() const;
-  template <typename Arg3>
-  inline typed::map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::map<pair<Domain, Range>, Arg3> &map2) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::basic_map<pair<Domain, Range>, Arg3> &map2) const;
-  inline typed::map<pair<Domain, Range>, Range2> range_reverse() const = delete;
-  inline typed::fixed_box<pair<Domain, Range>, Range2> range_simple_fixed_box_hull() const;
-  inline typed::fixed_box<pair<Domain, Range>, Range2> get_range_simple_fixed_box_hull() const = delete;
-  inline typed::id<pair<Domain, Range>, Range2> get_range_tuple_id() const = delete;
-  inline typed::map<Range2, pair<Domain, Range>> reverse() const;
-  inline typed::map<pair<Domain, Range>, Range2> set_domain_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> set_domain_tuple(const std::string &id) const = delete;
-  template <typename Arg2>
-  inline typed::map<pair<Domain, Range>, Arg2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Arg2>
-  inline typed::map<pair<Domain, Range>, Arg2> set_range_tuple(const std::string &id) const;
-  inline typed::space<pair<Domain, Range>, Range2> space() const;
-  inline typed::space<pair<Domain, Range>, Range2> get_space() const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> subtract(const typed::map<pair<Domain, Range>, Range2> &map2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::map<pair<Domain, Range>, Range2> subtract(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::union_set<Range2> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> to_union_map() const;
-  inline typed::map<pair<Domain, Range>, Range2> uncurry() const = delete;
-  inline typed::map<pair<Domain, Range>, Range2> unite(const typed::map<pair<Domain, Range>, Range2> &map2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::map<pair<Domain, Range>, Range2> unite(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const;
-  static inline typed::map<pair<Domain, Range>, Range2> universe(const typed::space<pair<Domain, Range>, Range2> &space);
-  inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &upper) const;
-  inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::aff<pair<Domain, Range>, Range2> &upper) const;
-  inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::multi_aff<pair<Domain, Range>, Range2> &upper) const;
-  inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::pw_aff<pair<Domain, Range>, Range2> &upper) const;
-  inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::pw_multi_aff<pair<Domain, Range>, Range2> &upper) const;
-  inline typed::set<pair<pair<Domain, Range>, Range2>> wrap() const;
-};
-
-template <typename Domain>
-struct map<Domain, Domain> : public isl::map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  map() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  map(const map<Arg1, Arg1> &obj) : isl::map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::map>{}, bool>::type = true>
-  map(const base &obj) : isl::map(obj) {}
- public:
-  static map from(const isl::map &obj) {
-    return map(obj);
-  }
-  inline /* implicit */ map(const typed::basic_map<Domain, Domain> &bmap);
-  inline explicit map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> apply_domain(const typed::map<Domain, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Domain> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> apply_domain(const typed::basic_map<Domain, Domain2> &map2) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> apply_range(const typed::map<Domain, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Domain, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> apply_range(const typed::basic_map<Domain, Range2> &map2) const;
-  inline typed::map<Domain, Domain> as_map() const;
-  inline typed::multi_union_pw_aff<Domain, Domain> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Domain> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<Domain, Domain> as_union_pw_multi_aff() const;
-  inline typed::set<Domain> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::set<Domain> bind_range(const typed::multi_id<Domain> &tuple) const;
-  inline typed::map<Domain, Domain> coalesce() const;
-  inline typed::map<Domain, Domain> curry() const = delete;
-  inline typed::set<Domain> deltas() const;
-  inline typed::map<Domain, Domain> detect_equalities() const;
-  inline typed::set<Domain> domain() const;
-  inline typed::map<Domain, Domain> domain_factor_domain() const = delete;
-  inline typed::map<Domain, Domain> domain_factor_range() const = delete;
-  inline typed::union_map<pair<Domain, Domain>, Domain> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<Domain, Domain2>, Domain> domain_product(const typed::map<Domain2, Domain> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, Domain> domain_product(const typed::union_map<Domain2, Domain> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<pair<Domain, Domain2>, Domain> domain_product(const typed::basic_map<Domain2, Domain> &map2) const;
-  inline typed::id<Domain, Domain> get_domain_tuple_id() const = delete;
-  template <typename Range>
-  inline typed::map<Domain, Domain> eq_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::union_map<Domain, Domain> eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> eq_at(const typed::aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> eq_at(const typed::multi_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> eq_at(const typed::pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> eq_at(const typed::pw_multi_aff<Domain, Range> &mpa) const;
-  inline bool every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const;
-  inline typed::map<Domain, Domain> extract_map(const typed::space<Domain, Domain> &space) const;
-  inline typed::map<Domain, Domain> flatten_domain() const = delete;
-  inline typed::map<Domain, Domain> flatten_range() const = delete;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, Domain>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const;
-  inline typed::map<Domain, Domain> gist(const typed::map<Domain, Domain> &context) const;
-  inline typed::union_map<Domain, Domain> gist(const typed::union_map<Domain, Domain> &context) const;
-  inline typed::map<Domain, Domain> gist(const typed::basic_map<Domain, Domain> &context) const;
-  inline typed::map<Domain, Domain> gist_domain(const typed::set<Domain> &context) const;
-  inline typed::union_map<Domain, Domain> gist_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::map<Domain, Domain> gist_domain(const typed::basic_set<Domain> &context) const;
-  inline typed::map<Domain, Domain> gist_domain(const typed::point<Domain> &context) const;
-  inline typed::map<Domain, Domain> intersect(const typed::map<Domain, Domain> &map2) const;
-  inline typed::union_map<Domain, Domain> intersect(const typed::union_map<Domain, Domain> &umap2) const;
-  inline typed::map<Domain, Domain> intersect(const typed::basic_map<Domain, Domain> &map2) const;
-  inline typed::map<Domain, Domain> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_map<Domain, Domain> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, Domain> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::map<Domain, Domain> intersect_domain(const typed::basic_set<Domain> &set) const;
-  inline typed::map<Domain, Domain> intersect_domain(const typed::point<Domain> &set) const;
-  inline typed::map<Domain, Domain> intersect_params(const typed::set<> &params) const;
-  inline typed::map<Domain, Domain> intersect_params(const typed::basic_set<> &params) const;
-  inline typed::map<Domain, Domain> intersect_params(const typed::point<> &params) const;
-  inline typed::map<Domain, Domain> intersect_range(const typed::set<Domain> &set) const;
-  inline typed::union_map<Domain, Domain> intersect_range(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, Domain> intersect_range(const typed::union_set<Domain> &uset) const;
-  inline typed::map<Domain, Domain> intersect_range(const typed::basic_set<Domain> &set) const;
-  inline typed::map<Domain, Domain> intersect_range(const typed::point<Domain> &set) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_ge_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_ge_at(const typed::aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_ge_at(const typed::multi_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_ge_at(const typed::pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_ge_at(const typed::pw_multi_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_gt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_gt_at(const typed::aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_gt_at(const typed::multi_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_gt_at(const typed::pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_gt_at(const typed::pw_multi_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_le_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_le_at(const typed::aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_le_at(const typed::multi_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_le_at(const typed::pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_le_at(const typed::pw_multi_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_lt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_lt_at(const typed::aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_lt_at(const typed::multi_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_lt_at(const typed::pw_aff<Domain, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<Domain, Domain> lex_lt_at(const typed::pw_multi_aff<Domain, Range> &mpa) const;
-  inline typed::map<Domain, Domain> lexmax() const;
-  inline typed::pw_multi_aff<Domain, Domain> lexmax_pw_multi_aff() const;
-  inline typed::map<Domain, Domain> lexmin() const;
-  inline typed::pw_multi_aff<Domain, Domain> lexmin_pw_multi_aff() const;
-  inline typed::map<Domain, Domain> lower_bound(const typed::multi_pw_aff<Domain, Domain> &lower) const;
-  inline typed::map<Domain, Domain> lower_bound(const typed::aff<Domain, Domain> &lower) const;
-  inline typed::map<Domain, Domain> lower_bound(const typed::multi_aff<Domain, Domain> &lower) const;
-  inline typed::map<Domain, Domain> lower_bound(const typed::pw_aff<Domain, Domain> &lower) const;
-  inline typed::map<Domain, Domain> lower_bound(const typed::pw_multi_aff<Domain, Domain> &lower) const;
-  inline typed::map_list<Domain, Domain> map_list() const;
-  inline typed::multi_pw_aff<Domain, Domain> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<Domain, Domain> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Domain> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Domain> &ma) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const;
-  template <typename Domain2, typename Range2>
-  inline typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::basic_map<Domain2, Range2> &map2) const;
-  inline typed::map<Domain, Domain> project_out_all_params() const;
-  inline typed::set<Domain> range() const;
-  inline typed::map<Domain, Domain> range_factor_domain() const = delete;
-  inline typed::map<Domain, Domain> range_factor_range() const = delete;
-  inline typed::fixed_box<Domain, Domain> range_lattice_tile() const;
-  inline typed::fixed_box<Domain, Domain> get_range_lattice_tile() const = delete;
-  inline typed::union_map<pair<Domain, Domain>, Domain> range_map() const;
-  template <typename Range2>
-  inline typed::map<Domain, pair<Domain, Range2>> range_product(const typed::map<Domain, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, pair<Domain, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::map<Domain, pair<Domain, Range2>> range_product(const typed::basic_map<Domain, Range2> &map2) const;
-  inline typed::map<Domain, Domain> range_reverse() const = delete;
-  inline typed::fixed_box<Domain, Domain> range_simple_fixed_box_hull() const;
-  inline typed::fixed_box<Domain, Domain> get_range_simple_fixed_box_hull() const = delete;
-  inline typed::id<Domain, Domain> get_range_tuple_id() const = delete;
-  inline typed::map<Domain, Domain> reverse() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> set_domain_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, Domain> set_domain_tuple(const std::string &id) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::map<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain, Domain> space() const;
-  inline typed::space<Domain, Domain> get_space() const = delete;
-  inline typed::map<Domain, Domain> subtract(const typed::map<Domain, Domain> &map2) const;
-  inline typed::union_map<Domain, Domain> subtract(const typed::union_map<Domain, Domain> &umap2) const;
-  inline typed::map<Domain, Domain> subtract(const typed::basic_map<Domain, Domain> &map2) const;
-  inline typed::union_map<Domain, Domain> subtract_domain(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> subtract_range(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> to_union_map() const;
-  inline typed::map<Domain, Domain> uncurry() const = delete;
-  inline typed::map<Domain, Domain> unite(const typed::map<Domain, Domain> &map2) const;
-  inline typed::union_map<Domain, Domain> unite(const typed::union_map<Domain, Domain> &umap2) const;
-  inline typed::map<Domain, Domain> unite(const typed::basic_map<Domain, Domain> &map2) const;
-  static inline typed::map<Domain, Domain> universe(const typed::space<Domain, Domain> &space);
-  inline typed::map<Domain, Domain> upper_bound(const typed::multi_pw_aff<Domain, Domain> &upper) const;
-  inline typed::map<Domain, Domain> upper_bound(const typed::aff<Domain, Domain> &upper) const;
-  inline typed::map<Domain, Domain> upper_bound(const typed::multi_aff<Domain, Domain> &upper) const;
-  inline typed::map<Domain, Domain> upper_bound(const typed::pw_aff<Domain, Domain> &upper) const;
-  inline typed::map<Domain, Domain> upper_bound(const typed::pw_multi_aff<Domain, Domain> &upper) const;
-  inline typed::set<pair<Domain, Domain>> wrap() const;
-};
-
-template <typename Domain, typename Range, typename Range2>
-struct map<Domain, pair<Range, Range2>> : public isl::map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  map() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{} &&
-              std::is_base_of<Range2, Arg3>{},
-            bool>::type = true>
-  map(const map<Arg1, pair<Arg2, Arg3>> &obj) : isl::map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::map>{}, bool>::type = true>
-  map(const base &obj) : isl::map(obj) {}
- public:
-  static map from(const isl::map &obj) {
-    return map(obj);
-  }
-  inline /* implicit */ map(const typed::basic_map<Domain, pair<Range, Range2>> &bmap);
-  inline explicit map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<Domain, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<Domain, Domain2> &map2) const;
-  template <typename Arg3>
-  inline typed::map<Domain, Arg3> apply_range(const typed::map<pair<Range, Range2>, Arg3> &map2) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, Arg3> apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::map<Domain, Arg3> apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &map2) const;
-  inline typed::map<Domain, pair<Range, Range2>> as_map() const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> as_union_pw_multi_aff() const;
-  inline typed::set<pair<Range, Range2>> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::set<Domain> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
-  inline typed::map<Domain, pair<Range, Range2>> coalesce() const;
-  inline typed::map<Domain, pair<Range, Range2>> curry() const = delete;
-  inline typed::set<Domain, pair<Range, Range2>> deltas() const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> detect_equalities() const;
-  inline typed::set<Domain> domain() const;
-  inline typed::map<Domain, pair<Range, Range2>> domain_factor_domain() const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> domain_factor_range() const = delete;
-  inline typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &map2) const;
-  inline typed::id<Domain, pair<Range, Range2>> get_domain_tuple_id() const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::union_map<Domain, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const;
-  inline typed::map<Domain, pair<Range, Range2>> extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const;
-  inline typed::map<Domain, pair<Range, Range2>> flatten_domain() const = delete;
-  inline typed::map<Domain, Anonymous> flatten_range() const;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, pair<Range, Range2>>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const;
-  inline typed::map<Domain, pair<Range, Range2>> gist(const typed::map<Domain, pair<Range, Range2>> &context) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const;
-  inline typed::map<Domain, pair<Range, Range2>> gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const;
-  inline typed::map<Domain, pair<Range, Range2>> gist_domain(const typed::set<Domain> &context) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::map<Domain, pair<Range, Range2>> gist_domain(const typed::basic_set<Domain> &context) const;
-  inline typed::map<Domain, pair<Range, Range2>> gist_domain(const typed::point<Domain> &context) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect(const typed::map<Domain, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_domain(const typed::basic_set<Domain> &set) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_domain(const typed::point<Domain> &set) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &params) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_params(const typed::basic_set<> &params) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_params(const typed::point<> &params) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_range(const typed::set<pair<Range, Range2>> &set) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_range(const typed::basic_set<pair<Range, Range2>> &set) const;
-  inline typed::map<Domain, pair<Range, Range2>> intersect_range(const typed::point<pair<Range, Range2>> &set) const;
-  inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> lexmax() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> lexmax_pw_multi_aff() const;
-  inline typed::map<Domain, pair<Range, Range2>> lexmin() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> lexmin_pw_multi_aff() const;
-  inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &lower) const;
-  inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::aff<Domain, pair<Range, Range2>> &lower) const;
-  inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::multi_aff<Domain, pair<Range, Range2>> &lower) const;
-  inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::pw_aff<Domain, pair<Range, Range2>> &lower) const;
-  inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &lower) const;
-  inline typed::map_list<Domain, pair<Range, Range2>> map_list() const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Arg3>
-  inline typed::map<Domain, Arg3> preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const;
-  template <typename Arg3>
-  inline typed::map<Domain, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::map<Domain2, Arg3> &map2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::basic_map<Domain2, Arg3> &map2) const;
-  inline typed::map<Domain, pair<Range, Range2>> project_out_all_params() const;
-  inline typed::set<pair<Range, Range2>> range() const;
-  inline typed::map<Domain, Range> range_factor_domain() const;
-  inline typed::map<Domain, Range2> range_factor_range() const;
-  inline typed::fixed_box<Domain, pair<Range, Range2>> range_lattice_tile() const;
-  inline typed::fixed_box<Domain, pair<Range, Range2>> get_range_lattice_tile() const = delete;
-  inline typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
-  template <typename Arg3>
-  inline typed::map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::map<Domain, Arg3> &map2) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_map<Domain, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::basic_map<Domain, Arg3> &map2) const;
-  inline typed::map<Domain, pair<Range2, Range>> range_reverse() const;
-  inline typed::fixed_box<Domain, pair<Range, Range2>> range_simple_fixed_box_hull() const;
-  inline typed::fixed_box<Domain, pair<Range, Range2>> get_range_simple_fixed_box_hull() const = delete;
-  inline typed::id<Domain, pair<Range, Range2>> get_range_tuple_id() const = delete;
-  inline typed::map<pair<Range, Range2>, Domain> reverse() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> set_domain_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> set_domain_tuple(const std::string &id) const;
-  inline typed::map<Domain, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> space() const;
-  inline typed::space<Domain, pair<Range, Range2>> get_space() const = delete;
-  inline typed::map<Domain, pair<Range, Range2>> subtract(const typed::map<Domain, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::map<Domain, pair<Range, Range2>> subtract(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> to_union_map() const;
-  inline typed::map<pair<Domain, Range>, Range2> uncurry() const;
-  inline typed::map<Domain, pair<Range, Range2>> unite(const typed::map<Domain, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::map<Domain, pair<Range, Range2>> unite(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const;
-  static inline typed::map<Domain, pair<Range, Range2>> universe(const typed::space<Domain, pair<Range, Range2>> &space);
-  inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &upper) const;
-  inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::aff<Domain, pair<Range, Range2>> &upper) const;
-  inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::multi_aff<Domain, pair<Range, Range2>> &upper) const;
-  inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::pw_aff<Domain, pair<Range, Range2>> &upper) const;
-  inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upper) const;
-  inline typed::set<pair<Domain, pair<Range, Range2>>> wrap() const;
-};
-
-template <typename T1, typename T2>
-struct map<pair<T1, T2>, pair<T1, T2>> : public isl::map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  map() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<T1, Arg1>{} &&
-              std::is_base_of<T2, Arg2>{},
-            bool>::type = true>
-  map(const map<pair<Arg1, Arg2>, pair<Arg1, Arg2>> &obj) : isl::map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::map>{}, bool>::type = true>
-  map(const base &obj) : isl::map(obj) {}
- public:
-  static map from(const isl::map &obj) {
-    return map(obj);
-  }
-  inline /* implicit */ map(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap);
-  inline explicit map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<T1, T2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<T1, T2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<T1, T2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &map2) const;
-  template <typename Range2>
-  inline typed::map<pair<T1, T2>, Range2> apply_range(const typed::map<pair<T1, T2>, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, Range2> apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::map<pair<T1, T2>, Range2> apply_range(const typed::basic_map<pair<T1, T2>, Range2> &map2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> as_map() const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> as_union_pw_multi_aff() const;
-  inline typed::set<pair<T1, T2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
-  inline typed::set<pair<T1, T2>> bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> coalesce() const;
-  inline typed::map<T1, pair<T2, pair<T1, T2>>> curry() const;
-  inline typed::set<pair<T1, T2>> deltas() const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> detect_equalities() const;
-  inline typed::set<pair<T1, T2>> domain() const;
-  inline typed::map<T1, pair<T1, T2>> domain_factor_domain() const;
-  inline typed::map<T2, pair<T1, T2>> domain_factor_range() const;
-  inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::map<Domain2, pair<T1, T2>> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::basic_map<Domain2, pair<T1, T2>> &map2) const;
-  inline typed::id<pair<T1, T2>, pair<T1, T2>> get_domain_tuple_id() const = delete;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const;
-  inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const;
-  inline typed::map<Anonymous, pair<T1, T2>> flatten_domain() const;
-  inline typed::map<pair<T1, T2>, Anonymous> flatten_range() const;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<T1, T2>>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::set<pair<T1, T2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::basic_set<pair<T1, T2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::point<pair<T1, T2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::point<pair<T1, T2>> &set) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::set<> &params) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::basic_set<> &params) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::point<> &params) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::set<pair<T1, T2>> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::basic_set<pair<T1, T2>> &set) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::point<pair<T1, T2>> &set) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::pw_aff<pair<T1, T2>, Range> &mpa) const;
-  template <typename Range>
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lexmax() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> lexmax_pw_multi_aff() const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lexmin() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> lexmin_pw_multi_aff() const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::multi_aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
-  inline typed::map_list<pair<T1, T2>, pair<T1, T2>> map_list() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
-  template <typename Range2>
-  inline typed::map<pair<T1, T2>, Range2> preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const;
-  template <typename Range2>
-  inline typed::map<pair<T1, T2>, Range2> preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const;
-  template <typename Domain2, typename Range2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::basic_map<Domain2, Range2> &map2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> project_out_all_params() const;
-  inline typed::set<pair<T1, T2>> range() const;
-  inline typed::map<pair<T1, T2>, T1> range_factor_domain() const;
-  inline typed::map<pair<T1, T2>, T2> range_factor_range() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> range_lattice_tile() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> get_range_lattice_tile() const = delete;
-  inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> range_map() const;
-  template <typename Range2>
-  inline typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::map<pair<T1, T2>, Range2> &map2) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::basic_map<pair<T1, T2>, Range2> &map2) const;
-  inline typed::map<pair<T1, T2>, pair<T2, T1>> range_reverse() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> range_simple_fixed_box_hull() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> get_range_simple_fixed_box_hull() const = delete;
-  inline typed::id<pair<T1, T2>, pair<T1, T2>> get_range_tuple_id() const = delete;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> reverse() const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> set_domain_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> set_domain_tuple(const std::string &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<pair<T1, T2>, pair<T1, T2>> space() const;
-  inline typed::space<pair<T1, T2>, pair<T1, T2>> get_space() const = delete;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::union_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> to_union_map() const;
-  inline typed::map<pair<pair<T1, T2>, T1>, T2> uncurry() const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const;
-  static inline typed::map<pair<T1, T2>, pair<T1, T2>> universe(const typed::space<pair<T1, T2>, pair<T1, T2>> &space);
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::multi_aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
-  inline typed::set<pair<pair<T1, T2>, pair<T1, T2>>> wrap() const;
-};
-
-template <typename T1, typename T2, typename Range, typename Range2>
-struct map<pair<T1, T2>, pair<Range, Range2>> : public isl::map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  map() = default;
-  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
-            typename std::enable_if<
-              std::is_base_of<T1, Arg1>{} &&
-              std::is_base_of<T2, Arg2>{} &&
-              std::is_base_of<Range, Arg3>{} &&
-              std::is_base_of<Range2, Arg4>{},
-            bool>::type = true>
-  map(const map<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::map>{}, bool>::type = true>
-  map(const base &obj) : isl::map(obj) {}
- public:
-  static map from(const isl::map &obj) {
-    return map(obj);
-  }
-  inline /* implicit */ map(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap);
-  inline explicit map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &map2) const;
-  template <typename Arg2>
-  inline typed::map<pair<T1, T2>, Arg2> apply_range(const typed::map<pair<Range, Range2>, Arg2> &map2) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, Arg2> apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const;
-  template <typename Arg2>
-  inline typed::map<pair<T1, T2>, Arg2> apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &map2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> as_map() const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_union_pw_multi_aff() const;
-  inline typed::set<pair<Range, Range2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
-  inline typed::set<pair<T1, T2>> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
-  inline typed::map<T1, pair<T2, pair<Range, Range2>>> curry() const;
-  inline typed::set<pair<T1, T2>, pair<Range, Range2>> deltas() const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> detect_equalities() const;
-  inline typed::set<pair<T1, T2>> domain() const;
-  inline typed::map<T1, pair<Range, Range2>> domain_factor_domain() const;
-  inline typed::map<T2, pair<Range, Range2>> domain_factor_range() const;
-  inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
-  template <typename Domain2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &map2) const;
-  inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_domain_tuple_id() const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
-  inline typed::map<Anonymous, pair<Range, Range2>> flatten_domain() const;
-  inline typed::map<pair<T1, T2>, Anonymous> flatten_range() const;
-  inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const;
-  inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::set<pair<T1, T2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::basic_set<pair<T1, T2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::point<pair<T1, T2>> &context) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::point<pair<T1, T2>> &set) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &params) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::basic_set<> &params) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::point<> &params) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::set<pair<Range, Range2>> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::basic_set<pair<Range, Range2>> &set) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::point<pair<Range, Range2>> &set) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::pw_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lexmax() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> lexmax_pw_multi_aff() const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lexmin() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> lexmin_pw_multi_aff() const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
-  inline typed::map_list<pair<T1, T2>, pair<Range, Range2>> map_list() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> max_multi_pw_aff() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> min_multi_pw_aff() const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
-  template <typename Domain2>
-  inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
-  template <typename Arg2>
-  inline typed::map<pair<T1, T2>, Arg2> preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const;
-  template <typename Arg2>
-  inline typed::map<pair<T1, T2>, Arg2> preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, Arg2> preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::map<Domain2, Arg2> &map2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::union_map<Domain2, Arg2> &umap2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::basic_map<Domain2, Arg2> &map2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> project_out_all_params() const;
-  inline typed::set<pair<Range, Range2>> range() const;
-  inline typed::map<pair<T1, T2>, Range> range_factor_domain() const;
-  inline typed::map<pair<T1, T2>, Range2> range_factor_range() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> range_lattice_tile() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> get_range_lattice_tile() const = delete;
-  inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
-  template <typename Arg2>
-  inline typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::map<pair<T1, T2>, Arg2> &map2) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const;
-  template <typename Arg2>
-  inline typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::basic_map<pair<T1, T2>, Arg2> &map2) const;
-  inline typed::map<pair<T1, T2>, pair<Range2, Range>> range_reverse() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> range_simple_fixed_box_hull() const;
-  inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> get_range_simple_fixed_box_hull() const = delete;
-  inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_range_tuple_id() const = delete;
-  inline typed::map<pair<Range, Range2>, pair<T1, T2>> reverse() const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const std::string &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> space() const;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> get_space() const = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> to_union_map() const;
-  inline typed::map<pair<pair<T1, T2>, Range>, Range2> uncurry() const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
-  static inline typed::map<pair<T1, T2>, pair<Range, Range2>> universe(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space);
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
-  inline typed::set<pair<pair<T1, T2>, pair<Range, Range2>>> wrap() const;
-};
-
-template <typename Domain, typename Range>
-struct map_list<Domain, Range> : public isl::map_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  map_list() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  map_list(const map_list<Arg1, Arg2> &obj) : isl::map_list(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::map_list>{}, bool>::type = true>
-  map_list(const base &obj) : isl::map_list(obj) {}
- public:
-  static map_list from(const isl::map_list &obj) {
-    return map_list(obj);
-  }
-  inline explicit map_list(const isl::ctx &ctx, int n);
-  inline explicit map_list(const typed::map<Domain, Range> &el);
-  inline explicit map_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::map_list<Domain, Range> add(const typed::map<Domain, Range> &el) const;
-  inline typed::map_list<Domain, Range> add(const typed::basic_map<Domain, Range> &el) const;
-  inline typed::map<Domain, Range> at(int index) const;
-  inline typed::map<Domain, Range> get_at(int index) const = delete;
-  inline typed::map_list<Domain, Range> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::map<Domain, Range>)> &fn) const;
-};
-
-template <typename Domain>
-struct multi_aff<Domain> : public isl::multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_aff() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  multi_aff(const multi_aff<Arg1> &obj) : isl::multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_aff>{}, bool>::type = true>
-  multi_aff(const base &obj) : isl::multi_aff(obj) {}
- public:
-  static multi_aff from(const isl::multi_aff &obj) {
-    return multi_aff(obj);
-  }
-  inline /* implicit */ multi_aff(const typed::aff<Domain> &aff);
-  inline explicit multi_aff(const typed::space<Domain> &space, const typed::aff_list<Anonymous> &list);
-  inline explicit multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_aff<Domain> add(const typed::multi_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> add(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain> add(const typed::multi_union_pw_aff<Domain> &multi2) const;
-  inline typed::pw_multi_aff<Domain> add(const typed::pw_multi_aff<Domain> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain> add(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  inline typed::multi_aff<Domain> add(const typed::aff<Domain> &multi2) const;
-  inline typed::multi_aff<Domain> add_constant(const typed::multi_val<Domain> &mv) const;
-  inline typed::multi_aff<Domain> add_constant(const typed::val<Domain> &v) const;
-  inline typed::multi_aff<Domain> add_constant(long v) const;
-  template <typename Range>
-  inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::map<Domain> as_map() const = delete;
-  inline typed::multi_aff<Domain> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<Domain> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
-  inline typed::set<Domain> as_set() const;
-  inline typed::union_map<Domain> as_union_map() const = delete;
-  inline typed::aff<Anonymous> at(int pos) const;
-  inline typed::aff<Domain> get_at(int pos) const = delete;
-  inline typed::basic_set<> bind(const typed::multi_id<Domain> &tuple) const;
-  inline typed::multi_aff<Domain> bind_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::multi_aff<Domain> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::pw_multi_aff<Domain> coalesce() const;
-  inline typed::multi_val<Domain> constant_multi_val() const;
-  inline typed::multi_val<Domain> get_constant_multi_val() const = delete;
-  inline typed::set<> domain() const;
-  inline typed::pw_multi_aff<Domain> extract_pw_multi_aff(const typed::space<Domain> &space) const;
-  inline typed::multi_aff<Domain> floor() const;
-  inline typed::multi_aff<Domain> gist(const typed::set<> &context) const;
-  inline typed::union_pw_multi_aff<Domain> gist(const typed::union_set<> &context) const;
-  inline typed::multi_aff<Domain> gist(const typed::basic_set<> &context) const;
-  inline typed::multi_aff<Domain> gist(const typed::point<> &context) const;
-  inline typed::multi_aff<Domain, Domain> identity() const;
-  template <typename Arg1>
-  inline typed::multi_aff<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
-  inline typed::pw_multi_aff<Domain> intersect_domain(const typed::set<> &set) const = delete;
-  inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::pw_multi_aff<Domain> intersect_params(const typed::set<> &set) const;
-  inline typed::aff_list<Anonymous> list() const;
-  inline typed::aff_list<Domain> get_list() const = delete;
-  inline typed::multi_pw_aff<Domain> max(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_val<Domain> max_multi_val() const;
-  inline typed::multi_pw_aff<Domain> min(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_val<Domain> min_multi_val() const;
-  inline typed::multi_aff<Domain> neg() const;
-  inline typed::pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  template <typename Range>
-  inline typed::multi_aff<pair<Domain, Range>> product(const typed::multi_aff<Range> &multi2) const;
-  template <typename Range>
-  inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::multi_pw_aff<Range> &multi2) const;
-  template <typename Range>
-  inline typed::pw_multi_aff<pair<Domain, Range>> product(const typed::pw_multi_aff<Range> &pma2) const;
-  template <typename Range>
-  inline typed::multi_aff<pair<Domain, Range>> product(const typed::aff<Range> &multi2) const;
-  inline typed::multi_aff<Domain> pullback(const typed::multi_aff<> &ma2) const = delete;
-  inline typed::multi_pw_aff<Domain> pullback(const typed::multi_pw_aff<> &mpa2) const = delete;
-  inline typed::pw_multi_aff<Domain> pullback(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> pullback(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::multi_aff<Domain> pullback(const typed::aff<> &ma2) const = delete;
-  inline typed::pw_multi_aff_list<Domain> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<Domain> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<Domain> range_factor_range() const = delete;
-  inline typed::multi_aff<Domain> range_product(const typed::multi_aff<> &multi2) const = delete;
-  inline typed::multi_pw_aff<Domain> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
-  inline typed::multi_union_pw_aff<Domain> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
-  inline typed::pw_multi_aff<Domain> range_product(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::multi_aff<Domain> range_product(const typed::aff<> &multi2) const = delete;
-  inline typed::id<Domain> get_range_tuple_id() const = delete;
-  inline typed::multi_aff<Domain> scale(const typed::multi_val<Domain> &mv) const;
-  inline typed::multi_aff<Domain> scale(const typed::val<Domain> &v) const;
-  inline typed::multi_aff<Domain> scale(long v) const;
-  inline typed::multi_aff<Domain> scale_down(const typed::multi_val<Domain> &mv) const;
-  inline typed::multi_aff<Domain> scale_down(const typed::val<Domain> &v) const;
-  inline typed::multi_aff<Domain> scale_down(long v) const;
-  inline typed::multi_aff<Domain> set_at(int pos, const typed::aff<Anonymous> &el) const;
-  inline typed::multi_pw_aff<Domain> set_at(int pos, const typed::pw_aff<Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Domain> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
-  template <typename Domain2>
-  inline typed::multi_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::multi_aff<Domain2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain> space() const;
-  inline typed::space<Domain> get_space() const = delete;
-  inline typed::multi_aff<Domain> sub(const typed::multi_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> sub(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain> sub(const typed::multi_union_pw_aff<Domain> &multi2) const;
-  inline typed::pw_multi_aff<Domain> sub(const typed::pw_multi_aff<Domain> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain> sub(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  inline typed::multi_aff<Domain> sub(const typed::aff<Domain> &multi2) const;
-  inline typed::pw_multi_aff<Domain> subtract_domain(const typed::set<> &set) const = delete;
-  inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::multi_pw_aff<Domain> to_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<Domain> to_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain> to_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<Domain> to_union_pw_multi_aff() const;
-  template <typename Arg1>
-  inline typed::multi_aff<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
-  inline typed::multi_pw_aff<Domain> union_add(const typed::multi_pw_aff<Domain> &mpa2) const;
-  inline typed::multi_union_pw_aff<Domain> union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const;
-  inline typed::pw_multi_aff<Domain> union_add(const typed::pw_multi_aff<Domain> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain> union_add(const typed::union_pw_multi_aff<Domain> &upma2) const;
-};
-
-template <typename Domain, typename Range>
-struct multi_aff<Domain, Range> : public isl::multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_aff() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  multi_aff(const multi_aff<Arg1, Arg2> &obj) : isl::multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_aff>{}, bool>::type = true>
-  multi_aff(const base &obj) : isl::multi_aff(obj) {}
- public:
-  static multi_aff from(const isl::multi_aff &obj) {
-    return multi_aff(obj);
-  }
-  inline /* implicit */ multi_aff(const typed::aff<Domain, Range> &aff);
-  inline explicit multi_aff(const typed::space<Domain, Range> &space, const typed::aff_list<Domain, Anonymous> &list);
-  inline explicit multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_aff<Domain, Range> add(const typed::multi_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> add(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
-  inline typed::pw_multi_aff<Domain, Range> add(const typed::pw_multi_aff<Domain, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::multi_aff<Domain, Range> add(const typed::aff<Domain, Range> &multi2) const;
-  inline typed::multi_aff<Domain, Range> add_constant(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_aff<Domain, Range> add_constant(const typed::val<Range> &v) const;
-  inline typed::multi_aff<Domain, Range> add_constant(long v) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const;
-  inline typed::map<Domain, Range> as_map() const;
-  inline typed::multi_aff<Domain, Range> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Range> as_pw_multi_aff() const;
-  inline typed::set<Domain, Range> as_set() const = delete;
-  inline typed::union_map<Domain, Range> as_union_map() const;
-  inline typed::aff<Domain, Anonymous> at(int pos) const;
-  inline typed::aff<Domain, Range> get_at(int pos) const = delete;
-  inline typed::basic_set<Domain> bind(const typed::multi_id<Range> &tuple) const;
-  inline typed::multi_aff<Range> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::multi_aff<Domain, Range> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::pw_multi_aff<Domain, Range> coalesce() const;
-  inline typed::multi_val<Range> constant_multi_val() const;
-  inline typed::multi_val<Domain, Range> get_constant_multi_val() const = delete;
-  inline typed::set<Domain> domain() const;
-  inline typed::pw_multi_aff<Domain, Range> extract_pw_multi_aff(const typed::space<Domain, Range> &space) const;
-  inline typed::multi_aff<Domain, Range> floor() const;
-  inline typed::multi_aff<Domain, Range> gist(const typed::set<Domain> &context) const;
-  inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::union_set<Domain> &context) const;
-  inline typed::multi_aff<Domain, Range> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::multi_aff<Domain, Range> gist(const typed::point<Domain> &context) const;
-  inline typed::multi_aff<Domain, Range> identity() const;
-  inline typed::multi_aff<Domain, Range> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_multi_aff<Domain, Range> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::pw_multi_aff<Domain, Range> intersect_params(const typed::set<> &set) const;
-  inline typed::aff_list<Domain, Anonymous> list() const;
-  inline typed::aff_list<Domain, Range> get_list() const = delete;
-  inline typed::multi_pw_aff<Domain, Range> max(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_val<Range> max_multi_val() const;
-  inline typed::multi_pw_aff<Domain, Range> min(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_val<Range> min_multi_val() const;
-  inline typed::multi_aff<Domain, Range> neg() const;
-  inline typed::pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2>
-  inline typed::multi_aff<Domain2, Range> pullback(const typed::multi_aff<Domain2, Domain> &ma2) const;
-  inline typed::multi_aff<Range> pullback(const typed::multi_aff<Domain> &ma2) const;
-  template <typename Domain2>
-  inline typed::multi_pw_aff<Domain2, Range> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const;
-  inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<Domain> &mpa2) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2, Range> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const;
-  inline typed::pw_multi_aff<Range> pullback(const typed::pw_multi_aff<Domain> &pma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  template <typename Domain2>
-  inline typed::multi_aff<Domain2, Range> pullback(const typed::aff<Domain2, Domain> &ma2) const;
-  inline typed::multi_aff<Range> pullback(const typed::aff<Domain> &ma2) const;
-  inline typed::pw_multi_aff_list<Domain, Range> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<Domain, Range> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<Domain, Range> range_factor_range() const = delete;
-  template <typename Range2>
-  inline typed::multi_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::multi_aff<Domain, pair<Range, Range2>> range_product(const typed::aff<Domain, Range2> &multi2) const;
-  inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
-  inline typed::multi_aff<Domain, Range> scale(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_aff<Domain, Range> scale(const typed::val<Range> &v) const;
-  inline typed::multi_aff<Domain, Range> scale(long v) const;
-  inline typed::multi_aff<Domain, Range> scale_down(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_aff<Domain, Range> scale_down(const typed::val<Range> &v) const;
-  inline typed::multi_aff<Domain, Range> scale_down(long v) const;
-  inline typed::multi_aff<Domain, Range> set_at(int pos, const typed::aff<Domain, Anonymous> &el) const;
-  inline typed::multi_pw_aff<Domain, Range> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Domain, Range> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
-  template <typename Range2>
-  inline typed::multi_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::multi_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain, Range> space() const;
-  inline typed::space<Domain, Range> get_space() const = delete;
-  inline typed::multi_aff<Domain, Range> sub(const typed::multi_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> sub(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
-  inline typed::pw_multi_aff<Domain, Range> sub(const typed::pw_multi_aff<Domain, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::multi_aff<Domain, Range> sub(const typed::aff<Domain, Range> &multi2) const;
-  inline typed::pw_multi_aff<Domain, Range> subtract_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::multi_pw_aff<Domain, Range> to_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<Domain, Range> to_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Range> to_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<Domain, Range> to_union_pw_multi_aff() const;
-  inline typed::multi_aff<Domain, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<Domain, Range> union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const;
-  inline typed::pw_multi_aff<Domain, Range> union_add(const typed::pw_multi_aff<Domain, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-};
-
-template <typename Domain2, typename Range2, typename Range>
-struct multi_aff<pair<Domain2, Range2>, Range> : public isl::multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_aff() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain2, Arg1>{} &&
-              std::is_base_of<Range2, Arg2>{} &&
-              std::is_base_of<Range, Arg3>{},
-            bool>::type = true>
-  multi_aff(const multi_aff<pair<Arg1, Arg2>, Arg3> &obj) : isl::multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_aff>{}, bool>::type = true>
-  multi_aff(const base &obj) : isl::multi_aff(obj) {}
- public:
-  static multi_aff from(const isl::multi_aff &obj) {
-    return multi_aff(obj);
-  }
-  inline /* implicit */ multi_aff(const typed::aff<pair<Domain2, Range2>, Range> &aff);
-  inline explicit multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space, const typed::aff_list<pair<Domain2, Range2>, Anonymous> &list);
-  inline explicit multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> add(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> add(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> add_constant(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> add_constant(const typed::val<Range> &v) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> add_constant(long v) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> apply(const typed::union_pw_multi_aff<Range, Arg2> &upma2) const;
-  inline typed::map<pair<Domain2, Range2>, Range> as_map() const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> as_pw_multi_aff() const;
-  inline typed::set<pair<Domain2, Range2>, Range> as_set() const = delete;
-  inline typed::union_map<pair<Domain2, Range2>, Range> as_union_map() const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> at(int pos) const;
-  inline typed::aff<pair<Domain2, Range2>, Range> get_at(int pos) const = delete;
-  inline typed::basic_set<pair<Domain2, Range2>> bind(const typed::multi_id<Range> &tuple) const;
-  inline typed::multi_aff<Range> bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const;
-  inline typed::multi_aff<Range2, Range> bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> coalesce() const;
-  inline typed::multi_val<Range> constant_multi_val() const;
-  inline typed::multi_val<pair<Domain2, Range2>, Range> get_constant_multi_val() const = delete;
-  inline typed::set<pair<Domain2, Range2>> domain() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> floor() const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> gist(const typed::set<pair<Domain2, Range2>> &context) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> gist(const typed::union_set<pair<Domain2, Range2>> &context) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> gist(const typed::basic_set<pair<Domain2, Range2>> &context) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> gist(const typed::point<pair<Domain2, Range2>> &context) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> identity() const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::set<> &set) const;
-  inline typed::aff_list<pair<Domain2, Range2>, Anonymous> list() const;
-  inline typed::aff_list<pair<Domain2, Range2>, Range> get_list() const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_val<Range> max_multi_val() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_val<Range> min_multi_val() const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> neg() const;
-  template <typename Domain3>
-  inline typed::pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_aff<Arg2, Arg3> &multi2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::pw_multi_aff<Arg2, Arg3> &pma2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::aff<Arg2, Arg3> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_aff<Arg2, Range> pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma2) const;
-  inline typed::multi_aff<Range> pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma2) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<Arg2, Range> pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const;
-  inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<Arg2, Range> pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<Range> pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<Arg2, Range> pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma2) const;
-  template <typename Arg2>
-  inline typed::multi_aff<Arg2, Range> pullback(const typed::aff<Arg2, pair<Domain2, Range2>> &ma2) const;
-  inline typed::multi_aff<Range> pullback(const typed::aff<pair<Domain2, Range2>> &ma2) const;
-  inline typed::pw_multi_aff_list<pair<Domain2, Range2>, Range> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> range_factor_range() const = delete;
-  template <typename Arg2>
-  inline typed::multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> &upma2) const;
-  template <typename Arg2>
-  inline typed::multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  inline typed::id<pair<Domain2, Range2>, Range> get_range_tuple_id() const = delete;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> scale(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> scale(const typed::val<Range> &v) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> scale(long v) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> scale_down(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> scale_down(const typed::val<Range> &v) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> scale_down(long v) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  template <typename Arg1>
-  inline typed::multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Arg1>
-  inline typed::multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const std::string &id) const;
-  inline typed::space<pair<Domain2, Range2>, Range> space() const;
-  inline typed::space<pair<Domain2, Range2>, Range> get_space() const = delete;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> sub(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> to_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> to_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> to_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> to_union_pw_multi_aff() const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
-};
-
-template <typename Domain, typename Range, typename Range2>
-struct multi_aff<Domain, pair<Range, Range2>> : public isl::multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_aff() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{} &&
-              std::is_base_of<Range2, Arg3>{},
-            bool>::type = true>
-  multi_aff(const multi_aff<Arg1, pair<Arg2, Arg3>> &obj) : isl::multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_aff>{}, bool>::type = true>
-  multi_aff(const base &obj) : isl::multi_aff(obj) {}
- public:
-  static multi_aff from(const isl::multi_aff &obj) {
-    return multi_aff(obj);
-  }
-  inline /* implicit */ multi_aff(const typed::aff<Domain, pair<Range, Range2>> &aff);
-  inline explicit multi_aff(const typed::space<Domain, pair<Range, Range2>> &space, const typed::aff_list<Domain, Anonymous> &list);
-  inline explicit multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_aff<Domain, pair<Range, Range2>> add(const typed::multi_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> add(const typed::aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> add_constant(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> add_constant(long v) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, Arg3> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const;
-  inline typed::map<Domain, pair<Range, Range2>> as_map() const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> as_pw_multi_aff() const;
-  inline typed::set<Domain, pair<Range, Range2>> as_set() const = delete;
-  inline typed::union_map<Domain, pair<Range, Range2>> as_union_map() const;
-  inline typed::aff<Domain, Anonymous> at(int pos) const;
-  inline typed::aff<Domain, pair<Range, Range2>> get_at(int pos) const = delete;
-  inline typed::basic_set<Domain> bind(const typed::multi_id<pair<Range, Range2>> &tuple) const;
-  inline typed::multi_aff<pair<Range, Range2>> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> coalesce() const;
-  inline typed::multi_val<pair<Range, Range2>> constant_multi_val() const;
-  inline typed::multi_val<Domain, pair<Range, Range2>> get_constant_multi_val() const = delete;
-  inline typed::set<Domain> domain() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> floor() const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> gist(const typed::set<Domain> &context) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::union_set<Domain> &context) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> gist(const typed::point<Domain> &context) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> identity() const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
-  inline typed::aff_list<Domain, Anonymous> list() const;
-  inline typed::aff_list<Domain, pair<Range, Range2>> get_list() const = delete;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> max(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_val<pair<Range, Range2>> max_multi_val() const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> min(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_val<pair<Range, Range2>> min_multi_val() const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> neg() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  template <typename Domain2, typename Arg3>
-  inline typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::multi_aff<Domain2, Arg3> &multi2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::multi_pw_aff<Domain2, Arg3> &multi2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::pw_multi_aff<Domain2, Arg3> &pma2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::aff<Domain2, Arg3> &multi2) const;
-  template <typename Domain2>
-  inline typed::multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, Domain> &ma2) const;
-  inline typed::multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<Domain> &ma2) const;
-  template <typename Domain2>
-  inline typed::multi_pw_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const;
-  inline typed::multi_pw_aff<pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain> &mpa2) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const;
-  inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain> &pma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  template <typename Domain2>
-  inline typed::multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::aff<Domain2, Domain> &ma2) const;
-  inline typed::multi_aff<pair<Range, Range2>> pullback(const typed::aff<Domain> &ma2) const;
-  inline typed::pw_multi_aff_list<Domain, pair<Range, Range2>> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<Domain, Range> range_factor_domain() const;
-  inline typed::pw_multi_aff<Domain, Range2> range_factor_range() const;
-  template <typename Arg3>
-  inline typed::multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_aff<Domain, Arg3> &multi2) const;
-  template <typename Arg3>
-  inline typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_pw_aff<Domain, Arg3> &multi2) const;
-  template <typename Arg3>
-  inline typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_union_pw_aff<Domain, Arg3> &multi2) const;
-  template <typename Arg3>
-  inline typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::pw_multi_aff<Domain, Arg3> &pma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const;
-  template <typename Arg3>
-  inline typed::multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::aff<Domain, Arg3> &multi2) const;
-  inline typed::id<Domain, pair<Range, Range2>> get_range_tuple_id() const = delete;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> scale(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> scale(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> scale(long v) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> scale_down(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> scale_down(long v) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> set_at(int pos, const typed::aff<Domain, Anonymous> &el) const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> space() const;
-  inline typed::space<Domain, pair<Range, Range2>> get_space() const = delete;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> sub(const typed::multi_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> sub(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> sub(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> sub(const typed::aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> to_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> to_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> to_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> to_union_pw_multi_aff() const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &mpa2) const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &mupa2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-};
-
-template <typename T1, typename T2, typename Range, typename Range2>
-struct multi_aff<pair<T1, T2>, pair<Range, Range2>> : public isl::multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_aff() = default;
-  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
-            typename std::enable_if<
-              std::is_base_of<T1, Arg1>{} &&
-              std::is_base_of<T2, Arg2>{} &&
-              std::is_base_of<Range, Arg3>{} &&
-              std::is_base_of<Range2, Arg4>{},
-            bool>::type = true>
-  multi_aff(const multi_aff<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_aff>{}, bool>::type = true>
-  multi_aff(const base &obj) : isl::multi_aff(obj) {}
- public:
-  static multi_aff from(const isl::multi_aff &obj) {
-    return multi_aff(obj);
-  }
-  inline /* implicit */ multi_aff(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &aff);
-  inline explicit multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space, const typed::aff_list<pair<T1, T2>, Anonymous> &list);
-  inline explicit multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(long v) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, Arg2> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> as_map() const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_pw_multi_aff() const;
-  inline typed::set<pair<T1, T2>, pair<Range, Range2>> as_set() const = delete;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> as_union_map() const;
-  inline typed::aff<pair<T1, T2>, Anonymous> at(int pos) const;
-  inline typed::aff<pair<T1, T2>, pair<Range, Range2>> get_at(int pos) const = delete;
-  inline typed::basic_set<pair<T1, T2>> bind(const typed::multi_id<pair<Range, Range2>> &tuple) const;
-  inline typed::multi_aff<pair<Range, Range2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
-  inline typed::multi_aff<T2, pair<Range, Range2>> bind_domain_wrapped_domain(const typed::multi_id<T1> &tuple) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
-  inline typed::multi_val<pair<Range, Range2>> constant_multi_val() const;
-  inline typed::multi_val<pair<T1, T2>, pair<Range, Range2>> get_constant_multi_val() const = delete;
-  inline typed::set<pair<T1, T2>> domain() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> floor() const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::set<pair<T1, T2>> &context) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_set<pair<T1, T2>> &context) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_set<pair<T1, T2>> &context) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::point<pair<T1, T2>> &context) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> identity() const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
-  inline typed::aff_list<pair<T1, T2>, Anonymous> list() const;
-  inline typed::aff_list<pair<T1, T2>, pair<Range, Range2>> get_list() const = delete;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> max(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_val<pair<Range, Range2>> max_multi_val() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> min(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_val<pair<Range, Range2>> min_multi_val() const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> neg() const;
-  template <typename Domain3>
-  inline typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &pma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::multi_aff<Domain2, Arg2> &multi2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::multi_pw_aff<Domain2, Arg2> &multi2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::pw_multi_aff<Domain2, Arg2> &pma2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::aff<Domain2, Arg2> &multi2) const;
-  template <typename Domain2>
-  inline typed::multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &ma2) const;
-  inline typed::multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<pair<T1, T2>> &ma2) const;
-  template <typename Domain2>
-  inline typed::multi_pw_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa2) const;
-  inline typed::multi_pw_aff<pair<Range, Range2>> pullback(const typed::multi_pw_aff<pair<T1, T2>> &mpa2) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma2) const;
-  inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<pair<T1, T2>> &pma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const;
-  template <typename Domain2>
-  inline typed::multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::aff<Domain2, pair<T1, T2>> &ma2) const;
-  inline typed::multi_aff<pair<Range, Range2>> pullback(const typed::aff<pair<T1, T2>> &ma2) const;
-  inline typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, Range> range_factor_domain() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, Range2> range_factor_range() const;
-  template <typename Arg2>
-  inline typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_pw_aff<pair<T1, T2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_union_pw_aff<pair<T1, T2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &pma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const;
-  template <typename Arg2>
-  inline typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::aff<pair<T1, T2>, Arg2> &multi2) const;
-  inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_range_tuple_id() const = delete;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale(long v) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(long v) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> set_at(int pos, const typed::aff<pair<T1, T2>, Anonymous> &el) const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> set_at(int pos, const typed::pw_aff<pair<T1, T2>, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> set_at(int pos, const typed::union_pw_aff<pair<T1, T2>, Anonymous> &el) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> space() const;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> get_space() const = delete;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::set<pair<T1, T2>> &set) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> to_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> to_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> to_pw_multi_aff() const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> to_union_pw_multi_aff() const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mpa2) const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mupa2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-};
-
-template <typename Domain>
-struct multi_id<Domain> : public isl::multi_id {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_id() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  multi_id(const multi_id<Arg1> &obj) : isl::multi_id(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_id>{}, bool>::type = true>
-  multi_id(const base &obj) : isl::multi_id(obj) {}
- public:
-  static multi_id from(const isl::multi_id &obj) {
-    return multi_id(obj);
-  }
-  inline explicit multi_id(const typed::space<Domain> &space, const typed::id_list<Anonymous> &list);
-  inline explicit multi_id(const isl::ctx &ctx, const std::string &str);
-  inline typed::id<Anonymous> at(int pos) const;
-  inline typed::id<Domain> get_at(int pos) const = delete;
-  inline typed::id_list<Anonymous> list() const;
-  inline typed::id_list<Domain> get_list() const = delete;
-  inline typed::multi_id<Domain> range_product(const typed::multi_id<> &multi2) const = delete;
-  inline typed::multi_id<Domain> set_at(int pos, const typed::id<Anonymous> &el) const;
-  inline typed::multi_id<Domain> set_at(int pos, const std::string &el) const;
-  inline typed::space<Domain> space() const;
-  inline typed::space<Domain> get_space() const = delete;
-};
-
-template <typename Domain>
-struct multi_pw_aff<Domain> : public isl::multi_pw_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_pw_aff() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  multi_pw_aff(const multi_pw_aff<Arg1> &obj) : isl::multi_pw_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_pw_aff>{}, bool>::type = true>
-  multi_pw_aff(const base &obj) : isl::multi_pw_aff(obj) {}
- public:
-  static multi_pw_aff from(const isl::multi_pw_aff &obj) {
-    return multi_pw_aff(obj);
-  }
-  inline /* implicit */ multi_pw_aff(const typed::aff<Domain> &aff);
-  inline /* implicit */ multi_pw_aff(const typed::multi_aff<Domain> &ma);
-  inline /* implicit */ multi_pw_aff(const typed::pw_aff<Domain> &pa);
-  inline explicit multi_pw_aff(const typed::space<Domain> &space, const typed::pw_aff_list<Anonymous> &list);
-  inline /* implicit */ multi_pw_aff(const typed::pw_multi_aff<Domain> &pma);
-  inline explicit multi_pw_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_pw_aff<Domain> add(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain> add(const typed::multi_union_pw_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> add(const typed::aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> add(const typed::multi_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> add(const typed::pw_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> add(const typed::pw_multi_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> add_constant(const typed::multi_val<Domain> &mv) const;
-  inline typed::multi_pw_aff<Domain> add_constant(const typed::val<Domain> &v) const;
-  inline typed::multi_pw_aff<Domain> add_constant(long v) const;
-  inline typed::map<Domain> as_map() const = delete;
-  inline typed::multi_aff<Domain> as_multi_aff() const;
-  inline typed::set<Domain> as_set() const;
-  inline typed::pw_aff<Anonymous> at(int pos) const;
-  inline typed::pw_aff<Domain> get_at(int pos) const = delete;
-  inline typed::set<> bind(const typed::multi_id<Domain> &tuple) const;
-  inline typed::multi_pw_aff<Domain> bind_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::multi_pw_aff<Domain> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::multi_pw_aff<Domain> coalesce() const;
-  inline typed::set<> domain() const;
-  inline typed::multi_pw_aff<Domain> gist(const typed::set<> &set) const;
-  inline typed::multi_union_pw_aff<Domain> gist(const typed::union_set<> &context) const;
-  inline typed::multi_pw_aff<Domain> gist(const typed::basic_set<> &set) const;
-  inline typed::multi_pw_aff<Domain> gist(const typed::point<> &set) const;
-  inline typed::multi_pw_aff<Domain, Domain> identity() const;
-  template <typename Arg1>
-  inline typed::multi_pw_aff<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
-  inline typed::multi_pw_aff<Domain> intersect_domain(const typed::set<> &domain) const = delete;
-  inline typed::multi_union_pw_aff<Domain> intersect_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::multi_pw_aff<Domain> intersect_domain(const typed::basic_set<> &domain) const = delete;
-  inline typed::multi_pw_aff<Domain> intersect_domain(const typed::point<> &domain) const = delete;
-  inline typed::multi_pw_aff<Domain> intersect_params(const typed::set<> &set) const;
-  inline typed::multi_pw_aff<Domain> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::multi_pw_aff<Domain> intersect_params(const typed::point<> &set) const;
-  inline typed::pw_aff_list<Anonymous> list() const;
-  inline typed::pw_aff_list<Domain> get_list() const = delete;
-  inline typed::multi_pw_aff<Domain> max(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> max(const typed::aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> max(const typed::multi_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> max(const typed::pw_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> max(const typed::pw_multi_aff<Domain> &multi2) const;
-  inline typed::multi_val<Domain> max_multi_val() const;
-  inline typed::multi_pw_aff<Domain> min(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> min(const typed::aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> min(const typed::multi_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> min(const typed::pw_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> min(const typed::pw_multi_aff<Domain> &multi2) const;
-  inline typed::multi_val<Domain> min_multi_val() const;
-  inline typed::multi_pw_aff<Domain> neg() const;
-  template <typename Range>
-  inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::multi_pw_aff<Range> &multi2) const;
-  template <typename Range>
-  inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::aff<Range> &multi2) const;
-  template <typename Range>
-  inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::multi_aff<Range> &multi2) const;
-  template <typename Range>
-  inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::pw_aff<Range> &multi2) const;
-  template <typename Range>
-  inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::pw_multi_aff<Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain> pullback(const typed::multi_aff<> &ma) const = delete;
-  inline typed::multi_pw_aff<Domain> pullback(const typed::multi_pw_aff<> &mpa2) const = delete;
-  inline typed::multi_pw_aff<Domain> pullback(const typed::pw_multi_aff<> &pma) const = delete;
-  inline typed::multi_union_pw_aff<Domain> pullback(const typed::union_pw_multi_aff<> &upma) const = delete;
-  inline typed::multi_pw_aff<Domain> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
-  inline typed::multi_union_pw_aff<Domain> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
-  inline typed::multi_pw_aff<Domain> range_product(const typed::aff<> &multi2) const = delete;
-  inline typed::multi_pw_aff<Domain> range_product(const typed::multi_aff<> &multi2) const = delete;
-  inline typed::multi_pw_aff<Domain> range_product(const typed::pw_aff<> &multi2) const = delete;
-  inline typed::multi_pw_aff<Domain> range_product(const typed::pw_multi_aff<> &multi2) const = delete;
-  inline typed::id<Domain> get_range_tuple_id() const = delete;
-  inline typed::multi_pw_aff<Domain> scale(const typed::multi_val<Domain> &mv) const;
-  inline typed::multi_pw_aff<Domain> scale(const typed::val<Domain> &v) const;
-  inline typed::multi_pw_aff<Domain> scale(long v) const;
-  inline typed::multi_pw_aff<Domain> scale_down(const typed::multi_val<Domain> &mv) const;
-  inline typed::multi_pw_aff<Domain> scale_down(const typed::val<Domain> &v) const;
-  inline typed::multi_pw_aff<Domain> scale_down(long v) const;
-  inline typed::multi_pw_aff<Domain> set_at(int pos, const typed::pw_aff<Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Domain> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
-  template <typename Domain2>
-  inline typed::multi_pw_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::multi_pw_aff<Domain2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain> space() const;
-  inline typed::space<Domain> get_space() const = delete;
-  inline typed::multi_pw_aff<Domain> sub(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain> sub(const typed::multi_union_pw_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> sub(const typed::aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> sub(const typed::multi_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> sub(const typed::pw_aff<Domain> &multi2) const;
-  inline typed::multi_pw_aff<Domain> sub(const typed::pw_multi_aff<Domain> &multi2) const;
-  template <typename Arg1>
-  inline typed::multi_pw_aff<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
-  inline typed::multi_pw_aff<Domain> union_add(const typed::multi_pw_aff<Domain> &mpa2) const;
-  inline typed::multi_union_pw_aff<Domain> union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const;
-  inline typed::multi_pw_aff<Domain> union_add(const typed::aff<Domain> &mpa2) const;
-  inline typed::multi_pw_aff<Domain> union_add(const typed::multi_aff<Domain> &mpa2) const;
-  inline typed::multi_pw_aff<Domain> union_add(const typed::pw_aff<Domain> &mpa2) const;
-  inline typed::multi_pw_aff<Domain> union_add(const typed::pw_multi_aff<Domain> &mpa2) const;
-};
-
-template <typename Domain, typename Range>
-struct multi_pw_aff<Domain, Range> : public isl::multi_pw_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_pw_aff() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  multi_pw_aff(const multi_pw_aff<Arg1, Arg2> &obj) : isl::multi_pw_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_pw_aff>{}, bool>::type = true>
-  multi_pw_aff(const base &obj) : isl::multi_pw_aff(obj) {}
- public:
-  static multi_pw_aff from(const isl::multi_pw_aff &obj) {
-    return multi_pw_aff(obj);
-  }
-  inline /* implicit */ multi_pw_aff(const typed::aff<Domain, Range> &aff);
-  inline /* implicit */ multi_pw_aff(const typed::multi_aff<Domain, Range> &ma);
-  inline /* implicit */ multi_pw_aff(const typed::pw_aff<Domain, Range> &pa);
-  inline explicit multi_pw_aff(const typed::space<Domain, Range> &space, const typed::pw_aff_list<Domain, Anonymous> &list);
-  inline /* implicit */ multi_pw_aff(const typed::pw_multi_aff<Domain, Range> &pma);
-  inline explicit multi_pw_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_pw_aff<Domain, Range> add(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> add(const typed::aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> add(const typed::multi_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> add(const typed::pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> add(const typed::pw_multi_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> add_constant(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_pw_aff<Domain, Range> add_constant(const typed::val<Range> &v) const;
-  inline typed::multi_pw_aff<Domain, Range> add_constant(long v) const;
-  inline typed::map<Domain, Range> as_map() const;
-  inline typed::multi_aff<Domain, Range> as_multi_aff() const;
-  inline typed::set<Domain, Range> as_set() const = delete;
-  inline typed::pw_aff<Domain, Anonymous> at(int pos) const;
-  inline typed::pw_aff<Domain, Range> get_at(int pos) const = delete;
-  inline typed::set<Domain> bind(const typed::multi_id<Range> &tuple) const;
-  inline typed::multi_pw_aff<Range> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::multi_pw_aff<Domain, Range> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::multi_pw_aff<Domain, Range> coalesce() const;
-  inline typed::set<Domain> domain() const;
-  inline typed::multi_pw_aff<Domain, Range> gist(const typed::set<Domain> &set) const;
-  inline typed::multi_union_pw_aff<Domain, Range> gist(const typed::union_set<Domain> &context) const;
-  inline typed::multi_pw_aff<Domain, Range> gist(const typed::basic_set<Domain> &set) const;
-  inline typed::multi_pw_aff<Domain, Range> gist(const typed::point<Domain> &set) const;
-  inline typed::multi_pw_aff<Domain, Range> identity() const;
-  inline typed::multi_pw_aff<Domain, Range> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::multi_pw_aff<Domain, Range> intersect_domain(const typed::set<Domain> &domain) const;
-  inline typed::multi_union_pw_aff<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::multi_pw_aff<Domain, Range> intersect_domain(const typed::basic_set<Domain> &domain) const;
-  inline typed::multi_pw_aff<Domain, Range> intersect_domain(const typed::point<Domain> &domain) const;
-  inline typed::multi_pw_aff<Domain, Range> intersect_params(const typed::set<> &set) const;
-  inline typed::multi_pw_aff<Domain, Range> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::multi_pw_aff<Domain, Range> intersect_params(const typed::point<> &set) const;
-  inline typed::pw_aff_list<Domain, Anonymous> list() const;
-  inline typed::pw_aff_list<Domain, Range> get_list() const = delete;
-  inline typed::multi_pw_aff<Domain, Range> max(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> max(const typed::aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> max(const typed::multi_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> max(const typed::pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> max(const typed::pw_multi_aff<Domain, Range> &multi2) const;
-  inline typed::multi_val<Range> max_multi_val() const;
-  inline typed::multi_pw_aff<Domain, Range> min(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> min(const typed::aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> min(const typed::multi_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> min(const typed::pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> min(const typed::pw_multi_aff<Domain, Range> &multi2) const;
-  inline typed::multi_val<Range> min_multi_val() const;
-  inline typed::multi_pw_aff<Domain, Range> neg() const;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::pw_aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::pw_multi_aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2>
-  inline typed::multi_pw_aff<Domain2, Range> pullback(const typed::multi_aff<Domain2, Domain> &ma) const;
-  inline typed::multi_pw_aff<Range> pullback(const typed::multi_aff<Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::multi_pw_aff<Domain2, Range> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const;
-  inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<Domain> &mpa2) const;
-  template <typename Domain2>
-  inline typed::multi_pw_aff<Domain2, Range> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  inline typed::multi_pw_aff<Range> pullback(const typed::pw_multi_aff<Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::multi_union_pw_aff<Domain2, Range> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  inline typed::multi_union_pw_aff<Range> pullback(const typed::union_pw_multi_aff<Domain> &upma) const;
-  template <typename Range2>
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &multi2) const;
-  inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
-  inline typed::multi_pw_aff<Domain, Range> scale(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_pw_aff<Domain, Range> scale(const typed::val<Range> &v) const;
-  inline typed::multi_pw_aff<Domain, Range> scale(long v) const;
-  inline typed::multi_pw_aff<Domain, Range> scale_down(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_pw_aff<Domain, Range> scale_down(const typed::val<Range> &v) const;
-  inline typed::multi_pw_aff<Domain, Range> scale_down(long v) const;
-  inline typed::multi_pw_aff<Domain, Range> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Domain, Range> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
-  template <typename Range2>
-  inline typed::multi_pw_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::multi_pw_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain, Range> space() const;
-  inline typed::space<Domain, Range> get_space() const = delete;
-  inline typed::multi_pw_aff<Domain, Range> sub(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> sub(const typed::aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> sub(const typed::multi_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> sub(const typed::pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> sub(const typed::pw_multi_aff<Domain, Range> &multi2) const;
-  inline typed::multi_pw_aff<Domain, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<Domain, Range> union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const;
-  inline typed::multi_pw_aff<Domain, Range> union_add(const typed::aff<Domain, Range> &mpa2) const;
-  inline typed::multi_pw_aff<Domain, Range> union_add(const typed::multi_aff<Domain, Range> &mpa2) const;
-  inline typed::multi_pw_aff<Domain, Range> union_add(const typed::pw_aff<Domain, Range> &mpa2) const;
-  inline typed::multi_pw_aff<Domain, Range> union_add(const typed::pw_multi_aff<Domain, Range> &mpa2) const;
-};
-
-template <typename Domain2, typename Range2, typename Range>
-struct multi_pw_aff<pair<Domain2, Range2>, Range> : public isl::multi_pw_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_pw_aff() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain2, Arg1>{} &&
-              std::is_base_of<Range2, Arg2>{} &&
-              std::is_base_of<Range, Arg3>{},
-            bool>::type = true>
-  multi_pw_aff(const multi_pw_aff<pair<Arg1, Arg2>, Arg3> &obj) : isl::multi_pw_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_pw_aff>{}, bool>::type = true>
-  multi_pw_aff(const base &obj) : isl::multi_pw_aff(obj) {}
- public:
-  static multi_pw_aff from(const isl::multi_pw_aff &obj) {
-    return multi_pw_aff(obj);
-  }
-  inline /* implicit */ multi_pw_aff(const typed::aff<pair<Domain2, Range2>, Range> &aff);
-  inline /* implicit */ multi_pw_aff(const typed::multi_aff<pair<Domain2, Range2>, Range> &ma);
-  inline /* implicit */ multi_pw_aff(const typed::pw_aff<pair<Domain2, Range2>, Range> &pa);
-  inline explicit multi_pw_aff(const typed::space<pair<Domain2, Range2>, Range> &space, const typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> &list);
-  inline /* implicit */ multi_pw_aff(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma);
-  inline explicit multi_pw_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add_constant(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add_constant(const typed::val<Range> &v) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add_constant(long v) const;
-  inline typed::map<pair<Domain2, Range2>, Range> as_map() const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> as_multi_aff() const;
-  inline typed::set<pair<Domain2, Range2>, Range> as_set() const = delete;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> at(int pos) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Range> get_at(int pos) const = delete;
-  inline typed::set<pair<Domain2, Range2>> bind(const typed::multi_id<Range> &tuple) const;
-  inline typed::multi_pw_aff<Range> bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const;
-  inline typed::multi_pw_aff<Range2, Range> bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> coalesce() const;
-  inline typed::set<pair<Domain2, Range2>> domain() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> gist(const typed::set<pair<Domain2, Range2>> &set) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> gist(const typed::union_set<pair<Domain2, Range2>> &context) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> gist(const typed::basic_set<pair<Domain2, Range2>> &set) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> gist(const typed::point<pair<Domain2, Range2>> &set) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> identity() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::set<pair<Domain2, Range2>> &domain) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &domain) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::point<pair<Domain2, Range2>> &domain) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::set<> &set) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::point<> &set) const;
-  inline typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> list() const;
-  inline typed::pw_aff_list<pair<Domain2, Range2>, Range> get_list() const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_val<Range> max_multi_val() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_val<Range> min_multi_val() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> neg() const;
-  template <typename Arg2, typename Arg3>
-  inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::aff<Arg2, Arg3> &multi2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_aff<Arg2, Arg3> &multi2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::pw_aff<Arg2, Arg3> &multi2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::pw_multi_aff<Arg2, Arg3> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<Arg2, Range> pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma) const;
-  inline typed::multi_pw_aff<Range> pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<Arg2, Range> pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const;
-  inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<Arg2, Range> pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma) const;
-  inline typed::multi_pw_aff<Range> pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const;
-  template <typename Arg2>
-  inline typed::multi_union_pw_aff<Arg2, Range> pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma) const;
-  inline typed::multi_union_pw_aff<Range> pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  inline typed::id<pair<Domain2, Range2>, Range> get_range_tuple_id() const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale(const typed::val<Range> &v) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale(long v) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale_down(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale_down(const typed::val<Range> &v) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale_down(long v) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  template <typename Arg1>
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Arg1>
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const std::string &id) const;
-  inline typed::space<pair<Domain2, Range2>, Range> space() const;
-  inline typed::space<pair<Domain2, Range2>, Range> get_space() const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::aff<pair<Domain2, Range2>, Range> &mpa2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_aff<pair<Domain2, Range2>, Range> &mpa2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::pw_aff<pair<Domain2, Range2>, Range> &mpa2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &mpa2) const;
-};
-
-template <typename Domain>
-struct multi_union_pw_aff<Domain> : public isl::multi_union_pw_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_union_pw_aff() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  multi_union_pw_aff(const multi_union_pw_aff<Arg1> &obj) : isl::multi_union_pw_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_union_pw_aff>{}, bool>::type = true>
-  multi_union_pw_aff(const base &obj) : isl::multi_union_pw_aff(obj) {}
- public:
-  static multi_union_pw_aff from(const isl::multi_union_pw_aff &obj) {
-    return multi_union_pw_aff(obj);
-  }
-  inline /* implicit */ multi_union_pw_aff(const typed::multi_pw_aff<Domain> &mpa);
-  inline /* implicit */ multi_union_pw_aff(const typed::union_pw_aff<Domain> &upa);
-  inline explicit multi_union_pw_aff(const typed::space<Domain> &space, const typed::union_pw_aff_list<Anonymous> &list);
-  inline explicit multi_union_pw_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_union_pw_aff<Domain> add(const typed::multi_union_pw_aff<Domain> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain> add(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain> add(const typed::union_pw_aff<Domain> &multi2) const;
-  inline typed::union_pw_aff<Anonymous> at(int pos) const;
-  inline typed::union_pw_aff<Domain> get_at(int pos) const = delete;
-  inline typed::union_set<> bind(const typed::multi_id<Domain> &tuple) const;
-  inline typed::multi_union_pw_aff<Domain> coalesce() const;
-  inline typed::union_set<> domain() const;
-  inline typed::multi_union_pw_aff<Domain> gist(const typed::union_set<> &context) const;
-  inline typed::multi_union_pw_aff<Domain> gist(const typed::basic_set<> &context) const;
-  inline typed::multi_union_pw_aff<Domain> gist(const typed::point<> &context) const;
-  inline typed::multi_union_pw_aff<Domain> gist(const typed::set<> &context) const;
-  inline typed::multi_union_pw_aff<Domain> intersect_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::multi_union_pw_aff<Domain> intersect_domain(const typed::basic_set<> &uset) const = delete;
-  inline typed::multi_union_pw_aff<Domain> intersect_domain(const typed::point<> &uset) const = delete;
-  inline typed::multi_union_pw_aff<Domain> intersect_domain(const typed::set<> &uset) const = delete;
-  inline typed::multi_union_pw_aff<Domain> intersect_params(const typed::set<> &params) const;
-  inline typed::multi_union_pw_aff<Domain> intersect_params(const typed::basic_set<> &params) const;
-  inline typed::multi_union_pw_aff<Domain> intersect_params(const typed::point<> &params) const;
-  inline typed::union_pw_aff_list<Anonymous> list() const;
-  inline typed::union_pw_aff_list<Domain> get_list() const = delete;
-  inline typed::multi_union_pw_aff<Domain> neg() const;
-  inline typed::multi_union_pw_aff<Domain> pullback(const typed::union_pw_multi_aff<> &upma) const = delete;
-  inline typed::multi_union_pw_aff<Domain> pullback(const typed::multi_aff<> &upma) const = delete;
-  inline typed::multi_union_pw_aff<Domain> pullback(const typed::pw_multi_aff<> &upma) const = delete;
-  inline typed::multi_union_pw_aff<Domain> pullback(const typed::union_pw_aff<> &upma) const = delete;
-  inline typed::multi_union_pw_aff<Domain> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
-  inline typed::multi_union_pw_aff<Domain> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
-  inline typed::multi_union_pw_aff<Domain> range_product(const typed::union_pw_aff<> &multi2) const = delete;
-  inline typed::id<Domain> get_range_tuple_id() const = delete;
-  inline typed::multi_union_pw_aff<Domain> scale(const typed::multi_val<Domain> &mv) const;
-  inline typed::multi_union_pw_aff<Domain> scale(const typed::val<Domain> &v) const;
-  inline typed::multi_union_pw_aff<Domain> scale(long v) const;
-  inline typed::multi_union_pw_aff<Domain> scale_down(const typed::multi_val<Domain> &mv) const;
-  inline typed::multi_union_pw_aff<Domain> scale_down(const typed::val<Domain> &v) const;
-  inline typed::multi_union_pw_aff<Domain> scale_down(long v) const;
-  inline typed::multi_union_pw_aff<Domain> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
-  template <typename Domain2>
-  inline typed::multi_union_pw_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::multi_union_pw_aff<Domain2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain> space() const;
-  inline typed::space<Domain> get_space() const = delete;
-  inline typed::multi_union_pw_aff<Domain> sub(const typed::multi_union_pw_aff<Domain> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain> sub(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain> sub(const typed::union_pw_aff<Domain> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain> union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const;
-  inline typed::multi_union_pw_aff<Domain> union_add(const typed::multi_pw_aff<Domain> &mupa2) const;
-  inline typed::multi_union_pw_aff<Domain> union_add(const typed::union_pw_aff<Domain> &mupa2) const;
-};
-
-template <typename Domain, typename Range>
-struct multi_union_pw_aff<Domain, Range> : public isl::multi_union_pw_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_union_pw_aff() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  multi_union_pw_aff(const multi_union_pw_aff<Arg1, Arg2> &obj) : isl::multi_union_pw_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_union_pw_aff>{}, bool>::type = true>
-  multi_union_pw_aff(const base &obj) : isl::multi_union_pw_aff(obj) {}
- public:
-  static multi_union_pw_aff from(const isl::multi_union_pw_aff &obj) {
-    return multi_union_pw_aff(obj);
-  }
-  inline /* implicit */ multi_union_pw_aff(const typed::multi_pw_aff<Domain, Range> &mpa);
-  inline /* implicit */ multi_union_pw_aff(const typed::union_pw_aff<Domain, Range> &upa);
-  inline explicit multi_union_pw_aff(const typed::space<Domain, Range> &space, const typed::union_pw_aff_list<Domain, Anonymous> &list);
-  inline explicit multi_union_pw_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_union_pw_aff<Domain, Range> add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> add(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> add(const typed::union_pw_aff<Domain, Range> &multi2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> at(int pos) const;
-  inline typed::union_pw_aff<Domain, Range> get_at(int pos) const = delete;
-  inline typed::union_set<Domain> bind(const typed::multi_id<Range> &tuple) const;
-  inline typed::multi_union_pw_aff<Domain, Range> coalesce() const;
-  inline typed::union_set<Domain> domain() const;
-  inline typed::multi_union_pw_aff<Domain, Range> gist(const typed::union_set<Domain> &context) const;
-  inline typed::multi_union_pw_aff<Domain, Range> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::multi_union_pw_aff<Domain, Range> gist(const typed::point<Domain> &context) const;
-  inline typed::multi_union_pw_aff<Domain, Range> gist(const typed::set<Domain> &context) const;
-  inline typed::multi_union_pw_aff<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::multi_union_pw_aff<Domain, Range> intersect_domain(const typed::basic_set<Domain> &uset) const;
-  inline typed::multi_union_pw_aff<Domain, Range> intersect_domain(const typed::point<Domain> &uset) const;
-  inline typed::multi_union_pw_aff<Domain, Range> intersect_domain(const typed::set<Domain> &uset) const;
-  inline typed::multi_union_pw_aff<Domain, Range> intersect_params(const typed::set<> &params) const;
-  inline typed::multi_union_pw_aff<Domain, Range> intersect_params(const typed::basic_set<> &params) const;
-  inline typed::multi_union_pw_aff<Domain, Range> intersect_params(const typed::point<> &params) const;
-  inline typed::union_pw_aff_list<Domain, Anonymous> list() const;
-  inline typed::union_pw_aff_list<Domain, Range> get_list() const = delete;
-  inline typed::multi_union_pw_aff<Domain, Range> neg() const;
-  template <typename Domain2>
-  inline typed::multi_union_pw_aff<Domain2, Range> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  inline typed::multi_union_pw_aff<Range> pullback(const typed::union_pw_multi_aff<Domain> &upma) const;
-  template <typename Domain2>
-  inline typed::multi_union_pw_aff<Domain2, Range> pullback(const typed::multi_aff<Domain2, Domain> &upma) const;
-  inline typed::multi_union_pw_aff<Range> pullback(const typed::multi_aff<Domain> &upma) const;
-  template <typename Domain2>
-  inline typed::multi_union_pw_aff<Domain2, Range> pullback(const typed::pw_multi_aff<Domain2, Domain> &upma) const;
-  inline typed::multi_union_pw_aff<Range> pullback(const typed::pw_multi_aff<Domain> &upma) const;
-  template <typename Domain2>
-  inline typed::multi_union_pw_aff<Domain2, Range> pullback(const typed::union_pw_aff<Domain2, Domain> &upma) const;
-  inline typed::multi_union_pw_aff<Range> pullback(const typed::union_pw_aff<Domain> &upma) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::union_pw_aff<Domain, Range2> &multi2) const;
-  inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
-  inline typed::multi_union_pw_aff<Domain, Range> scale(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_union_pw_aff<Domain, Range> scale(const typed::val<Range> &v) const;
-  inline typed::multi_union_pw_aff<Domain, Range> scale(long v) const;
-  inline typed::multi_union_pw_aff<Domain, Range> scale_down(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_union_pw_aff<Domain, Range> scale_down(const typed::val<Range> &v) const;
-  inline typed::multi_union_pw_aff<Domain, Range> scale_down(long v) const;
-  inline typed::multi_union_pw_aff<Domain, Range> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Range> space() const;
-  inline typed::space<Domain, Range> get_space() const = delete;
-  inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::union_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::multi_pw_aff<Domain, Range> &mupa2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::union_pw_aff<Domain, Range> &mupa2) const;
-};
-
-template <typename Domain>
-struct multi_val<Domain> : public isl::multi_val {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  multi_val() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  multi_val(const multi_val<Arg1> &obj) : isl::multi_val(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::multi_val>{}, bool>::type = true>
-  multi_val(const base &obj) : isl::multi_val(obj) {}
- public:
-  static multi_val from(const isl::multi_val &obj) {
-    return multi_val(obj);
-  }
-  inline explicit multi_val(const typed::space<Domain> &space, const typed::val_list<Anonymous> &list);
-  inline explicit multi_val(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_val<Domain> add(const typed::multi_val<Domain> &multi2) const;
-  inline typed::multi_val<Domain> add(const typed::val<Domain> &v) const;
-  inline typed::multi_val<Domain> add(long v) const;
-  inline typed::val<Anonymous> at(int pos) const;
-  inline typed::val<Domain> get_at(int pos) const = delete;
-  inline typed::val_list<Anonymous> list() const;
-  inline typed::val_list<Domain> get_list() const = delete;
-  inline typed::multi_val<Domain> max(const typed::multi_val<Domain> &multi2) const;
-  inline typed::multi_val<Domain> min(const typed::multi_val<Domain> &multi2) const;
-  inline typed::multi_val<Domain> neg() const;
-  template <typename Range>
-  inline typed::multi_val<pair<Domain, Range>> product(const typed::multi_val<Range> &multi2) const;
-  inline typed::multi_val<Domain> range_product(const typed::multi_val<> &multi2) const = delete;
-  inline typed::id<Domain> get_range_tuple_id() const = delete;
-  inline typed::multi_val<Domain> scale(const typed::multi_val<Domain> &mv) const;
-  inline typed::multi_val<Domain> scale(const typed::val<Domain> &v) const;
-  inline typed::multi_val<Domain> scale(long v) const;
-  inline typed::multi_val<Domain> scale_down(const typed::multi_val<Domain> &mv) const;
-  inline typed::multi_val<Domain> scale_down(const typed::val<Domain> &v) const;
-  inline typed::multi_val<Domain> scale_down(long v) const;
-  inline typed::multi_val<Domain> set_at(int pos, const typed::val<Anonymous> &el) const;
-  inline typed::multi_val<Domain> set_at(int pos, long el) const;
-  template <typename Domain2>
-  inline typed::multi_val<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::multi_val<Domain2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain> space() const;
-  inline typed::space<Domain> get_space() const = delete;
-  inline typed::multi_val<Domain> sub(const typed::multi_val<Domain> &multi2) const;
-};
-
-template <>
-struct point<> : public isl::point {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  point() = default;
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::point>{}, bool>::type = true>
-  point(const base &obj) : isl::point(obj) {}
- public:
-  static point from(const isl::point &obj) {
-    return point(obj);
-  }
-  inline typed::basic_set<> apply(const typed::basic_map<> &bmap) const = delete;
-  inline typed::set<> apply(const typed::map<> &map) const = delete;
-  inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete;
-  inline typed::pw_multi_aff<> as_pw_multi_aff() const = delete;
-  inline typed::set<> as_set() const = delete;
-  inline typed::set<> bind(const typed::multi_id<> &tuple) const = delete;
-  inline typed::set<> coalesce() const;
-  inline typed::basic_set<> detect_equalities() const;
-  inline bool every_set(const std::function<bool(typed::set<>)> &test) const;
-  inline typed::set<> extract_set(const typed::space<> &space) const;
-  inline void foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const;
-  inline void foreach_point(const std::function<void(typed::point<>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<>)> &fn) const;
-  inline typed::basic_set<> gist(const typed::basic_set<> &context) const;
-  inline typed::set<> gist(const typed::set<> &context) const;
-  inline typed::union_set<> gist(const typed::union_set<> &context) const;
-  inline typed::map<> identity() const = delete;
-  inline typed::pw_aff<Anonymous> indicator_function() const;
-  inline typed::map<> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::basic_set<> intersect(const typed::basic_set<> &bset2) const;
-  inline typed::set<> intersect(const typed::set<> &set2) const;
-  inline typed::union_set<> intersect(const typed::union_set<> &uset2) const;
-  inline typed::basic_set<> intersect_params(const typed::basic_set<> &bset2) const = delete;
-  inline typed::set<> intersect_params(const typed::set<> &params) const = delete;
-  inline typed::set<> lexmax() const = delete;
-  inline typed::pw_multi_aff<> lexmax_pw_multi_aff() const = delete;
-  inline typed::set<> lexmin() const = delete;
-  inline typed::pw_multi_aff<> lexmin_pw_multi_aff() const = delete;
-  inline typed::set<> lower_bound(const typed::multi_pw_aff<> &lower) const = delete;
-  inline typed::set<> lower_bound(const typed::multi_val<> &lower) const = delete;
-  inline typed::multi_pw_aff<> max_multi_pw_aff() const = delete;
-  inline typed::val<> max_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_pw_aff<> min_multi_pw_aff() const = delete;
-  inline typed::val<> min_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_val<> multi_val() const = delete;
-  inline typed::multi_val<> get_multi_val() const = delete;
-  inline typed::basic_set<> params() const = delete;
-  inline typed::multi_val<> plain_multi_val_if_fixed() const = delete;
-  inline typed::set<> preimage(const typed::multi_aff<> &ma) const = delete;
-  inline typed::set<> preimage(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::set<> preimage(const typed::pw_multi_aff<> &pma) const = delete;
-  inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete;
-  inline typed::set<> product(const typed::set<> &set2) const = delete;
-  inline typed::set<> project_out_all_params() const;
-  inline typed::set<> project_out_param(const typed::id<Anonymous> &id) const;
-  inline typed::set<> project_out_param(const std::string &id) const;
-  inline typed::set<> project_out_param(const typed::id_list<Anonymous> &list) const;
-  inline typed::pw_multi_aff<> pw_multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
-  inline typed::set_list<> set_list() const;
-  inline typed::fixed_box<> simple_fixed_box_hull() const = delete;
-  inline typed::space<> space() const;
-  inline typed::set<> subtract(const typed::set<> &set2) const;
-  inline typed::union_set<> subtract(const typed::union_set<> &uset2) const;
-  inline typed::set<> to_set() const;
-  inline typed::union_set<> to_union_set() const;
-  inline typed::map<> translation() const = delete;
-  template <typename Domain>
-  inline typed::set<Domain> unbind_params(const typed::multi_id<Domain> &tuple) const;
-  inline typed::map<> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::set<> unite(const typed::basic_set<> &bset2) const;
-  inline typed::set<> unite(const typed::set<> &set2) const;
-  inline typed::union_set<> unite(const typed::union_set<> &uset2) const;
-  inline typed::map<> unwrap() const = delete;
-  inline typed::set<> upper_bound(const typed::multi_pw_aff<> &upper) const = delete;
-  inline typed::set<> upper_bound(const typed::multi_val<> &upper) const = delete;
-};
-
-template <typename Domain>
-struct point<Domain> : public isl::point {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  point() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  point(const point<Arg1> &obj) : isl::point(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::point>{}, bool>::type = true>
-  point(const base &obj) : isl::point(obj) {}
- public:
-  static point from(const isl::point &obj) {
-    return point(obj);
-  }
-  template <typename Range>
-  inline typed::basic_set<Range> apply(const typed::basic_map<Domain, Range> &bmap) const;
-  template <typename Range>
-  inline typed::set<Range> apply(const typed::map<Domain, Range> &map) const;
-  template <typename Range>
-  inline typed::union_set<Range> apply(const typed::union_map<Domain, Range> &umap) const;
-  inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
-  inline typed::set<Domain> as_set() const;
-  inline typed::set<> bind(const typed::multi_id<Domain> &tuple) const;
-  inline typed::set<Domain> coalesce() const;
-  inline typed::basic_set<Domain> detect_equalities() const;
-  inline bool every_set(const std::function<bool(typed::set<Domain>)> &test) const;
-  inline typed::set<Domain> extract_set(const typed::space<Domain> &space) const;
-  inline void foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const;
-  inline void foreach_point(const std::function<void(typed::point<Domain>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<Domain>)> &fn) const;
-  inline typed::basic_set<Domain> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::set<Domain> gist(const typed::set<Domain> &context) const;
-  inline typed::union_set<Domain> gist(const typed::union_set<Domain> &context) const;
-  inline typed::map<Domain, Domain> identity() const;
-  inline typed::pw_aff<Domain, Anonymous> indicator_function() const;
-  template <typename Arg1>
-  inline typed::map<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
-  inline typed::basic_set<Domain> intersect(const typed::basic_set<Domain> &bset2) const;
-  inline typed::set<Domain> intersect(const typed::set<Domain> &set2) const;
-  inline typed::union_set<Domain> intersect(const typed::union_set<Domain> &uset2) const;
-  inline typed::basic_set<Domain> intersect_params(const typed::basic_set<> &bset2) const;
-  inline typed::set<Domain> intersect_params(const typed::set<> &params) const;
-  inline typed::set<Domain> lexmax() const;
-  inline typed::pw_multi_aff<Domain> lexmax_pw_multi_aff() const;
-  inline typed::set<Domain> lexmin() const;
-  inline typed::pw_multi_aff<Domain> lexmin_pw_multi_aff() const;
-  inline typed::set<Domain> lower_bound(const typed::multi_pw_aff<Domain> &lower) const;
-  inline typed::set<Domain> lower_bound(const typed::multi_val<Domain> &lower) const;
-  inline typed::multi_pw_aff<Domain> max_multi_pw_aff() const;
-  inline typed::val<Domain> max_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_pw_aff<Domain> min_multi_pw_aff() const;
-  inline typed::val<Domain> min_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_val<Domain> multi_val() const;
-  inline typed::multi_val<Domain> get_multi_val() const = delete;
-  inline typed::basic_set<> params() const;
-  inline typed::multi_val<Domain> plain_multi_val_if_fixed() const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Range>
-  inline typed::set<pair<Domain, Range>> product(const typed::set<Range> &set2) const;
-  inline typed::set<Domain> project_out_all_params() const;
-  inline typed::set<Domain> project_out_param(const typed::id<Anonymous> &id) const;
-  inline typed::set<Domain> project_out_param(const std::string &id) const;
-  inline typed::set<Domain> project_out_param(const typed::id_list<Anonymous> &list) const;
-  template <typename Range>
-  inline typed::pw_multi_aff<Domain, Range> pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const;
-  inline typed::set_list<Domain> set_list() const;
-  inline typed::fixed_box<Domain> simple_fixed_box_hull() const;
-  inline typed::space<Domain> space() const;
-  inline typed::set<Domain> subtract(const typed::set<Domain> &set2) const;
-  inline typed::union_set<Domain> subtract(const typed::union_set<Domain> &uset2) const;
-  inline typed::set<Domain> to_set() const;
-  inline typed::union_set<Domain> to_union_set() const;
-  inline typed::map<Domain, Domain> translation() const;
-  inline typed::set<Domain> unbind_params(const typed::multi_id<> &tuple) const = delete;
-  template <typename Arg1>
-  inline typed::map<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
-  inline typed::set<Domain> unite(const typed::basic_set<Domain> &bset2) const;
-  inline typed::set<Domain> unite(const typed::set<Domain> &set2) const;
-  inline typed::union_set<Domain> unite(const typed::union_set<Domain> &uset2) const;
-  inline typed::map<Domain> unwrap() const = delete;
-  inline typed::set<Domain> upper_bound(const typed::multi_pw_aff<Domain> &upper) const;
-  inline typed::set<Domain> upper_bound(const typed::multi_val<Domain> &upper) const;
-};
-
-template <typename Domain, typename Range>
-struct point<pair<Domain, Range>> : public isl::point {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  point() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  point(const point<pair<Arg1, Arg2>> &obj) : isl::point(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::point>{}, bool>::type = true>
-  point(const base &obj) : isl::point(obj) {}
- public:
-  static point from(const isl::point &obj) {
-    return point(obj);
-  }
-  template <typename Arg2>
-  inline typed::basic_set<Arg2> apply(const typed::basic_map<pair<Domain, Range>, Arg2> &bmap) const;
-  template <typename Arg2>
-  inline typed::set<Arg2> apply(const typed::map<pair<Domain, Range>, Arg2> &map) const;
-  template <typename Arg2>
-  inline typed::union_set<Arg2> apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const;
-  inline typed::pw_multi_aff<pair<Domain, Range>> as_pw_multi_aff() const;
-  inline typed::set<pair<Domain, Range>> as_set() const;
-  inline typed::set<> bind(const typed::multi_id<pair<Domain, Range>> &tuple) const;
-  inline typed::set<pair<Domain, Range>> coalesce() const;
-  inline typed::basic_set<pair<Domain, Range>> detect_equalities() const;
-  inline bool every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const;
-  inline typed::set<pair<Domain, Range>> extract_set(const typed::space<pair<Domain, Range>> &space) const;
-  inline void foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const;
-  inline void foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const;
-  inline typed::basic_set<pair<Domain, Range>> gist(const typed::basic_set<pair<Domain, Range>> &context) const;
-  inline typed::set<pair<Domain, Range>> gist(const typed::set<pair<Domain, Range>> &context) const;
-  inline typed::union_set<pair<Domain, Range>> gist(const typed::union_set<pair<Domain, Range>> &context) const;
-  inline typed::map<pair<Domain, Range>, pair<Domain, Range>> identity() const;
-  inline typed::pw_aff<pair<Domain, Range>, Anonymous> indicator_function() const;
-  template <typename Arg2>
-  inline typed::map<Arg2, pair<Domain, Range>> insert_domain(const typed::space<Arg2> &domain) const;
-  inline typed::basic_set<pair<Domain, Range>> intersect(const typed::basic_set<pair<Domain, Range>> &bset2) const;
-  inline typed::set<pair<Domain, Range>> intersect(const typed::set<pair<Domain, Range>> &set2) const;
-  inline typed::union_set<pair<Domain, Range>> intersect(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::basic_set<pair<Domain, Range>> intersect_params(const typed::basic_set<> &bset2) const;
-  inline typed::set<pair<Domain, Range>> intersect_params(const typed::set<> &params) const;
-  inline typed::set<pair<Domain, Range>> lexmax() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>> lexmax_pw_multi_aff() const;
-  inline typed::set<pair<Domain, Range>> lexmin() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>> lexmin_pw_multi_aff() const;
-  inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const;
-  inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const;
-  inline typed::multi_pw_aff<pair<Domain, Range>> max_multi_pw_aff() const;
-  inline typed::val<pair<Domain, Range>> max_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_pw_aff<pair<Domain, Range>> min_multi_pw_aff() const;
-  inline typed::val<pair<Domain, Range>> min_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_val<pair<Domain, Range>> multi_val() const;
-  inline typed::multi_val<pair<Domain, Range>> get_multi_val() const = delete;
-  inline typed::basic_set<> params() const;
-  inline typed::multi_val<pair<Domain, Range>> plain_multi_val_if_fixed() const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
-  template <typename Arg2>
-  inline typed::set<pair<pair<Domain, Range>, Arg2>> product(const typed::set<Arg2> &set2) const;
-  inline typed::set<pair<Domain, Range>> project_out_all_params() const;
-  inline typed::set<pair<Domain, Range>> project_out_param(const typed::id<Anonymous> &id) const;
-  inline typed::set<pair<Domain, Range>> project_out_param(const std::string &id) const;
-  inline typed::set<pair<Domain, Range>> project_out_param(const typed::id_list<Anonymous> &list) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<pair<Domain, Range>, Arg2> pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const;
-  inline typed::set_list<pair<Domain, Range>> set_list() const;
-  inline typed::fixed_box<pair<Domain, Range>> simple_fixed_box_hull() const;
-  inline typed::space<pair<Domain, Range>> space() const;
-  inline typed::set<pair<Domain, Range>> subtract(const typed::set<pair<Domain, Range>> &set2) const;
-  inline typed::union_set<pair<Domain, Range>> subtract(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::set<pair<Domain, Range>> to_set() const;
-  inline typed::union_set<pair<Domain, Range>> to_union_set() const;
-  inline typed::map<pair<Domain, Range>, pair<Domain, Range>> translation() const;
-  inline typed::set<pair<Domain, Range>> unbind_params(const typed::multi_id<> &tuple) const = delete;
-  template <typename Arg2>
-  inline typed::map<Arg2, pair<Domain, Range>> unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const;
-  inline typed::set<pair<Domain, Range>> unite(const typed::basic_set<pair<Domain, Range>> &bset2) const;
-  inline typed::set<pair<Domain, Range>> unite(const typed::set<pair<Domain, Range>> &set2) const;
-  inline typed::union_set<pair<Domain, Range>> unite(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::map<Domain, Range> unwrap() const;
-  inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const;
-  inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const;
-};
-
-template <>
-struct pw_aff<Anonymous> : public isl::pw_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_aff() = default;
-  pw_aff(const isl::pw_aff &obj) : isl::pw_aff(obj) {}
-  static pw_aff from(const isl::pw_aff &obj) {
-    return pw_aff(obj);
-  }
-  inline /* implicit */ pw_aff(const typed::aff<Anonymous> &aff);
-  inline explicit pw_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_pw_aff<Anonymous> add(const typed::multi_pw_aff<Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<Anonymous> add(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
-  inline typed::pw_aff<Anonymous> add(const typed::pw_aff<Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Anonymous> add(const typed::pw_multi_aff<Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Anonymous> add(const typed::union_pw_aff<Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Anonymous> add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
-  inline typed::pw_aff<Anonymous> add(const typed::aff<Anonymous> &pwaff2) const;
-  inline typed::pw_aff<Anonymous> add_constant(const typed::val<Anonymous> &v) const;
-  inline typed::pw_aff<Anonymous> add_constant(long v) const;
-  inline typed::pw_multi_aff<Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
-  template <typename Range>
-  inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const;
-  inline typed::aff<Anonymous> as_aff() const;
-  inline typed::map<Anonymous> as_map() const = delete;
-  inline typed::multi_aff<Anonymous> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<Anonymous> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Anonymous> as_pw_multi_aff() const;
-  inline typed::set<Anonymous> as_set() const;
-  inline typed::union_map<Anonymous> as_union_map() const = delete;
-  inline typed::pw_aff<Anonymous> at(int pos) const;
-  inline typed::set<> bind(const typed::multi_id<Anonymous> &tuple) const;
-  inline typed::set<> bind(const typed::id<Anonymous> &id) const;
-  inline typed::set<> bind(const std::string &id) const;
-  inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::pw_aff<Anonymous> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::pw_aff<Anonymous> ceil() const;
-  inline typed::pw_aff<Anonymous> coalesce() const;
-  inline typed::pw_aff<Anonymous> cond(const typed::pw_aff<Anonymous> &pwaff_true, const typed::pw_aff<Anonymous> &pwaff_false) const;
-  inline typed::set<> domain() const;
-  inline typed::pw_multi_aff<Anonymous> extract_pw_multi_aff(const typed::space<Anonymous> &space) const;
-  inline typed::pw_aff<Anonymous> floor() const;
-  inline typed::set<Anonymous> ge_set(const typed::pw_aff<> &pwaff2) const = delete;
-  inline typed::set<Anonymous> ge_set(const typed::aff<> &pwaff2) const = delete;
-  inline typed::pw_aff<Anonymous> gist(const typed::set<> &context) const;
-  inline typed::union_pw_aff<Anonymous> gist(const typed::union_set<> &context) const;
-  inline typed::pw_aff<Anonymous> gist(const typed::basic_set<> &context) const;
-  inline typed::pw_aff<Anonymous> gist(const typed::point<> &context) const;
-  inline typed::set<Anonymous> gt_set(const typed::pw_aff<> &pwaff2) const = delete;
-  inline typed::set<Anonymous> gt_set(const typed::aff<> &pwaff2) const = delete;
-  inline typed::multi_pw_aff<Anonymous, Anonymous> identity() const;
-  template <typename Domain>
-  inline typed::pw_aff<Domain, Anonymous> insert_domain(const typed::space<Domain> &domain) const;
-  inline typed::pw_aff<Anonymous> intersect_domain(const typed::set<> &set) const = delete;
-  inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::pw_aff<Anonymous> intersect_domain(const typed::basic_set<> &set) const = delete;
-  inline typed::pw_aff<Anonymous> intersect_domain(const typed::point<> &set) const = delete;
-  inline typed::pw_aff<Anonymous> intersect_params(const typed::set<> &set) const;
-  inline typed::pw_aff<Anonymous> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::pw_aff<Anonymous> intersect_params(const typed::point<> &set) const;
-  inline typed::set<Anonymous> le_set(const typed::pw_aff<> &pwaff2) const = delete;
-  inline typed::set<Anonymous> le_set(const typed::aff<> &pwaff2) const = delete;
-  inline typed::pw_aff_list<Anonymous> list() const;
-  inline typed::set<Anonymous> lt_set(const typed::pw_aff<> &pwaff2) const = delete;
-  inline typed::set<Anonymous> lt_set(const typed::aff<> &pwaff2) const = delete;
-  inline typed::multi_pw_aff<Anonymous> max(const typed::multi_pw_aff<Anonymous> &multi2) const;
-  inline typed::pw_aff<Anonymous> max(const typed::pw_aff<Anonymous> &pwaff2) const;
-  inline typed::pw_aff<Anonymous> max(const typed::aff<Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> max_multi_val() const;
-  inline typed::multi_pw_aff<Anonymous> min(const typed::multi_pw_aff<Anonymous> &multi2) const;
-  inline typed::pw_aff<Anonymous> min(const typed::pw_aff<Anonymous> &pwaff2) const;
-  inline typed::pw_aff<Anonymous> min(const typed::aff<Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> min_multi_val() const;
-  inline typed::pw_aff<Anonymous> mod(const typed::val<Anonymous> &mod) const;
-  inline typed::pw_aff<Anonymous> mod(long mod) const;
-  inline typed::pw_aff<Anonymous> neg() const;
-  inline typed::pw_multi_aff<Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  template <typename Range>
-  inline typed::multi_pw_aff<pair<Anonymous, Range>> product(const typed::multi_pw_aff<Range> &multi2) const;
-  template <typename Range>
-  inline typed::pw_multi_aff<pair<Anonymous, Range>> product(const typed::pw_multi_aff<Range> &pma2) const;
-  inline typed::pw_aff<Anonymous> pullback(const typed::multi_aff<> &ma) const = delete;
-  inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<> &pma) const = delete;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<> &upma) const = delete;
-  inline typed::pw_multi_aff_list<Anonymous> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<Anonymous> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<Anonymous> range_factor_range() const = delete;
-  inline typed::multi_pw_aff<Anonymous> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
-  inline typed::multi_union_pw_aff<Anonymous> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
-  inline typed::pw_multi_aff<Anonymous> range_product(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Anonymous> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::multi_pw_aff<Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::pw_aff<Anonymous> scale(const typed::val<Anonymous> &v) const;
-  inline typed::pw_aff<Anonymous> scale(long v) const;
-  inline typed::multi_pw_aff<Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::pw_aff<Anonymous> scale_down(const typed::val<Anonymous> &f) const;
-  inline typed::pw_aff<Anonymous> scale_down(long f) const;
-  inline typed::multi_pw_aff<Anonymous> set_at(int pos, const typed::pw_aff<Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Anonymous> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Anonymous> space() const;
-  inline typed::space<Anonymous> get_space() const = delete;
-  inline typed::multi_pw_aff<Anonymous> sub(const typed::multi_pw_aff<Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<Anonymous> sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
-  inline typed::pw_aff<Anonymous> sub(const typed::pw_aff<Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Anonymous> sub(const typed::pw_multi_aff<Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Anonymous> sub(const typed::union_pw_aff<Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Anonymous> sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
-  inline typed::pw_aff<Anonymous> sub(const typed::aff<Anonymous> &pwaff2) const;
-  inline typed::pw_aff<Anonymous> subtract_domain(const typed::set<> &set) const = delete;
-  inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::pw_aff<Anonymous> subtract_domain(const typed::basic_set<> &set) const = delete;
-  inline typed::pw_aff<Anonymous> subtract_domain(const typed::point<> &set) const = delete;
-  inline typed::multi_pw_aff<Anonymous> to_multi_pw_aff() const;
-  inline typed::union_pw_aff<Anonymous> to_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<Anonymous> to_union_pw_multi_aff() const;
-  template <typename Domain>
-  inline typed::multi_pw_aff<Domain, Anonymous> unbind_params_insert_domain(const typed::multi_id<Domain> &domain) const;
-  inline typed::multi_pw_aff<Anonymous> union_add(const typed::multi_pw_aff<Anonymous> &mpa2) const;
-  inline typed::multi_union_pw_aff<Anonymous> union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const;
-  inline typed::pw_aff<Anonymous> union_add(const typed::pw_aff<Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Anonymous> union_add(const typed::pw_multi_aff<Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Anonymous> union_add(const typed::union_pw_aff<Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Anonymous> union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
-  inline typed::pw_aff<Anonymous> union_add(const typed::aff<Anonymous> &pwaff2) const;
-};
-
-template <typename Domain>
-struct pw_aff<Domain, Anonymous> : public isl::pw_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_aff() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  pw_aff(const pw_aff<Arg1, Anonymous> &obj) : isl::pw_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::pw_aff>{}, bool>::type = true>
-  pw_aff(const base &obj) : isl::pw_aff(obj) {}
- public:
-  static pw_aff from(const isl::pw_aff &obj) {
-    return pw_aff(obj);
-  }
-  inline /* implicit */ pw_aff(const typed::aff<Domain, Anonymous> &aff);
-  inline explicit pw_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_pw_aff<Domain, Anonymous> add(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::pw_aff<Domain, Anonymous> add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Domain, Anonymous> add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
-  inline typed::pw_aff<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_aff<Domain, Anonymous> add_constant(const typed::val<Anonymous> &v) const;
-  inline typed::pw_aff<Domain, Anonymous> add_constant(long v) const;
-  inline typed::pw_multi_aff<Domain, Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const;
-  inline typed::aff<Domain, Anonymous> as_aff() const;
-  inline typed::map<Domain, Anonymous> as_map() const;
-  inline typed::multi_aff<Domain, Anonymous> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Anonymous> as_pw_multi_aff() const;
-  inline typed::set<Domain, Anonymous> as_set() const = delete;
-  inline typed::union_map<Domain, Anonymous> as_union_map() const;
-  inline typed::pw_aff<Domain, Anonymous> at(int pos) const;
-  inline typed::set<Domain> bind(const typed::multi_id<Anonymous> &tuple) const;
-  inline typed::set<Domain> bind(const typed::id<Anonymous> &id) const;
-  inline typed::set<Domain> bind(const std::string &id) const;
-  inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::pw_aff<Domain, Anonymous> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::pw_aff<Domain, Anonymous> ceil() const;
-  inline typed::pw_aff<Domain, Anonymous> coalesce() const;
-  inline typed::pw_aff<Domain, Anonymous> cond(const typed::pw_aff<Domain, Anonymous> &pwaff_true, const typed::pw_aff<Domain, Anonymous> &pwaff_false) const;
-  inline typed::set<Domain> domain() const;
-  inline typed::pw_multi_aff<Domain, Anonymous> extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const;
-  inline typed::pw_aff<Domain, Anonymous> floor() const;
-  inline typed::set<Domain> ge_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::set<Domain> ge_set(const typed::aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_aff<Domain, Anonymous> gist(const typed::set<Domain> &context) const;
-  inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::union_set<Domain> &context) const;
-  inline typed::pw_aff<Domain, Anonymous> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::pw_aff<Domain, Anonymous> gist(const typed::point<Domain> &context) const;
-  inline typed::set<Domain> gt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::set<Domain> gt_set(const typed::aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::multi_pw_aff<Domain, Anonymous> identity() const;
-  inline typed::pw_aff<Domain, Anonymous> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_aff<Domain, Anonymous> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::pw_aff<Domain, Anonymous> intersect_domain(const typed::basic_set<Domain> &set) const;
-  inline typed::pw_aff<Domain, Anonymous> intersect_domain(const typed::point<Domain> &set) const;
-  inline typed::pw_aff<Domain, Anonymous> intersect_params(const typed::set<> &set) const;
-  inline typed::pw_aff<Domain, Anonymous> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::pw_aff<Domain, Anonymous> intersect_params(const typed::point<> &set) const;
-  inline typed::set<Domain> le_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::set<Domain> le_set(const typed::aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_aff_list<Domain, Anonymous> list() const;
-  inline typed::set<Domain> lt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::set<Domain> lt_set(const typed::aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::multi_pw_aff<Domain, Anonymous> max(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::pw_aff<Domain, Anonymous> max(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_aff<Domain, Anonymous> max(const typed::aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> max_multi_val() const;
-  inline typed::multi_pw_aff<Domain, Anonymous> min(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::pw_aff<Domain, Anonymous> min(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_aff<Domain, Anonymous> min(const typed::aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> min_multi_val() const;
-  inline typed::pw_aff<Domain, Anonymous> mod(const typed::val<Anonymous> &mod) const;
-  inline typed::pw_aff<Domain, Anonymous> mod(long mod) const;
-  inline typed::pw_aff<Domain, Anonymous> neg() const;
-  inline typed::pw_multi_aff<Domain, Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const;
-  template <typename Domain2>
-  inline typed::pw_aff<Domain2, Anonymous> pullback(const typed::multi_aff<Domain2, Domain> &ma) const;
-  inline typed::pw_aff<Anonymous> pullback(const typed::multi_aff<Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::pw_aff<Domain2, Anonymous> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::pw_aff<Domain2, Anonymous> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<Domain> &upma) const;
-  inline typed::pw_multi_aff_list<Domain, Anonymous> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<Domain, Anonymous> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<Domain, Anonymous> range_factor_range() const = delete;
-  template <typename Range2>
-  inline typed::multi_pw_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::pw_multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
-  inline typed::multi_pw_aff<Domain, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::pw_aff<Domain, Anonymous> scale(const typed::val<Anonymous> &v) const;
-  inline typed::pw_aff<Domain, Anonymous> scale(long v) const;
-  inline typed::multi_pw_aff<Domain, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::pw_aff<Domain, Anonymous> scale_down(const typed::val<Anonymous> &f) const;
-  inline typed::pw_aff<Domain, Anonymous> scale_down(long f) const;
-  inline typed::multi_pw_aff<Domain, Anonymous> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
-  template <typename Range2>
-  inline typed::pw_multi_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::pw_multi_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain, Anonymous> space() const;
-  inline typed::space<Domain, Anonymous> get_space() const = delete;
-  inline typed::multi_pw_aff<Domain, Anonymous> sub(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::pw_aff<Domain, Anonymous> sub(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Domain, Anonymous> sub(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
-  inline typed::pw_aff<Domain, Anonymous> sub(const typed::aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_aff<Domain, Anonymous> subtract_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::pw_aff<Domain, Anonymous> subtract_domain(const typed::basic_set<Domain> &set) const;
-  inline typed::pw_aff<Domain, Anonymous> subtract_domain(const typed::point<Domain> &set) const;
-  inline typed::multi_pw_aff<Domain, Anonymous> to_multi_pw_aff() const;
-  inline typed::union_pw_aff<Domain, Anonymous> to_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> to_union_pw_multi_aff() const;
-  inline typed::multi_pw_aff<Domain, Anonymous> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<Domain, Anonymous> union_add(const typed::multi_pw_aff<Domain, Anonymous> &mpa2) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const;
-  inline typed::pw_aff<Domain, Anonymous> union_add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<Domain, Anonymous> union_add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
-  inline typed::pw_aff<Domain, Anonymous> union_add(const typed::aff<Domain, Anonymous> &pwaff2) const;
-};
-
-template <typename Domain2, typename Range2>
-struct pw_aff<pair<Domain2, Range2>, Anonymous> : public isl::pw_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_aff() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain2, Arg1>{} &&
-              std::is_base_of<Range2, Arg2>{},
-            bool>::type = true>
-  pw_aff(const pw_aff<pair<Arg1, Arg2>, Anonymous> &obj) : isl::pw_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::pw_aff>{}, bool>::type = true>
-  pw_aff(const base &obj) : isl::pw_aff(obj) {}
- public:
-  static pw_aff from(const isl::pw_aff &obj) {
-    return pw_aff(obj);
-  }
-  inline /* implicit */ pw_aff(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff);
-  inline explicit pw_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> add_constant(const typed::val<Anonymous> &v) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> add_constant(long v) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
-  template <typename Arg1>
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> apply(const typed::union_pw_multi_aff<Anonymous, Arg1> &upma2) const;
-  inline typed::aff<pair<Domain2, Range2>, Anonymous> as_aff() const;
-  inline typed::map<pair<Domain2, Range2>, Anonymous> as_map() const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> as_pw_multi_aff() const;
-  inline typed::set<pair<Domain2, Range2>, Anonymous> as_set() const = delete;
-  inline typed::union_map<pair<Domain2, Range2>, Anonymous> as_union_map() const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> at(int pos) const;
-  inline typed::set<pair<Domain2, Range2>> bind(const typed::multi_id<Anonymous> &tuple) const;
-  inline typed::set<pair<Domain2, Range2>> bind(const typed::id<Anonymous> &id) const;
-  inline typed::set<pair<Domain2, Range2>> bind(const std::string &id) const;
-  inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const;
-  inline typed::pw_aff<Range2, Anonymous> bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> ceil() const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> coalesce() const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> cond(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_true, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_false) const;
-  inline typed::set<pair<Domain2, Range2>> domain() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Anonymous> &space) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> floor() const;
-  inline typed::set<pair<Domain2, Range2>> ge_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::set<pair<Domain2, Range2>> ge_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> gist(const typed::set<pair<Domain2, Range2>> &context) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> gist(const typed::union_set<pair<Domain2, Range2>> &context) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> gist(const typed::basic_set<pair<Domain2, Range2>> &context) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> gist(const typed::point<pair<Domain2, Range2>> &context) const;
-  inline typed::set<pair<Domain2, Range2>> gt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::set<pair<Domain2, Range2>> gt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> identity() const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::point<pair<Domain2, Range2>> &set) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_params(const typed::set<> &set) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_params(const typed::point<> &set) const;
-  inline typed::set<pair<Domain2, Range2>> le_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::set<pair<Domain2, Range2>> le_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> list() const;
-  inline typed::set<pair<Domain2, Range2>> lt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::set<pair<Domain2, Range2>> lt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> max(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> max(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> max(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> max_multi_val() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> min(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> min(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> min(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::multi_val<Anonymous> min_multi_val() const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> mod(const typed::val<Anonymous> &mod) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> mod(long mod) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> neg() const;
-  template <typename Domain3>
-  inline typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const;
-  template <typename Arg1, typename Arg2>
-  inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> product(const typed::multi_pw_aff<Arg1, Arg2> &multi2) const;
-  template <typename Arg1, typename Arg2>
-  inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> product(const typed::pw_multi_aff<Arg1, Arg2> &pma2) const;
-  template <typename Arg1>
-  inline typed::pw_aff<Arg1, Anonymous> pullback(const typed::multi_aff<Arg1, pair<Domain2, Range2>> &ma) const;
-  inline typed::pw_aff<Anonymous> pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const;
-  template <typename Arg1>
-  inline typed::pw_aff<Arg1, Anonymous> pullback(const typed::multi_pw_aff<Arg1, pair<Domain2, Range2>> &mpa) const;
-  inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa) const;
-  template <typename Arg1>
-  inline typed::pw_aff<Arg1, Anonymous> pullback(const typed::pw_multi_aff<Arg1, pair<Domain2, Range2>> &pma) const;
-  inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const;
-  template <typename Arg1>
-  inline typed::union_pw_aff<Arg1, Anonymous> pullback(const typed::union_pw_multi_aff<Arg1, pair<Domain2, Range2>> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const;
-  inline typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> range_factor_range() const = delete;
-  template <typename Arg1>
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const;
-  template <typename Arg1>
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const;
-  template <typename Arg1>
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> &pma2) const;
-  template <typename Arg1>
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> &upma2) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> scale(const typed::val<Anonymous> &v) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> scale(long v) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> scale_down(const typed::val<Anonymous> &f) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> scale_down(long f) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  template <typename Arg1>
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Arg1>
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const std::string &id) const;
-  inline typed::space<pair<Domain2, Range2>, Anonymous> space() const;
-  inline typed::space<pair<Domain2, Range2>, Anonymous> get_space() const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::point<pair<Domain2, Range2>> &set) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> to_multi_pw_aff() const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> to_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> to_union_pw_multi_aff() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &mpa2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &mupa2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
-  inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
-};
-
-template <>
-struct pw_aff_list<Anonymous> : public isl::pw_aff_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_aff_list() = default;
-  pw_aff_list(const isl::pw_aff_list &obj) : isl::pw_aff_list(obj) {}
-  static pw_aff_list from(const isl::pw_aff_list &obj) {
-    return pw_aff_list(obj);
-  }
-  inline explicit pw_aff_list(const isl::ctx &ctx, int n);
-  inline explicit pw_aff_list(const typed::pw_aff<Anonymous> &el);
-  inline explicit pw_aff_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::pw_aff_list<Anonymous> add(const typed::pw_aff<Anonymous> &el) const;
-  inline typed::pw_aff_list<Anonymous> add(const typed::aff<Anonymous> &el) const;
-  inline typed::pw_aff<Anonymous> at(int index) const;
-  inline typed::pw_aff<Anonymous> get_at(int index) const = delete;
-  inline typed::pw_aff_list<Anonymous> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::pw_aff<Anonymous>)> &fn) const;
-};
-
-template <typename Domain>
-struct pw_aff_list<Domain, Anonymous> : public isl::pw_aff_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_aff_list() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  pw_aff_list(const pw_aff_list<Arg1, Anonymous> &obj) : isl::pw_aff_list(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::pw_aff_list>{}, bool>::type = true>
-  pw_aff_list(const base &obj) : isl::pw_aff_list(obj) {}
- public:
-  static pw_aff_list from(const isl::pw_aff_list &obj) {
-    return pw_aff_list(obj);
-  }
-  inline explicit pw_aff_list(const isl::ctx &ctx, int n);
-  inline explicit pw_aff_list(const typed::pw_aff<Domain, Anonymous> &el);
-  inline explicit pw_aff_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::pw_aff_list<Domain, Anonymous> add(const typed::pw_aff<Domain, Anonymous> &el) const;
-  inline typed::pw_aff_list<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &el) const;
-  inline typed::pw_aff<Domain, Anonymous> at(int index) const;
-  inline typed::pw_aff<Domain, Anonymous> get_at(int index) const = delete;
-  inline typed::pw_aff_list<Domain, Anonymous> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::pw_aff<Domain, Anonymous>)> &fn) const;
-};
-
-template <typename Domain>
-struct pw_multi_aff<Domain> : public isl::pw_multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_multi_aff() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  pw_multi_aff(const pw_multi_aff<Arg1> &obj) : isl::pw_multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::pw_multi_aff>{}, bool>::type = true>
-  pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {}
- public:
-  static pw_multi_aff from(const isl::pw_multi_aff &obj) {
-    return pw_multi_aff(obj);
-  }
-  inline /* implicit */ pw_multi_aff(const typed::multi_aff<Domain> &ma);
-  inline /* implicit */ pw_multi_aff(const typed::pw_aff<Domain> &pa);
-  inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_pw_aff<Domain> add(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain> add(const typed::multi_union_pw_aff<Domain> &multi2) const;
-  inline typed::pw_multi_aff<Domain> add(const typed::pw_multi_aff<Domain> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain> add(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  inline typed::pw_multi_aff<Domain> add(const typed::multi_aff<Domain> &pma2) const;
-  inline typed::pw_multi_aff<Domain> add(const typed::pw_aff<Domain> &pma2) const;
-  inline typed::pw_multi_aff<Domain> add_constant(const typed::multi_val<Domain> &mv) const;
-  inline typed::pw_multi_aff<Domain> add_constant(const typed::val<Domain> &v) const;
-  inline typed::pw_multi_aff<Domain> add_constant(long v) const;
-  template <typename Range>
-  inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::map<Domain> as_map() const = delete;
-  inline typed::multi_aff<Domain> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<Domain> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
-  inline typed::set<Domain> as_set() const;
-  inline typed::union_map<Domain> as_union_map() const = delete;
-  inline typed::pw_aff<Anonymous> at(int pos) const;
-  inline typed::pw_aff<Domain> get_at(int pos) const = delete;
-  inline typed::set<> bind(const typed::multi_id<Domain> &tuple) const;
-  inline typed::pw_multi_aff<Domain> bind_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::pw_multi_aff<Domain> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::pw_multi_aff<Domain> coalesce() const;
-  inline typed::set<> domain() const;
-  inline typed::pw_multi_aff<Domain> extract_pw_multi_aff(const typed::space<Domain> &space) const;
-  inline typed::pw_multi_aff<Domain> gist(const typed::set<> &set) const;
-  inline typed::union_pw_multi_aff<Domain> gist(const typed::union_set<> &context) const;
-  inline typed::pw_multi_aff<Domain> gist(const typed::basic_set<> &set) const;
-  inline typed::pw_multi_aff<Domain> gist(const typed::point<> &set) const;
-  inline typed::multi_pw_aff<Domain, Domain> identity() const;
-  template <typename Arg1>
-  inline typed::pw_multi_aff<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
-  inline typed::pw_multi_aff<Domain> intersect_domain(const typed::set<> &set) const = delete;
-  inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::pw_multi_aff<Domain> intersect_domain(const typed::basic_set<> &set) const = delete;
-  inline typed::pw_multi_aff<Domain> intersect_domain(const typed::point<> &set) const = delete;
-  inline typed::pw_multi_aff<Domain> intersect_params(const typed::set<> &set) const;
-  inline typed::pw_multi_aff<Domain> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::pw_multi_aff<Domain> intersect_params(const typed::point<> &set) const;
-  inline typed::pw_aff_list<Anonymous> list() const;
-  inline typed::multi_pw_aff<Domain> max(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_val<Domain> max_multi_val() const;
-  inline typed::multi_pw_aff<Domain> min(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_val<Domain> min_multi_val() const;
-  inline typed::multi_pw_aff<Domain> neg() const;
-  inline typed::pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::multi_aff<> &pma2) const = delete;
-  inline typed::pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::pw_aff<> &pma2) const = delete;
-  template <typename Range>
-  inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::multi_pw_aff<Range> &multi2) const;
-  template <typename Range>
-  inline typed::pw_multi_aff<pair<Domain, Range>> product(const typed::pw_multi_aff<Range> &pma2) const;
-  template <typename Range>
-  inline typed::pw_multi_aff<pair<Domain, Range>> product(const typed::multi_aff<Range> &pma2) const;
-  template <typename Range>
-  inline typed::pw_multi_aff<pair<Domain, Range>> product(const typed::pw_aff<Range> &pma2) const;
-  inline typed::multi_pw_aff<Domain> pullback(const typed::multi_pw_aff<> &mpa2) const = delete;
-  inline typed::pw_multi_aff<Domain> pullback(const typed::multi_aff<> &ma) const = delete;
-  inline typed::pw_multi_aff<Domain> pullback(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> pullback(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::pw_multi_aff_list<Domain> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<Domain> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<Domain> range_factor_range() const = delete;
-  inline typed::multi_pw_aff<Domain> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
-  inline typed::multi_union_pw_aff<Domain> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
-  inline typed::pw_multi_aff<Domain> range_product(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::pw_multi_aff<Domain> range_product(const typed::multi_aff<> &pma2) const = delete;
-  inline typed::pw_multi_aff<Domain> range_product(const typed::pw_aff<> &pma2) const = delete;
-  inline typed::id<Domain> get_range_tuple_id() const = delete;
-  inline typed::multi_pw_aff<Domain> scale(const typed::multi_val<Domain> &mv) const;
-  inline typed::pw_multi_aff<Domain> scale(const typed::val<Domain> &v) const;
-  inline typed::pw_multi_aff<Domain> scale(long v) const;
-  inline typed::multi_pw_aff<Domain> scale_down(const typed::multi_val<Domain> &mv) const;
-  inline typed::pw_multi_aff<Domain> scale_down(const typed::val<Domain> &v) const;
-  inline typed::pw_multi_aff<Domain> scale_down(long v) const;
-  inline typed::multi_pw_aff<Domain> set_at(int pos, const typed::pw_aff<Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Domain> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain> space() const;
-  inline typed::space<Domain> get_space() const = delete;
-  inline typed::multi_pw_aff<Domain> sub(const typed::multi_pw_aff<Domain> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain> sub(const typed::multi_union_pw_aff<Domain> &multi2) const;
-  inline typed::pw_multi_aff<Domain> sub(const typed::pw_multi_aff<Domain> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain> sub(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  inline typed::pw_multi_aff<Domain> sub(const typed::multi_aff<Domain> &pma2) const;
-  inline typed::pw_multi_aff<Domain> sub(const typed::pw_aff<Domain> &pma2) const;
-  inline typed::pw_multi_aff<Domain> subtract_domain(const typed::set<> &set) const = delete;
-  inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::pw_multi_aff<Domain> subtract_domain(const typed::basic_set<> &set) const = delete;
-  inline typed::pw_multi_aff<Domain> subtract_domain(const typed::point<> &set) const = delete;
-  inline typed::multi_pw_aff<Domain> to_multi_pw_aff() const;
-  inline typed::union_pw_multi_aff<Domain> to_union_pw_multi_aff() const;
-  template <typename Arg1>
-  inline typed::multi_pw_aff<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
-  inline typed::multi_pw_aff<Domain> union_add(const typed::multi_pw_aff<Domain> &mpa2) const;
-  inline typed::multi_union_pw_aff<Domain> union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const;
-  inline typed::pw_multi_aff<Domain> union_add(const typed::pw_multi_aff<Domain> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain> union_add(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  inline typed::pw_multi_aff<Domain> union_add(const typed::multi_aff<Domain> &pma2) const;
-  inline typed::pw_multi_aff<Domain> union_add(const typed::pw_aff<Domain> &pma2) const;
-};
-
-template <typename Domain, typename Range>
-struct pw_multi_aff<Domain, Range> : public isl::pw_multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_multi_aff() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  pw_multi_aff(const pw_multi_aff<Arg1, Arg2> &obj) : isl::pw_multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::pw_multi_aff>{}, bool>::type = true>
-  pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {}
- public:
-  static pw_multi_aff from(const isl::pw_multi_aff &obj) {
-    return pw_multi_aff(obj);
-  }
-  inline /* implicit */ pw_multi_aff(const typed::multi_aff<Domain, Range> &ma);
-  inline /* implicit */ pw_multi_aff(const typed::pw_aff<Domain, Range> &pa);
-  inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_pw_aff<Domain, Range> add(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
-  inline typed::pw_multi_aff<Domain, Range> add(const typed::pw_multi_aff<Domain, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::pw_multi_aff<Domain, Range> add(const typed::multi_aff<Domain, Range> &pma2) const;
-  inline typed::pw_multi_aff<Domain, Range> add(const typed::pw_aff<Domain, Range> &pma2) const;
-  inline typed::pw_multi_aff<Domain, Range> add_constant(const typed::multi_val<Range> &mv) const;
-  inline typed::pw_multi_aff<Domain, Range> add_constant(const typed::val<Range> &v) const;
-  inline typed::pw_multi_aff<Domain, Range> add_constant(long v) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const;
-  inline typed::map<Domain, Range> as_map() const;
-  inline typed::multi_aff<Domain, Range> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Range> as_pw_multi_aff() const;
-  inline typed::set<Domain, Range> as_set() const = delete;
-  inline typed::union_map<Domain, Range> as_union_map() const;
-  inline typed::pw_aff<Domain, Anonymous> at(int pos) const;
-  inline typed::pw_aff<Domain, Range> get_at(int pos) const = delete;
-  inline typed::set<Domain> bind(const typed::multi_id<Range> &tuple) const;
-  inline typed::pw_multi_aff<Range> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::pw_multi_aff<Domain, Range> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::pw_multi_aff<Domain, Range> coalesce() const;
-  inline typed::set<Domain> domain() const;
-  inline typed::pw_multi_aff<Domain, Range> extract_pw_multi_aff(const typed::space<Domain, Range> &space) const;
-  inline typed::pw_multi_aff<Domain, Range> gist(const typed::set<Domain> &set) const;
-  inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::union_set<Domain> &context) const;
-  inline typed::pw_multi_aff<Domain, Range> gist(const typed::basic_set<Domain> &set) const;
-  inline typed::pw_multi_aff<Domain, Range> gist(const typed::point<Domain> &set) const;
-  inline typed::multi_pw_aff<Domain, Range> identity() const;
-  inline typed::pw_multi_aff<Domain, Range> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_multi_aff<Domain, Range> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::pw_multi_aff<Domain, Range> intersect_domain(const typed::basic_set<Domain> &set) const;
-  inline typed::pw_multi_aff<Domain, Range> intersect_domain(const typed::point<Domain> &set) const;
-  inline typed::pw_multi_aff<Domain, Range> intersect_params(const typed::set<> &set) const;
-  inline typed::pw_multi_aff<Domain, Range> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::pw_multi_aff<Domain, Range> intersect_params(const typed::point<> &set) const;
-  inline typed::pw_aff_list<Domain, Anonymous> list() const;
-  inline typed::multi_pw_aff<Domain, Range> max(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_val<Range> max_multi_val() const;
-  inline typed::multi_pw_aff<Domain, Range> min(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_val<Range> min_multi_val() const;
-  inline typed::multi_pw_aff<Domain, Range> neg() const;
-  inline typed::pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::multi_aff<> &pma2) const = delete;
-  inline typed::pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::pw_aff<> &pma2) const = delete;
-  template <typename Domain2, typename Range2>
-  inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_aff<Domain2, Range2> &pma2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::pw_aff<Domain2, Range2> &pma2) const;
-  template <typename Domain2>
-  inline typed::multi_pw_aff<Domain2, Range> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const;
-  inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<Domain> &mpa2) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2, Range> pullback(const typed::multi_aff<Domain2, Domain> &ma) const;
-  inline typed::pw_multi_aff<Range> pullback(const typed::multi_aff<Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2, Range> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const;
-  inline typed::pw_multi_aff<Range> pullback(const typed::pw_multi_aff<Domain> &pma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  inline typed::pw_multi_aff_list<Domain, Range> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<Domain, Range> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<Domain, Range> range_factor_range() const = delete;
-  template <typename Range2>
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_aff<Domain, Range2> &pma2) const;
-  template <typename Range2>
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::pw_aff<Domain, Range2> &pma2) const;
-  inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
-  inline typed::multi_pw_aff<Domain, Range> scale(const typed::multi_val<Range> &mv) const;
-  inline typed::pw_multi_aff<Domain, Range> scale(const typed::val<Range> &v) const;
-  inline typed::pw_multi_aff<Domain, Range> scale(long v) const;
-  inline typed::multi_pw_aff<Domain, Range> scale_down(const typed::multi_val<Range> &mv) const;
-  inline typed::pw_multi_aff<Domain, Range> scale_down(const typed::val<Range> &v) const;
-  inline typed::pw_multi_aff<Domain, Range> scale_down(long v) const;
-  inline typed::multi_pw_aff<Domain, Range> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Domain, Range> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
-  template <typename Range2>
-  inline typed::pw_multi_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::pw_multi_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain, Range> space() const;
-  inline typed::space<Domain, Range> get_space() const = delete;
-  inline typed::multi_pw_aff<Domain, Range> sub(const typed::multi_pw_aff<Domain, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
-  inline typed::pw_multi_aff<Domain, Range> sub(const typed::pw_multi_aff<Domain, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::pw_multi_aff<Domain, Range> sub(const typed::multi_aff<Domain, Range> &pma2) const;
-  inline typed::pw_multi_aff<Domain, Range> sub(const typed::pw_aff<Domain, Range> &pma2) const;
-  inline typed::pw_multi_aff<Domain, Range> subtract_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::pw_multi_aff<Domain, Range> subtract_domain(const typed::basic_set<Domain> &set) const;
-  inline typed::pw_multi_aff<Domain, Range> subtract_domain(const typed::point<Domain> &set) const;
-  inline typed::multi_pw_aff<Domain, Range> to_multi_pw_aff() const;
-  inline typed::union_pw_multi_aff<Domain, Range> to_union_pw_multi_aff() const;
-  inline typed::multi_pw_aff<Domain, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<Domain, Range> union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const;
-  inline typed::pw_multi_aff<Domain, Range> union_add(const typed::pw_multi_aff<Domain, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::pw_multi_aff<Domain, Range> union_add(const typed::multi_aff<Domain, Range> &pma2) const;
-  inline typed::pw_multi_aff<Domain, Range> union_add(const typed::pw_aff<Domain, Range> &pma2) const;
-};
-
-template <typename Domain2, typename Range2, typename Range>
-struct pw_multi_aff<pair<Domain2, Range2>, Range> : public isl::pw_multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_multi_aff() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain2, Arg1>{} &&
-              std::is_base_of<Range2, Arg2>{} &&
-              std::is_base_of<Range, Arg3>{},
-            bool>::type = true>
-  pw_multi_aff(const pw_multi_aff<pair<Arg1, Arg2>, Arg3> &obj) : isl::pw_multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::pw_multi_aff>{}, bool>::type = true>
-  pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {}
- public:
-  static pw_multi_aff from(const isl::pw_multi_aff &obj) {
-    return pw_multi_aff(obj);
-  }
-  inline /* implicit */ pw_multi_aff(const typed::multi_aff<pair<Domain2, Range2>, Range> &ma);
-  inline /* implicit */ pw_multi_aff(const typed::pw_aff<pair<Domain2, Range2>, Range> &pa);
-  inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add_constant(const typed::multi_val<Range> &mv) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add_constant(const typed::val<Range> &v) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add_constant(long v) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> apply(const typed::union_pw_multi_aff<Range, Arg2> &upma2) const;
-  inline typed::map<pair<Domain2, Range2>, Range> as_map() const;
-  inline typed::multi_aff<pair<Domain2, Range2>, Range> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> as_pw_multi_aff() const;
-  inline typed::set<pair<Domain2, Range2>, Range> as_set() const = delete;
-  inline typed::union_map<pair<Domain2, Range2>, Range> as_union_map() const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> at(int pos) const;
-  inline typed::pw_aff<pair<Domain2, Range2>, Range> get_at(int pos) const = delete;
-  inline typed::set<pair<Domain2, Range2>> bind(const typed::multi_id<Range> &tuple) const;
-  inline typed::pw_multi_aff<Range> bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const;
-  inline typed::pw_multi_aff<Range2, Range> bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> coalesce() const;
-  inline typed::set<pair<Domain2, Range2>> domain() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> gist(const typed::set<pair<Domain2, Range2>> &set) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> gist(const typed::union_set<pair<Domain2, Range2>> &context) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> gist(const typed::basic_set<pair<Domain2, Range2>> &set) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> gist(const typed::point<pair<Domain2, Range2>> &set) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> identity() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::point<pair<Domain2, Range2>> &set) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::set<> &set) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::point<> &set) const;
-  inline typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> list() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_val<Range> max_multi_val() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_val<Range> min_multi_val() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> neg() const;
-  template <typename Domain3>
-  inline typed::pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const;
-  template <typename Domain3>
-  inline typed::pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, Domain2> &pma2) const;
-  template <typename Domain3>
-  inline typed::pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::pw_aff<Domain3, Domain2> &pma2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::pw_multi_aff<Arg2, Arg3> &pma2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_aff<Arg2, Arg3> &pma2) const;
-  template <typename Arg2, typename Arg3>
-  inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::pw_aff<Arg2, Arg3> &pma2) const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<Arg2, Range> pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const;
-  inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<Arg2, Range> pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma) const;
-  inline typed::pw_multi_aff<Range> pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<Arg2, Range> pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<Range> pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<Arg2, Range> pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma2) const;
-  inline typed::pw_multi_aff_list<pair<Domain2, Range2>, Range> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> range_factor_domain() const = delete;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> range_factor_range() const = delete;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> &upma2) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::pw_aff<pair<Domain2, Range2>, Arg2> &pma2) const;
-  inline typed::id<pair<Domain2, Range2>, Range> get_range_tuple_id() const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale(const typed::multi_val<Range> &mv) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> scale(const typed::val<Range> &v) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> scale(long v) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale_down(const typed::multi_val<Range> &mv) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> scale_down(const typed::val<Range> &v) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> scale_down(long v) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
-  template <typename Arg1>
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Arg1>
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const std::string &id) const;
-  inline typed::space<pair<Domain2, Range2>, Range> space() const;
-  inline typed::space<pair<Domain2, Range2>, Range> get_space() const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::point<pair<Domain2, Range2>> &set) const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> to_multi_pw_aff() const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> to_union_pw_multi_aff() const;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const;
-  inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
-  inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const;
-};
-
-template <typename Domain, typename Range, typename Range2>
-struct pw_multi_aff<Domain, pair<Range, Range2>> : public isl::pw_multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_multi_aff() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{} &&
-              std::is_base_of<Range2, Arg3>{},
-            bool>::type = true>
-  pw_multi_aff(const pw_multi_aff<Arg1, pair<Arg2, Arg3>> &obj) : isl::pw_multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::pw_multi_aff>{}, bool>::type = true>
-  pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {}
- public:
-  static pw_multi_aff from(const isl::pw_multi_aff &obj) {
-    return pw_multi_aff(obj);
-  }
-  inline /* implicit */ pw_multi_aff(const typed::multi_aff<Domain, pair<Range, Range2>> &ma);
-  inline /* implicit */ pw_multi_aff(const typed::pw_aff<Domain, pair<Range, Range2>> &pa);
-  inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add_constant(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add_constant(long v) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, Arg3> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const;
-  inline typed::map<Domain, pair<Range, Range2>> as_map() const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> as_pw_multi_aff() const;
-  inline typed::set<Domain, pair<Range, Range2>> as_set() const = delete;
-  inline typed::union_map<Domain, pair<Range, Range2>> as_union_map() const;
-  inline typed::pw_aff<Domain, Anonymous> at(int pos) const;
-  inline typed::pw_aff<Domain, pair<Range, Range2>> get_at(int pos) const = delete;
-  inline typed::set<Domain> bind(const typed::multi_id<pair<Range, Range2>> &tuple) const;
-  inline typed::pw_multi_aff<pair<Range, Range2>> bind_domain(const typed::multi_id<Domain> &tuple) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> coalesce() const;
-  inline typed::set<Domain> domain() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::set<Domain> &set) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::union_set<Domain> &context) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::basic_set<Domain> &set) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::point<Domain> &set) const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> identity() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::basic_set<Domain> &set) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::point<Domain> &set) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
-  inline typed::pw_aff_list<Domain, Anonymous> list() const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> max(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_val<pair<Range, Range2>> max_multi_val() const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> min(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_val<pair<Range, Range2>> min_multi_val() const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> neg() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::multi_aff<> &pma2) const = delete;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_aff<> &pma2) const = delete;
-  template <typename Domain2, typename Arg3>
-  inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::multi_pw_aff<Domain2, Arg3> &multi2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::pw_multi_aff<Domain2, Arg3> &pma2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::multi_aff<Domain2, Arg3> &pma2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::pw_aff<Domain2, Arg3> &pma2) const;
-  template <typename Domain2>
-  inline typed::multi_pw_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const;
-  inline typed::multi_pw_aff<pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain> &mpa2) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, Domain> &ma) const;
-  inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const;
-  inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain> &pma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  inline typed::pw_multi_aff_list<Domain, pair<Range, Range2>> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<Domain, Range> range_factor_domain() const;
-  inline typed::pw_multi_aff<Domain, Range2> range_factor_range() const;
-  template <typename Arg3>
-  inline typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_pw_aff<Domain, Arg3> &multi2) const;
-  template <typename Arg3>
-  inline typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_union_pw_aff<Domain, Arg3> &multi2) const;
-  template <typename Arg3>
-  inline typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::pw_multi_aff<Domain, Arg3> &pma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const;
-  template <typename Arg3>
-  inline typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_aff<Domain, Arg3> &pma2) const;
-  template <typename Arg3>
-  inline typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::pw_aff<Domain, Arg3> &pma2) const;
-  inline typed::id<Domain, pair<Range, Range2>> get_range_tuple_id() const = delete;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> scale(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> scale(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> scale(long v) const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> scale_down(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> scale_down(long v) const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> space() const;
-  inline typed::space<Domain, pair<Range, Range2>> get_space() const = delete;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> sub(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> sub(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::set<Domain> &set) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::basic_set<Domain> &set) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::point<Domain> &set) const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> to_multi_pw_aff() const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> to_union_pw_multi_aff() const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &mpa2) const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &mupa2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const;
-};
-
-template <typename T1, typename T2, typename Range, typename Range2>
-struct pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> : public isl::pw_multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_multi_aff() = default;
-  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
-            typename std::enable_if<
-              std::is_base_of<T1, Arg1>{} &&
-              std::is_base_of<T2, Arg2>{} &&
-              std::is_base_of<Range, Arg3>{} &&
-              std::is_base_of<Range2, Arg4>{},
-            bool>::type = true>
-  pw_multi_aff(const pw_multi_aff<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::pw_multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::pw_multi_aff>{}, bool>::type = true>
-  pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {}
- public:
-  static pw_multi_aff from(const isl::pw_multi_aff &obj) {
-    return pw_multi_aff(obj);
-  }
-  inline /* implicit */ pw_multi_aff(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &ma);
-  inline /* implicit */ pw_multi_aff(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pa);
-  inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(long v) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, Arg2> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> as_map() const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_aff() const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_pw_multi_aff() const;
-  inline typed::set<pair<T1, T2>, pair<Range, Range2>> as_set() const = delete;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> as_union_map() const;
-  inline typed::pw_aff<pair<T1, T2>, Anonymous> at(int pos) const;
-  inline typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> get_at(int pos) const = delete;
-  inline typed::set<pair<T1, T2>> bind(const typed::multi_id<pair<Range, Range2>> &tuple) const;
-  inline typed::pw_multi_aff<pair<Range, Range2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
-  inline typed::pw_multi_aff<T2, pair<Range, Range2>> bind_domain_wrapped_domain(const typed::multi_id<T1> &tuple) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
-  inline typed::set<pair<T1, T2>> domain() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::set<pair<T1, T2>> &set) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_set<pair<T1, T2>> &context) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_set<pair<T1, T2>> &set) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::point<pair<T1, T2>> &set) const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> identity() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::point<pair<T1, T2>> &set) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
-  inline typed::pw_aff_list<pair<T1, T2>, Anonymous> list() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> max(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_val<pair<Range, Range2>> max_multi_val() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> min(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_val<pair<Range, Range2>> min_multi_val() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> neg() const;
-  template <typename Domain3>
-  inline typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &pma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const;
-  template <typename Domain3>
-  inline typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, T1> &pma2) const;
-  template <typename Domain3>
-  inline typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_aff<Domain3, T1> &pma2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::multi_pw_aff<Domain2, Arg2> &multi2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::pw_multi_aff<Domain2, Arg2> &pma2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::multi_aff<Domain2, Arg2> &pma2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::pw_aff<Domain2, Arg2> &pma2) const;
-  template <typename Domain2>
-  inline typed::multi_pw_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa2) const;
-  inline typed::multi_pw_aff<pair<Range, Range2>> pullback(const typed::multi_pw_aff<pair<T1, T2>> &mpa2) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
-  inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<pair<T1, T2>> &ma) const;
-  template <typename Domain2>
-  inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma2) const;
-  inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<pair<T1, T2>> &pma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const;
-  inline typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, Range> range_factor_domain() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, Range2> range_factor_range() const;
-  template <typename Arg2>
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_pw_aff<pair<T1, T2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_union_pw_aff<pair<T1, T2>, Arg2> &multi2) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &pma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &pma2) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::pw_aff<pair<T1, T2>, Arg2> &pma2) const;
-  inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_range_tuple_id() const = delete;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> scale(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> scale(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> scale(long v) const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(const typed::val<pair<Range, Range2>> &v) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(long v) const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> set_at(int pos, const typed::pw_aff<pair<T1, T2>, Anonymous> &el) const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> set_at(int pos, const typed::union_pw_aff<pair<T1, T2>, Anonymous> &el) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> space() const;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> get_space() const = delete;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::set<pair<T1, T2>> &set) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::basic_set<pair<T1, T2>> &set) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::point<pair<T1, T2>> &set) const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> to_multi_pw_aff() const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> to_union_pw_multi_aff() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mpa2) const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mupa2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
-};
-
-template <typename Domain>
-struct pw_multi_aff_list<Domain> : public isl::pw_multi_aff_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_multi_aff_list() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  pw_multi_aff_list(const pw_multi_aff_list<Arg1> &obj) : isl::pw_multi_aff_list(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::pw_multi_aff_list>{}, bool>::type = true>
-  pw_multi_aff_list(const base &obj) : isl::pw_multi_aff_list(obj) {}
- public:
-  static pw_multi_aff_list from(const isl::pw_multi_aff_list &obj) {
-    return pw_multi_aff_list(obj);
-  }
-  inline explicit pw_multi_aff_list(const isl::ctx &ctx, int n);
-  inline explicit pw_multi_aff_list(const typed::pw_multi_aff<Domain> &el);
-  inline explicit pw_multi_aff_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::pw_multi_aff_list<Domain> add(const typed::pw_multi_aff<Domain> &el) const;
-  inline typed::pw_multi_aff_list<Domain> add(const typed::multi_aff<Domain> &el) const;
-  inline typed::pw_multi_aff_list<Domain> add(const typed::pw_aff<Domain> &el) const;
-  inline typed::pw_multi_aff<Domain> at(int index) const;
-  inline typed::pw_multi_aff<Domain> get_at(int index) const = delete;
-  inline typed::pw_multi_aff_list<Domain> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::pw_multi_aff<Domain>)> &fn) const;
-};
-
-template <typename Domain, typename Range>
-struct pw_multi_aff_list<Domain, Range> : public isl::pw_multi_aff_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  pw_multi_aff_list() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  pw_multi_aff_list(const pw_multi_aff_list<Arg1, Arg2> &obj) : isl::pw_multi_aff_list(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::pw_multi_aff_list>{}, bool>::type = true>
-  pw_multi_aff_list(const base &obj) : isl::pw_multi_aff_list(obj) {}
- public:
-  static pw_multi_aff_list from(const isl::pw_multi_aff_list &obj) {
-    return pw_multi_aff_list(obj);
-  }
-  inline explicit pw_multi_aff_list(const isl::ctx &ctx, int n);
-  inline explicit pw_multi_aff_list(const typed::pw_multi_aff<Domain, Range> &el);
-  inline explicit pw_multi_aff_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::pw_multi_aff_list<Domain, Range> add(const typed::pw_multi_aff<Domain, Range> &el) const;
-  inline typed::pw_multi_aff_list<Domain, Range> add(const typed::multi_aff<Domain, Range> &el) const;
-  inline typed::pw_multi_aff_list<Domain, Range> add(const typed::pw_aff<Domain, Range> &el) const;
-  inline typed::pw_multi_aff<Domain, Range> at(int index) const;
-  inline typed::pw_multi_aff<Domain, Range> get_at(int index) const = delete;
-  inline typed::pw_multi_aff_list<Domain, Range> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::pw_multi_aff<Domain, Range>)> &fn) const;
-};
-
-template <>
-struct set<> : public isl::set {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  set() = default;
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::set>{}, bool>::type = true>
-  set(const base &obj) : isl::set(obj) {}
- public:
-  static set from(const isl::set &obj) {
-    return set(obj);
-  }
-  inline /* implicit */ set(const typed::basic_set<> &bset);
-  inline /* implicit */ set(const typed::point<> &pnt);
-  inline explicit set(const isl::ctx &ctx, const std::string &str);
-  inline typed::set<> apply(const typed::map<> &map) const = delete;
-  inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete;
-  inline typed::set<> apply(const typed::basic_map<> &map) const = delete;
-  inline typed::pw_multi_aff<> as_pw_multi_aff() const = delete;
-  inline typed::set<> as_set() const = delete;
-  inline typed::set<> bind(const typed::multi_id<> &tuple) const = delete;
-  inline typed::set<> coalesce() const;
-  inline typed::set<> detect_equalities() const;
-  inline bool every_set(const std::function<bool(typed::set<>)> &test) const;
-  inline typed::set<> extract_set(const typed::space<> &space) const;
-  inline void foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const;
-  inline void foreach_point(const std::function<void(typed::point<>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<>)> &fn) const;
-  inline typed::set<> gist(const typed::set<> &context) const;
-  inline typed::union_set<> gist(const typed::union_set<> &context) const;
-  inline typed::set<> gist(const typed::basic_set<> &context) const;
-  inline typed::set<> gist(const typed::point<> &context) const;
-  inline typed::map<> identity() const = delete;
-  inline typed::pw_aff<Anonymous> indicator_function() const;
-  inline typed::map<> insert_domain(const typed::space<> &domain) const = delete;
-  inline typed::set<> intersect(const typed::set<> &set2) const;
-  inline typed::union_set<> intersect(const typed::union_set<> &uset2) const;
-  inline typed::set<> intersect(const typed::basic_set<> &set2) const;
-  inline typed::set<> intersect(const typed::point<> &set2) const;
-  inline typed::set<> intersect_params(const typed::set<> &params) const = delete;
-  inline typed::set<> intersect_params(const typed::basic_set<> &params) const = delete;
-  inline typed::set<> intersect_params(const typed::point<> &params) const = delete;
-  inline typed::set<> lexmax() const = delete;
-  inline typed::pw_multi_aff<> lexmax_pw_multi_aff() const = delete;
-  inline typed::set<> lexmin() const = delete;
-  inline typed::pw_multi_aff<> lexmin_pw_multi_aff() const = delete;
-  inline typed::set<> lower_bound(const typed::multi_pw_aff<> &lower) const = delete;
-  inline typed::set<> lower_bound(const typed::multi_val<> &lower) const = delete;
-  inline typed::multi_pw_aff<> max_multi_pw_aff() const = delete;
-  inline typed::val<> max_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_pw_aff<> min_multi_pw_aff() const = delete;
-  inline typed::val<> min_val(const typed::aff<> &obj) const = delete;
-  inline typed::set<> params() const = delete;
-  inline typed::multi_val<> plain_multi_val_if_fixed() const = delete;
-  inline typed::multi_val<> get_plain_multi_val_if_fixed() const = delete;
-  inline typed::set<> preimage(const typed::multi_aff<> &ma) const = delete;
-  inline typed::set<> preimage(const typed::multi_pw_aff<> &mpa) const = delete;
-  inline typed::set<> preimage(const typed::pw_multi_aff<> &pma) const = delete;
-  inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete;
-  inline typed::set<> product(const typed::set<> &set2) const = delete;
-  inline typed::set<> product(const typed::basic_set<> &set2) const = delete;
-  inline typed::set<> product(const typed::point<> &set2) const = delete;
-  inline typed::set<> project_out_all_params() const;
-  inline typed::set<> project_out_param(const typed::id<Anonymous> &id) const;
-  inline typed::set<> project_out_param(const std::string &id) const;
-  inline typed::set<> project_out_param(const typed::id_list<Anonymous> &list) const;
-  inline typed::pw_multi_aff<> pw_multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
-  inline typed::set_list<> set_list() const;
-  inline typed::fixed_box<> simple_fixed_box_hull() const = delete;
-  inline typed::fixed_box<> get_simple_fixed_box_hull() const = delete;
-  inline typed::space<> space() const;
-  inline typed::space<> get_space() const = delete;
-  inline typed::val<> get_stride(int pos) const = delete;
-  inline typed::set<> subtract(const typed::set<> &set2) const;
-  inline typed::union_set<> subtract(const typed::union_set<> &uset2) const;
-  inline typed::set<> subtract(const typed::basic_set<> &set2) const;
-  inline typed::set<> subtract(const typed::point<> &set2) const;
-  inline typed::union_set<> to_union_set() const;
-  inline typed::map<> translation() const = delete;
-  template <typename Domain>
-  inline typed::set<Domain> unbind_params(const typed::multi_id<Domain> &tuple) const;
-  inline typed::map<> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
-  inline typed::set<> unite(const typed::set<> &set2) const;
-  inline typed::union_set<> unite(const typed::union_set<> &uset2) const;
-  inline typed::set<> unite(const typed::basic_set<> &set2) const;
-  inline typed::set<> unite(const typed::point<> &set2) const;
-  static inline typed::set<> universe(const typed::space<> &space);
-  inline typed::map<> unwrap() const = delete;
-  inline typed::set<> upper_bound(const typed::multi_pw_aff<> &upper) const = delete;
-  inline typed::set<> upper_bound(const typed::multi_val<> &upper) const = delete;
-};
-
-template <typename Domain>
-struct set<Domain> : public isl::set {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  set() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  set(const set<Arg1> &obj) : isl::set(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::set>{}, bool>::type = true>
-  set(const base &obj) : isl::set(obj) {}
- public:
-  static set from(const isl::set &obj) {
-    return set(obj);
-  }
-  inline /* implicit */ set(const typed::basic_set<Domain> &bset);
-  inline /* implicit */ set(const typed::point<Domain> &pnt);
-  inline explicit set(const isl::ctx &ctx, const std::string &str);
-  template <typename Range>
-  inline typed::set<Range> apply(const typed::map<Domain, Range> &map) const;
-  template <typename Range>
-  inline typed::union_set<Range> apply(const typed::union_map<Domain, Range> &umap) const;
-  template <typename Range>
-  inline typed::set<Range> apply(const typed::basic_map<Domain, Range> &map) const;
-  inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
-  inline typed::set<Domain> as_set() const;
-  inline typed::set<> bind(const typed::multi_id<Domain> &tuple) const;
-  inline typed::set<Domain> coalesce() const;
-  inline typed::set<Domain> detect_equalities() const;
-  inline bool every_set(const std::function<bool(typed::set<Domain>)> &test) const;
-  inline typed::set<Domain> extract_set(const typed::space<Domain> &space) const;
-  inline void foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const;
-  inline void foreach_point(const std::function<void(typed::point<Domain>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<Domain>)> &fn) const;
-  inline typed::set<Domain> gist(const typed::set<Domain> &context) const;
-  inline typed::union_set<Domain> gist(const typed::union_set<Domain> &context) const;
-  inline typed::set<Domain> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::set<Domain> gist(const typed::point<Domain> &context) const;
-  inline typed::map<Domain, Domain> identity() const;
-  inline typed::pw_aff<Domain, Anonymous> indicator_function() const;
-  template <typename Arg1>
-  inline typed::map<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
-  inline typed::set<Domain> intersect(const typed::set<Domain> &set2) const;
-  inline typed::union_set<Domain> intersect(const typed::union_set<Domain> &uset2) const;
-  inline typed::set<Domain> intersect(const typed::basic_set<Domain> &set2) const;
-  inline typed::set<Domain> intersect(const typed::point<Domain> &set2) const;
-  inline typed::set<Domain> intersect_params(const typed::set<> &params) const;
-  inline typed::set<Domain> intersect_params(const typed::basic_set<> &params) const;
-  inline typed::set<Domain> intersect_params(const typed::point<> &params) const;
-  inline typed::set<Domain> lexmax() const;
-  inline typed::pw_multi_aff<Domain> lexmax_pw_multi_aff() const;
-  inline typed::set<Domain> lexmin() const;
-  inline typed::pw_multi_aff<Domain> lexmin_pw_multi_aff() const;
-  inline typed::set<Domain> lower_bound(const typed::multi_pw_aff<Domain> &lower) const;
-  inline typed::set<Domain> lower_bound(const typed::multi_val<Domain> &lower) const;
-  inline typed::multi_pw_aff<Domain> max_multi_pw_aff() const;
-  inline typed::val<Domain> max_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_pw_aff<Domain> min_multi_pw_aff() const;
-  inline typed::val<Domain> min_val(const typed::aff<> &obj) const = delete;
-  inline typed::set<> params() const;
-  inline typed::multi_val<Domain> plain_multi_val_if_fixed() const;
-  inline typed::multi_val<Domain> get_plain_multi_val_if_fixed() const = delete;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Range>
-  inline typed::set<pair<Domain, Range>> product(const typed::set<Range> &set2) const;
-  template <typename Range>
-  inline typed::set<pair<Domain, Range>> product(const typed::basic_set<Range> &set2) const;
-  template <typename Range>
-  inline typed::set<pair<Domain, Range>> product(const typed::point<Range> &set2) const;
-  inline typed::set<Domain> project_out_all_params() const;
-  inline typed::set<Domain> project_out_param(const typed::id<Anonymous> &id) const;
-  inline typed::set<Domain> project_out_param(const std::string &id) const;
-  inline typed::set<Domain> project_out_param(const typed::id_list<Anonymous> &list) const;
-  template <typename Range>
-  inline typed::pw_multi_aff<Domain, Range> pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const;
-  inline typed::set_list<Domain> set_list() const;
-  inline typed::fixed_box<Domain> simple_fixed_box_hull() const;
-  inline typed::fixed_box<Domain> get_simple_fixed_box_hull() const = delete;
-  inline typed::space<Domain> space() const;
-  inline typed::space<Domain> get_space() const = delete;
-  inline typed::val<Domain> get_stride(int pos) const = delete;
-  inline typed::set<Domain> subtract(const typed::set<Domain> &set2) const;
-  inline typed::union_set<Domain> subtract(const typed::union_set<Domain> &uset2) const;
-  inline typed::set<Domain> subtract(const typed::basic_set<Domain> &set2) const;
-  inline typed::set<Domain> subtract(const typed::point<Domain> &set2) const;
-  inline typed::union_set<Domain> to_union_set() const;
-  inline typed::map<Domain, Domain> translation() const;
-  inline typed::set<Domain> unbind_params(const typed::multi_id<> &tuple) const = delete;
-  template <typename Arg1>
-  inline typed::map<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
-  inline typed::set<Domain> unite(const typed::set<Domain> &set2) const;
-  inline typed::union_set<Domain> unite(const typed::union_set<Domain> &uset2) const;
-  inline typed::set<Domain> unite(const typed::basic_set<Domain> &set2) const;
-  inline typed::set<Domain> unite(const typed::point<Domain> &set2) const;
-  static inline typed::set<Domain> universe(const typed::space<Domain> &space);
-  inline typed::map<Domain> unwrap() const = delete;
-  inline typed::set<Domain> upper_bound(const typed::multi_pw_aff<Domain> &upper) const;
-  inline typed::set<Domain> upper_bound(const typed::multi_val<Domain> &upper) const;
-};
-
-template <typename Domain, typename Range>
-struct set<pair<Domain, Range>> : public isl::set {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  set() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  set(const set<pair<Arg1, Arg2>> &obj) : isl::set(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::set>{}, bool>::type = true>
-  set(const base &obj) : isl::set(obj) {}
- public:
-  static set from(const isl::set &obj) {
-    return set(obj);
-  }
-  inline /* implicit */ set(const typed::basic_set<pair<Domain, Range>> &bset);
-  inline /* implicit */ set(const typed::point<pair<Domain, Range>> &pnt);
-  inline explicit set(const isl::ctx &ctx, const std::string &str);
-  template <typename Arg2>
-  inline typed::set<Arg2> apply(const typed::map<pair<Domain, Range>, Arg2> &map) const;
-  template <typename Arg2>
-  inline typed::union_set<Arg2> apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const;
-  template <typename Arg2>
-  inline typed::set<Arg2> apply(const typed::basic_map<pair<Domain, Range>, Arg2> &map) const;
-  inline typed::pw_multi_aff<pair<Domain, Range>> as_pw_multi_aff() const;
-  inline typed::set<pair<Domain, Range>> as_set() const;
-  inline typed::set<> bind(const typed::multi_id<pair<Domain, Range>> &tuple) const;
-  inline typed::set<pair<Domain, Range>> coalesce() const;
-  inline typed::set<pair<Domain, Range>> detect_equalities() const;
-  inline bool every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const;
-  inline typed::set<pair<Domain, Range>> extract_set(const typed::space<pair<Domain, Range>> &space) const;
-  inline void foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const;
-  inline void foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const;
-  inline typed::set<pair<Domain, Range>> gist(const typed::set<pair<Domain, Range>> &context) const;
-  inline typed::union_set<pair<Domain, Range>> gist(const typed::union_set<pair<Domain, Range>> &context) const;
-  inline typed::set<pair<Domain, Range>> gist(const typed::basic_set<pair<Domain, Range>> &context) const;
-  inline typed::set<pair<Domain, Range>> gist(const typed::point<pair<Domain, Range>> &context) const;
-  inline typed::map<pair<Domain, Range>, pair<Domain, Range>> identity() const;
-  inline typed::pw_aff<pair<Domain, Range>, Anonymous> indicator_function() const;
-  template <typename Arg2>
-  inline typed::map<Arg2, pair<Domain, Range>> insert_domain(const typed::space<Arg2> &domain) const;
-  inline typed::set<pair<Domain, Range>> intersect(const typed::set<pair<Domain, Range>> &set2) const;
-  inline typed::union_set<pair<Domain, Range>> intersect(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::set<pair<Domain, Range>> intersect(const typed::basic_set<pair<Domain, Range>> &set2) const;
-  inline typed::set<pair<Domain, Range>> intersect(const typed::point<pair<Domain, Range>> &set2) const;
-  inline typed::set<pair<Domain, Range>> intersect_params(const typed::set<> &params) const;
-  inline typed::set<pair<Domain, Range>> intersect_params(const typed::basic_set<> &params) const;
-  inline typed::set<pair<Domain, Range>> intersect_params(const typed::point<> &params) const;
-  inline typed::set<pair<Domain, Range>> lexmax() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>> lexmax_pw_multi_aff() const;
-  inline typed::set<pair<Domain, Range>> lexmin() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>> lexmin_pw_multi_aff() const;
-  inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const;
-  inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const;
-  inline typed::multi_pw_aff<pair<Domain, Range>> max_multi_pw_aff() const;
-  inline typed::val<pair<Domain, Range>> max_val(const typed::aff<> &obj) const = delete;
-  inline typed::multi_pw_aff<pair<Domain, Range>> min_multi_pw_aff() const;
-  inline typed::val<pair<Domain, Range>> min_val(const typed::aff<> &obj) const = delete;
-  inline typed::set<> params() const;
-  inline typed::multi_val<pair<Domain, Range>> plain_multi_val_if_fixed() const;
-  inline typed::multi_val<pair<Domain, Range>> get_plain_multi_val_if_fixed() const = delete;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
-  template <typename Domain2>
-  inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
-  template <typename Arg2>
-  inline typed::set<pair<pair<Domain, Range>, Arg2>> product(const typed::set<Arg2> &set2) const;
-  template <typename Arg2>
-  inline typed::set<pair<pair<Domain, Range>, Arg2>> product(const typed::basic_set<Arg2> &set2) const;
-  template <typename Arg2>
-  inline typed::set<pair<pair<Domain, Range>, Arg2>> product(const typed::point<Arg2> &set2) const;
-  inline typed::set<pair<Domain, Range>> project_out_all_params() const;
-  inline typed::set<pair<Domain, Range>> project_out_param(const typed::id<Anonymous> &id) const;
-  inline typed::set<pair<Domain, Range>> project_out_param(const std::string &id) const;
-  inline typed::set<pair<Domain, Range>> project_out_param(const typed::id_list<Anonymous> &list) const;
-  template <typename Arg2>
-  inline typed::pw_multi_aff<pair<Domain, Range>, Arg2> pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const;
-  inline typed::set_list<pair<Domain, Range>> set_list() const;
-  inline typed::fixed_box<pair<Domain, Range>> simple_fixed_box_hull() const;
-  inline typed::fixed_box<pair<Domain, Range>> get_simple_fixed_box_hull() const = delete;
-  inline typed::space<pair<Domain, Range>> space() const;
-  inline typed::space<pair<Domain, Range>> get_space() const = delete;
-  inline typed::val<pair<Domain, Range>> get_stride(int pos) const = delete;
-  inline typed::set<pair<Domain, Range>> subtract(const typed::set<pair<Domain, Range>> &set2) const;
-  inline typed::union_set<pair<Domain, Range>> subtract(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::set<pair<Domain, Range>> subtract(const typed::basic_set<pair<Domain, Range>> &set2) const;
-  inline typed::set<pair<Domain, Range>> subtract(const typed::point<pair<Domain, Range>> &set2) const;
-  inline typed::union_set<pair<Domain, Range>> to_union_set() const;
-  inline typed::map<pair<Domain, Range>, pair<Domain, Range>> translation() const;
-  inline typed::set<pair<Domain, Range>> unbind_params(const typed::multi_id<> &tuple) const = delete;
-  template <typename Arg2>
-  inline typed::map<Arg2, pair<Domain, Range>> unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const;
-  inline typed::set<pair<Domain, Range>> unite(const typed::set<pair<Domain, Range>> &set2) const;
-  inline typed::union_set<pair<Domain, Range>> unite(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::set<pair<Domain, Range>> unite(const typed::basic_set<pair<Domain, Range>> &set2) const;
-  inline typed::set<pair<Domain, Range>> unite(const typed::point<pair<Domain, Range>> &set2) const;
-  static inline typed::set<pair<Domain, Range>> universe(const typed::space<pair<Domain, Range>> &space);
-  inline typed::map<Domain, Range> unwrap() const;
-  inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const;
-  inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const;
-};
-
-template <>
-struct set_list<> : public isl::set_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  set_list() = default;
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::set_list>{}, bool>::type = true>
-  set_list(const base &obj) : isl::set_list(obj) {}
- public:
-  static set_list from(const isl::set_list &obj) {
-    return set_list(obj);
-  }
-  inline explicit set_list(const isl::ctx &ctx, int n);
-  inline explicit set_list(const typed::set<> &el);
-  inline explicit set_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::set_list<> add(const typed::set<> &el) const;
-  inline typed::set_list<> add(const typed::basic_set<> &el) const;
-  inline typed::set_list<> add(const typed::point<> &el) const;
-  inline typed::set<> at(int index) const = delete;
-  inline typed::set<> get_at(int index) const = delete;
-  inline typed::set_list<> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::set<>)> &fn) const;
-};
-
-template <typename Domain>
-struct set_list<Domain> : public isl::set_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  set_list() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  set_list(const set_list<Arg1> &obj) : isl::set_list(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::set_list>{}, bool>::type = true>
-  set_list(const base &obj) : isl::set_list(obj) {}
- public:
-  static set_list from(const isl::set_list &obj) {
-    return set_list(obj);
-  }
-  inline explicit set_list(const isl::ctx &ctx, int n);
-  inline explicit set_list(const typed::set<Domain> &el);
-  inline explicit set_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::set_list<Domain> add(const typed::set<Domain> &el) const;
-  inline typed::set_list<Domain> add(const typed::basic_set<Domain> &el) const;
-  inline typed::set_list<Domain> add(const typed::point<Domain> &el) const;
-  inline typed::set<Domain> at(int index) const;
-  inline typed::set<Domain> get_at(int index) const = delete;
-  inline typed::set_list<Domain> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::set<Domain>)> &fn) const;
-};
-
-template <>
-struct space<> : public isl::space {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  space() = default;
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::space>{}, bool>::type = true>
-  space(const base &obj) : isl::space(obj) {}
- public:
-  static space from(const isl::space &obj) {
-    return space(obj);
-  }
-  template <typename Domain>
-  inline typed::space<Domain> add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const;
-  template <typename Domain>
-  inline typed::space<Domain> add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
-  inline typed::space<> add_param(const typed::id<Anonymous> &id) const;
-  inline typed::space<> add_param(const std::string &id) const;
-  template <typename Domain>
-  inline typed::space<Domain> add_unnamed_tuple(unsigned int dim) const;
-  inline typed::space<> curry() const = delete;
-  inline typed::space<> domain() const = delete;
-  inline typed::multi_aff<> domain_map_multi_aff() const = delete;
-  inline typed::pw_multi_aff<> domain_map_pw_multi_aff() const = delete;
-  inline typed::id<> get_domain_tuple_id() const = delete;
-  inline typed::space<> flatten_domain() const = delete;
-  inline typed::space<> flatten_range() const = delete;
-  inline typed::multi_aff<> identity_multi_aff_on_domain() const = delete;
-  inline typed::multi_pw_aff<> identity_multi_pw_aff_on_domain() const = delete;
-  inline typed::pw_multi_aff<> identity_pw_multi_aff_on_domain() const = delete;
-  inline typed::space<> map_from_set() const = delete;
-  inline typed::multi_aff<> multi_aff(const typed::aff_list<> &list) const = delete;
-  inline typed::multi_aff<> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
-  inline typed::multi_id<> multi_id(const typed::id_list<> &list) const = delete;
-  inline typed::multi_pw_aff<> multi_pw_aff(const typed::pw_aff_list<> &list) const = delete;
-  inline typed::multi_union_pw_aff<> multi_union_pw_aff(const typed::union_pw_aff_list<> &list) const = delete;
-  inline typed::multi_val<> multi_val(const typed::val_list<> &list) const = delete;
-  inline typed::aff<Anonymous> param_aff_on_domain(const typed::id<Anonymous> &id) const;
-  inline typed::aff<Anonymous> param_aff_on_domain(const std::string &id) const;
-  inline typed::space<> params() const = delete;
-  inline typed::space<> product(const typed::space<> &right) const = delete;
-  inline typed::space<> range() const = delete;
-  inline typed::multi_aff<> range_map_multi_aff() const = delete;
-  inline typed::pw_multi_aff<> range_map_pw_multi_aff() const = delete;
-  inline typed::space<> range_reverse() const = delete;
-  inline typed::id<> get_range_tuple_id() const = delete;
-  inline typed::space<> reverse() const = delete;
-  inline typed::space<> set_domain_tuple(const typed::id<> &id) const = delete;
-  inline typed::space<> set_domain_tuple(const std::string &id) const = delete;
-  inline typed::space<> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::space<> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<> uncurry() const = delete;
-  static inline typed::space<> unit(const isl::ctx &ctx);
-  inline typed::map<> universe_map() const = delete;
-  inline typed::set<> universe_set() const;
-  inline typed::space<> unwrap() const = delete;
-  inline typed::space<> wrap() const = delete;
-  inline typed::aff<> zero_aff_on_domain() const = delete;
-  inline typed::multi_aff<> zero_multi_aff() const = delete;
-  inline typed::multi_pw_aff<> zero_multi_pw_aff() const = delete;
-  inline typed::multi_union_pw_aff<> zero_multi_union_pw_aff() const = delete;
-  inline typed::multi_val<> zero_multi_val() const = delete;
-};
-
-template <typename Domain>
-struct space<Domain> : public isl::space {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  space() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  space(const space<Arg1> &obj) : isl::space(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::space>{}, bool>::type = true>
-  space(const base &obj) : isl::space(obj) {}
- public:
-  static space from(const isl::space &obj) {
-    return space(obj);
-  }
-  template <typename Range>
-  inline typed::space<Domain, Range> add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const;
-  template <typename Range>
-  inline typed::space<Domain, Range> add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
-  inline typed::space<Domain> add_param(const typed::id<Anonymous> &id) const;
-  inline typed::space<Domain> add_param(const std::string &id) const;
-  template <typename Range>
-  inline typed::space<Domain, Range> add_unnamed_tuple(unsigned int dim) const;
-  inline typed::space<Domain> curry() const = delete;
-  inline typed::space<> domain() const;
-  inline typed::multi_aff<Domain> domain_map_multi_aff() const = delete;
-  inline typed::pw_multi_aff<Domain> domain_map_pw_multi_aff() const = delete;
-  inline typed::id<Domain> get_domain_tuple_id() const = delete;
-  inline typed::space<Domain> flatten_domain() const = delete;
-  inline typed::space<Domain> flatten_range() const = delete;
-  inline typed::multi_aff<Domain, Domain> identity_multi_aff_on_domain() const;
-  inline typed::multi_pw_aff<Domain, Domain> identity_multi_pw_aff_on_domain() const;
-  inline typed::pw_multi_aff<Domain, Domain> identity_pw_multi_aff_on_domain() const;
-  inline typed::space<Domain, Domain> map_from_set() const;
-  inline typed::multi_aff<Domain> multi_aff(const typed::aff_list<Anonymous> &list) const;
-  template <typename Range>
-  inline typed::multi_aff<Domain, Range> multi_aff_on_domain(const typed::multi_val<Range> &mv) const;
-  inline typed::multi_id<Domain> multi_id(const typed::id_list<Anonymous> &list) const;
-  inline typed::multi_pw_aff<Domain> multi_pw_aff(const typed::pw_aff_list<Anonymous> &list) const;
-  inline typed::multi_union_pw_aff<Domain> multi_union_pw_aff(const typed::union_pw_aff_list<Anonymous> &list) const;
-  inline typed::multi_val<Domain> multi_val(const typed::val_list<Anonymous> &list) const;
-  inline typed::aff<Domain, Anonymous> param_aff_on_domain(const typed::id<Anonymous> &id) const;
-  inline typed::aff<Domain, Anonymous> param_aff_on_domain(const std::string &id) const;
-  inline typed::space<> params() const;
-  template <typename Range>
-  inline typed::space<pair<Domain, Range>> product(const typed::space<Range> &right) const;
-  inline typed::space<Domain> range() const = delete;
-  inline typed::multi_aff<Domain> range_map_multi_aff() const = delete;
-  inline typed::pw_multi_aff<Domain> range_map_pw_multi_aff() const = delete;
-  inline typed::space<Domain> range_reverse() const = delete;
-  inline typed::id<Domain> get_range_tuple_id() const = delete;
-  inline typed::space<Domain> reverse() const = delete;
-  inline typed::space<Domain> set_domain_tuple(const typed::id<> &id) const = delete;
-  inline typed::space<Domain> set_domain_tuple(const std::string &id) const = delete;
-  template <typename Domain2>
-  inline typed::space<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::space<Domain2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain> uncurry() const = delete;
-  static inline typed::space<Domain> unit(const isl::ctx &ctx) = delete;
-  inline typed::map<Domain> universe_map() const = delete;
-  inline typed::set<Domain> universe_set() const;
-  inline typed::space<Domain> unwrap() const = delete;
-  inline typed::space<Domain> wrap() const = delete;
-  inline typed::aff<Domain, Anonymous> zero_aff_on_domain() const;
-  inline typed::multi_aff<Domain> zero_multi_aff() const;
-  inline typed::multi_pw_aff<Domain> zero_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<Domain> zero_multi_union_pw_aff() const;
-  inline typed::multi_val<Domain> zero_multi_val() const;
-};
-
-template <typename Domain, typename Range>
-struct space<Domain, Range> : public isl::space {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  space() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  space(const space<Arg1, Arg2> &obj) : isl::space(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::space>{}, bool>::type = true>
-  space(const base &obj) : isl::space(obj) {}
- public:
-  static space from(const isl::space &obj) {
-    return space(obj);
-  }
-  inline typed::space<Domain, Range> add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete;
-  inline typed::space<Domain, Range> add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete;
-  inline typed::space<Domain, Range> add_param(const typed::id<Anonymous> &id) const;
-  inline typed::space<Domain, Range> add_param(const std::string &id) const;
-  inline typed::space<Domain, Range> add_unnamed_tuple(unsigned int dim) const = delete;
-  inline typed::space<Domain, Range> curry() const = delete;
-  inline typed::space<Domain> domain() const;
-  inline typed::multi_aff<pair<Domain, Range>, Domain> domain_map_multi_aff() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>, Domain> domain_map_pw_multi_aff() const;
-  inline typed::id<Domain, Range> get_domain_tuple_id() const = delete;
-  inline typed::space<Domain, Range> flatten_domain() const = delete;
-  inline typed::space<Domain, Range> flatten_range() const = delete;
-  inline typed::multi_aff<Domain, Range> identity_multi_aff_on_domain() const = delete;
-  inline typed::multi_pw_aff<Domain, Range> identity_multi_pw_aff_on_domain() const = delete;
-  inline typed::pw_multi_aff<Domain, Range> identity_pw_multi_aff_on_domain() const = delete;
-  inline typed::space<Domain, Range> map_from_set() const = delete;
-  inline typed::multi_aff<Domain, Range> multi_aff(const typed::aff_list<Domain, Anonymous> &list) const;
-  inline typed::multi_aff<Domain, Range> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
-  inline typed::multi_id<Domain, Range> multi_id(const typed::id_list<> &list) const = delete;
-  inline typed::multi_pw_aff<Domain, Range> multi_pw_aff(const typed::pw_aff_list<Domain, Anonymous> &list) const;
-  inline typed::multi_union_pw_aff<Domain, Range> multi_union_pw_aff(const typed::union_pw_aff_list<Domain, Anonymous> &list) const;
-  inline typed::multi_val<Domain, Range> multi_val(const typed::val_list<> &list) const = delete;
-  inline typed::aff<Domain, Range> param_aff_on_domain(const typed::id<> &id) const = delete;
-  inline typed::aff<Domain, Range> param_aff_on_domain(const std::string &id) const = delete;
-  inline typed::space<> params() const;
-  template <typename Domain2, typename Range2>
-  inline typed::space<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::space<Domain2, Range2> &right) const;
-  inline typed::space<Range> range() const;
-  inline typed::multi_aff<pair<Domain, Range>, Range> range_map_multi_aff() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>, Range> range_map_pw_multi_aff() const;
-  inline typed::space<Domain, Range> range_reverse() const = delete;
-  inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
-  inline typed::space<Range, Domain> reverse() const;
-  template <typename Domain2>
-  inline typed::space<Domain2, Range> set_domain_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::space<Domain2, Range> set_domain_tuple(const std::string &id) const;
-  template <typename Range2>
-  inline typed::space<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::space<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<Domain, Range> uncurry() const = delete;
-  static inline typed::space<Domain, Range> unit(const isl::ctx &ctx) = delete;
-  inline typed::map<Domain, Range> universe_map() const;
-  inline typed::set<Domain, Range> universe_set() const = delete;
-  inline typed::space<Domain, Range> unwrap() const = delete;
-  inline typed::space<pair<Domain, Range>> wrap() const;
-  inline typed::aff<Domain, Range> zero_aff_on_domain() const = delete;
-  inline typed::multi_aff<Domain, Range> zero_multi_aff() const;
-  inline typed::multi_pw_aff<Domain, Range> zero_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<Domain, Range> zero_multi_union_pw_aff() const;
-  inline typed::multi_val<Domain, Range> zero_multi_val() const = delete;
-};
-
-template <typename Domain, typename Range>
-struct space<pair<Domain, Range>> : public isl::space {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  space() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  space(const space<pair<Arg1, Arg2>> &obj) : isl::space(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::space>{}, bool>::type = true>
-  space(const base &obj) : isl::space(obj) {}
- public:
-  static space from(const isl::space &obj) {
-    return space(obj);
-  }
-  template <typename Arg2>
-  inline typed::space<pair<Domain, Range>, Arg2> add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const;
-  template <typename Arg2>
-  inline typed::space<pair<Domain, Range>, Arg2> add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
-  inline typed::space<pair<Domain, Range>> add_param(const typed::id<Anonymous> &id) const;
-  inline typed::space<pair<Domain, Range>> add_param(const std::string &id) const;
-  template <typename Arg2>
-  inline typed::space<pair<Domain, Range>, Arg2> add_unnamed_tuple(unsigned int dim) const;
-  inline typed::space<pair<Domain, Range>> curry() const = delete;
-  inline typed::space<> domain() const;
-  inline typed::multi_aff<pair<Domain, Range>> domain_map_multi_aff() const = delete;
-  inline typed::pw_multi_aff<pair<Domain, Range>> domain_map_pw_multi_aff() const = delete;
-  inline typed::id<pair<Domain, Range>> get_domain_tuple_id() const = delete;
-  inline typed::space<pair<Domain, Range>> flatten_domain() const = delete;
-  inline typed::space<pair<Domain, Range>> flatten_range() const = delete;
-  inline typed::multi_aff<pair<Domain, Range>, pair<Domain, Range>> identity_multi_aff_on_domain() const;
-  inline typed::multi_pw_aff<pair<Domain, Range>, pair<Domain, Range>> identity_multi_pw_aff_on_domain() const;
-  inline typed::pw_multi_aff<pair<Domain, Range>, pair<Domain, Range>> identity_pw_multi_aff_on_domain() const;
-  inline typed::space<pair<Domain, Range>, pair<Domain, Range>> map_from_set() const;
-  inline typed::multi_aff<pair<Domain, Range>> multi_aff(const typed::aff_list<Anonymous> &list) const;
-  template <typename Arg2>
-  inline typed::multi_aff<pair<Domain, Range>, Arg2> multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const;
-  inline typed::multi_id<pair<Domain, Range>> multi_id(const typed::id_list<Anonymous> &list) const;
-  inline typed::multi_pw_aff<pair<Domain, Range>> multi_pw_aff(const typed::pw_aff_list<Anonymous> &list) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Range>> multi_union_pw_aff(const typed::union_pw_aff_list<Anonymous> &list) const;
-  inline typed::multi_val<pair<Domain, Range>> multi_val(const typed::val_list<Anonymous> &list) const;
-  inline typed::aff<pair<Domain, Range>, Anonymous> param_aff_on_domain(const typed::id<Anonymous> &id) const;
-  inline typed::aff<pair<Domain, Range>, Anonymous> param_aff_on_domain(const std::string &id) const;
-  inline typed::space<> params() const;
-  template <typename Arg2>
-  inline typed::space<pair<pair<Domain, Range>, Arg2>> product(const typed::space<Arg2> &right) const;
-  inline typed::space<pair<Domain, Range>> range() const = delete;
-  inline typed::multi_aff<pair<Domain, Range>> range_map_multi_aff() const = delete;
-  inline typed::pw_multi_aff<pair<Domain, Range>> range_map_pw_multi_aff() const = delete;
-  inline typed::space<pair<Domain, Range>> range_reverse() const = delete;
-  inline typed::id<pair<Domain, Range>> get_range_tuple_id() const = delete;
-  inline typed::space<pair<Domain, Range>> reverse() const = delete;
-  inline typed::space<pair<Domain, Range>> set_domain_tuple(const typed::id<> &id) const = delete;
-  inline typed::space<pair<Domain, Range>> set_domain_tuple(const std::string &id) const = delete;
-  inline typed::space<pair<Domain, Range>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::space<pair<Domain, Range>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<pair<Domain, Range>> uncurry() const = delete;
-  static inline typed::space<pair<Domain, Range>> unit(const isl::ctx &ctx) = delete;
-  inline typed::map<pair<Domain, Range>> universe_map() const = delete;
-  inline typed::set<pair<Domain, Range>> universe_set() const;
-  inline typed::space<Domain, Range> unwrap() const;
-  inline typed::space<pair<Domain, Range>> wrap() const = delete;
-  inline typed::aff<pair<Domain, Range>, Anonymous> zero_aff_on_domain() const;
-  inline typed::multi_aff<pair<Domain, Range>> zero_multi_aff() const;
-  inline typed::multi_pw_aff<pair<Domain, Range>> zero_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<pair<Domain, Range>> zero_multi_union_pw_aff() const;
-  inline typed::multi_val<pair<Domain, Range>> zero_multi_val() const;
-};
-
-template <typename Domain, typename Range, typename Range2>
-struct space<pair<Domain, Range>, Range2> : public isl::space {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  space() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{} &&
-              std::is_base_of<Range2, Arg3>{},
-            bool>::type = true>
-  space(const space<pair<Arg1, Arg2>, Arg3> &obj) : isl::space(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::space>{}, bool>::type = true>
-  space(const base &obj) : isl::space(obj) {}
- public:
-  static space from(const isl::space &obj) {
-    return space(obj);
-  }
-  inline typed::space<pair<Domain, Range>, Range2> add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete;
-  inline typed::space<pair<Domain, Range>, Range2> add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete;
-  inline typed::space<pair<Domain, Range>, Range2> add_param(const typed::id<Anonymous> &id) const;
-  inline typed::space<pair<Domain, Range>, Range2> add_param(const std::string &id) const;
-  inline typed::space<pair<Domain, Range>, Range2> add_unnamed_tuple(unsigned int dim) const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> curry() const;
-  inline typed::space<pair<Domain, Range>> domain() const;
-  inline typed::multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map_multi_aff() const;
-  inline typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map_pw_multi_aff() const;
-  inline typed::id<pair<Domain, Range>, Range2> get_domain_tuple_id() const = delete;
-  inline typed::space<Anonymous, Range2> flatten_domain() const;
-  inline typed::space<pair<Domain, Range>, Range2> flatten_range() const = delete;
-  inline typed::multi_aff<pair<Domain, Range>, Range2> identity_multi_aff_on_domain() const = delete;
-  inline typed::multi_pw_aff<pair<Domain, Range>, Range2> identity_multi_pw_aff_on_domain() const = delete;
-  inline typed::pw_multi_aff<pair<Domain, Range>, Range2> identity_pw_multi_aff_on_domain() const = delete;
-  inline typed::space<pair<Domain, Range>, Range2> map_from_set() const = delete;
-  inline typed::multi_aff<pair<Domain, Range>, Range2> multi_aff(const typed::aff_list<pair<Domain, Range>, Anonymous> &list) const;
-  inline typed::multi_aff<pair<Domain, Range>, Range2> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
-  inline typed::multi_id<pair<Domain, Range>, Range2> multi_id(const typed::id_list<> &list) const = delete;
-  inline typed::multi_pw_aff<pair<Domain, Range>, Range2> multi_pw_aff(const typed::pw_aff_list<pair<Domain, Range>, Anonymous> &list) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Range>, Range2> multi_union_pw_aff(const typed::union_pw_aff_list<pair<Domain, Range>, Anonymous> &list) const;
-  inline typed::multi_val<pair<Domain, Range>, Range2> multi_val(const typed::val_list<> &list) const = delete;
-  inline typed::aff<pair<Domain, Range>, Range2> param_aff_on_domain(const typed::id<> &id) const = delete;
-  inline typed::aff<pair<Domain, Range>, Range2> param_aff_on_domain(const std::string &id) const = delete;
-  inline typed::space<> params() const;
-  template <typename Domain2, typename Arg3>
-  inline typed::space<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::space<Domain2, Arg3> &right) const;
-  inline typed::space<Range2> range() const;
-  inline typed::multi_aff<pair<pair<Domain, Range>, Range2>, Range2> range_map_multi_aff() const;
-  inline typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, Range2> range_map_pw_multi_aff() const;
-  inline typed::space<pair<Domain, Range>, Range2> range_reverse() const = delete;
-  inline typed::id<pair<Domain, Range>, Range2> get_range_tuple_id() const = delete;
-  inline typed::space<Range2, pair<Domain, Range>> reverse() const;
-  inline typed::space<pair<Domain, Range>, Range2> set_domain_tuple(const typed::id<> &id) const = delete;
-  inline typed::space<pair<Domain, Range>, Range2> set_domain_tuple(const std::string &id) const = delete;
-  template <typename Arg2>
-  inline typed::space<pair<Domain, Range>, Arg2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Arg2>
-  inline typed::space<pair<Domain, Range>, Arg2> set_range_tuple(const std::string &id) const;
-  inline typed::space<pair<Domain, Range>, Range2> uncurry() const = delete;
-  static inline typed::space<pair<Domain, Range>, Range2> unit(const isl::ctx &ctx) = delete;
-  inline typed::map<pair<Domain, Range>, Range2> universe_map() const;
-  inline typed::set<pair<Domain, Range>, Range2> universe_set() const = delete;
-  inline typed::space<pair<Domain, Range>, Range2> unwrap() const = delete;
-  inline typed::space<pair<pair<Domain, Range>, Range2>> wrap() const;
-  inline typed::aff<pair<Domain, Range>, Range2> zero_aff_on_domain() const = delete;
-  inline typed::multi_aff<pair<Domain, Range>, Range2> zero_multi_aff() const;
-  inline typed::multi_pw_aff<pair<Domain, Range>, Range2> zero_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<pair<Domain, Range>, Range2> zero_multi_union_pw_aff() const;
-  inline typed::multi_val<pair<Domain, Range>, Range2> zero_multi_val() const = delete;
-};
-
-template <typename Domain, typename Range, typename Range2>
-struct space<Domain, pair<Range, Range2>> : public isl::space {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  space() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{} &&
-              std::is_base_of<Range2, Arg3>{},
-            bool>::type = true>
-  space(const space<Arg1, pair<Arg2, Arg3>> &obj) : isl::space(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::space>{}, bool>::type = true>
-  space(const base &obj) : isl::space(obj) {}
- public:
-  static space from(const isl::space &obj) {
-    return space(obj);
-  }
-  inline typed::space<Domain, pair<Range, Range2>> add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> add_param(const typed::id<Anonymous> &id) const;
-  inline typed::space<Domain, pair<Range, Range2>> add_param(const std::string &id) const;
-  inline typed::space<Domain, pair<Range, Range2>> add_unnamed_tuple(unsigned int dim) const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> curry() const = delete;
-  inline typed::space<Domain> domain() const;
-  inline typed::multi_aff<pair<Domain, pair<Range, Range2>>, Domain> domain_map_multi_aff() const;
-  inline typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> domain_map_pw_multi_aff() const;
-  inline typed::id<Domain, pair<Range, Range2>> get_domain_tuple_id() const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> flatten_domain() const = delete;
-  inline typed::space<Domain, Anonymous> flatten_range() const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> identity_multi_aff_on_domain() const = delete;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> identity_multi_pw_aff_on_domain() const = delete;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> identity_pw_multi_aff_on_domain() const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> map_from_set() const = delete;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> multi_aff(const typed::aff_list<Domain, Anonymous> &list) const;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
-  inline typed::multi_id<Domain, pair<Range, Range2>> multi_id(const typed::id_list<> &list) const = delete;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> multi_pw_aff(const typed::pw_aff_list<Domain, Anonymous> &list) const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> multi_union_pw_aff(const typed::union_pw_aff_list<Domain, Anonymous> &list) const;
-  inline typed::multi_val<Domain, pair<Range, Range2>> multi_val(const typed::val_list<> &list) const = delete;
-  inline typed::aff<Domain, pair<Range, Range2>> param_aff_on_domain(const typed::id<> &id) const = delete;
-  inline typed::aff<Domain, pair<Range, Range2>> param_aff_on_domain(const std::string &id) const = delete;
-  inline typed::space<> params() const;
-  template <typename Domain2, typename Arg3>
-  inline typed::space<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::space<Domain2, Arg3> &right) const;
-  inline typed::space<pair<Range, Range2>> range() const;
-  inline typed::multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> range_map_multi_aff() const;
-  inline typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> range_map_pw_multi_aff() const;
-  inline typed::space<Domain, pair<Range2, Range>> range_reverse() const;
-  inline typed::id<Domain, pair<Range, Range2>> get_range_tuple_id() const = delete;
-  inline typed::space<pair<Range, Range2>, Domain> reverse() const;
-  template <typename Domain2>
-  inline typed::space<Domain2, pair<Range, Range2>> set_domain_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::space<Domain2, pair<Range, Range2>> set_domain_tuple(const std::string &id) const;
-  inline typed::space<Domain, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<pair<Domain, Range>, Range2> uncurry() const;
-  static inline typed::space<Domain, pair<Range, Range2>> unit(const isl::ctx &ctx) = delete;
-  inline typed::map<Domain, pair<Range, Range2>> universe_map() const;
-  inline typed::set<Domain, pair<Range, Range2>> universe_set() const = delete;
-  inline typed::space<Domain, pair<Range, Range2>> unwrap() const = delete;
-  inline typed::space<pair<Domain, pair<Range, Range2>>> wrap() const;
-  inline typed::aff<Domain, pair<Range, Range2>> zero_aff_on_domain() const = delete;
-  inline typed::multi_aff<Domain, pair<Range, Range2>> zero_multi_aff() const;
-  inline typed::multi_pw_aff<Domain, pair<Range, Range2>> zero_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> zero_multi_union_pw_aff() const;
-  inline typed::multi_val<Domain, pair<Range, Range2>> zero_multi_val() const = delete;
-};
-
-template <typename T1, typename T2, typename Range, typename Range2>
-struct space<pair<T1, T2>, pair<Range, Range2>> : public isl::space {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  space() = default;
-  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
-            typename std::enable_if<
-              std::is_base_of<T1, Arg1>{} &&
-              std::is_base_of<T2, Arg2>{} &&
-              std::is_base_of<Range, Arg3>{} &&
-              std::is_base_of<Range2, Arg4>{},
-            bool>::type = true>
-  space(const space<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::space(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::space>{}, bool>::type = true>
-  space(const base &obj) : isl::space(obj) {}
- public:
-  static space from(const isl::space &obj) {
-    return space(obj);
-  }
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> add_param(const typed::id<Anonymous> &id) const;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> add_param(const std::string &id) const;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> add_unnamed_tuple(unsigned int dim) const = delete;
-  inline typed::space<T1, pair<T2, pair<Range, Range2>>> curry() const;
-  inline typed::space<pair<T1, T2>> domain() const;
-  inline typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map_multi_aff() const;
-  inline typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map_pw_multi_aff() const;
-  inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_domain_tuple_id() const = delete;
-  inline typed::space<Anonymous, pair<Range, Range2>> flatten_domain() const;
-  inline typed::space<pair<T1, T2>, Anonymous> flatten_range() const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> identity_multi_aff_on_domain() const = delete;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> identity_multi_pw_aff_on_domain() const = delete;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> identity_pw_multi_aff_on_domain() const = delete;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> map_from_set() const = delete;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> multi_aff(const typed::aff_list<pair<T1, T2>, Anonymous> &list) const;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
-  inline typed::multi_id<pair<T1, T2>, pair<Range, Range2>> multi_id(const typed::id_list<> &list) const = delete;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> multi_pw_aff(const typed::pw_aff_list<pair<T1, T2>, Anonymous> &list) const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> multi_union_pw_aff(const typed::union_pw_aff_list<pair<T1, T2>, Anonymous> &list) const;
-  inline typed::multi_val<pair<T1, T2>, pair<Range, Range2>> multi_val(const typed::val_list<> &list) const = delete;
-  inline typed::aff<pair<T1, T2>, pair<Range, Range2>> param_aff_on_domain(const typed::id<> &id) const = delete;
-  inline typed::aff<pair<T1, T2>, pair<Range, Range2>> param_aff_on_domain(const std::string &id) const = delete;
-  inline typed::space<> params() const;
-  template <typename Domain2, typename Arg2>
-  inline typed::space<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::space<Domain2, Arg2> &right) const;
-  inline typed::space<pair<Range, Range2>> range() const;
-  inline typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> range_map_multi_aff() const;
-  inline typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> range_map_pw_multi_aff() const;
-  inline typed::space<pair<T1, T2>, pair<Range2, Range>> range_reverse() const;
-  inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_range_tuple_id() const = delete;
-  inline typed::space<pair<Range, Range2>, pair<T1, T2>> reverse() const;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const typed::id<> &id) const = delete;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const std::string &id) const = delete;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
-  inline typed::space<pair<pair<T1, T2>, Range>, Range2> uncurry() const;
-  static inline typed::space<pair<T1, T2>, pair<Range, Range2>> unit(const isl::ctx &ctx) = delete;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> universe_map() const;
-  inline typed::set<pair<T1, T2>, pair<Range, Range2>> universe_set() const = delete;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> unwrap() const = delete;
-  inline typed::space<pair<pair<T1, T2>, pair<Range, Range2>>> wrap() const;
-  inline typed::aff<pair<T1, T2>, pair<Range, Range2>> zero_aff_on_domain() const = delete;
-  inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> zero_multi_aff() const;
-  inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> zero_multi_pw_aff() const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> zero_multi_union_pw_aff() const;
-  inline typed::multi_val<pair<T1, T2>, pair<Range, Range2>> zero_multi_val() const = delete;
-};
-
-template <typename Domain, typename Range>
-struct union_map<Domain, Range> : public isl::union_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_map() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  union_map(const union_map<Arg1, Arg2> &obj) : isl::union_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_map>{}, bool>::type = true>
-  union_map(const base &obj) : isl::union_map(obj) {}
- public:
-  static union_map from(const isl::union_map &obj) {
-    return union_map(obj);
-  }
-  inline /* implicit */ union_map(const typed::basic_map<Domain, Range> &bmap);
-  inline /* implicit */ union_map(const typed::map<Domain, Range> &map);
-  inline explicit union_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range> apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range> apply_domain(const typed::map<Domain, Domain2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Range, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> apply_range(const typed::basic_map<Range, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> apply_range(const typed::map<Range, Range2> &umap2) const;
-  inline typed::map<Domain, Range> as_map() const;
-  inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<Domain, Range> as_union_pw_multi_aff() const;
-  inline typed::union_set<Domain> bind_range(const typed::multi_id<Range> &tuple) const;
-  inline typed::union_map<Domain, Range> coalesce() const;
-  inline typed::union_map<Domain, Range> curry() const = delete;
-  inline typed::union_set<Domain, Range> deltas() const = delete;
-  inline typed::union_map<Domain, Range> detect_equalities() const;
-  inline typed::union_set<Domain> domain() const;
-  inline typed::union_map<Domain, Range> domain_factor_domain() const = delete;
-  inline typed::union_map<Domain, Range> domain_factor_range() const = delete;
-  inline typed::union_map<pair<Domain, Range>, Domain> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<Domain, Range>, Domain> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, Range> domain_product(const typed::union_map<Domain2, Range> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, Range> domain_product(const typed::basic_map<Domain2, Range> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, Range> domain_product(const typed::map<Domain2, Range> &umap2) const;
-  static inline typed::union_map<Domain, Range> empty(const isl::ctx &ctx);
-  inline typed::union_map<Domain, Range> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline typed::union_map<Domain, Range> eq_at(const typed::multi_pw_aff<> &mupa) const = delete;
-  inline typed::union_map<Domain, Range> eq_at(const typed::union_pw_aff<> &mupa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const;
-  inline typed::map<Domain, Range> extract_map(const typed::space<Domain, Range> &space) const;
-  inline void foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const;
-  inline typed::union_map<Domain, Range> gist(const typed::union_map<Domain, Range> &context) const;
-  inline typed::union_map<Domain, Range> gist(const typed::basic_map<Domain, Range> &context) const;
-  inline typed::union_map<Domain, Range> gist(const typed::map<Domain, Range> &context) const;
-  inline typed::union_map<Domain, Range> gist_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::union_map<Domain, Range> gist_domain(const typed::basic_set<Domain> &uset) const;
-  inline typed::union_map<Domain, Range> gist_domain(const typed::point<Domain> &uset) const;
-  inline typed::union_map<Domain, Range> gist_domain(const typed::set<Domain> &uset) const;
-  inline typed::union_map<Domain, Range> intersect(const typed::union_map<Domain, Range> &umap2) const;
-  inline typed::union_map<Domain, Range> intersect(const typed::basic_map<Domain, Range> &umap2) const;
-  inline typed::union_map<Domain, Range> intersect(const typed::map<Domain, Range> &umap2) const;
-  inline typed::union_map<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::union_map<Domain, Range> intersect_params(const typed::set<> &set) const;
-  inline typed::union_map<Domain, Range> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_map<Domain, Range> intersect_params(const typed::point<> &set) const;
-  inline typed::union_map<Domain, Range> intersect_range(const typed::space<Range> &space) const;
-  inline typed::union_map<Domain, Range> intersect_range(const typed::union_set<Range> &uset) const;
-  inline typed::union_map<Domain, Range> lexmax() const;
-  inline typed::union_map<Domain, Range> lexmin() const;
-  inline typed::map_list<Domain, Range> map_list() const;
-  inline typed::map_list<Domain, Range> get_map_list() const = delete;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Range> &ma) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::basic_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::map<Domain2, Range2> &umap2) const;
-  inline typed::union_map<Domain, Range> project_out_all_params() const;
-  inline typed::union_set<Range> range() const;
-  inline typed::union_map<Domain, Range> range_factor_domain() const = delete;
-  inline typed::union_map<Domain, Range> range_factor_range() const = delete;
-  inline typed::union_map<pair<Domain, Range>, Range> range_map() const;
-  template <typename Range2>
-  inline typed::union_map<Domain, pair<Range, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, pair<Range, Range2>> range_product(const typed::basic_map<Domain, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, pair<Range, Range2>> range_product(const typed::map<Domain, Range2> &umap2) const;
-  inline typed::union_map<Domain, Range> range_reverse() const = delete;
-  inline typed::union_map<Range, Domain> reverse() const;
-  inline typed::space<> space() const;
-  inline typed::space<Domain, Range> get_space() const = delete;
-  inline typed::union_map<Domain, Range> subtract(const typed::union_map<Domain, Range> &umap2) const;
-  inline typed::union_map<Domain, Range> subtract(const typed::basic_map<Domain, Range> &umap2) const;
-  inline typed::union_map<Domain, Range> subtract(const typed::map<Domain, Range> &umap2) const;
-  inline typed::union_map<Domain, Range> subtract_domain(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Range> subtract_domain(const typed::basic_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Range> subtract_domain(const typed::point<Domain> &dom) const;
-  inline typed::union_map<Domain, Range> subtract_domain(const typed::set<Domain> &dom) const;
-  inline typed::union_map<Domain, Range> subtract_range(const typed::union_set<Range> &dom) const;
-  inline typed::union_map<Domain, Range> subtract_range(const typed::basic_set<Range> &dom) const;
-  inline typed::union_map<Domain, Range> subtract_range(const typed::point<Range> &dom) const;
-  inline typed::union_map<Domain, Range> subtract_range(const typed::set<Range> &dom) const;
-  inline typed::union_map<Domain, Range> uncurry() const = delete;
-  inline typed::union_map<Domain, Range> unite(const typed::union_map<Domain, Range> &umap2) const;
-  inline typed::union_map<Domain, Range> unite(const typed::basic_map<Domain, Range> &umap2) const;
-  inline typed::union_map<Domain, Range> unite(const typed::map<Domain, Range> &umap2) const;
-  inline typed::union_map<Domain, Range> universe() const;
-  inline typed::union_set<pair<Domain, Range>> wrap() const;
-};
-
-template <typename Domain, typename Range, typename Range2>
-struct union_map<pair<Domain, Range>, Range2> : public isl::union_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_map() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{} &&
-              std::is_base_of<Range2, Arg3>{},
-            bool>::type = true>
-  union_map(const union_map<pair<Arg1, Arg2>, Arg3> &obj) : isl::union_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_map>{}, bool>::type = true>
-  union_map(const base &obj) : isl::union_map(obj) {}
- public:
-  static union_map from(const isl::union_map &obj) {
-    return union_map(obj);
-  }
-  inline /* implicit */ union_map(const typed::basic_map<pair<Domain, Range>, Range2> &bmap);
-  inline /* implicit */ union_map(const typed::map<pair<Domain, Range>, Range2> &map);
-  inline explicit union_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range2> apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range2> apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range2> apply_domain(const typed::map<pair<Domain, Range>, Domain2> &umap2) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, Arg3> apply_range(const typed::union_map<Range2, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, Arg3> apply_range(const typed::basic_map<Range2, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, Arg3> apply_range(const typed::map<Range2, Arg3> &umap2) const;
-  inline typed::map<pair<Domain, Range>, Range2> as_map() const;
-  inline typed::multi_union_pw_aff<pair<Domain, Range>, Range2> as_multi_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<pair<Domain, Range>, Range2> as_union_pw_multi_aff() const;
-  inline typed::union_set<pair<Domain, Range>> bind_range(const typed::multi_id<Range2> &tuple) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> coalesce() const;
-  inline typed::union_map<Domain, pair<Range, Range2>> curry() const;
-  inline typed::union_set<pair<Domain, Range>, Range2> deltas() const = delete;
-  inline typed::union_map<pair<Domain, Range>, Range2> detect_equalities() const;
-  inline typed::union_set<pair<Domain, Range>> domain() const;
-  inline typed::union_map<Domain, Range2> domain_factor_domain() const;
-  inline typed::union_map<Range, Range2> domain_factor_range() const;
-  inline typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::union_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::basic_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::map<Domain2, Range2> &umap2) const;
-  static inline typed::union_map<pair<Domain, Range>, Range2> empty(const isl::ctx &ctx);
-  inline typed::union_map<pair<Domain, Range>, Range2> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline typed::union_map<pair<Domain, Range>, Range2> eq_at(const typed::multi_pw_aff<> &mupa) const = delete;
-  inline typed::union_map<pair<Domain, Range>, Range2> eq_at(const typed::union_pw_aff<> &mupa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const;
-  inline typed::map<pair<Domain, Range>, Range2> extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const;
-  inline void foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> gist(const typed::map<pair<Domain, Range>, Range2> &context) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::basic_set<pair<Domain, Range>> &uset) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::point<pair<Domain, Range>> &uset) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::set<pair<Domain, Range>> &uset) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect(const typed::map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::space<pair<Domain, Range>> &space) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_params(const typed::set<> &set) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_params(const typed::point<> &set) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::space<Range2> &space) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::union_set<Range2> &uset) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> lexmax() const;
-  inline typed::union_map<pair<Domain, Range>, Range2> lexmin() const;
-  inline typed::map_list<pair<Domain, Range>, Range2> map_list() const;
-  inline typed::map_list<pair<Domain, Range>, Range2> get_map_list() const = delete;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range2> preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range2> preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range2> preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Range2> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, Arg3> preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::basic_map<Domain2, Arg3> &umap2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::map<Domain2, Arg3> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> project_out_all_params() const;
-  inline typed::union_set<Range2> range() const;
-  inline typed::union_map<pair<Domain, Range>, Range2> range_factor_domain() const = delete;
-  inline typed::union_map<pair<Domain, Range>, Range2> range_factor_range() const = delete;
-  inline typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> range_map() const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::basic_map<pair<Domain, Range>, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::map<pair<Domain, Range>, Arg3> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> range_reverse() const = delete;
-  inline typed::union_map<Range2, pair<Domain, Range>> reverse() const;
-  inline typed::space<> space() const;
-  inline typed::space<pair<Domain, Range>, Range2> get_space() const = delete;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract(const typed::map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::basic_set<pair<Domain, Range>> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::point<pair<Domain, Range>> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::set<pair<Domain, Range>> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::union_set<Range2> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::basic_set<Range2> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::point<Range2> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::set<Range2> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> uncurry() const = delete;
-  inline typed::union_map<pair<Domain, Range>, Range2> unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> unite(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> unite(const typed::map<pair<Domain, Range>, Range2> &umap2) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> universe() const;
-  inline typed::union_set<pair<pair<Domain, Range>, Range2>> wrap() const;
-};
-
-template <typename Domain>
-struct union_map<Domain, Domain> : public isl::union_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_map() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  union_map(const union_map<Arg1, Arg1> &obj) : isl::union_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_map>{}, bool>::type = true>
-  union_map(const base &obj) : isl::union_map(obj) {}
- public:
-  static union_map from(const isl::union_map &obj) {
-    return union_map(obj);
-  }
-  inline /* implicit */ union_map(const typed::basic_map<Domain, Domain> &bmap);
-  inline /* implicit */ union_map(const typed::map<Domain, Domain> &map);
-  inline explicit union_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Domain> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Domain> apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Domain> apply_domain(const typed::map<Domain, Domain2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Domain, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> apply_range(const typed::basic_map<Domain, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> apply_range(const typed::map<Domain, Range2> &umap2) const;
-  inline typed::map<Domain, Domain> as_map() const;
-  inline typed::multi_union_pw_aff<Domain, Domain> as_multi_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<Domain, Domain> as_union_pw_multi_aff() const;
-  inline typed::union_set<Domain> bind_range(const typed::multi_id<Domain> &tuple) const;
-  inline typed::union_map<Domain, Domain> coalesce() const;
-  inline typed::union_map<Domain, Domain> curry() const = delete;
-  inline typed::union_set<Domain> deltas() const;
-  inline typed::union_map<Domain, Domain> detect_equalities() const;
-  inline typed::union_set<Domain> domain() const;
-  inline typed::union_map<Domain, Domain> domain_factor_domain() const = delete;
-  inline typed::union_map<Domain, Domain> domain_factor_range() const = delete;
-  inline typed::union_map<pair<Domain, Domain>, Domain> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, Domain> domain_product(const typed::union_map<Domain2, Domain> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, Domain> domain_product(const typed::basic_map<Domain2, Domain> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, Domain> domain_product(const typed::map<Domain2, Domain> &umap2) const;
-  static inline typed::union_map<Domain, Domain> empty(const isl::ctx &ctx);
-  template <typename Range>
-  inline typed::union_map<Domain, Domain> eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const;
-  template <typename Range>
-  inline typed::union_map<Domain, Domain> eq_at(const typed::multi_pw_aff<Domain, Range> &mupa) const;
-  template <typename Range>
-  inline typed::union_map<Domain, Domain> eq_at(const typed::union_pw_aff<Domain, Range> &mupa) const;
-  inline bool every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const;
-  inline typed::map<Domain, Domain> extract_map(const typed::space<Domain, Domain> &space) const;
-  inline void foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const;
-  inline typed::union_map<Domain, Domain> gist(const typed::union_map<Domain, Domain> &context) const;
-  inline typed::union_map<Domain, Domain> gist(const typed::basic_map<Domain, Domain> &context) const;
-  inline typed::union_map<Domain, Domain> gist(const typed::map<Domain, Domain> &context) const;
-  inline typed::union_map<Domain, Domain> gist_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::union_map<Domain, Domain> gist_domain(const typed::basic_set<Domain> &uset) const;
-  inline typed::union_map<Domain, Domain> gist_domain(const typed::point<Domain> &uset) const;
-  inline typed::union_map<Domain, Domain> gist_domain(const typed::set<Domain> &uset) const;
-  inline typed::union_map<Domain, Domain> intersect(const typed::union_map<Domain, Domain> &umap2) const;
-  inline typed::union_map<Domain, Domain> intersect(const typed::basic_map<Domain, Domain> &umap2) const;
-  inline typed::union_map<Domain, Domain> intersect(const typed::map<Domain, Domain> &umap2) const;
-  inline typed::union_map<Domain, Domain> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, Domain> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::union_map<Domain, Domain> intersect_params(const typed::set<> &set) const;
-  inline typed::union_map<Domain, Domain> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_map<Domain, Domain> intersect_params(const typed::point<> &set) const;
-  inline typed::union_map<Domain, Domain> intersect_range(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, Domain> intersect_range(const typed::union_set<Domain> &uset) const;
-  inline typed::union_map<Domain, Domain> lexmax() const;
-  inline typed::union_map<Domain, Domain> lexmin() const;
-  inline typed::map_list<Domain, Domain> map_list() const;
-  inline typed::map_list<Domain, Domain> get_map_list() const = delete;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Domain> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Domain> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Domain> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, Domain> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Domain> &ma) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::basic_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::map<Domain2, Range2> &umap2) const;
-  inline typed::union_map<Domain, Domain> project_out_all_params() const;
-  inline typed::union_set<Domain> range() const;
-  inline typed::union_map<Domain, Domain> range_factor_domain() const = delete;
-  inline typed::union_map<Domain, Domain> range_factor_range() const = delete;
-  inline typed::union_map<pair<Domain, Domain>, Domain> range_map() const;
-  template <typename Range2>
-  inline typed::union_map<Domain, pair<Domain, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, pair<Domain, Range2>> range_product(const typed::basic_map<Domain, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<Domain, pair<Domain, Range2>> range_product(const typed::map<Domain, Range2> &umap2) const;
-  inline typed::union_map<Domain, Domain> range_reverse() const = delete;
-  inline typed::union_map<Domain, Domain> reverse() const;
-  inline typed::space<> space() const;
-  inline typed::space<Domain, Domain> get_space() const = delete;
-  inline typed::union_map<Domain, Domain> subtract(const typed::union_map<Domain, Domain> &umap2) const;
-  inline typed::union_map<Domain, Domain> subtract(const typed::basic_map<Domain, Domain> &umap2) const;
-  inline typed::union_map<Domain, Domain> subtract(const typed::map<Domain, Domain> &umap2) const;
-  inline typed::union_map<Domain, Domain> subtract_domain(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> subtract_domain(const typed::basic_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> subtract_domain(const typed::point<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> subtract_domain(const typed::set<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> subtract_range(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> subtract_range(const typed::basic_set<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> subtract_range(const typed::point<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> subtract_range(const typed::set<Domain> &dom) const;
-  inline typed::union_map<Domain, Domain> uncurry() const = delete;
-  inline typed::union_map<Domain, Domain> unite(const typed::union_map<Domain, Domain> &umap2) const;
-  inline typed::union_map<Domain, Domain> unite(const typed::basic_map<Domain, Domain> &umap2) const;
-  inline typed::union_map<Domain, Domain> unite(const typed::map<Domain, Domain> &umap2) const;
-  inline typed::union_map<Domain, Domain> universe() const;
-  inline typed::union_set<pair<Domain, Domain>> wrap() const;
-};
-
-template <typename Domain, typename Range, typename Range2>
-struct union_map<Domain, pair<Range, Range2>> : public isl::union_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_map() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{} &&
-              std::is_base_of<Range2, Arg3>{},
-            bool>::type = true>
-  union_map(const union_map<Arg1, pair<Arg2, Arg3>> &obj) : isl::union_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_map>{}, bool>::type = true>
-  union_map(const base &obj) : isl::union_map(obj) {}
- public:
-  static union_map from(const isl::union_map &obj) {
-    return union_map(obj);
-  }
-  inline /* implicit */ union_map(const typed::basic_map<Domain, pair<Range, Range2>> &bmap);
-  inline /* implicit */ union_map(const typed::map<Domain, pair<Range, Range2>> &map);
-  inline explicit union_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<Domain, Domain2> &umap2) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, Arg3> apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, Arg3> apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, Arg3> apply_range(const typed::map<pair<Range, Range2>, Arg3> &umap2) const;
-  inline typed::map<Domain, pair<Range, Range2>> as_map() const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> as_union_pw_multi_aff() const;
-  inline typed::union_set<Domain> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> coalesce() const;
-  inline typed::union_map<Domain, pair<Range, Range2>> curry() const = delete;
-  inline typed::union_set<Domain, pair<Range, Range2>> deltas() const = delete;
-  inline typed::union_map<Domain, pair<Range, Range2>> detect_equalities() const;
-  inline typed::union_set<Domain> domain() const;
-  inline typed::union_map<Domain, pair<Range, Range2>> domain_factor_domain() const = delete;
-  inline typed::union_map<Domain, pair<Range, Range2>> domain_factor_range() const = delete;
-  inline typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &umap2) const;
-  static inline typed::union_map<Domain, pair<Range, Range2>> empty(const isl::ctx &ctx);
-  inline typed::union_map<Domain, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline typed::union_map<Domain, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mupa) const = delete;
-  inline typed::union_map<Domain, pair<Range, Range2>> eq_at(const typed::union_pw_aff<> &mupa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const;
-  inline typed::map<Domain, pair<Range, Range2>> extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const;
-  inline void foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> gist(const typed::map<Domain, pair<Range, Range2>> &context) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::basic_set<Domain> &uset) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::point<Domain> &uset) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::set<Domain> &uset) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect(const typed::map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> lexmax() const;
-  inline typed::union_map<Domain, pair<Range, Range2>> lexmin() const;
-  inline typed::map_list<Domain, pair<Range, Range2>> map_list() const;
-  inline typed::map_list<Domain, pair<Range, Range2>> get_map_list() const = delete;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, Arg3> preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::basic_map<Domain2, Arg3> &umap2) const;
-  template <typename Domain2, typename Arg3>
-  inline typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::map<Domain2, Arg3> &umap2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> project_out_all_params() const;
-  inline typed::union_set<pair<Range, Range2>> range() const;
-  inline typed::union_map<Domain, Range> range_factor_domain() const;
-  inline typed::union_map<Domain, Range2> range_factor_range() const;
-  inline typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_map<Domain, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::basic_map<Domain, Arg3> &umap2) const;
-  template <typename Arg3>
-  inline typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::map<Domain, Arg3> &umap2) const;
-  inline typed::union_map<Domain, pair<Range2, Range>> range_reverse() const;
-  inline typed::union_map<pair<Range, Range2>, Domain> reverse() const;
-  inline typed::space<> space() const;
-  inline typed::space<Domain, pair<Range, Range2>> get_space() const = delete;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract(const typed::map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &dom) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::basic_set<Domain> &dom) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::point<Domain> &dom) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::set<Domain> &dom) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::basic_set<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::point<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::set<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<pair<Domain, Range>, Range2> uncurry() const;
-  inline typed::union_map<Domain, pair<Range, Range2>> unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> unite(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> unite(const typed::map<Domain, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<Domain, pair<Range, Range2>> universe() const;
-  inline typed::union_set<pair<Domain, pair<Range, Range2>>> wrap() const;
-};
-
-template <typename T1, typename T2>
-struct union_map<pair<T1, T2>, pair<T1, T2>> : public isl::union_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_map() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<T1, Arg1>{} &&
-              std::is_base_of<T2, Arg2>{},
-            bool>::type = true>
-  union_map(const union_map<pair<Arg1, Arg2>, pair<Arg1, Arg2>> &obj) : isl::union_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_map>{}, bool>::type = true>
-  union_map(const base &obj) : isl::union_map(obj) {}
- public:
-  static union_map from(const isl::union_map &obj) {
-    return union_map(obj);
-  }
-  inline /* implicit */ union_map(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap);
-  inline /* implicit */ union_map(const typed::map<pair<T1, T2>, pair<T1, T2>> &map);
-  inline explicit union_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<T1, T2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<T1, T2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<T1, T2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, Range2> apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, Range2> apply_range(const typed::basic_map<pair<T1, T2>, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, Range2> apply_range(const typed::map<pair<T1, T2>, Range2> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> as_map() const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> as_multi_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> as_union_pw_multi_aff() const;
-  inline typed::union_set<pair<T1, T2>> bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> coalesce() const;
-  inline typed::union_map<T1, pair<T2, pair<T1, T2>>> curry() const;
-  inline typed::union_set<pair<T1, T2>> deltas() const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> detect_equalities() const;
-  inline typed::union_set<pair<T1, T2>> domain() const;
-  inline typed::union_map<T1, pair<T1, T2>> domain_factor_domain() const;
-  inline typed::union_map<T2, pair<T1, T2>> domain_factor_range() const;
-  inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::basic_map<Domain2, pair<T1, T2>> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::map<Domain2, pair<T1, T2>> &umap2) const;
-  static inline typed::union_map<pair<T1, T2>, pair<T1, T2>> empty(const isl::ctx &ctx);
-  template <typename Range>
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const;
-  template <typename Range>
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mupa) const;
-  template <typename Range>
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::union_pw_aff<pair<T1, T2>, Range> &mupa) const;
-  inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const;
-  inline typed::map<pair<T1, T2>, pair<T1, T2>> extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const;
-  inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::basic_set<pair<T1, T2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::point<pair<T1, T2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::set<pair<T1, T2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::set<> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::point<> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> lexmax() const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> lexmin() const;
-  inline typed::map_list<pair<T1, T2>, pair<T1, T2>> map_list() const;
-  inline typed::map_list<pair<T1, T2>, pair<T1, T2>> get_map_list() const = delete;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, Range2> preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, Range2> preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::basic_map<Domain2, Range2> &umap2) const;
-  template <typename Domain2, typename Range2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::map<Domain2, Range2> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> project_out_all_params() const;
-  inline typed::union_set<pair<T1, T2>> range() const;
-  inline typed::union_map<pair<T1, T2>, T1> range_factor_domain() const;
-  inline typed::union_map<pair<T1, T2>, T2> range_factor_range() const;
-  inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> range_map() const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::basic_map<pair<T1, T2>, Range2> &umap2) const;
-  template <typename Range2>
-  inline typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::map<pair<T1, T2>, Range2> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T2, T1>> range_reverse() const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> reverse() const;
-  inline typed::space<> space() const;
-  inline typed::space<pair<T1, T2>, pair<T1, T2>> get_space() const = delete;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::basic_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::point<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::union_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::basic_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::point<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<pair<T1, T2>, T1>, T2> uncurry() const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<T1, T2>> universe() const;
-  inline typed::union_set<pair<pair<T1, T2>, pair<T1, T2>>> wrap() const;
-};
-
-template <typename T1, typename T2, typename Range, typename Range2>
-struct union_map<pair<T1, T2>, pair<Range, Range2>> : public isl::union_map {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_map() = default;
-  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
-            typename std::enable_if<
-              std::is_base_of<T1, Arg1>{} &&
-              std::is_base_of<T2, Arg2>{} &&
-              std::is_base_of<Range, Arg3>{} &&
-              std::is_base_of<Range2, Arg4>{},
-            bool>::type = true>
-  union_map(const union_map<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::union_map(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_map>{}, bool>::type = true>
-  union_map(const base &obj) : isl::union_map(obj) {}
- public:
-  static union_map from(const isl::union_map &obj) {
-    return union_map(obj);
-  }
-  inline /* implicit */ union_map(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap);
-  inline /* implicit */ union_map(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map);
-  inline explicit union_map(const isl::ctx &ctx, const std::string &str);
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &umap2) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, Arg2> apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, Arg2> apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &umap2) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, Arg2> apply_range(const typed::map<pair<Range, Range2>, Arg2> &umap2) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> as_map() const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_union_pw_multi_aff() const;
-  inline typed::union_set<pair<T1, T2>> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
-  inline typed::union_map<T1, pair<T2, pair<Range, Range2>>> curry() const;
-  inline typed::union_set<pair<T1, T2>, pair<Range, Range2>> deltas() const = delete;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> detect_equalities() const;
-  inline typed::union_set<pair<T1, T2>> domain() const;
-  inline typed::union_map<T1, pair<Range, Range2>> domain_factor_domain() const;
-  inline typed::union_map<T2, pair<Range, Range2>> domain_factor_range() const;
-  inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map() const;
-  inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &umap2) const;
-  template <typename Domain2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &umap2) const;
-  static inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> empty(const isl::ctx &ctx);
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mupa) const = delete;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::union_pw_aff<> &mupa) const = delete;
-  inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const;
-  inline typed::map<pair<T1, T2>, pair<Range, Range2>> extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
-  inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::basic_set<pair<T1, T2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::point<pair<T1, T2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::set<pair<T1, T2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> lexmax() const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> lexmin() const;
-  inline typed::map_list<pair<T1, T2>, pair<Range, Range2>> map_list() const;
-  inline typed::map_list<pair<T1, T2>, pair<Range, Range2>> get_map_list() const = delete;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, Arg2> preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, Arg2> preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, Arg2> preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::union_map<Domain2, Arg2> &umap2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::basic_map<Domain2, Arg2> &umap2) const;
-  template <typename Domain2, typename Arg2>
-  inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::map<Domain2, Arg2> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> project_out_all_params() const;
-  inline typed::union_set<pair<Range, Range2>> range() const;
-  inline typed::union_map<pair<T1, T2>, Range> range_factor_domain() const;
-  inline typed::union_map<pair<T1, T2>, Range2> range_factor_range() const;
-  inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::basic_map<pair<T1, T2>, Arg2> &umap2) const;
-  template <typename Arg2>
-  inline typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::map<pair<T1, T2>, Arg2> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range2, Range>> range_reverse() const;
-  inline typed::union_map<pair<Range, Range2>, pair<T1, T2>> reverse() const;
-  inline typed::space<> space() const;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> get_space() const = delete;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::basic_set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::point<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::set<pair<T1, T2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::basic_set<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::point<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::set<pair<Range, Range2>> &dom) const;
-  inline typed::union_map<pair<pair<T1, T2>, Range>, Range2> uncurry() const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> universe() const;
-  inline typed::union_set<pair<pair<T1, T2>, pair<Range, Range2>>> wrap() const;
-};
-
-template <>
-struct union_pw_aff<Anonymous> : public isl::union_pw_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_pw_aff() = default;
-  union_pw_aff(const isl::union_pw_aff &obj) : isl::union_pw_aff(obj) {}
-  static union_pw_aff from(const isl::union_pw_aff &obj) {
-    return union_pw_aff(obj);
-  }
-  inline /* implicit */ union_pw_aff(const typed::aff<Anonymous> &aff);
-  inline /* implicit */ union_pw_aff(const typed::pw_aff<Anonymous> &pa);
-  inline explicit union_pw_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_union_pw_aff<Anonymous> add(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
-  inline typed::union_pw_aff<Anonymous> add(const typed::union_pw_aff<Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Anonymous> add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
-  inline typed::union_pw_aff<Anonymous> add(const typed::aff<Anonymous> &upa2) const;
-  inline typed::union_pw_aff<Anonymous> add(const typed::pw_aff<Anonymous> &upa2) const;
-  template <typename Range>
-  inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const;
-  inline typed::multi_union_pw_aff<Anonymous> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Anonymous> as_pw_multi_aff() const;
-  inline typed::union_map<Anonymous> as_union_map() const = delete;
-  inline typed::union_pw_aff<Anonymous> at(int pos) const;
-  inline typed::union_set<> bind(const typed::multi_id<Anonymous> &tuple) const;
-  inline typed::union_set<> bind(const typed::id<Anonymous> &id) const;
-  inline typed::union_set<> bind(const std::string &id) const;
-  inline typed::union_pw_aff<Anonymous> coalesce() const;
-  inline typed::union_set<> domain() const;
-  inline typed::pw_multi_aff<Anonymous> extract_pw_multi_aff(const typed::space<Anonymous> &space) const;
-  inline typed::union_pw_aff<Anonymous> gist(const typed::union_set<> &context) const;
-  inline typed::union_pw_aff<Anonymous> gist(const typed::basic_set<> &context) const;
-  inline typed::union_pw_aff<Anonymous> gist(const typed::point<> &context) const;
-  inline typed::union_pw_aff<Anonymous> gist(const typed::set<> &context) const;
-  inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::union_pw_aff<Anonymous> intersect_params(const typed::set<> &set) const;
-  inline typed::union_pw_aff<Anonymous> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_pw_aff<Anonymous> intersect_params(const typed::point<> &set) const;
-  inline typed::union_pw_aff_list<Anonymous> list() const;
-  inline typed::multi_union_pw_aff<Anonymous> neg() const;
-  inline typed::union_pw_multi_aff<Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<> &upma) const = delete;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::multi_aff<> &upma) const = delete;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::pw_multi_aff<> &upma) const = delete;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_aff<> &upma) const = delete;
-  inline typed::pw_multi_aff_list<Anonymous> pw_multi_aff_list() const;
-  inline typed::union_pw_multi_aff<Anonymous> range_factor_domain() const = delete;
-  inline typed::union_pw_multi_aff<Anonymous> range_factor_range() const = delete;
-  inline typed::multi_union_pw_aff<Anonymous> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
-  inline typed::union_pw_multi_aff<Anonymous> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::multi_union_pw_aff<Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::multi_union_pw_aff<Anonymous> scale(const typed::val<Anonymous> &v) const;
-  inline typed::multi_union_pw_aff<Anonymous> scale(long v) const;
-  inline typed::multi_union_pw_aff<Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::multi_union_pw_aff<Anonymous> scale_down(const typed::val<Anonymous> &v) const;
-  inline typed::multi_union_pw_aff<Anonymous> scale_down(long v) const;
-  inline typed::multi_union_pw_aff<Anonymous> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
-  template <typename Domain2>
-  inline typed::multi_union_pw_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Domain2>
-  inline typed::multi_union_pw_aff<Domain2> set_range_tuple(const std::string &id) const;
-  inline typed::space<> space() const;
-  inline typed::space<Anonymous> get_space() const = delete;
-  inline typed::multi_union_pw_aff<Anonymous> sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
-  inline typed::union_pw_aff<Anonymous> sub(const typed::union_pw_aff<Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Anonymous> sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
-  inline typed::union_pw_aff<Anonymous> sub(const typed::aff<Anonymous> &upa2) const;
-  inline typed::union_pw_aff<Anonymous> sub(const typed::pw_aff<Anonymous> &upa2) const;
-  inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::multi_union_pw_aff<Anonymous> union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const;
-  inline typed::union_pw_aff<Anonymous> union_add(const typed::union_pw_aff<Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Anonymous> union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
-  inline typed::union_pw_aff<Anonymous> union_add(const typed::aff<Anonymous> &upa2) const;
-  inline typed::union_pw_aff<Anonymous> union_add(const typed::pw_aff<Anonymous> &upa2) const;
-};
-
-template <typename Domain>
-struct union_pw_aff<Domain, Anonymous> : public isl::union_pw_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_pw_aff() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  union_pw_aff(const union_pw_aff<Arg1, Anonymous> &obj) : isl::union_pw_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_pw_aff>{}, bool>::type = true>
-  union_pw_aff(const base &obj) : isl::union_pw_aff(obj) {}
- public:
-  static union_pw_aff from(const isl::union_pw_aff &obj) {
-    return union_pw_aff(obj);
-  }
-  inline /* implicit */ union_pw_aff(const typed::aff<Domain, Anonymous> &aff);
-  inline /* implicit */ union_pw_aff(const typed::pw_aff<Domain, Anonymous> &pa);
-  inline explicit union_pw_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_union_pw_aff<Domain, Anonymous> add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> add(const typed::pw_aff<Domain, Anonymous> &upa2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Anonymous> as_pw_multi_aff() const;
-  inline typed::union_map<Domain, Anonymous> as_union_map() const;
-  inline typed::union_pw_aff<Domain, Anonymous> at(int pos) const;
-  inline typed::union_set<Domain> bind(const typed::multi_id<Anonymous> &tuple) const;
-  inline typed::union_set<Domain> bind(const typed::id<Anonymous> &id) const;
-  inline typed::union_set<Domain> bind(const std::string &id) const;
-  inline typed::union_pw_aff<Domain, Anonymous> coalesce() const;
-  inline typed::union_set<Domain> domain() const;
-  inline typed::pw_multi_aff<Domain, Anonymous> extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const;
-  inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::union_set<Domain> &context) const;
-  inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::point<Domain> &context) const;
-  inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::set<Domain> &context) const;
-  inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::union_pw_aff<Domain, Anonymous> intersect_params(const typed::set<> &set) const;
-  inline typed::union_pw_aff<Domain, Anonymous> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_pw_aff<Domain, Anonymous> intersect_params(const typed::point<> &set) const;
-  inline typed::union_pw_aff_list<Domain, Anonymous> list() const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> neg() const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  template <typename Domain2>
-  inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<Domain> &upma) const;
-  template <typename Domain2>
-  inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::multi_aff<Domain2, Domain> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::multi_aff<Domain> &upma) const;
-  template <typename Domain2>
-  inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::pw_multi_aff<Domain2, Domain> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::pw_multi_aff<Domain> &upma) const;
-  template <typename Domain2>
-  inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::union_pw_aff<Domain2, Domain> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_aff<Domain> &upma) const;
-  inline typed::pw_multi_aff_list<Domain, Anonymous> pw_multi_aff_list() const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> range_factor_domain() const = delete;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> range_factor_range() const = delete;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> scale(const typed::val<Anonymous> &v) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> scale(long v) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> scale_down(const typed::val<Anonymous> &v) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> scale_down(long v) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<> space() const;
-  inline typed::space<Domain, Anonymous> get_space() const = delete;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> sub(const typed::aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> sub(const typed::pw_aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::multi_union_pw_aff<Domain, Anonymous> union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<Domain, Anonymous> union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> union_add(const typed::aff<Domain, Anonymous> &upa2) const;
-  inline typed::union_pw_aff<Domain, Anonymous> union_add(const typed::pw_aff<Domain, Anonymous> &upa2) const;
-};
-
-template <typename Domain, typename Domain2>
-struct union_pw_aff<pair<Domain, Domain2>, Anonymous> : public isl::union_pw_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_pw_aff() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Domain2, Arg2>{},
-            bool>::type = true>
-  union_pw_aff(const union_pw_aff<pair<Arg1, Arg2>, Anonymous> &obj) : isl::union_pw_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_pw_aff>{}, bool>::type = true>
-  union_pw_aff(const base &obj) : isl::union_pw_aff(obj) {}
- public:
-  static union_pw_aff from(const isl::union_pw_aff &obj) {
-    return union_pw_aff(obj);
-  }
-  inline /* implicit */ union_pw_aff(const typed::aff<pair<Domain, Domain2>, Anonymous> &aff);
-  inline /* implicit */ union_pw_aff(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &pa);
-  inline explicit union_pw_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> add(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &multi2) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> add(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> add(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> add(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous> as_pw_multi_aff() const;
-  inline typed::union_map<pair<Domain, Domain2>, Anonymous> as_union_map() const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> at(int pos) const;
-  inline typed::union_set<pair<Domain, Domain2>> bind(const typed::multi_id<Anonymous> &tuple) const;
-  inline typed::union_set<pair<Domain, Domain2>> bind(const typed::id<Anonymous> &id) const;
-  inline typed::union_set<pair<Domain, Domain2>> bind(const std::string &id) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> coalesce() const;
-  inline typed::union_set<pair<Domain, Domain2>> domain() const;
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous> extract_pw_multi_aff(const typed::space<pair<Domain, Domain2>, Anonymous> &space) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> gist(const typed::union_set<pair<Domain, Domain2>> &context) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> gist(const typed::basic_set<pair<Domain, Domain2>> &context) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> gist(const typed::point<pair<Domain, Domain2>> &context) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> gist(const typed::set<pair<Domain, Domain2>> &context) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_domain(const typed::space<pair<Domain, Domain2>> &space) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_params(const typed::set<> &set) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_params(const typed::point<> &set) const;
-  inline typed::union_pw_aff_list<pair<Domain, Domain2>, Anonymous> list() const;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> neg() const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, Domain2>, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain> &upma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_aff<Arg2, Anonymous> pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain, Domain2>> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<pair<Domain, Domain2>> &upma) const;
-  template <typename Arg2>
-  inline typed::union_pw_aff<Arg2, Anonymous> pullback(const typed::multi_aff<Arg2, pair<Domain, Domain2>> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::multi_aff<pair<Domain, Domain2>> &upma) const;
-  template <typename Arg2>
-  inline typed::union_pw_aff<Arg2, Anonymous> pullback(const typed::pw_multi_aff<Arg2, pair<Domain, Domain2>> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::pw_multi_aff<pair<Domain, Domain2>> &upma) const;
-  template <typename Arg2>
-  inline typed::union_pw_aff<Arg2, Anonymous> pullback(const typed::union_pw_aff<Arg2, pair<Domain, Domain2>> &upma) const;
-  inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_aff<pair<Domain, Domain2>> &upma) const;
-  inline typed::pw_multi_aff_list<pair<Domain, Domain2>, Anonymous> pw_multi_aff_list() const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> range_factor_domain() const = delete;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> range_factor_range() const = delete;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> range_product(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> &multi2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> range_product(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale(const typed::val<Anonymous> &v) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale(long v) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale_down(const typed::val<Anonymous> &v) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale_down(long v) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> set_at(int pos, const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &el) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
-  template <typename Range2>
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> set_range_tuple(const std::string &id) const;
-  inline typed::space<> space() const;
-  inline typed::space<pair<Domain, Domain2>, Anonymous> get_space() const = delete;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> sub(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &multi2) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> sub(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> sub(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> sub(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> sub(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> subtract_domain(const typed::space<pair<Domain, Domain2>> &space) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> subtract_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> union_add(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &mupa2) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> union_add(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> union_add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> union_add(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
-  inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> union_add(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
-};
-
-template <>
-struct union_pw_aff_list<Anonymous> : public isl::union_pw_aff_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_pw_aff_list() = default;
-  union_pw_aff_list(const isl::union_pw_aff_list &obj) : isl::union_pw_aff_list(obj) {}
-  static union_pw_aff_list from(const isl::union_pw_aff_list &obj) {
-    return union_pw_aff_list(obj);
-  }
-  inline explicit union_pw_aff_list(const isl::ctx &ctx, int n);
-  inline explicit union_pw_aff_list(const typed::union_pw_aff<Anonymous> &el);
-  inline explicit union_pw_aff_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::union_pw_aff_list<Anonymous> add(const typed::union_pw_aff<Anonymous> &el) const;
-  inline typed::union_pw_aff_list<Anonymous> add(const typed::aff<Anonymous> &el) const;
-  inline typed::union_pw_aff_list<Anonymous> add(const typed::pw_aff<Anonymous> &el) const;
-  inline typed::union_pw_aff<Anonymous> at(int index) const;
-  inline typed::union_pw_aff<Anonymous> get_at(int index) const = delete;
-  inline typed::union_pw_aff_list<Anonymous> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::union_pw_aff<Anonymous>)> &fn) const;
-};
-
-template <typename Domain>
-struct union_pw_aff_list<Domain, Anonymous> : public isl::union_pw_aff_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_pw_aff_list() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  union_pw_aff_list(const union_pw_aff_list<Arg1, Anonymous> &obj) : isl::union_pw_aff_list(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_pw_aff_list>{}, bool>::type = true>
-  union_pw_aff_list(const base &obj) : isl::union_pw_aff_list(obj) {}
- public:
-  static union_pw_aff_list from(const isl::union_pw_aff_list &obj) {
-    return union_pw_aff_list(obj);
-  }
-  inline explicit union_pw_aff_list(const isl::ctx &ctx, int n);
-  inline explicit union_pw_aff_list(const typed::union_pw_aff<Domain, Anonymous> &el);
-  inline explicit union_pw_aff_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::union_pw_aff_list<Domain, Anonymous> add(const typed::union_pw_aff<Domain, Anonymous> &el) const;
-  inline typed::union_pw_aff_list<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &el) const;
-  inline typed::union_pw_aff_list<Domain, Anonymous> add(const typed::pw_aff<Domain, Anonymous> &el) const;
-  inline typed::union_pw_aff<Domain, Anonymous> at(int index) const;
-  inline typed::union_pw_aff<Domain, Anonymous> get_at(int index) const = delete;
-  inline typed::union_pw_aff_list<Domain, Anonymous> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::union_pw_aff<Domain, Anonymous>)> &fn) const;
-};
-
-template <typename Domain>
-struct union_pw_multi_aff<Domain> : public isl::union_pw_multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_pw_multi_aff() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  union_pw_multi_aff(const union_pw_multi_aff<Arg1> &obj) : isl::union_pw_multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_pw_multi_aff>{}, bool>::type = true>
-  union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {}
- public:
-  static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) {
-    return union_pw_multi_aff(obj);
-  }
-  inline /* implicit */ union_pw_multi_aff(const typed::multi_aff<Domain> &ma);
-  inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff<Domain> &pma);
-  inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff<Domain> &upa);
-  inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::union_pw_multi_aff<Domain> add(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain> add(const typed::multi_aff<Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain> add(const typed::pw_multi_aff<Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain> add(const typed::union_pw_aff<Domain> &upma2) const;
-  template <typename Range>
-  inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-  template <typename Range>
-  inline typed::union_pw_multi_aff<Range> apply(const typed::multi_aff<Domain, Range> &upma2) const;
-  template <typename Range>
-  inline typed::union_pw_multi_aff<Range> apply(const typed::pw_multi_aff<Domain, Range> &upma2) const;
-  template <typename Range>
-  inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_aff<Domain, Range> &upma2) const;
-  inline typed::multi_union_pw_aff<Domain> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
-  inline typed::union_map<Domain> as_union_map() const = delete;
-  inline typed::union_pw_multi_aff<Domain> coalesce() const;
-  inline typed::union_set<> domain() const;
-  static inline typed::union_pw_multi_aff<Domain> empty(const isl::ctx &ctx);
-  inline typed::pw_multi_aff<Domain> extract_pw_multi_aff(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain> gist(const typed::union_set<> &context) const;
-  inline typed::union_pw_multi_aff<Domain> gist(const typed::basic_set<> &context) const;
-  inline typed::union_pw_multi_aff<Domain> gist(const typed::point<> &context) const;
-  inline typed::union_pw_multi_aff<Domain> gist(const typed::set<> &context) const;
-  inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::union_pw_multi_aff<Domain> intersect_params(const typed::set<> &set) const;
-  inline typed::union_pw_multi_aff<Domain> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_pw_multi_aff<Domain> intersect_params(const typed::point<> &set) const;
-  inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::union_pw_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> pullback(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> pullback(const typed::multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> pullback(const typed::pw_multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> pullback(const typed::union_pw_aff<> &upma2) const = delete;
-  inline typed::pw_multi_aff_list<Domain> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff_list<Domain> get_pw_multi_aff_list() const = delete;
-  inline typed::union_pw_multi_aff<Domain> range_factor_domain() const = delete;
-  inline typed::union_pw_multi_aff<Domain> range_factor_range() const = delete;
-  inline typed::union_pw_multi_aff<Domain> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> range_product(const typed::multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> range_product(const typed::pw_multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain> range_product(const typed::union_pw_aff<> &upma2) const = delete;
-  inline typed::space<> space() const;
-  inline typed::space<Domain> get_space() const = delete;
-  inline typed::union_pw_multi_aff<Domain> sub(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain> sub(const typed::multi_aff<Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain> sub(const typed::pw_multi_aff<Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain> sub(const typed::union_pw_aff<Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::space<> &space) const = delete;
-  inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::union_set<> &uset) const = delete;
-  inline typed::union_pw_multi_aff<Domain> union_add(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain> union_add(const typed::multi_aff<Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain> union_add(const typed::pw_multi_aff<Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain> union_add(const typed::union_pw_aff<Domain> &upma2) const;
-};
-
-template <typename Domain, typename Range>
-struct union_pw_multi_aff<Domain, Range> : public isl::union_pw_multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_pw_multi_aff() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  union_pw_multi_aff(const union_pw_multi_aff<Arg1, Arg2> &obj) : isl::union_pw_multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_pw_multi_aff>{}, bool>::type = true>
-  union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {}
- public:
-  static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) {
-    return union_pw_multi_aff(obj);
-  }
-  inline /* implicit */ union_pw_multi_aff(const typed::multi_aff<Domain, Range> &ma);
-  inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff<Domain, Range> &pma);
-  inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff<Domain, Range> &upa);
-  inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::union_pw_multi_aff<Domain, Range> add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> add(const typed::multi_aff<Domain, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> add(const typed::pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> add(const typed::union_pw_aff<Domain, Range> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::multi_aff<Range, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::pw_multi_aff<Range, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_aff<Range, Range2> &upma2) const;
-  inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, Range> as_pw_multi_aff() const;
-  inline typed::union_map<Domain, Range> as_union_map() const;
-  inline typed::union_pw_multi_aff<Domain, Range> coalesce() const;
-  inline typed::union_set<Domain> domain() const;
-  static inline typed::union_pw_multi_aff<Domain, Range> empty(const isl::ctx &ctx);
-  inline typed::pw_multi_aff<Domain, Range> extract_pw_multi_aff(const typed::space<Domain, Range> &space) const;
-  inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::union_set<Domain> &context) const;
-  inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::point<Domain> &context) const;
-  inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::set<Domain> &context) const;
-  inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::union_pw_multi_aff<Domain, Range> intersect_params(const typed::set<> &set) const;
-  inline typed::union_pw_multi_aff<Domain, Range> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_pw_multi_aff<Domain, Range> intersect_params(const typed::point<> &set) const;
-  inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::union_pw_aff<> &upma2) const = delete;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::multi_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::multi_aff<Domain> &upma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::pw_multi_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::pw_multi_aff<Domain> &upma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::union_pw_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_aff<Domain> &upma2) const;
-  inline typed::pw_multi_aff_list<Domain, Range> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff_list<Domain, Range> get_pw_multi_aff_list() const = delete;
-  inline typed::union_pw_multi_aff<Domain, Range> range_factor_domain() const = delete;
-  inline typed::union_pw_multi_aff<Domain, Range> range_factor_range() const = delete;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_aff<Domain, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::union_pw_aff<Domain, Range2> &upma2) const;
-  inline typed::space<> space() const;
-  inline typed::space<Domain, Range> get_space() const = delete;
-  inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::multi_aff<Domain, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::union_pw_aff<Domain, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::multi_aff<Domain, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::pw_multi_aff<Domain, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::union_pw_aff<Domain, Range> &upma2) const;
-};
-
-template <typename Domain, typename Domain2, typename Range>
-struct union_pw_multi_aff<pair<Domain, Domain2>, Range> : public isl::union_pw_multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_pw_multi_aff() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Domain2, Arg2>{} &&
-              std::is_base_of<Range, Arg3>{},
-            bool>::type = true>
-  union_pw_multi_aff(const union_pw_multi_aff<pair<Arg1, Arg2>, Arg3> &obj) : isl::union_pw_multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_pw_multi_aff>{}, bool>::type = true>
-  union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {}
- public:
-  static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) {
-    return union_pw_multi_aff(obj);
-  }
-  inline /* implicit */ union_pw_multi_aff(const typed::multi_aff<pair<Domain, Domain2>, Range> &ma);
-  inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &pma);
-  inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upa);
-  inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> add(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> add(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> add(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> apply(const typed::multi_aff<Range, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> apply(const typed::pw_multi_aff<Range, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> apply(const typed::union_pw_aff<Range, Range2> &upma2) const;
-  inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Range> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, Range> as_pw_multi_aff() const;
-  inline typed::union_map<pair<Domain, Domain2>, Range> as_union_map() const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> coalesce() const;
-  inline typed::union_set<pair<Domain, Domain2>> domain() const;
-  static inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> empty(const isl::ctx &ctx);
-  inline typed::pw_multi_aff<pair<Domain, Domain2>, Range> extract_pw_multi_aff(const typed::space<pair<Domain, Domain2>, Range> &space) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> gist(const typed::union_set<pair<Domain, Domain2>> &context) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> gist(const typed::basic_set<pair<Domain, Domain2>> &context) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> gist(const typed::point<pair<Domain, Domain2>> &context) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> gist(const typed::set<pair<Domain, Domain2>> &context) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_domain(const typed::space<pair<Domain, Domain2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_params(const typed::set<> &set) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_params(const typed::point<> &set) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain> &upma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, Domain> &upma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain> &upma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> preimage_domain_wrapped_domain(const typed::union_pw_aff<Domain3, Domain> &upma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Arg3, Range> pullback(const typed::union_pw_multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<pair<Domain, Domain2>> &upma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Arg3, Range> pullback(const typed::multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::multi_aff<pair<Domain, Domain2>> &upma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Arg3, Range> pullback(const typed::pw_multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::pw_multi_aff<pair<Domain, Domain2>> &upma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Arg3, Range> pullback(const typed::union_pw_aff<Arg3, pair<Domain, Domain2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_aff<pair<Domain, Domain2>> &upma2) const;
-  inline typed::pw_multi_aff_list<pair<Domain, Domain2>, Range> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff_list<pair<Domain, Domain2>, Range> get_pw_multi_aff_list() const = delete;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> range_factor_domain() const = delete;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> range_factor_range() const = delete;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> range_product(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> range_product(const typed::multi_aff<pair<Domain, Domain2>, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> range_product(const typed::pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const;
-  template <typename Range2>
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> range_product(const typed::union_pw_aff<pair<Domain, Domain2>, Range2> &upma2) const;
-  inline typed::space<> space() const;
-  inline typed::space<pair<Domain, Domain2>, Range> get_space() const = delete;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> sub(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> sub(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> sub(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> sub(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> subtract_domain(const typed::space<pair<Domain, Domain2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> subtract_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> union_add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> union_add(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> union_add(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> union_add(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const;
-};
-
-template <typename Domain, typename Range, typename Range2>
-struct union_pw_multi_aff<Domain, pair<Range, Range2>> : public isl::union_pw_multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_pw_multi_aff() = default;
-  template <typename Arg1, typename Arg2, typename Arg3,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{} &&
-              std::is_base_of<Range2, Arg3>{},
-            bool>::type = true>
-  union_pw_multi_aff(const union_pw_multi_aff<Arg1, pair<Arg2, Arg3>> &obj) : isl::union_pw_multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_pw_multi_aff>{}, bool>::type = true>
-  union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {}
- public:
-  static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) {
-    return union_pw_multi_aff(obj);
-  }
-  inline /* implicit */ union_pw_multi_aff(const typed::multi_aff<Domain, pair<Range, Range2>> &ma);
-  inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma);
-  inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upa);
-  inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, Arg3> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, Arg3> apply(const typed::multi_aff<pair<Range, Range2>, Arg3> &upma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, Arg3> apply(const typed::pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, Arg3> apply(const typed::union_pw_aff<pair<Range, Range2>, Arg3> &upma2) const;
-  inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> as_pw_multi_aff() const;
-  inline typed::union_map<Domain, pair<Range, Range2>> as_union_map() const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> coalesce() const;
-  inline typed::union_set<Domain> domain() const;
-  static inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> empty(const isl::ctx &ctx);
-  inline typed::pw_multi_aff<Domain, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::union_set<Domain> &context) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::point<Domain> &context) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::set<Domain> &context) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &upma2) const = delete;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_aff<> &upma2) const = delete;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<Domain> &upma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain> &upma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_aff<Domain2, Domain> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_aff<Domain> &upma2) const;
-  inline typed::pw_multi_aff_list<Domain, pair<Range, Range2>> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff_list<Domain, pair<Range, Range2>> get_pw_multi_aff_list() const = delete;
-  inline typed::union_pw_multi_aff<Domain, Range> range_factor_domain() const;
-  inline typed::union_pw_multi_aff<Domain, Range2> range_factor_range() const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_aff<Domain, Arg3> &upma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::pw_multi_aff<Domain, Arg3> &upma2) const;
-  template <typename Arg3>
-  inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_pw_aff<Domain, Arg3> &upma2) const;
-  inline typed::space<> space() const;
-  inline typed::space<Domain, pair<Range, Range2>> get_space() const = delete;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::space<Domain> &space) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &uset) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const;
-};
-
-template <typename T1, typename T2, typename Range, typename Range2>
-struct union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> : public isl::union_pw_multi_aff {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_pw_multi_aff() = default;
-  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
-            typename std::enable_if<
-              std::is_base_of<T1, Arg1>{} &&
-              std::is_base_of<T2, Arg2>{} &&
-              std::is_base_of<Range, Arg3>{} &&
-              std::is_base_of<Range2, Arg4>{},
-            bool>::type = true>
-  union_pw_multi_aff(const union_pw_multi_aff<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::union_pw_multi_aff(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_pw_multi_aff>{}, bool>::type = true>
-  union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {}
- public:
-  static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) {
-    return union_pw_multi_aff(obj);
-  }
-  inline /* implicit */ union_pw_multi_aff(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &ma);
-  inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma);
-  inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upa);
-  inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str);
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, Arg2> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, Arg2> apply(const typed::multi_aff<pair<Range, Range2>, Arg2> &upma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, Arg2> apply(const typed::pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, Arg2> apply(const typed::union_pw_aff<pair<Range, Range2>, Arg2> &upma2) const;
-  inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_pw_multi_aff() const;
-  inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> as_union_map() const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
-  inline typed::union_set<pair<T1, T2>> domain() const;
-  static inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> empty(const isl::ctx &ctx);
-  inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_set<pair<T1, T2>> &context) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_set<pair<T1, T2>> &context) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::point<pair<T1, T2>> &context) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::set<pair<T1, T2>> &context) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, T1> &upma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &upma2) const;
-  template <typename Domain3>
-  inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_aff<Domain3, T1> &upma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<pair<T1, T2>> &upma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<pair<T1, T2>> &upma2) const;
-  template <typename Domain2>
-  inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_aff<Domain2, pair<T1, T2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_aff<pair<T1, T2>> &upma2) const;
-  inline typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> pw_multi_aff_list() const;
-  inline typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> get_pw_multi_aff_list() const = delete;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, Range> range_factor_domain() const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, Range2> range_factor_range() const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &upma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const;
-  template <typename Arg2>
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_pw_aff<pair<T1, T2>, Arg2> &upma2) const;
-  inline typed::space<> space() const;
-  inline typed::space<pair<T1, T2>, pair<Range, Range2>> get_space() const = delete;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::space<pair<T1, T2>> &space) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-  inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
-};
-
-template <>
-struct union_set<> : public isl::union_set {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_set() = default;
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_set>{}, bool>::type = true>
-  union_set(const base &obj) : isl::union_set(obj) {}
- public:
-  static union_set from(const isl::union_set &obj) {
-    return union_set(obj);
-  }
-  inline /* implicit */ union_set(const typed::basic_set<> &bset);
-  inline /* implicit */ union_set(const typed::point<> &pnt);
-  inline /* implicit */ union_set(const typed::set<> &set);
-  inline explicit union_set(const isl::ctx &ctx, const std::string &str);
-  inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete;
-  inline typed::union_set<> apply(const typed::basic_map<> &umap) const = delete;
-  inline typed::union_set<> apply(const typed::map<> &umap) const = delete;
-  inline typed::set<> as_set() const = delete;
-  inline typed::union_set<> coalesce() const;
-  inline typed::union_set<> detect_equalities() const;
-  static inline typed::union_set<> empty(const isl::ctx &ctx);
-  inline bool every_set(const std::function<bool(typed::set<>)> &test) const;
-  inline typed::set<> extract_set(const typed::space<> &space) const;
-  inline void foreach_point(const std::function<void(typed::point<>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<>)> &fn) const;
-  inline typed::union_set<> gist(const typed::union_set<> &context) const;
-  inline typed::union_set<> gist(const typed::basic_set<> &context) const;
-  inline typed::union_set<> gist(const typed::point<> &context) const;
-  inline typed::union_set<> gist(const typed::set<> &context) const;
-  inline typed::union_map<> identity() const = delete;
-  inline typed::union_set<> intersect(const typed::union_set<> &uset2) const;
-  inline typed::union_set<> intersect(const typed::basic_set<> &uset2) const;
-  inline typed::union_set<> intersect(const typed::point<> &uset2) const;
-  inline typed::union_set<> intersect(const typed::set<> &uset2) const;
-  inline typed::union_set<> intersect_params(const typed::set<> &set) const = delete;
-  inline typed::union_set<> intersect_params(const typed::basic_set<> &set) const = delete;
-  inline typed::union_set<> intersect_params(const typed::point<> &set) const = delete;
-  inline typed::union_set<> lexmax() const = delete;
-  inline typed::union_set<> lexmin() const = delete;
-  inline typed::union_set<> preimage(const typed::multi_aff<> &ma) const = delete;
-  inline typed::union_set<> preimage(const typed::pw_multi_aff<> &pma) const = delete;
-  inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete;
-  inline typed::set_list<> set_list() const;
-  inline typed::set_list<> get_set_list() const = delete;
-  inline typed::space<> space() const;
-  inline typed::space<> get_space() const = delete;
-  inline typed::union_set<> subtract(const typed::union_set<> &uset2) const;
-  inline typed::union_set<> subtract(const typed::basic_set<> &uset2) const;
-  inline typed::union_set<> subtract(const typed::point<> &uset2) const;
-  inline typed::union_set<> subtract(const typed::set<> &uset2) const;
-  inline typed::union_set<> unite(const typed::union_set<> &uset2) const;
-  inline typed::union_set<> unite(const typed::basic_set<> &uset2) const;
-  inline typed::union_set<> unite(const typed::point<> &uset2) const;
-  inline typed::union_set<> unite(const typed::set<> &uset2) const;
-  inline typed::union_set<> universe() const;
-  inline typed::union_map<> unwrap() const = delete;
-};
-
-template <typename Domain>
-struct union_set<Domain> : public isl::union_set {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_set() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  union_set(const union_set<Arg1> &obj) : isl::union_set(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_set>{}, bool>::type = true>
-  union_set(const base &obj) : isl::union_set(obj) {}
- public:
-  static union_set from(const isl::union_set &obj) {
-    return union_set(obj);
-  }
-  inline /* implicit */ union_set(const typed::basic_set<Domain> &bset);
-  inline /* implicit */ union_set(const typed::point<Domain> &pnt);
-  inline /* implicit */ union_set(const typed::set<Domain> &set);
-  inline explicit union_set(const isl::ctx &ctx, const std::string &str);
-  template <typename Range>
-  inline typed::union_set<Range> apply(const typed::union_map<Domain, Range> &umap) const;
-  template <typename Range>
-  inline typed::union_set<Range> apply(const typed::basic_map<Domain, Range> &umap) const;
-  template <typename Range>
-  inline typed::union_set<Range> apply(const typed::map<Domain, Range> &umap) const;
-  inline typed::set<Domain> as_set() const;
-  inline typed::union_set<Domain> coalesce() const;
-  inline typed::union_set<Domain> detect_equalities() const;
-  static inline typed::union_set<Domain> empty(const isl::ctx &ctx);
-  inline bool every_set(const std::function<bool(typed::set<Domain>)> &test) const;
-  inline typed::set<Domain> extract_set(const typed::space<Domain> &space) const;
-  inline void foreach_point(const std::function<void(typed::point<Domain>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<Domain>)> &fn) const;
-  inline typed::union_set<Domain> gist(const typed::union_set<Domain> &context) const;
-  inline typed::union_set<Domain> gist(const typed::basic_set<Domain> &context) const;
-  inline typed::union_set<Domain> gist(const typed::point<Domain> &context) const;
-  inline typed::union_set<Domain> gist(const typed::set<Domain> &context) const;
-  inline typed::union_map<Domain, Domain> identity() const;
-  inline typed::union_set<Domain> intersect(const typed::union_set<Domain> &uset2) const;
-  inline typed::union_set<Domain> intersect(const typed::basic_set<Domain> &uset2) const;
-  inline typed::union_set<Domain> intersect(const typed::point<Domain> &uset2) const;
-  inline typed::union_set<Domain> intersect(const typed::set<Domain> &uset2) const;
-  inline typed::union_set<Domain> intersect_params(const typed::set<> &set) const;
-  inline typed::union_set<Domain> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_set<Domain> intersect_params(const typed::point<> &set) const;
-  inline typed::union_set<Domain> lexmax() const;
-  inline typed::union_set<Domain> lexmin() const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::multi_aff<Domain2, Domain> &ma) const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
-  inline typed::set_list<Domain> set_list() const;
-  inline typed::set_list<Domain> get_set_list() const = delete;
-  inline typed::space<> space() const;
-  inline typed::space<Domain> get_space() const = delete;
-  inline typed::union_set<Domain> subtract(const typed::union_set<Domain> &uset2) const;
-  inline typed::union_set<Domain> subtract(const typed::basic_set<Domain> &uset2) const;
-  inline typed::union_set<Domain> subtract(const typed::point<Domain> &uset2) const;
-  inline typed::union_set<Domain> subtract(const typed::set<Domain> &uset2) const;
-  inline typed::union_set<Domain> unite(const typed::union_set<Domain> &uset2) const;
-  inline typed::union_set<Domain> unite(const typed::basic_set<Domain> &uset2) const;
-  inline typed::union_set<Domain> unite(const typed::point<Domain> &uset2) const;
-  inline typed::union_set<Domain> unite(const typed::set<Domain> &uset2) const;
-  inline typed::union_set<Domain> universe() const;
-  inline typed::union_map<Domain> unwrap() const = delete;
-};
-
-template <typename Domain, typename Range>
-struct union_set<pair<Domain, Range>> : public isl::union_set {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_set() = default;
-  template <typename Arg1, typename Arg2,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{} &&
-              std::is_base_of<Range, Arg2>{},
-            bool>::type = true>
-  union_set(const union_set<pair<Arg1, Arg2>> &obj) : isl::union_set(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_set>{}, bool>::type = true>
-  union_set(const base &obj) : isl::union_set(obj) {}
- public:
-  static union_set from(const isl::union_set &obj) {
-    return union_set(obj);
-  }
-  inline /* implicit */ union_set(const typed::basic_set<pair<Domain, Range>> &bset);
-  inline /* implicit */ union_set(const typed::point<pair<Domain, Range>> &pnt);
-  inline /* implicit */ union_set(const typed::set<pair<Domain, Range>> &set);
-  inline explicit union_set(const isl::ctx &ctx, const std::string &str);
-  template <typename Arg2>
-  inline typed::union_set<Arg2> apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const;
-  template <typename Arg2>
-  inline typed::union_set<Arg2> apply(const typed::basic_map<pair<Domain, Range>, Arg2> &umap) const;
-  template <typename Arg2>
-  inline typed::union_set<Arg2> apply(const typed::map<pair<Domain, Range>, Arg2> &umap) const;
-  inline typed::set<pair<Domain, Range>> as_set() const;
-  inline typed::union_set<pair<Domain, Range>> coalesce() const;
-  inline typed::union_set<pair<Domain, Range>> detect_equalities() const;
-  static inline typed::union_set<pair<Domain, Range>> empty(const isl::ctx &ctx);
-  inline bool every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const;
-  inline typed::set<pair<Domain, Range>> extract_set(const typed::space<pair<Domain, Range>> &space) const;
-  inline void foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const;
-  inline void foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const;
-  inline typed::union_set<pair<Domain, Range>> gist(const typed::union_set<pair<Domain, Range>> &context) const;
-  inline typed::union_set<pair<Domain, Range>> gist(const typed::basic_set<pair<Domain, Range>> &context) const;
-  inline typed::union_set<pair<Domain, Range>> gist(const typed::point<pair<Domain, Range>> &context) const;
-  inline typed::union_set<pair<Domain, Range>> gist(const typed::set<pair<Domain, Range>> &context) const;
-  inline typed::union_map<pair<Domain, Range>, pair<Domain, Range>> identity() const;
-  inline typed::union_set<pair<Domain, Range>> intersect(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> intersect(const typed::basic_set<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> intersect(const typed::point<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> intersect(const typed::set<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> intersect_params(const typed::set<> &set) const;
-  inline typed::union_set<pair<Domain, Range>> intersect_params(const typed::basic_set<> &set) const;
-  inline typed::union_set<pair<Domain, Range>> intersect_params(const typed::point<> &set) const;
-  inline typed::union_set<pair<Domain, Range>> lexmax() const;
-  inline typed::union_set<pair<Domain, Range>> lexmin() const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
-  template <typename Domain2>
-  inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
-  inline typed::set_list<pair<Domain, Range>> set_list() const;
-  inline typed::set_list<pair<Domain, Range>> get_set_list() const = delete;
-  inline typed::space<> space() const;
-  inline typed::space<pair<Domain, Range>> get_space() const = delete;
-  inline typed::union_set<pair<Domain, Range>> subtract(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> subtract(const typed::basic_set<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> subtract(const typed::point<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> subtract(const typed::set<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> unite(const typed::union_set<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> unite(const typed::basic_set<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> unite(const typed::point<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> unite(const typed::set<pair<Domain, Range>> &uset2) const;
-  inline typed::union_set<pair<Domain, Range>> universe() const;
-  inline typed::union_map<Domain, Range> unwrap() const;
-};
-
-template <>
-struct union_set_list<> : public isl::union_set_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_set_list() = default;
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_set_list>{}, bool>::type = true>
-  union_set_list(const base &obj) : isl::union_set_list(obj) {}
- public:
-  static union_set_list from(const isl::union_set_list &obj) {
-    return union_set_list(obj);
-  }
-  inline explicit union_set_list(const isl::ctx &ctx, int n);
-  inline explicit union_set_list(const typed::union_set<> &el);
-  inline explicit union_set_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::union_set_list<> add(const typed::union_set<> &el) const;
-  inline typed::union_set_list<> add(const typed::basic_set<> &el) const;
-  inline typed::union_set_list<> add(const typed::point<> &el) const;
-  inline typed::union_set_list<> add(const typed::set<> &el) const;
-  inline typed::union_set<> at(int index) const = delete;
-  inline typed::union_set<> get_at(int index) const = delete;
-  inline typed::union_set_list<> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::union_set<>)> &fn) const;
-};
-
-template <typename Domain>
-struct union_set_list<Domain> : public isl::union_set_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  union_set_list() = default;
-  template <typename Arg1,
-            typename std::enable_if<
-              std::is_base_of<Domain, Arg1>{},
-            bool>::type = true>
-  union_set_list(const union_set_list<Arg1> &obj) : isl::union_set_list(obj) {}
- private:
-  template <typename base,
-            typename std::enable_if<
-              std::is_same<base, isl::union_set_list>{}, bool>::type = true>
-  union_set_list(const base &obj) : isl::union_set_list(obj) {}
- public:
-  static union_set_list from(const isl::union_set_list &obj) {
-    return union_set_list(obj);
-  }
-  inline explicit union_set_list(const isl::ctx &ctx, int n);
-  inline explicit union_set_list(const typed::union_set<Domain> &el);
-  inline explicit union_set_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::union_set_list<Domain> add(const typed::union_set<Domain> &el) const;
-  inline typed::union_set_list<Domain> add(const typed::basic_set<Domain> &el) const;
-  inline typed::union_set_list<Domain> add(const typed::point<Domain> &el) const;
-  inline typed::union_set_list<Domain> add(const typed::set<Domain> &el) const;
-  inline typed::union_set<Domain> at(int index) const;
-  inline typed::union_set<Domain> get_at(int index) const = delete;
-  inline typed::union_set_list<Domain> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::union_set<Domain>)> &fn) const;
-};
-
-template <>
-struct val<Anonymous> : public isl::val {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  val() = default;
-  val(const isl::val &obj) : isl::val(obj) {}
-  static val from(const isl::val &obj) {
-    return val(obj);
-  }
-  inline explicit val(const isl::ctx &ctx, long i);
-  inline explicit val(const isl::ctx &ctx, const std::string &str);
-  inline typed::val<Anonymous> add(const typed::val<Anonymous> &v2) const;
-  inline typed::val<Anonymous> add(long v2) const;
-  inline typed::val<Anonymous> ceil() const;
-  inline long get_den_si() const = delete;
-  inline typed::val<Anonymous> floor() const;
-  inline typed::val<Anonymous> max(const typed::val<Anonymous> &v2) const;
-  inline typed::val<Anonymous> max(long v2) const;
-  inline typed::val<Anonymous> min(const typed::val<Anonymous> &v2) const;
-  inline typed::val<Anonymous> min(long v2) const;
-  inline typed::val<Anonymous> mod(const typed::val<Anonymous> &v2) const;
-  inline typed::val<Anonymous> mod(long v2) const;
-  inline typed::val<Anonymous> neg() const;
-  inline long get_num_si() const = delete;
-  inline typed::val<Anonymous> sub(const typed::val<Anonymous> &v2) const;
-  inline typed::val<Anonymous> sub(long v2) const;
-};
-
-template <>
-struct val_list<Anonymous> : public isl::val_list {
-  template <typename...>
-  friend struct aff;
-  template <typename...>
-  friend struct aff_list;
-  template <typename...>
-  friend struct basic_map;
-  template <typename...>
-  friend struct basic_set;
-  template <typename...>
-  friend struct fixed_box;
-  template <typename...>
-  friend struct id;
-  template <typename...>
-  friend struct id_list;
-  template <typename...>
-  friend struct map;
-  template <typename...>
-  friend struct map_list;
-  template <typename...>
-  friend struct multi_aff;
-  template <typename...>
-  friend struct multi_id;
-  template <typename...>
-  friend struct multi_pw_aff;
-  template <typename...>
-  friend struct multi_union_pw_aff;
-  template <typename...>
-  friend struct multi_val;
-  template <typename...>
-  friend struct point;
-  template <typename...>
-  friend struct pw_aff;
-  template <typename...>
-  friend struct pw_aff_list;
-  template <typename...>
-  friend struct pw_multi_aff;
-  template <typename...>
-  friend struct pw_multi_aff_list;
-  template <typename...>
-  friend struct set;
-  template <typename...>
-  friend struct set_list;
-  template <typename...>
-  friend struct space;
-  template <typename...>
-  friend struct union_map;
-  template <typename...>
-  friend struct union_pw_aff;
-  template <typename...>
-  friend struct union_pw_aff_list;
-  template <typename...>
-  friend struct union_pw_multi_aff;
-  template <typename...>
-  friend struct union_set;
-  template <typename...>
-  friend struct union_set_list;
-  template <typename...>
-  friend struct val;
-  template <typename...>
-  friend struct val_list;
-
-  val_list() = default;
-  val_list(const isl::val_list &obj) : isl::val_list(obj) {}
-  static val_list from(const isl::val_list &obj) {
-    return val_list(obj);
-  }
-  inline explicit val_list(const isl::ctx &ctx, int n);
-  inline explicit val_list(const typed::val<Anonymous> &el);
-  inline explicit val_list(const isl::ctx &ctx, const std::string &str);
-  inline typed::val_list<Anonymous> add(const typed::val<Anonymous> &el) const;
-  inline typed::val_list<Anonymous> add(long el) const;
-  inline typed::val<Anonymous> at(int index) const;
-  inline typed::val<Anonymous> get_at(int index) const = delete;
-  inline typed::val_list<Anonymous> drop(unsigned int first, unsigned int n) const;
-  inline void foreach(const std::function<void(typed::val<Anonymous>)> &fn) const;
-};
-
-typed::aff<Anonymous>::aff(const isl::ctx &ctx, const std::string &str)
-  : isl::aff(ctx, str)
-{
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::add(const typed::aff<Anonymous> &aff2) const
-{
-  auto res = isl::aff::add(aff2);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::multi_aff<Anonymous> typed::aff<Anonymous>::add(const typed::multi_aff<Anonymous> &multi2) const
-{
-  auto res = isl::aff::add(multi2);
-  return typed::multi_aff<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::add(const typed::multi_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::aff::add(multi2);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::add(const typed::multi_union_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::aff::add(multi2);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::aff<Anonymous>::add(const typed::pw_aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::add(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::add(const typed::pw_multi_aff<Anonymous> &pma2) const
-{
-  auto res = isl::aff::add(pma2);
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::aff<Anonymous>::add(const typed::union_pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::aff::add(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_multi_aff<Anonymous> typed::aff<Anonymous>::add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
-{
-  auto res = isl::aff::add(upma2);
-  return typed::union_pw_multi_aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::add_constant(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::aff::add_constant(v);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::add_constant(long v) const
-{
-  auto res = isl::aff::add_constant(v);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::multi_aff<Anonymous> typed::aff<Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::aff::add_constant(mv);
-  return typed::multi_aff<Anonymous>(res);
-}
-
-template <typename Range>
-typed::union_pw_multi_aff<Range> typed::aff<Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const
-{
-  auto res = isl::aff::apply(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::as_aff() const
-{
-  auto res = isl::aff::as_aff();
-  return typed::aff<Anonymous>(res);
-}
-
-typed::multi_aff<Anonymous> typed::aff<Anonymous>::as_multi_aff() const
-{
-  auto res = isl::aff::as_multi_aff();
-  return typed::multi_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::as_multi_union_pw_aff() const
-{
-  auto res = isl::aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::as_pw_multi_aff() const
-{
-  auto res = isl::aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::set<Anonymous> typed::aff<Anonymous>::as_set() const
-{
-  auto res = isl::aff::as_set();
-  return typed::set<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::at(int pos) const
-{
-  auto res = isl::aff::at(pos);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::basic_set<> typed::aff<Anonymous>::bind(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::aff::bind(id);
-  return typed::basic_set<>(res);
-}
-
-typed::basic_set<> typed::aff<Anonymous>::bind(const std::string &id) const
-{
-  auto res = isl::aff::bind(id);
-  return typed::basic_set<>(res);
-}
-
-typed::basic_set<> typed::aff<Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
-{
-  auto res = isl::aff::bind(tuple);
-  return typed::basic_set<>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::ceil() const
-{
-  auto res = isl::aff::ceil();
-  return typed::aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::aff<Anonymous>::coalesce() const
-{
-  auto res = isl::aff::coalesce();
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::aff<Anonymous>::cond(const typed::pw_aff<Anonymous> &pwaff_true, const typed::pw_aff<Anonymous> &pwaff_false) const
-{
-  auto res = isl::aff::cond(pwaff_true, pwaff_false);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::multi_val<Anonymous> typed::aff<Anonymous>::constant_multi_val() const
-{
-  auto res = isl::aff::constant_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-typed::set<> typed::aff<Anonymous>::domain() const
-{
-  auto res = isl::aff::domain();
-  return typed::set<>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::extract_pw_multi_aff(const typed::space<Anonymous> &space) const
-{
-  auto res = isl::aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::floor() const
-{
-  auto res = isl::aff::floor();
-  return typed::aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::gist(const typed::set<> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::aff<Anonymous>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::gist(const typed::basic_set<> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::gist(const typed::point<> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::multi_aff<Anonymous, Anonymous> typed::aff<Anonymous>::identity() const
-{
-  auto res = isl::aff::identity();
-  return typed::multi_aff<Anonymous, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::aff<Anonymous>::insert_domain(const typed::space<Domain> &domain) const
-{
-  auto res = isl::aff::insert_domain(domain);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::aff<Anonymous>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::aff::intersect_params(set);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::aff_list<Anonymous> typed::aff<Anonymous>::list() const
-{
-  auto res = isl::aff::list();
-  return typed::aff_list<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::max(const typed::multi_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::aff::max(multi2);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::aff<Anonymous>::max(const typed::pw_aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::max(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::multi_val<Anonymous> typed::aff<Anonymous>::max_multi_val() const
-{
-  auto res = isl::aff::max_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::min(const typed::multi_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::aff::min(multi2);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::aff<Anonymous>::min(const typed::pw_aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::min(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::multi_val<Anonymous> typed::aff<Anonymous>::min_multi_val() const
-{
-  auto res = isl::aff::min_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::mod(const typed::val<Anonymous> &mod) const
-{
-  auto res = isl::aff::mod(mod);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::mod(long mod) const
-{
-  auto res = isl::aff::mod(mod);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::neg() const
-{
-  auto res = isl::aff::neg();
-  return typed::aff<Anonymous>(res);
-}
-
-template <typename Range>
-typed::multi_aff<pair<Anonymous, Range>> typed::aff<Anonymous>::product(const typed::multi_aff<Range> &multi2) const
-{
-  auto res = isl::aff::product(multi2);
-  return typed::multi_aff<pair<Anonymous, Range>>(res);
-}
-
-template <typename Range>
-typed::multi_pw_aff<pair<Anonymous, Range>> typed::aff<Anonymous>::product(const typed::multi_pw_aff<Range> &multi2) const
-{
-  auto res = isl::aff::product(multi2);
-  return typed::multi_pw_aff<pair<Anonymous, Range>>(res);
-}
-
-template <typename Range>
-typed::pw_multi_aff<pair<Anonymous, Range>> typed::aff<Anonymous>::product(const typed::pw_multi_aff<Range> &pma2) const
-{
-  auto res = isl::aff::product(pma2);
-  return typed::pw_multi_aff<pair<Anonymous, Range>>(res);
-}
-
-typed::pw_multi_aff_list<Anonymous> typed::aff<Anonymous>::pw_multi_aff_list() const
-{
-  auto res = isl::aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::scale(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::aff::scale(v);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::scale(long v) const
-{
-  auto res = isl::aff::scale(v);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::multi_aff<Anonymous> typed::aff<Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::aff::scale(mv);
-  return typed::multi_aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::scale_down(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::aff::scale_down(v);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::scale_down(long v) const
-{
-  auto res = isl::aff::scale_down(v);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::multi_aff<Anonymous> typed::aff<Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::aff::scale_down(mv);
-  return typed::multi_aff<Anonymous>(res);
-}
-
-typed::multi_aff<Anonymous> typed::aff<Anonymous>::set_at(int pos, const typed::aff<Anonymous> &el) const
-{
-  auto res = isl::aff::set_at(pos, el);
-  return typed::multi_aff<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::set_at(int pos, const typed::pw_aff<Anonymous> &el) const
-{
-  auto res = isl::aff::set_at(pos, el);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
-{
-  auto res = isl::aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2>
-typed::multi_aff<Domain2> typed::aff<Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::aff::set_range_tuple(id);
-  return typed::multi_aff<Domain2>(res);
-}
-
-template <typename Domain2>
-typed::multi_aff<Domain2> typed::aff<Anonymous>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::aff::set_range_tuple(id);
-  return typed::multi_aff<Domain2>(res);
-}
-
-typed::space<Anonymous> typed::aff<Anonymous>::space() const
-{
-  auto res = isl::aff::space();
-  return typed::space<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff<Anonymous>::sub(const typed::aff<Anonymous> &aff2) const
-{
-  auto res = isl::aff::sub(aff2);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::multi_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::multi_aff<Anonymous> &multi2) const
-{
-  auto res = isl::aff::sub(multi2);
-  return typed::multi_aff<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::multi_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::aff::sub(multi2);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::aff::sub(multi2);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::pw_aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::sub(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::pw_multi_aff<Anonymous> &pma2) const
-{
-  auto res = isl::aff::sub(pma2);
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::union_pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::aff::sub(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_multi_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const
-{
-  auto res = isl::aff::sub(upma2);
-  return typed::union_pw_multi_aff<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::to_multi_pw_aff() const
-{
-  auto res = isl::aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::to_multi_union_pw_aff() const
-{
-  auto res = isl::aff::to_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::to_pw_multi_aff() const
-{
-  auto res = isl::aff::to_pw_multi_aff();
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::aff<Anonymous>::to_union_pw_aff() const
-{
-  auto res = isl::aff::to_union_pw_aff();
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_multi_aff<Anonymous> typed::aff<Anonymous>::to_union_pw_multi_aff() const
-{
-  auto res = isl::aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Anonymous>::unbind_params_insert_domain(const typed::multi_id<Domain> &domain) const
-{
-  auto res = isl::aff::unbind_params_insert_domain(domain);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::multi_pw_aff<Anonymous> &mpa2) const
-{
-  auto res = isl::aff::union_add(mpa2);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const
-{
-  auto res = isl::aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::pw_aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::union_add(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::pw_multi_aff<Anonymous> &pma2) const
-{
-  auto res = isl::aff::union_add(pma2);
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::union_pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::aff::union_add(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_multi_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
-{
-  auto res = isl::aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous>::aff(const isl::ctx &ctx, const std::string &str)
-  : isl::aff(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &aff2) const
-{
-  auto res = isl::aff::add(aff2);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::multi_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::aff::add(multi2);
-  return typed::multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::aff::add(multi2);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::add(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
-{
-  auto res = isl::aff::add(pma2);
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::aff::add(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
-{
-  auto res = isl::aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add_constant(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::aff::add_constant(v);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add_constant(long v) const
-{
-  auto res = isl::aff::add_constant(v);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::aff::add_constant(mv);
-  return typed::multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, Range2> typed::aff<Domain, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const
-{
-  auto res = isl::aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_aff() const
-{
-  auto res = isl::aff::as_aff();
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_map() const
-{
-  auto res = isl::aff::as_map();
-  return typed::map<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_multi_aff() const
-{
-  auto res = isl::aff::as_multi_aff();
-  return typed::multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_multi_union_pw_aff() const
-{
-  auto res = isl::aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_pw_multi_aff() const
-{
-  auto res = isl::aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_union_map() const
-{
-  auto res = isl::aff::as_union_map();
-  return typed::union_map<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::at(int pos) const
-{
-  auto res = isl::aff::at(pos);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::aff<Domain, Anonymous>::bind(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::aff::bind(id);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::aff<Domain, Anonymous>::bind(const std::string &id) const
-{
-  auto res = isl::aff::bind(id);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::aff<Domain, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
-{
-  auto res = isl::aff::bind(tuple);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Anonymous> typed::aff<Domain, Anonymous>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::aff::bind_domain(tuple);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::ceil() const
-{
-  auto res = isl::aff::ceil();
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::coalesce() const
-{
-  auto res = isl::aff::coalesce();
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::cond(const typed::pw_aff<Domain, Anonymous> &pwaff_true, const typed::pw_aff<Domain, Anonymous> &pwaff_false) const
-{
-  auto res = isl::aff::cond(pwaff_true, pwaff_false);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Anonymous> typed::aff<Domain, Anonymous>::constant_multi_val() const
-{
-  auto res = isl::aff::constant_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::aff<Domain, Anonymous>::domain() const
-{
-  auto res = isl::aff::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const
-{
-  auto res = isl::aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::floor() const
-{
-  auto res = isl::aff::floor();
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::aff<Domain, Anonymous>::ge_set(const typed::aff<Domain, Anonymous> &aff2) const
-{
-  auto res = isl::aff::ge_set(aff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::aff<Domain, Anonymous>::ge_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::ge_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::gist(const typed::point<Domain> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::aff<Domain, Anonymous>::gt_set(const typed::aff<Domain, Anonymous> &aff2) const
-{
-  auto res = isl::aff::gt_set(aff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::aff<Domain, Anonymous>::gt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::gt_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::identity() const
-{
-  auto res = isl::aff::identity();
-  return typed::multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::aff::intersect_domain(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::aff::intersect_domain(space);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::aff::intersect_domain(uset);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::aff::intersect_params(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::aff<Domain, Anonymous>::le_set(const typed::aff<Domain, Anonymous> &aff2) const
-{
-  auto res = isl::aff::le_set(aff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::aff<Domain, Anonymous>::le_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::le_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::aff_list<Domain, Anonymous> typed::aff<Domain, Anonymous>::list() const
-{
-  auto res = isl::aff::list();
-  return typed::aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::aff<Domain, Anonymous>::lt_set(const typed::aff<Domain, Anonymous> &aff2) const
-{
-  auto res = isl::aff::lt_set(aff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::aff<Domain, Anonymous>::lt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::lt_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::max(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::aff::max(multi2);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::max(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::max(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Anonymous> typed::aff<Domain, Anonymous>::max_multi_val() const
-{
-  auto res = isl::aff::max_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::min(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::aff::min(multi2);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::min(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::min(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Anonymous> typed::aff<Domain, Anonymous>::min_multi_val() const
-{
-  auto res = isl::aff::min_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::mod(const typed::val<Anonymous> &mod) const
-{
-  auto res = isl::aff::mod(mod);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::mod(long mod) const
-{
-  auto res = isl::aff::mod(mod);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::neg() const
-{
-  auto res = isl::aff::neg();
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::product(const typed::multi_aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::aff::product(multi2);
-  return typed::multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const
-{
-  auto res = isl::aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::aff<Domain2, Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::aff::pullback(ma);
-  return typed::aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain> &ma) const
-{
-  auto res = isl::aff::pullback(ma);
-  return typed::aff<Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::pw_aff<Domain2, Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::aff::pullback(mpa);
-  return typed::pw_aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::multi_pw_aff<Domain> &mpa) const
-{
-  auto res = isl::aff::pullback(mpa);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::pw_aff<Domain2, Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::aff::pullback(pma);
-  return typed::pw_aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain> &pma) const
-{
-  auto res = isl::aff::pullback(pma);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_pw_aff<Domain2, Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::aff::pullback(upma);
-  return typed::union_pw_aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain> &upma) const
-{
-  auto res = isl::aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::aff<Domain2, Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::aff::pullback(ma);
-  return typed::aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::aff<Domain> &ma) const
-{
-  auto res = isl::aff::pullback(ma);
-  return typed::aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain, Anonymous> typed::aff<Domain, Anonymous>::pw_multi_aff_list() const
-{
-  auto res = isl::aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::multi_aff<Domain, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::range_product(const typed::multi_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::aff::range_product(multi2);
-  return typed::multi_aff<Domain, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::multi_pw_aff<Domain, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::aff::range_product(multi2);
-  return typed::multi_pw_aff<Domain, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::aff::range_product(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::pw_multi_aff<Domain, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const
-{
-  auto res = isl::aff::range_product(pma2);
-  return typed::pw_multi_aff<Domain, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
-{
-  auto res = isl::aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::aff::scale(v);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale(long v) const
-{
-  auto res = isl::aff::scale(v);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::aff::scale(mv);
-  return typed::multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale_down(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::aff::scale_down(v);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale_down(long v) const
-{
-  auto res = isl::aff::scale_down(v);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::aff::scale_down(mv);
-  return typed::multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::set_at(int pos, const typed::aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::aff::set_at(pos, el);
-  return typed::multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::aff::set_at(pos, el);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::multi_aff<Domain, Range2> typed::aff<Domain, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::aff::set_range_tuple(id);
-  return typed::multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::multi_aff<Domain, Range2> typed::aff<Domain, Anonymous>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::aff::set_range_tuple(id);
-  return typed::multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain>
-typed::space<Domain, Anonymous> typed::aff<Domain, Anonymous>::space() const
-{
-  auto res = isl::aff::space();
-  return typed::space<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::aff<Domain, Anonymous> &aff2) const
-{
-  auto res = isl::aff::sub(aff2);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::multi_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::aff::sub(multi2);
-  return typed::multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::aff::sub(multi2);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::sub(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
-{
-  auto res = isl::aff::sub(pma2);
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::aff::sub(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
-{
-  auto res = isl::aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::subtract_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::aff::subtract_domain(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::subtract_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::aff::subtract_domain(space);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::subtract_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::aff::subtract_domain(uset);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::to_multi_pw_aff() const
-{
-  auto res = isl::aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::to_multi_union_pw_aff() const
-{
-  auto res = isl::aff::to_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::to_pw_multi_aff() const
-{
-  auto res = isl::aff::to_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::to_union_pw_aff() const
-{
-  auto res = isl::aff::to_union_pw_aff();
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::to_union_pw_multi_aff() const
-{
-  auto res = isl::aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::multi_pw_aff<Domain, Anonymous> &mpa2) const
-{
-  auto res = isl::aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const
-{
-  auto res = isl::aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::union_add(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
-{
-  auto res = isl::aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::aff::union_add(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
-{
-  auto res = isl::aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous>::aff(const isl::ctx &ctx, const std::string &str)
-  : isl::aff(ctx, str)
-{
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
-{
-  auto res = isl::aff::add(aff2);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::multi_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::aff::add(multi2);
-  return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::aff::add(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::aff::add(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::add(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
-{
-  auto res = isl::aff::add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
-{
-  auto res = isl::aff::add(upa2);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
-{
-  auto res = isl::aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add_constant(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::aff::add_constant(v);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add_constant(long v) const
-{
-  auto res = isl::aff::add_constant(v);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::aff::add_constant(mv);
-  return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::aff<pair<Domain2, Range2>, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Arg1> &upma2) const
-{
-  auto res = isl::aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_aff() const
-{
-  auto res = isl::aff::as_aff();
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::map<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_map() const
-{
-  auto res = isl::aff::as_map();
-  return typed::map<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_multi_aff() const
-{
-  auto res = isl::aff::as_multi_aff();
-  return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_multi_union_pw_aff() const
-{
-  auto res = isl::aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_pw_multi_aff() const
-{
-  auto res = isl::aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_union_map() const
-{
-  auto res = isl::aff::as_union_map();
-  return typed::union_map<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::at(int pos) const
-{
-  auto res = isl::aff::at(pos);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::basic_set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::bind(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::aff::bind(id);
-  return typed::basic_set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::basic_set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::bind(const std::string &id) const
-{
-  auto res = isl::aff::bind(id);
-  return typed::basic_set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::basic_set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
-{
-  auto res = isl::aff::bind(tuple);
-  return typed::basic_set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const
-{
-  auto res = isl::aff::bind_domain(tuple);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<Range2, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const
-{
-  auto res = isl::aff::bind_domain_wrapped_domain(tuple);
-  return typed::pw_aff<Range2, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::ceil() const
-{
-  auto res = isl::aff::ceil();
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::coalesce() const
-{
-  auto res = isl::aff::coalesce();
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::cond(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_true, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_false) const
-{
-  auto res = isl::aff::cond(pwaff_true, pwaff_false);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_val<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::constant_multi_val() const
-{
-  auto res = isl::aff::constant_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::domain() const
-{
-  auto res = isl::aff::domain();
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Anonymous> &space) const
-{
-  auto res = isl::aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::floor() const
-{
-  auto res = isl::aff::floor();
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::ge_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
-{
-  auto res = isl::aff::ge_set(aff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::ge_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::ge_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::set<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::union_set<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::basic_set<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::point<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::aff::gist(context);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::gt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
-{
-  auto res = isl::aff::gt_set(aff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::gt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::gt_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::identity() const
-{
-  auto res = isl::aff::identity();
-  return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::aff::intersect_domain(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const
-{
-  auto res = isl::aff::intersect_domain(space);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
-{
-  auto res = isl::aff::intersect_domain(uset);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::aff::intersect_params(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::le_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
-{
-  auto res = isl::aff::le_set(aff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::le_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::le_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff_list<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::list() const
-{
-  auto res = isl::aff::list();
-  return typed::aff_list<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::lt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
-{
-  auto res = isl::aff::lt_set(aff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::lt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::lt_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::max(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::aff::max(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::max(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::max(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_val<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::max_multi_val() const
-{
-  auto res = isl::aff::max_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::min(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::aff::min(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::min(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::min(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_val<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::min_multi_val() const
-{
-  auto res = isl::aff::min_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::mod(const typed::val<Anonymous> &mod) const
-{
-  auto res = isl::aff::mod(mod);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::mod(long mod) const
-{
-  auto res = isl::aff::mod(mod);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::neg() const
-{
-  auto res = isl::aff::neg();
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Domain3>
-typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const
-{
-  auto res = isl::aff::preimage_domain_wrapped_domain(pma2);
-  return typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const
-{
-  auto res = isl::aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1, typename Arg2>
-typed::multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> typed::aff<pair<Domain2, Range2>, Anonymous>::product(const typed::multi_aff<Arg1, Arg2> &multi2) const
-{
-  auto res = isl::aff::product(multi2);
-  return typed::multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1, typename Arg2>
-typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> typed::aff<pair<Domain2, Range2>, Anonymous>::product(const typed::multi_pw_aff<Arg1, Arg2> &multi2) const
-{
-  auto res = isl::aff::product(multi2);
-  return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1, typename Arg2>
-typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> typed::aff<pair<Domain2, Range2>, Anonymous>::product(const typed::pw_multi_aff<Arg1, Arg2> &pma2) const
-{
-  auto res = isl::aff::product(pma2);
-  return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::aff<Arg1, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_aff<Arg1, pair<Domain2, Range2>> &ma) const
-{
-  auto res = isl::aff::pullback(ma);
-  return typed::aff<Arg1, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const
-{
-  auto res = isl::aff::pullback(ma);
-  return typed::aff<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::pw_aff<Arg1, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_pw_aff<Arg1, pair<Domain2, Range2>> &mpa) const
-{
-  auto res = isl::aff::pullback(mpa);
-  return typed::pw_aff<Arg1, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa) const
-{
-  auto res = isl::aff::pullback(mpa);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::pw_aff<Arg1, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::pw_multi_aff<Arg1, pair<Domain2, Range2>> &pma) const
-{
-  auto res = isl::aff::pullback(pma);
-  return typed::pw_aff<Arg1, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const
-{
-  auto res = isl::aff::pullback(pma);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::union_pw_aff<Arg1, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::union_pw_multi_aff<Arg1, pair<Domain2, Range2>> &upma) const
-{
-  auto res = isl::aff::pullback(upma);
-  return typed::union_pw_aff<Arg1, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const
-{
-  auto res = isl::aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::aff<Arg1, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::aff<Arg1, pair<Domain2, Range2>> &ma) const
-{
-  auto res = isl::aff::pullback(ma);
-  return typed::aff<Arg1, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::aff<pair<Domain2, Range2>> &ma) const
-{
-  auto res = isl::aff::pullback(ma);
-  return typed::aff<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pw_multi_aff_list() const
-{
-  auto res = isl::aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg1> &multi2) const
-{
-  auto res = isl::aff::range_product(multi2);
-  return typed::multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const
-{
-  auto res = isl::aff::range_product(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const
-{
-  auto res = isl::aff::range_product(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> &pma2) const
-{
-  auto res = isl::aff::range_product(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> &upma2) const
-{
-  auto res = isl::aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::aff::scale(v);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale(long v) const
-{
-  auto res = isl::aff::scale(v);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::aff::scale(mv);
-  return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale_down(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::aff::scale_down(v);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale_down(long v) const
-{
-  auto res = isl::aff::scale_down(v);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::aff::scale_down(mv);
-  return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::set_at(int pos, const typed::aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::aff::set_at(pos, el);
-  return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::aff::set_at(pos, el);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::multi_aff<pair<Domain2, Range2>, Arg1> typed::aff<pair<Domain2, Range2>, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::aff::set_range_tuple(id);
-  return typed::multi_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::multi_aff<pair<Domain2, Range2>, Arg1> typed::aff<pair<Domain2, Range2>, Anonymous>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::aff::set_range_tuple(id);
-  return typed::multi_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::space<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::space() const
-{
-  auto res = isl::aff::space();
-  return typed::space<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
-{
-  auto res = isl::aff::sub(aff2);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::multi_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::aff::sub(multi2);
-  return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::aff::sub(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::aff::sub(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::sub(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
-{
-  auto res = isl::aff::sub(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
-{
-  auto res = isl::aff::sub(upa2);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
-{
-  auto res = isl::aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::aff::subtract_domain(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const
-{
-  auto res = isl::aff::subtract_domain(space);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
-{
-  auto res = isl::aff::subtract_domain(uset);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::to_multi_pw_aff() const
-{
-  auto res = isl::aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::to_multi_union_pw_aff() const
-{
-  auto res = isl::aff::to_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::to_pw_multi_aff() const
-{
-  auto res = isl::aff::to_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::to_union_pw_aff() const
-{
-  auto res = isl::aff::to_union_pw_aff();
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::to_union_pw_multi_aff() const
-{
-  auto res = isl::aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &mpa2) const
-{
-  auto res = isl::aff::union_add(mpa2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &mupa2) const
-{
-  auto res = isl::aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::aff::union_add(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
-{
-  auto res = isl::aff::union_add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
-{
-  auto res = isl::aff::union_add(upa2);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
-{
-  auto res = isl::aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-typed::aff_list<Anonymous>::aff_list(const isl::ctx &ctx, int n)
-  : isl::aff_list(ctx, n)
-{
-}
-
-typed::aff_list<Anonymous>::aff_list(const typed::aff<Anonymous> &el)
-  : isl::aff_list(el)
-{
-}
-
-typed::aff_list<Anonymous>::aff_list(const isl::ctx &ctx, const std::string &str)
-  : isl::aff_list(ctx, str)
-{
-}
-
-typed::aff_list<Anonymous> typed::aff_list<Anonymous>::add(const typed::aff<Anonymous> &el) const
-{
-  auto res = isl::aff_list::add(el);
-  return typed::aff_list<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::aff_list<Anonymous>::at(int index) const
-{
-  auto res = isl::aff_list::at(index);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::aff_list<Anonymous> typed::aff_list<Anonymous>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::aff_list::drop(first, n);
-  return typed::aff_list<Anonymous>(res);
-}
-
-void typed::aff_list<Anonymous>::foreach(const std::function<void(typed::aff<Anonymous>)> &fn) const
-{
-  auto lambda = [&] (isl::aff arg0) {
-    return fn(typed::aff<Anonymous>(arg0));
-  };
-  return isl::aff_list::foreach(lambda);
-}
-
-template <typename Domain>
-typed::aff_list<Domain, Anonymous>::aff_list(const isl::ctx &ctx, int n)
-  : isl::aff_list(ctx, n)
-{
-}
-
-template <typename Domain>
-typed::aff_list<Domain, Anonymous>::aff_list(const typed::aff<Domain, Anonymous> &el)
-  : isl::aff_list(el)
-{
-}
-
-template <typename Domain>
-typed::aff_list<Domain, Anonymous>::aff_list(const isl::ctx &ctx, const std::string &str)
-  : isl::aff_list(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::aff_list<Domain, Anonymous> typed::aff_list<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::aff_list::add(el);
-  return typed::aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::aff_list<Domain, Anonymous>::at(int index) const
-{
-  auto res = isl::aff_list::at(index);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff_list<Domain, Anonymous> typed::aff_list<Domain, Anonymous>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::aff_list::drop(first, n);
-  return typed::aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-void typed::aff_list<Domain, Anonymous>::foreach(const std::function<void(typed::aff<Domain, Anonymous>)> &fn) const
-{
-  auto lambda = [&] (isl::aff arg0) {
-    return fn(typed::aff<Domain, Anonymous>(arg0));
-  };
-  return isl::aff_list::foreach(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::basic_map<Domain, Range>::basic_map(const isl::ctx &ctx, const std::string &str)
-  : isl::basic_map(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::basic_map<Domain2, Range> typed::basic_map<Domain, Range>::apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const
-{
-  auto res = isl::basic_map::apply_domain(bmap2);
-  return typed::basic_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::basic_map<Domain, Range>::apply_domain(const typed::map<Domain, Domain2> &map2) const
-{
-  auto res = isl::basic_map::apply_domain(map2);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<Domain2, Range> typed::basic_map<Domain, Range>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::basic_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::basic_map<Domain, Range2> typed::basic_map<Domain, Range>::apply_range(const typed::basic_map<Range, Range2> &bmap2) const
-{
-  auto res = isl::basic_map::apply_range(bmap2);
-  return typed::basic_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, Range2> typed::basic_map<Domain, Range>::apply_range(const typed::map<Range, Range2> &map2) const
-{
-  auto res = isl::basic_map::apply_range(map2);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::basic_map<Domain, Range>::apply_range(const typed::union_map<Range, Range2> &umap2) const
-{
-  auto res = isl::basic_map::apply_range(umap2);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::as_map() const
-{
-  auto res = isl::basic_map::as_map();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::basic_map<Domain, Range>::as_multi_union_pw_aff() const
-{
-  auto res = isl::basic_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::basic_map<Domain, Range>::as_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::basic_map<Domain, Range>::as_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Range> typed::basic_map<Domain, Range>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::basic_map::bind_domain(tuple);
-  return typed::set<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Domain> typed::basic_map<Domain, Range>::bind_range(const typed::multi_id<Range> &tuple) const
-{
-  auto res = isl::basic_map::bind_range(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::coalesce() const
-{
-  auto res = isl::basic_map::coalesce();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::detect_equalities() const
-{
-  auto res = isl::basic_map::detect_equalities();
-  return typed::basic_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Domain> typed::basic_map<Domain, Range>::domain() const
-{
-  auto res = isl::basic_map::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<pair<Domain, Range>, Domain> typed::basic_map<Domain, Range>::domain_map() const
-{
-  auto res = isl::basic_map::domain_map();
-  return typed::union_map<pair<Domain, Range>, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Range>, Domain> typed::basic_map<Domain, Range>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, Range>, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<pair<Domain, Domain2>, Range> typed::basic_map<Domain, Range>::domain_product(const typed::map<Domain2, Range> &map2) const
-{
-  auto res = isl::basic_map::domain_product(map2);
-  return typed::map<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, Range> typed::basic_map<Domain, Range>::domain_product(const typed::union_map<Domain2, Range> &umap2) const
-{
-  auto res = isl::basic_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-bool typed::basic_map<Domain, Range>::every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<Domain, Range>(arg0));
-  };
-  return isl::basic_map::every_map(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::extract_map(const typed::space<Domain, Range> &space) const
-{
-  auto res = isl::basic_map::extract_map(space);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-void typed::basic_map<Domain, Range>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, Range>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<Domain, Range>(arg0));
-  };
-  return isl::basic_map::foreach_basic_map(lambda);
-}
-
-template <typename Domain, typename Range>
-void typed::basic_map<Domain, Range>::foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<Domain, Range>(arg0));
-  };
-  return isl::basic_map::foreach_map(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::gist(const typed::basic_map<Domain, Range> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::basic_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::gist(const typed::map<Domain, Range> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::gist(const typed::union_map<Domain, Range> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::gist_domain(const typed::set<Domain> &context) const
-{
-  auto res = isl::basic_map::gist_domain(context);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::gist_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::basic_map::gist_domain(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect(const typed::basic_map<Domain, Range> &bmap2) const
-{
-  auto res = isl::basic_map::intersect(bmap2);
-  return typed::basic_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::intersect(const typed::map<Domain, Range> &map2) const
-{
-  auto res = isl::basic_map::intersect(map2);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::intersect(const typed::union_map<Domain, Range> &umap2) const
-{
-  auto res = isl::basic_map::intersect(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_domain(const typed::basic_set<Domain> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::basic_map::intersect_domain(set);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::basic_map::intersect_domain(space);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::basic_map::intersect_domain(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_domain(const typed::point<Domain> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::basic_map::intersect_params(params);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_range(const typed::basic_set<Range> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::intersect_range(const typed::set<Range> &set) const
-{
-  auto res = isl::basic_map::intersect_range(set);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_range(const typed::space<Range> &space) const
-{
-  auto res = isl::basic_map::intersect_range(space);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_range(const typed::union_set<Range> &uset) const
-{
-  auto res = isl::basic_map::intersect_range(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_range(const typed::point<Range> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::lexmax() const
-{
-  auto res = isl::basic_map::lexmax();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::basic_map<Domain, Range>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::lexmin() const
-{
-  auto res = isl::basic_map::lexmin();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::basic_map<Domain, Range>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::lower_bound(const typed::multi_pw_aff<Domain, Range> &lower) const
-{
-  auto res = isl::basic_map::lower_bound(lower);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map_list<Domain, Range> typed::basic_map<Domain, Range>::map_list() const
-{
-  auto res = isl::basic_map::map_list();
-  return typed::map_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::basic_map<Domain, Range>::max_multi_pw_aff() const
-{
-  auto res = isl::basic_map::max_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::basic_map<Domain, Range>::min_multi_pw_aff() const
-{
-  auto res = isl::basic_map::min_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::basic_map<Domain, Range>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::basic_map::preimage_domain(ma);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::basic_map<Domain, Range>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::basic_map::preimage_domain(mpa);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::basic_map<Domain, Range>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::basic_map::preimage_domain(pma);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<Domain2, Range> typed::basic_map<Domain, Range>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::basic_map::preimage_domain(upma);
-  return typed::union_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, Range2> typed::basic_map<Domain, Range>::preimage_range(const typed::multi_aff<Range2, Range> &ma) const
-{
-  auto res = isl::basic_map::preimage_range(ma);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, Range2> typed::basic_map<Domain, Range>::preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const
-{
-  auto res = isl::basic_map::preimage_range(pma);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::basic_map<Domain, Range>::preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const
-{
-  auto res = isl::basic_map::preimage_range(upma);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::basic_map<Domain, Range>::product(const typed::map<Domain2, Range2> &map2) const
-{
-  auto res = isl::basic_map::product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::basic_map<Domain, Range>::product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::basic_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::project_out_all_params() const
-{
-  auto res = isl::basic_map::project_out_all_params();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Range> typed::basic_map<Domain, Range>::range() const
-{
-  auto res = isl::basic_map::range();
-  return typed::set<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::fixed_box<Domain, Range> typed::basic_map<Domain, Range>::range_lattice_tile() const
-{
-  auto res = isl::basic_map::range_lattice_tile();
-  return typed::fixed_box<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<pair<Domain, Range>, Range> typed::basic_map<Domain, Range>::range_map() const
-{
-  auto res = isl::basic_map::range_map();
-  return typed::union_map<pair<Domain, Range>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, Range>::range_product(const typed::map<Domain, Range2> &map2) const
-{
-  auto res = isl::basic_map::range_product(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, Range>::range_product(const typed::union_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::basic_map::range_product(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::fixed_box<Domain, Range> typed::basic_map<Domain, Range>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::basic_map::range_simple_fixed_box_hull();
-  return typed::fixed_box<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_map<Range, Domain> typed::basic_map<Domain, Range>::reverse() const
-{
-  auto res = isl::basic_map::reverse();
-  return typed::basic_map<Range, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::basic_map<Domain, Range>::set_domain_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::basic_map::set_domain_tuple(id);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::basic_map<Domain, Range>::set_domain_tuple(const std::string &id) const
-{
-  auto res = isl::basic_map::set_domain_tuple(id);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, Range2> typed::basic_map<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::basic_map::set_range_tuple(id);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, Range2> typed::basic_map<Domain, Range>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::basic_map::set_range_tuple(id);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Domain, Range> typed::basic_map<Domain, Range>::space() const
-{
-  auto res = isl::basic_map::space();
-  return typed::space<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::subtract(const typed::map<Domain, Range> &map2) const
-{
-  auto res = isl::basic_map::subtract(map2);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::subtract(const typed::union_map<Domain, Range> &umap2) const
-{
-  auto res = isl::basic_map::subtract(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::subtract_domain(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::basic_map::subtract_domain(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::subtract_range(const typed::union_set<Range> &dom) const
-{
-  auto res = isl::basic_map::subtract_range(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::to_union_map() const
-{
-  auto res = isl::basic_map::to_union_map();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::unite(const typed::basic_map<Domain, Range> &bmap2) const
-{
-  auto res = isl::basic_map::unite(bmap2);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::unite(const typed::map<Domain, Range> &map2) const
-{
-  auto res = isl::basic_map::unite(map2);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::unite(const typed::union_map<Domain, Range> &umap2) const
-{
-  auto res = isl::basic_map::unite(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_map<Domain, Range>::upper_bound(const typed::multi_pw_aff<Domain, Range> &upper) const
-{
-  auto res = isl::basic_map::upper_bound(upper);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_map<Domain, Range>::wrap() const
-{
-  auto res = isl::basic_map::wrap();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<pair<Domain, Range>, Range2>::basic_map(const isl::ctx &ctx, const std::string &str)
-  : isl::basic_map(ctx, str)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::basic_map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &bmap2) const
-{
-  auto res = isl::basic_map::apply_domain(bmap2);
-  return typed::basic_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::apply_domain(const typed::map<pair<Domain, Range>, Domain2> &map2) const
-{
-  auto res = isl::basic_map::apply_domain(map2);
-  return typed::map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const
-{
-  auto res = isl::basic_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::basic_map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::apply_range(const typed::basic_map<Range2, Arg3> &bmap2) const
-{
-  auto res = isl::basic_map::apply_range(bmap2);
-  return typed::basic_map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::apply_range(const typed::map<Range2, Arg3> &map2) const
-{
-  auto res = isl::basic_map::apply_range(map2);
-  return typed::map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::apply_range(const typed::union_map<Range2, Arg3> &umap2) const
-{
-  auto res = isl::basic_map::apply_range(umap2);
-  return typed::union_map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::as_map() const
-{
-  auto res = isl::basic_map::as_map();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::as_multi_union_pw_aff() const
-{
-  auto res = isl::basic_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::as_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::as_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<Range2> typed::basic_map<pair<Domain, Range>, Range2>::bind_domain(const typed::multi_id<pair<Domain, Range>> &tuple) const
-{
-  auto res = isl::basic_map::bind_domain(tuple);
-  return typed::set<Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<Domain, Range>> typed::basic_map<pair<Domain, Range>, Range2>::bind_range(const typed::multi_id<Range2> &tuple) const
-{
-  auto res = isl::basic_map::bind_range(tuple);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::coalesce() const
-{
-  auto res = isl::basic_map::coalesce();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<pair<Domain, Range>, Range2>::curry() const
-{
-  auto res = isl::basic_map::curry();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::detect_equalities() const
-{
-  auto res = isl::basic_map::detect_equalities();
-  return typed::basic_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<Domain, Range>> typed::basic_map<pair<Domain, Range>, Range2>::domain() const
-{
-  auto res = isl::basic_map::domain();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, Range2> typed::basic_map<pair<Domain, Range>, Range2>::domain_factor_domain() const
-{
-  auto res = isl::basic_map::domain_factor_domain();
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Range, Range2> typed::basic_map<pair<Domain, Range>, Range2>::domain_factor_range() const
-{
-  auto res = isl::basic_map::domain_factor_range();
-  return typed::map<Range, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::basic_map<pair<Domain, Range>, Range2>::domain_map() const
-{
-  auto res = isl::basic_map::domain_map();
-  return typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::basic_map<pair<Domain, Range>, Range2>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<pair<pair<Domain, Range>, Domain2>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::domain_product(const typed::map<Domain2, Range2> &map2) const
-{
-  auto res = isl::basic_map::domain_product(map2);
-  return typed::map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::domain_product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::basic_map::domain_product(umap2);
-  return typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-bool typed::basic_map<pair<Domain, Range>, Range2>::every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<pair<Domain, Range>, Range2>(arg0));
-  };
-  return isl::basic_map::every_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const
-{
-  auto res = isl::basic_map::extract_map(space);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<Anonymous, Range2> typed::basic_map<pair<Domain, Range>, Range2>::flatten_domain() const
-{
-  auto res = isl::basic_map::flatten_domain();
-  return typed::basic_map<Anonymous, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-void typed::basic_map<pair<Domain, Range>, Range2>::foreach_basic_map(const std::function<void(typed::basic_map<pair<Domain, Range>, Range2>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<pair<Domain, Range>, Range2>(arg0));
-  };
-  return isl::basic_map::foreach_basic_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-void typed::basic_map<pair<Domain, Range>, Range2>::foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<pair<Domain, Range>, Range2>(arg0));
-  };
-  return isl::basic_map::foreach_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::basic_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::gist(const typed::map<pair<Domain, Range>, Range2> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::gist_domain(const typed::set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::basic_map::gist_domain(context);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const
-{
-  auto res = isl::basic_map::gist_domain(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect(const typed::basic_map<pair<Domain, Range>, Range2> &bmap2) const
-{
-  auto res = isl::basic_map::intersect(bmap2);
-  return typed::basic_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect(const typed::map<pair<Domain, Range>, Range2> &map2) const
-{
-  auto res = isl::basic_map::intersect(map2);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::basic_map::intersect(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::basic_set<pair<Domain, Range>> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::set<pair<Domain, Range>> &set) const
-{
-  auto res = isl::basic_map::intersect_domain(set);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::space<pair<Domain, Range>> &space) const
-{
-  auto res = isl::basic_map::intersect_domain(space);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const
-{
-  auto res = isl::basic_map::intersect_domain(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::point<pair<Domain, Range>> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::basic_map::intersect_params(params);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_range(const typed::basic_set<Range2> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_range(const typed::set<Range2> &set) const
-{
-  auto res = isl::basic_map::intersect_range(set);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_range(const typed::space<Range2> &space) const
-{
-  auto res = isl::basic_map::intersect_range(space);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_range(const typed::union_set<Range2> &uset) const
-{
-  auto res = isl::basic_map::intersect_range(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_range(const typed::point<Range2> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::lexmax() const
-{
-  auto res = isl::basic_map::lexmax();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::lexmin() const
-{
-  auto res = isl::basic_map::lexmin();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::lower_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &lower) const
-{
-  auto res = isl::basic_map::lower_bound(lower);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map_list<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::map_list() const
-{
-  auto res = isl::basic_map::map_list();
-  return typed::map_list<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::max_multi_pw_aff() const
-{
-  auto res = isl::basic_map::max_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::min_multi_pw_aff() const
-{
-  auto res = isl::basic_map::min_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
-{
-  auto res = isl::basic_map::preimage_domain(ma);
-  return typed::map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
-{
-  auto res = isl::basic_map::preimage_domain(mpa);
-  return typed::map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
-{
-  auto res = isl::basic_map::preimage_domain(pma);
-  return typed::map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
-{
-  auto res = isl::basic_map::preimage_domain(upma);
-  return typed::union_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const
-{
-  auto res = isl::basic_map::preimage_range(ma);
-  return typed::map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const
-{
-  auto res = isl::basic_map::preimage_range(pma);
-  return typed::map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const
-{
-  auto res = isl::basic_map::preimage_range(upma);
-  return typed::union_map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::basic_map<pair<Domain, Range>, Range2>::product(const typed::map<Domain2, Arg3> &map2) const
-{
-  auto res = isl::basic_map::product(map2);
-  return typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::basic_map<pair<Domain, Range>, Range2>::product(const typed::union_map<Domain2, Arg3> &umap2) const
-{
-  auto res = isl::basic_map::product(umap2);
-  return typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::project_out_all_params() const
-{
-  auto res = isl::basic_map::project_out_all_params();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<Range2> typed::basic_map<pair<Domain, Range>, Range2>::range() const
-{
-  auto res = isl::basic_map::range();
-  return typed::set<Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::fixed_box<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::range_lattice_tile() const
-{
-  auto res = isl::basic_map::range_lattice_tile();
-  return typed::fixed_box<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::range_map() const
-{
-  auto res = isl::basic_map::range_map();
-  return typed::union_map<pair<pair<Domain, Range>, Range2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<pair<Domain, Range>, pair<Range2, Arg3>> typed::basic_map<pair<Domain, Range>, Range2>::range_product(const typed::map<pair<Domain, Range>, Arg3> &map2) const
-{
-  auto res = isl::basic_map::range_product(map2);
-  return typed::map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> typed::basic_map<pair<Domain, Range>, Range2>::range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const
-{
-  auto res = isl::basic_map::range_product(umap2);
-  return typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::fixed_box<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::basic_map::range_simple_fixed_box_hull();
-  return typed::fixed_box<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<Range2, pair<Domain, Range>> typed::basic_map<pair<Domain, Range>, Range2>::reverse() const
-{
-  auto res = isl::basic_map::reverse();
-  return typed::basic_map<Range2, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<Domain, Range>, Arg2> typed::basic_map<pair<Domain, Range>, Range2>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::basic_map::set_range_tuple(id);
-  return typed::map<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<Domain, Range>, Arg2> typed::basic_map<pair<Domain, Range>, Range2>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::basic_map::set_range_tuple(id);
-  return typed::map<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::space() const
-{
-  auto res = isl::basic_map::space();
-  return typed::space<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::subtract(const typed::map<pair<Domain, Range>, Range2> &map2) const
-{
-  auto res = isl::basic_map::subtract(map2);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::basic_map::subtract(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const
-{
-  auto res = isl::basic_map::subtract_domain(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::subtract_range(const typed::union_set<Range2> &dom) const
-{
-  auto res = isl::basic_map::subtract_range(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::to_union_map() const
-{
-  auto res = isl::basic_map::to_union_map();
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::unite(const typed::basic_map<pair<Domain, Range>, Range2> &bmap2) const
-{
-  auto res = isl::basic_map::unite(bmap2);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::unite(const typed::map<pair<Domain, Range>, Range2> &map2) const
-{
-  auto res = isl::basic_map::unite(map2);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::basic_map::unite(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::upper_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &upper) const
-{
-  auto res = isl::basic_map::upper_bound(upper);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<pair<Domain, Range>, Range2>> typed::basic_map<pair<Domain, Range>, Range2>::wrap() const
-{
-  auto res = isl::basic_map::wrap();
-  return typed::set<pair<pair<Domain, Range>, Range2>>(res);
-}
-
-template <typename Domain>
-typed::basic_map<Domain, Domain>::basic_map(const isl::ctx &ctx, const std::string &str)
-  : isl::basic_map(ctx, str)
-{
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::basic_map<Domain2, Domain> typed::basic_map<Domain, Domain>::apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const
-{
-  auto res = isl::basic_map::apply_domain(bmap2);
-  return typed::basic_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::apply_domain(const typed::map<Domain, Domain2> &map2) const
-{
-  auto res = isl::basic_map::apply_domain(map2);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<Domain2, Domain> typed::basic_map<Domain, Domain>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::basic_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::basic_map<Domain, Range2> typed::basic_map<Domain, Domain>::apply_range(const typed::basic_map<Domain, Range2> &bmap2) const
-{
-  auto res = isl::basic_map::apply_range(bmap2);
-  return typed::basic_map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, Range2> typed::basic_map<Domain, Domain>::apply_range(const typed::map<Domain, Range2> &map2) const
-{
-  auto res = isl::basic_map::apply_range(map2);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::basic_map<Domain, Domain>::apply_range(const typed::union_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::basic_map::apply_range(umap2);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::as_map() const
-{
-  auto res = isl::basic_map::as_map();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Domain> typed::basic_map<Domain, Domain>::as_multi_union_pw_aff() const
-{
-  auto res = isl::basic_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Domain> typed::basic_map<Domain, Domain>::as_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Domain> typed::basic_map<Domain, Domain>::as_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_map<Domain, Domain>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::basic_map::bind_domain(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_map<Domain, Domain>::bind_range(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::basic_map::bind_range(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::coalesce() const
-{
-  auto res = isl::basic_map::coalesce();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::basic_map<Domain, Domain>::deltas() const
-{
-  auto res = isl::basic_map::deltas();
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::detect_equalities() const
-{
-  auto res = isl::basic_map::detect_equalities();
-  return typed::basic_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_map<Domain, Domain>::domain() const
-{
-  auto res = isl::basic_map::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<pair<Domain, Domain>, Domain> typed::basic_map<Domain, Domain>::domain_map() const
-{
-  auto res = isl::basic_map::domain_map();
-  return typed::union_map<pair<Domain, Domain>, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> typed::basic_map<Domain, Domain>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, Domain>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<pair<Domain, Domain2>, Domain> typed::basic_map<Domain, Domain>::domain_product(const typed::map<Domain2, Domain> &map2) const
-{
-  auto res = isl::basic_map::domain_product(map2);
-  return typed::map<pair<Domain, Domain2>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, Domain> typed::basic_map<Domain, Domain>::domain_product(const typed::union_map<Domain2, Domain> &umap2) const
-{
-  auto res = isl::basic_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::eq_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::basic_map::eq_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const
-{
-  auto res = isl::basic_map::eq_at(mupa);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-bool typed::basic_map<Domain, Domain>::every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<Domain, Domain>(arg0));
-  };
-  return isl::basic_map::every_map(lambda);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::extract_map(const typed::space<Domain, Domain> &space) const
-{
-  auto res = isl::basic_map::extract_map(space);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-void typed::basic_map<Domain, Domain>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<Domain, Domain>(arg0));
-  };
-  return isl::basic_map::foreach_basic_map(lambda);
-}
-
-template <typename Domain>
-void typed::basic_map<Domain, Domain>::foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<Domain, Domain>(arg0));
-  };
-  return isl::basic_map::foreach_map(lambda);
-}
-
-template <typename Domain>
-typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::gist(const typed::basic_map<Domain, Domain> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::basic_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::gist(const typed::map<Domain, Domain> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::gist(const typed::union_map<Domain, Domain> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::gist_domain(const typed::set<Domain> &context) const
-{
-  auto res = isl::basic_map::gist_domain(context);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::gist_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::basic_map::gist_domain(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect(const typed::basic_map<Domain, Domain> &bmap2) const
-{
-  auto res = isl::basic_map::intersect(bmap2);
-  return typed::basic_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect(const typed::map<Domain, Domain> &map2) const
-{
-  auto res = isl::basic_map::intersect(map2);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect(const typed::union_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::basic_map::intersect(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_domain(const typed::basic_set<Domain> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::basic_map::intersect_domain(set);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::basic_map::intersect_domain(space);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::basic_map::intersect_domain(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_domain(const typed::point<Domain> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::basic_map::intersect_params(params);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_range(const typed::basic_set<Domain> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_range(const typed::set<Domain> &set) const
-{
-  auto res = isl::basic_map::intersect_range(set);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_range(const typed::space<Domain> &space) const
-{
-  auto res = isl::basic_map::intersect_range(space);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_range(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::basic_map::intersect_range(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_range(const typed::point<Domain> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lex_ge_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::basic_map::lex_ge_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lex_gt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::basic_map::lex_gt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lex_le_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::basic_map::lex_le_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lex_lt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::basic_map::lex_lt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lexmax() const
-{
-  auto res = isl::basic_map::lexmax();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Domain> typed::basic_map<Domain, Domain>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lexmin() const
-{
-  auto res = isl::basic_map::lexmin();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Domain> typed::basic_map<Domain, Domain>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lower_bound(const typed::multi_pw_aff<Domain, Domain> &lower) const
-{
-  auto res = isl::basic_map::lower_bound(lower);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map_list<Domain, Domain> typed::basic_map<Domain, Domain>::map_list() const
-{
-  auto res = isl::basic_map::map_list();
-  return typed::map_list<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Domain> typed::basic_map<Domain, Domain>::max_multi_pw_aff() const
-{
-  auto res = isl::basic_map::max_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Domain> typed::basic_map<Domain, Domain>::min_multi_pw_aff() const
-{
-  auto res = isl::basic_map::min_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::basic_map::preimage_domain(ma);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::basic_map::preimage_domain(mpa);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::basic_map::preimage_domain(pma);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<Domain2, Domain> typed::basic_map<Domain, Domain>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::basic_map::preimage_domain(upma);
-  return typed::union_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, Range2> typed::basic_map<Domain, Domain>::preimage_range(const typed::multi_aff<Range2, Domain> &ma) const
-{
-  auto res = isl::basic_map::preimage_range(ma);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, Range2> typed::basic_map<Domain, Domain>::preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const
-{
-  auto res = isl::basic_map::preimage_range(pma);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::basic_map<Domain, Domain>::preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const
-{
-  auto res = isl::basic_map::preimage_range(upma);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::basic_map<Domain, Domain>::product(const typed::map<Domain2, Range2> &map2) const
-{
-  auto res = isl::basic_map::product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::basic_map<Domain, Domain>::product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::basic_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::project_out_all_params() const
-{
-  auto res = isl::basic_map::project_out_all_params();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_map<Domain, Domain>::range() const
-{
-  auto res = isl::basic_map::range();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::fixed_box<Domain, Domain> typed::basic_map<Domain, Domain>::range_lattice_tile() const
-{
-  auto res = isl::basic_map::range_lattice_tile();
-  return typed::fixed_box<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<pair<Domain, Domain>, Domain> typed::basic_map<Domain, Domain>::range_map() const
-{
-  auto res = isl::basic_map::range_map();
-  return typed::union_map<pair<Domain, Domain>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, pair<Domain, Range2>> typed::basic_map<Domain, Domain>::range_product(const typed::map<Domain, Range2> &map2) const
-{
-  auto res = isl::basic_map::range_product(map2);
-  return typed::map<Domain, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, pair<Domain, Range2>> typed::basic_map<Domain, Domain>::range_product(const typed::union_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::basic_map::range_product(umap2);
-  return typed::union_map<Domain, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-typed::fixed_box<Domain, Domain> typed::basic_map<Domain, Domain>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::basic_map::range_simple_fixed_box_hull();
-  return typed::fixed_box<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::reverse() const
-{
-  auto res = isl::basic_map::reverse();
-  return typed::basic_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::set_domain_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::basic_map::set_domain_tuple(id);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::set_domain_tuple(const std::string &id) const
-{
-  auto res = isl::basic_map::set_domain_tuple(id);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, Range2> typed::basic_map<Domain, Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::basic_map::set_range_tuple(id);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, Range2> typed::basic_map<Domain, Domain>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::basic_map::set_range_tuple(id);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-typed::space<Domain, Domain> typed::basic_map<Domain, Domain>::space() const
-{
-  auto res = isl::basic_map::space();
-  return typed::space<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::subtract(const typed::map<Domain, Domain> &map2) const
-{
-  auto res = isl::basic_map::subtract(map2);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::subtract(const typed::union_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::basic_map::subtract(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::subtract_domain(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::basic_map::subtract_domain(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::subtract_range(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::basic_map::subtract_range(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::to_union_map() const
-{
-  auto res = isl::basic_map::to_union_map();
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::unite(const typed::basic_map<Domain, Domain> &bmap2) const
-{
-  auto res = isl::basic_map::unite(bmap2);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::unite(const typed::map<Domain, Domain> &map2) const
-{
-  auto res = isl::basic_map::unite(map2);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::unite(const typed::union_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::basic_map::unite(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::upper_bound(const typed::multi_pw_aff<Domain, Domain> &upper) const
-{
-  auto res = isl::basic_map::upper_bound(upper);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<pair<Domain, Domain>> typed::basic_map<Domain, Domain>::wrap() const
-{
-  auto res = isl::basic_map::wrap();
-  return typed::set<pair<Domain, Domain>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<Domain, pair<Range, Range2>>::basic_map(const isl::ctx &ctx, const std::string &str)
-  : isl::basic_map(ctx, str)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::basic_map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const
-{
-  auto res = isl::basic_map::apply_domain(bmap2);
-  return typed::basic_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::apply_domain(const typed::map<Domain, Domain2> &map2) const
-{
-  auto res = isl::basic_map::apply_domain(map2);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::basic_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::basic_map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &bmap2) const
-{
-  auto res = isl::basic_map::apply_range(bmap2);
-  return typed::basic_map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg3> &map2) const
-{
-  auto res = isl::basic_map::apply_range(map2);
-  return typed::map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const
-{
-  auto res = isl::basic_map::apply_range(umap2);
-  return typed::union_map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::as_map() const
-{
-  auto res = isl::basic_map::as_map();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::basic_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::as_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::as_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::basic_map::bind_domain(tuple);
-  return typed::set<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<Domain> typed::basic_map<Domain, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
-{
-  auto res = isl::basic_map::bind_range(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::basic_map::coalesce();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::detect_equalities() const
-{
-  auto res = isl::basic_map::detect_equalities();
-  return typed::basic_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<Domain> typed::basic_map<Domain, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::basic_map::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> typed::basic_map<Domain, pair<Range, Range2>>::domain_map() const
-{
-  auto res = isl::basic_map::domain_map();
-  return typed::union_map<pair<Domain, pair<Range, Range2>>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> typed::basic_map<Domain, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::basic_map::domain_product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::basic_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-bool typed::basic_map<Domain, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<Domain, pair<Range, Range2>>(arg0));
-  };
-  return isl::basic_map::every_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const
-{
-  auto res = isl::basic_map::extract_map(space);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<Domain, Anonymous> typed::basic_map<Domain, pair<Range, Range2>>::flatten_range() const
-{
-  auto res = isl::basic_map::flatten_range();
-  return typed::basic_map<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-void typed::basic_map<Domain, pair<Range, Range2>>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, pair<Range, Range2>>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<Domain, pair<Range, Range2>>(arg0));
-  };
-  return isl::basic_map::foreach_basic_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-void typed::basic_map<Domain, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<Domain, pair<Range, Range2>>(arg0));
-  };
-  return isl::basic_map::foreach_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::basic_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::gist(const typed::map<Domain, pair<Range, Range2>> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::gist_domain(const typed::set<Domain> &context) const
-{
-  auto res = isl::basic_map::gist_domain(context);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::gist_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::basic_map::gist_domain(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect(const typed::basic_map<Domain, pair<Range, Range2>> &bmap2) const
-{
-  auto res = isl::basic_map::intersect(bmap2);
-  return typed::basic_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect(const typed::map<Domain, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::basic_map::intersect(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::basic_map::intersect(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::basic_set<Domain> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::basic_map::intersect_domain(set);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::basic_map::intersect_domain(space);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::basic_map::intersect_domain(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::point<Domain> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::basic_map::intersect_params(params);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range(const typed::basic_set<pair<Range, Range2>> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range(const typed::set<pair<Range, Range2>> &set) const
-{
-  auto res = isl::basic_map::intersect_range(set);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
-{
-  auto res = isl::basic_map::intersect_range(space);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
-{
-  auto res = isl::basic_map::intersect_range(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range(const typed::point<pair<Range, Range2>> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::lexmax() const
-{
-  auto res = isl::basic_map::lexmax();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::lexmin() const
-{
-  auto res = isl::basic_map::lexmin();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::lower_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::basic_map::lower_bound(lower);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map_list<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::map_list() const
-{
-  auto res = isl::basic_map::map_list();
-  return typed::map_list<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::max_multi_pw_aff() const
-{
-  auto res = isl::basic_map::max_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::min_multi_pw_aff() const
-{
-  auto res = isl::basic_map::min_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::basic_map::preimage_domain(ma);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::basic_map::preimage_domain(mpa);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::basic_map::preimage_domain(pma);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::basic_map::preimage_domain(upma);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const
-{
-  auto res = isl::basic_map::preimage_range(ma);
-  return typed::map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const
-{
-  auto res = isl::basic_map::preimage_range(pma);
-  return typed::map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const
-{
-  auto res = isl::basic_map::preimage_range(upma);
-  return typed::union_map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::basic_map<Domain, pair<Range, Range2>>::product(const typed::map<Domain2, Arg3> &map2) const
-{
-  auto res = isl::basic_map::product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::basic_map<Domain, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg3> &umap2) const
-{
-  auto res = isl::basic_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::project_out_all_params() const
-{
-  auto res = isl::basic_map::project_out_all_params();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::range() const
-{
-  auto res = isl::basic_map::range();
-  return typed::set<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, Range> typed::basic_map<Domain, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::basic_map::range_factor_domain();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, Range2> typed::basic_map<Domain, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::basic_map::range_factor_range();
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::fixed_box<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::range_lattice_tile() const
-{
-  auto res = isl::basic_map::range_lattice_tile();
-  return typed::fixed_box<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::range_map() const
-{
-  auto res = isl::basic_map::range_map();
-  return typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<Domain, pair<pair<Range, Range2>, Arg3>> typed::basic_map<Domain, pair<Range, Range2>>::range_product(const typed::map<Domain, Arg3> &map2) const
-{
-  auto res = isl::basic_map::range_product(map2);
-  return typed::map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> typed::basic_map<Domain, pair<Range, Range2>>::range_product(const typed::union_map<Domain, Arg3> &umap2) const
-{
-  auto res = isl::basic_map::range_product(umap2);
-  return typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range2, Range>> typed::basic_map<Domain, pair<Range, Range2>>::range_reverse() const
-{
-  auto res = isl::basic_map::range_reverse();
-  return typed::map<Domain, pair<Range2, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::fixed_box<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::basic_map::range_simple_fixed_box_hull();
-  return typed::fixed_box<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_map<pair<Range, Range2>, Domain> typed::basic_map<Domain, pair<Range, Range2>>::reverse() const
-{
-  auto res = isl::basic_map::reverse();
-  return typed::basic_map<pair<Range, Range2>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::set_domain_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::basic_map::set_domain_tuple(id);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::set_domain_tuple(const std::string &id) const
-{
-  auto res = isl::basic_map::set_domain_tuple(id);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::space() const
-{
-  auto res = isl::basic_map::space();
-  return typed::space<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::subtract(const typed::map<Domain, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::basic_map::subtract(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::basic_map::subtract(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::basic_map::subtract_domain(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::basic_map::subtract_range(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::to_union_map() const
-{
-  auto res = isl::basic_map::to_union_map();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::basic_map<Domain, pair<Range, Range2>>::uncurry() const
-{
-  auto res = isl::basic_map::uncurry();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::unite(const typed::basic_map<Domain, pair<Range, Range2>> &bmap2) const
-{
-  auto res = isl::basic_map::unite(bmap2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::unite(const typed::map<Domain, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::basic_map::unite(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::basic_map::unite(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::upper_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::basic_map::upper_bound(upper);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<Domain, pair<Range, Range2>>> typed::basic_map<Domain, pair<Range, Range2>>::wrap() const
-{
-  auto res = isl::basic_map::wrap();
-  return typed::set<pair<Domain, pair<Range, Range2>>>(res);
-}
-
-template <typename T1, typename T2>
-typed::basic_map<pair<T1, T2>, pair<T1, T2>>::basic_map(const isl::ctx &ctx, const std::string &str)
-  : isl::basic_map(ctx, str)
-{
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::basic_map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &bmap2) const
-{
-  auto res = isl::basic_map::apply_domain(bmap2);
-  return typed::basic_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const
-{
-  auto res = isl::basic_map::apply_domain(map2);
-  return typed::map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
-{
-  auto res = isl::basic_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::basic_map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::basic_map<pair<T1, T2>, Range2> &bmap2) const
-{
-  auto res = isl::basic_map::apply_range(bmap2);
-  return typed::basic_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::map<pair<T1, T2>, Range2> &map2) const
-{
-  auto res = isl::basic_map::apply_range(map2);
-  return typed::map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
-{
-  auto res = isl::basic_map::apply_range(umap2);
-  return typed::union_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::as_map() const
-{
-  auto res = isl::basic_map::as_map();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::basic_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::as_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::as_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
-{
-  auto res = isl::basic_map::bind_domain(tuple);
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const
-{
-  auto res = isl::basic_map::bind_range(tuple);
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::coalesce() const
-{
-  auto res = isl::basic_map::coalesce();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<T1, pair<T2, pair<T1, T2>>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::curry() const
-{
-  auto res = isl::basic_map::curry();
-  return typed::map<T1, pair<T2, pair<T1, T2>>>(res);
-}
-
-template <typename T1, typename T2>
-typed::basic_set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::deltas() const
-{
-  auto res = isl::basic_map::deltas();
-  return typed::basic_set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::detect_equalities() const
-{
-  auto res = isl::basic_map::detect_equalities();
-  return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain() const
-{
-  auto res = isl::basic_map::domain();
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<T1, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_factor_domain() const
-{
-  auto res = isl::basic_map::domain_factor_domain();
-  return typed::map<T1, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<T2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_factor_range() const
-{
-  auto res = isl::basic_map::domain_factor_range();
-  return typed::map<T2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_map() const
-{
-  auto res = isl::basic_map::domain_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::map<Domain2, pair<T1, T2>> &map2) const
-{
-  auto res = isl::basic_map::domain_product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::basic_map::domain_product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::basic_map::eq_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const
-{
-  auto res = isl::basic_map::eq_at(mupa);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-bool typed::basic_map<pair<T1, T2>, pair<T1, T2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
-  };
-  return isl::basic_map::every_map(lambda);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const
-{
-  auto res = isl::basic_map::extract_map(space);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::basic_map<Anonymous, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::flatten_domain() const
-{
-  auto res = isl::basic_map::flatten_domain();
-  return typed::basic_map<Anonymous, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::basic_map<pair<T1, T2>, Anonymous> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::flatten_range() const
-{
-  auto res = isl::basic_map::flatten_range();
-  return typed::basic_map<pair<T1, T2>, Anonymous>(res);
-}
-
-template <typename T1, typename T2>
-void typed::basic_map<pair<T1, T2>, pair<T1, T2>>::foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<T1, T2>>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<pair<T1, T2>, pair<T1, T2>>(arg0));
-  };
-  return isl::basic_map::foreach_basic_map(lambda);
-}
-
-template <typename T1, typename T2>
-void typed::basic_map<pair<T1, T2>, pair<T1, T2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
-  };
-  return isl::basic_map::foreach_map(lambda);
-}
-
-template <typename T1, typename T2>
-typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::set<pair<T1, T2>> &context) const
-{
-  auto res = isl::basic_map::gist_domain(context);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::basic_map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap2) const
-{
-  auto res = isl::basic_map::intersect(bmap2);
-  return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
-{
-  auto res = isl::basic_map::intersect(map2);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::basic_map::intersect(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::basic_set<pair<T1, T2>> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
-{
-  auto res = isl::basic_map::intersect_domain(set);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::basic_map::intersect_domain(space);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::basic_map::intersect_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::point<pair<T1, T2>> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::basic_map::intersect_params(params);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::basic_set<pair<T1, T2>> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::set<pair<T1, T2>> &set) const
-{
-  auto res = isl::basic_map::intersect_range(set);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::basic_map::intersect_range(space);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::basic_map::intersect_range(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::point<pair<T1, T2>> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::basic_map::lex_ge_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::basic_map::lex_gt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::basic_map::lex_le_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::basic_map::lex_lt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lexmax() const
-{
-  auto res = isl::basic_map::lexmax();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lexmin() const
-{
-  auto res = isl::basic_map::lexmin();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const
-{
-  auto res = isl::basic_map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map_list<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::map_list() const
-{
-  auto res = isl::basic_map::map_list();
-  return typed::map_list<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::max_multi_pw_aff() const
-{
-  auto res = isl::basic_map::max_multi_pw_aff();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::min_multi_pw_aff() const
-{
-  auto res = isl::basic_map::min_multi_pw_aff();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
-{
-  auto res = isl::basic_map::preimage_domain(ma);
-  return typed::map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
-{
-  auto res = isl::basic_map::preimage_domain(mpa);
-  return typed::map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
-{
-  auto res = isl::basic_map::preimage_domain(pma);
-  return typed::map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
-{
-  auto res = isl::basic_map::preimage_domain(upma);
-  return typed::union_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const
-{
-  auto res = isl::basic_map::preimage_range(ma);
-  return typed::map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const
-{
-  auto res = isl::basic_map::preimage_range(pma);
-  return typed::map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const
-{
-  auto res = isl::basic_map::preimage_range(upma);
-  return typed::union_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2, typename Range2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::product(const typed::map<Domain2, Range2> &map2) const
-{
-  auto res = isl::basic_map::product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::basic_map::product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::project_out_all_params() const
-{
-  auto res = isl::basic_map::project_out_all_params();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range() const
-{
-  auto res = isl::basic_map::range();
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, T1> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_factor_domain() const
-{
-  auto res = isl::basic_map::range_factor_domain();
-  return typed::map<pair<T1, T2>, T1>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, T2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_factor_range() const
-{
-  auto res = isl::basic_map::range_factor_range();
-  return typed::map<pair<T1, T2>, T2>(res);
-}
-
-template <typename T1, typename T2>
-typed::fixed_box<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_lattice_tile() const
-{
-  auto res = isl::basic_map::range_lattice_tile();
-  return typed::fixed_box<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_map() const
-{
-  auto res = isl::basic_map::range_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::map<pair<T1, T2>, Range2> &map2) const
-{
-  auto res = isl::basic_map::range_product(map2);
-  return typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
-{
-  auto res = isl::basic_map::range_product(umap2);
-  return typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T2, T1>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_reverse() const
-{
-  auto res = isl::basic_map::range_reverse();
-  return typed::map<pair<T1, T2>, pair<T2, T1>>(res);
-}
-
-template <typename T1, typename T2>
-typed::fixed_box<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::basic_map::range_simple_fixed_box_hull();
-  return typed::fixed_box<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::reverse() const
-{
-  auto res = isl::basic_map::reverse();
-  return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::space<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::space() const
-{
-  auto res = isl::basic_map::space();
-  return typed::space<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
-{
-  auto res = isl::basic_map::subtract(map2);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::basic_map::subtract(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::basic_map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::union_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::basic_map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::to_union_map() const
-{
-  auto res = isl::basic_map::to_union_map();
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<pair<T1, T2>, T1>, T2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::uncurry() const
-{
-  auto res = isl::basic_map::uncurry();
-  return typed::map<pair<pair<T1, T2>, T1>, T2>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap2) const
-{
-  auto res = isl::basic_map::unite(bmap2);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
-{
-  auto res = isl::basic_map::unite(map2);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::basic_map::unite(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const
-{
-  auto res = isl::basic_map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::set<pair<pair<T1, T2>, pair<T1, T2>>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::wrap() const
-{
-  auto res = isl::basic_map::wrap();
-  return typed::set<pair<pair<T1, T2>, pair<T1, T2>>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::basic_map(const isl::ctx &ctx, const std::string &str)
-  : isl::basic_map(ctx, str)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::basic_map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &bmap2) const
-{
-  auto res = isl::basic_map::apply_domain(bmap2);
-  return typed::basic_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const
-{
-  auto res = isl::basic_map::apply_domain(map2);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
-{
-  auto res = isl::basic_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::basic_map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &bmap2) const
-{
-  auto res = isl::basic_map::apply_range(bmap2);
-  return typed::basic_map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg2> &map2) const
-{
-  auto res = isl::basic_map::apply_range(map2);
-  return typed::map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const
-{
-  auto res = isl::basic_map::apply_range(umap2);
-  return typed::union_map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::as_map() const
-{
-  auto res = isl::basic_map::as_map();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::basic_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::as_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::as_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
-{
-  auto res = isl::basic_map::bind_domain(tuple);
-  return typed::set<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
-{
-  auto res = isl::basic_map::bind_range(tuple);
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::basic_map::coalesce();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<T1, pair<T2, pair<Range, Range2>>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::curry() const
-{
-  auto res = isl::basic_map::curry();
-  return typed::map<T1, pair<T2, pair<Range, Range2>>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::detect_equalities() const
-{
-  auto res = isl::basic_map::detect_equalities();
-  return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::basic_map::domain();
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<T1, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_domain() const
-{
-  auto res = isl::basic_map::domain_factor_domain();
-  return typed::map<T1, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<T2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_range() const
-{
-  auto res = isl::basic_map::domain_factor_range();
-  return typed::map<T2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_map() const
-{
-  auto res = isl::basic_map::domain_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::basic_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::basic_map::domain_product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::basic_map::domain_product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-bool typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
-  };
-  return isl::basic_map::every_map(lambda);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
-{
-  auto res = isl::basic_map::extract_map(space);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_map<Anonymous, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::flatten_domain() const
-{
-  auto res = isl::basic_map::flatten_domain();
-  return typed::basic_map<Anonymous, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_map<pair<T1, T2>, Anonymous> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::flatten_range() const
-{
-  auto res = isl::basic_map::flatten_range();
-  return typed::basic_map<pair<T1, T2>, Anonymous>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-void typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(arg0));
-  };
-  return isl::basic_map::foreach_basic_map(lambda);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-void typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
-  };
-  return isl::basic_map::foreach_map(lambda);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const
-{
-  auto res = isl::basic_map::gist(context);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::set<pair<T1, T2>> &context) const
-{
-  auto res = isl::basic_map::gist_domain(context);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::basic_map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap2) const
-{
-  auto res = isl::basic_map::intersect(bmap2);
-  return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::basic_map::intersect(map2);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::basic_map::intersect(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::basic_set<pair<T1, T2>> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
-{
-  auto res = isl::basic_map::intersect_domain(set);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::basic_map::intersect_domain(space);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::basic_map::intersect_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::point<pair<T1, T2>> &bset) const
-{
-  auto res = isl::basic_map::intersect_domain(bset);
-  return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::basic_map::intersect_params(params);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::basic_set<pair<Range, Range2>> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::set<pair<Range, Range2>> &set) const
-{
-  auto res = isl::basic_map::intersect_range(set);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
-{
-  auto res = isl::basic_map::intersect_range(space);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
-{
-  auto res = isl::basic_map::intersect_range(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::point<pair<Range, Range2>> &bset) const
-{
-  auto res = isl::basic_map::intersect_range(bset);
-  return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::lexmax() const
-{
-  auto res = isl::basic_map::lexmax();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::lexmin() const
-{
-  auto res = isl::basic_map::lexmin();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::basic_map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::basic_map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map_list<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::map_list() const
-{
-  auto res = isl::basic_map::map_list();
-  return typed::map_list<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::max_multi_pw_aff() const
-{
-  auto res = isl::basic_map::max_multi_pw_aff();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::min_multi_pw_aff() const
-{
-  auto res = isl::basic_map::min_multi_pw_aff();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
-{
-  auto res = isl::basic_map::preimage_domain(ma);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
-{
-  auto res = isl::basic_map::preimage_domain(mpa);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
-{
-  auto res = isl::basic_map::preimage_domain(pma);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
-{
-  auto res = isl::basic_map::preimage_domain(upma);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const
-{
-  auto res = isl::basic_map::preimage_range(ma);
-  return typed::map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const
-{
-  auto res = isl::basic_map::preimage_range(pma);
-  return typed::map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const
-{
-  auto res = isl::basic_map::preimage_range(upma);
-  return typed::union_map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::map<Domain2, Arg2> &map2) const
-{
-  auto res = isl::basic_map::product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg2> &umap2) const
-{
-  auto res = isl::basic_map::product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::project_out_all_params() const
-{
-  auto res = isl::basic_map::project_out_all_params();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range() const
-{
-  auto res = isl::basic_map::range();
-  return typed::set<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, Range> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::basic_map::range_factor_domain();
-  return typed::map<pair<T1, T2>, Range>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::basic_map::range_factor_range();
-  return typed::map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_lattice_tile() const
-{
-  auto res = isl::basic_map::range_lattice_tile();
-  return typed::fixed_box<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_map() const
-{
-  auto res = isl::basic_map::range_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::map<pair<T1, T2>, Arg2> &map2) const
-{
-  auto res = isl::basic_map::range_product(map2);
-  return typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const
-{
-  auto res = isl::basic_map::range_product(umap2);
-  return typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range2, Range>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_reverse() const
-{
-  auto res = isl::basic_map::range_reverse();
-  return typed::map<pair<T1, T2>, pair<Range2, Range>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::basic_map::range_simple_fixed_box_hull();
-  return typed::fixed_box<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_map<pair<Range, Range2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::reverse() const
-{
-  auto res = isl::basic_map::reverse();
-  return typed::basic_map<pair<Range, Range2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::space() const
-{
-  auto res = isl::basic_map::space();
-  return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::basic_map::subtract(map2);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::basic_map::subtract(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::basic_map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::basic_map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::to_union_map() const
-{
-  auto res = isl::basic_map::to_union_map();
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<pair<T1, T2>, Range>, Range2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::uncurry() const
-{
-  auto res = isl::basic_map::uncurry();
-  return typed::map<pair<pair<T1, T2>, Range>, Range2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap2) const
-{
-  auto res = isl::basic_map::unite(bmap2);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::basic_map::unite(map2);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::basic_map::unite(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::basic_map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<pair<T1, T2>, pair<Range, Range2>>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::wrap() const
-{
-  auto res = isl::basic_map::wrap();
-  return typed::set<pair<pair<T1, T2>, pair<Range, Range2>>>(res);
-}
-
-typed::basic_set<>::basic_set(const typed::point<> &pnt)
-  : isl::basic_set(pnt)
-{
-}
-
-typed::basic_set<>::basic_set(const isl::ctx &ctx, const std::string &str)
-  : isl::basic_set(ctx, str)
-{
-}
-
-typed::set<> typed::basic_set<>::coalesce() const
-{
-  auto res = isl::basic_set::coalesce();
-  return typed::set<>(res);
-}
-
-typed::basic_set<> typed::basic_set<>::detect_equalities() const
-{
-  auto res = isl::basic_set::detect_equalities();
-  return typed::basic_set<>(res);
-}
-
-bool typed::basic_set<>::every_set(const std::function<bool(typed::set<>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<>(arg0));
-  };
-  return isl::basic_set::every_set(lambda);
-}
-
-typed::set<> typed::basic_set<>::extract_set(const typed::space<> &space) const
-{
-  auto res = isl::basic_set::extract_set(space);
-  return typed::set<>(res);
-}
-
-void typed::basic_set<>::foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_set arg0) {
-    return fn(typed::basic_set<>(arg0));
-  };
-  return isl::basic_set::foreach_basic_set(lambda);
-}
-
-void typed::basic_set<>::foreach_point(const std::function<void(typed::point<>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<>(arg0));
-  };
-  return isl::basic_set::foreach_point(lambda);
-}
-
-void typed::basic_set<>::foreach_set(const std::function<void(typed::set<>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<>(arg0));
-  };
-  return isl::basic_set::foreach_set(lambda);
-}
-
-typed::basic_set<> typed::basic_set<>::gist(const typed::basic_set<> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::basic_set<>(res);
-}
-
-typed::set<> typed::basic_set<>::gist(const typed::set<> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::basic_set<>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::union_set<>(res);
-}
-
-typed::basic_set<> typed::basic_set<>::gist(const typed::point<> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::basic_set<>(res);
-}
-
-typed::pw_aff<Anonymous> typed::basic_set<>::indicator_function() const
-{
-  auto res = isl::basic_set::indicator_function();
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::basic_set<> typed::basic_set<>::intersect(const typed::basic_set<> &bset2) const
-{
-  auto res = isl::basic_set::intersect(bset2);
-  return typed::basic_set<>(res);
-}
-
-typed::set<> typed::basic_set<>::intersect(const typed::set<> &set2) const
-{
-  auto res = isl::basic_set::intersect(set2);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::basic_set<>::intersect(const typed::union_set<> &uset2) const
-{
-  auto res = isl::basic_set::intersect(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::basic_set<> typed::basic_set<>::intersect(const typed::point<> &bset2) const
-{
-  auto res = isl::basic_set::intersect(bset2);
-  return typed::basic_set<>(res);
-}
-
-typed::set<> typed::basic_set<>::project_out_all_params() const
-{
-  auto res = isl::basic_set::project_out_all_params();
-  return typed::set<>(res);
-}
-
-typed::set<> typed::basic_set<>::project_out_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::basic_set::project_out_param(id);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::basic_set<>::project_out_param(const std::string &id) const
-{
-  auto res = isl::basic_set::project_out_param(id);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::basic_set<>::project_out_param(const typed::id_list<Anonymous> &list) const
-{
-  auto res = isl::basic_set::project_out_param(list);
-  return typed::set<>(res);
-}
-
-typed::set_list<> typed::basic_set<>::set_list() const
-{
-  auto res = isl::basic_set::set_list();
-  return typed::set_list<>(res);
-}
-
-typed::space<> typed::basic_set<>::space() const
-{
-  auto res = isl::basic_set::space();
-  return typed::space<>(res);
-}
-
-typed::set<> typed::basic_set<>::subtract(const typed::set<> &set2) const
-{
-  auto res = isl::basic_set::subtract(set2);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::basic_set<>::subtract(const typed::union_set<> &uset2) const
-{
-  auto res = isl::basic_set::subtract(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::set<> typed::basic_set<>::to_set() const
-{
-  auto res = isl::basic_set::to_set();
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::basic_set<>::to_union_set() const
-{
-  auto res = isl::basic_set::to_union_set();
-  return typed::union_set<>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<>::unbind_params(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::basic_set::unbind_params(tuple);
-  return typed::set<Domain>(res);
-}
-
-typed::set<> typed::basic_set<>::unite(const typed::basic_set<> &bset2) const
-{
-  auto res = isl::basic_set::unite(bset2);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::basic_set<>::unite(const typed::set<> &set2) const
-{
-  auto res = isl::basic_set::unite(set2);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::basic_set<>::unite(const typed::union_set<> &uset2) const
-{
-  auto res = isl::basic_set::unite(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::set<> typed::basic_set<>::unite(const typed::point<> &bset2) const
-{
-  auto res = isl::basic_set::unite(bset2);
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain>::basic_set(const typed::point<Domain> &pnt)
-  : isl::basic_set(pnt)
-{
-}
-
-template <typename Domain>
-typed::basic_set<Domain>::basic_set(const isl::ctx &ctx, const std::string &str)
-  : isl::basic_set(ctx, str)
-{
-}
-
-template <typename Domain>
-template <typename Range>
-typed::basic_set<Range> typed::basic_set<Domain>::apply(const typed::basic_map<Domain, Range> &bmap) const
-{
-  auto res = isl::basic_set::apply(bmap);
-  return typed::basic_set<Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::set<Range> typed::basic_set<Domain>::apply(const typed::map<Domain, Range> &map) const
-{
-  auto res = isl::basic_set::apply(map);
-  return typed::set<Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_set<Range> typed::basic_set<Domain>::apply(const typed::union_map<Domain, Range> &umap) const
-{
-  auto res = isl::basic_set::apply(umap);
-  return typed::union_set<Range>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::basic_set<Domain>::as_pw_multi_aff() const
-{
-  auto res = isl::basic_set::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::as_set() const
-{
-  auto res = isl::basic_set::as_set();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<> typed::basic_set<Domain>::bind(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::basic_set::bind(tuple);
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::coalesce() const
-{
-  auto res = isl::basic_set::coalesce();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::basic_set<Domain>::detect_equalities() const
-{
-  auto res = isl::basic_set::detect_equalities();
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-bool typed::basic_set<Domain>::every_set(const std::function<bool(typed::set<Domain>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<Domain>(arg0));
-  };
-  return isl::basic_set::every_set(lambda);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::extract_set(const typed::space<Domain> &space) const
-{
-  auto res = isl::basic_set::extract_set(space);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-void typed::basic_set<Domain>::foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_set arg0) {
-    return fn(typed::basic_set<Domain>(arg0));
-  };
-  return isl::basic_set::foreach_basic_set(lambda);
-}
-
-template <typename Domain>
-void typed::basic_set<Domain>::foreach_point(const std::function<void(typed::point<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<Domain>(arg0));
-  };
-  return isl::basic_set::foreach_point(lambda);
-}
-
-template <typename Domain>
-void typed::basic_set<Domain>::foreach_set(const std::function<void(typed::set<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<Domain>(arg0));
-  };
-  return isl::basic_set::foreach_set(lambda);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::basic_set<Domain>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::basic_set<Domain>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::basic_set<Domain>::gist(const typed::point<Domain> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_set<Domain>::identity() const
-{
-  auto res = isl::basic_set::identity();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::basic_set<Domain>::indicator_function() const
-{
-  auto res = isl::basic_set::indicator_function();
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::map<Arg1, Domain> typed::basic_set<Domain>::insert_domain(const typed::space<Arg1> &domain) const
-{
-  auto res = isl::basic_set::insert_domain(domain);
-  return typed::map<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::basic_set<Domain>::intersect(const typed::basic_set<Domain> &bset2) const
-{
-  auto res = isl::basic_set::intersect(bset2);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::intersect(const typed::set<Domain> &set2) const
-{
-  auto res = isl::basic_set::intersect(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::basic_set<Domain>::intersect(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::basic_set::intersect(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::basic_set<Domain>::intersect(const typed::point<Domain> &bset2) const
-{
-  auto res = isl::basic_set::intersect(bset2);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::basic_set<Domain>::intersect_params(const typed::basic_set<> &bset2) const
-{
-  auto res = isl::basic_set::intersect_params(bset2);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::basic_set::intersect_params(params);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::basic_set<Domain>::intersect_params(const typed::point<> &bset2) const
-{
-  auto res = isl::basic_set::intersect_params(bset2);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::lexmax() const
-{
-  auto res = isl::basic_set::lexmax();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::basic_set<Domain>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::basic_set::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::lexmin() const
-{
-  auto res = isl::basic_set::lexmin();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::basic_set<Domain>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::basic_set::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::lower_bound(const typed::multi_pw_aff<Domain> &lower) const
-{
-  auto res = isl::basic_set::lower_bound(lower);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::lower_bound(const typed::multi_val<Domain> &lower) const
-{
-  auto res = isl::basic_set::lower_bound(lower);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::basic_set<Domain>::max_multi_pw_aff() const
-{
-  auto res = isl::basic_set::max_multi_pw_aff();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::basic_set<Domain>::min_multi_pw_aff() const
-{
-  auto res = isl::basic_set::min_multi_pw_aff();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<> typed::basic_set<Domain>::params() const
-{
-  auto res = isl::basic_set::params();
-  return typed::basic_set<>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::basic_set<Domain>::plain_multi_val_if_fixed() const
-{
-  auto res = isl::basic_set::plain_multi_val_if_fixed();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::set<Domain2> typed::basic_set<Domain>::preimage(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::basic_set::preimage(ma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::set<Domain2> typed::basic_set<Domain>::preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::basic_set::preimage(mpa);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::set<Domain2> typed::basic_set<Domain>::preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::basic_set::preimage(pma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_set<Domain2> typed::basic_set<Domain>::preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::basic_set::preimage(upma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<Domain>::product(const typed::set<Range> &set2) const
-{
-  auto res = isl::basic_set::product(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::project_out_all_params() const
-{
-  auto res = isl::basic_set::project_out_all_params();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::project_out_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::basic_set::project_out_param(id);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::project_out_param(const std::string &id) const
-{
-  auto res = isl::basic_set::project_out_param(id);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::project_out_param(const typed::id_list<Anonymous> &list) const
-{
-  auto res = isl::basic_set::project_out_param(list);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::pw_multi_aff<Domain, Range> typed::basic_set<Domain>::pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::basic_set::pw_multi_aff_on_domain(mv);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain>
-typed::set_list<Domain> typed::basic_set<Domain>::set_list() const
-{
-  auto res = isl::basic_set::set_list();
-  return typed::set_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::fixed_box<Domain> typed::basic_set<Domain>::simple_fixed_box_hull() const
-{
-  auto res = isl::basic_set::simple_fixed_box_hull();
-  return typed::fixed_box<Domain>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::basic_set<Domain>::space() const
-{
-  auto res = isl::basic_set::space();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::subtract(const typed::set<Domain> &set2) const
-{
-  auto res = isl::basic_set::subtract(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::basic_set<Domain>::subtract(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::basic_set::subtract(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::to_set() const
-{
-  auto res = isl::basic_set::to_set();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::basic_set<Domain>::to_union_set() const
-{
-  auto res = isl::basic_set::to_union_set();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::basic_set<Domain>::translation() const
-{
-  auto res = isl::basic_set::translation();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::map<Arg1, Domain> typed::basic_set<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
-{
-  auto res = isl::basic_set::unbind_params_insert_domain(domain);
-  return typed::map<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::unite(const typed::basic_set<Domain> &bset2) const
-{
-  auto res = isl::basic_set::unite(bset2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::unite(const typed::set<Domain> &set2) const
-{
-  auto res = isl::basic_set::unite(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::basic_set<Domain>::unite(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::basic_set::unite(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::unite(const typed::point<Domain> &bset2) const
-{
-  auto res = isl::basic_set::unite(bset2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::upper_bound(const typed::multi_pw_aff<Domain> &upper) const
-{
-  auto res = isl::basic_set::upper_bound(upper);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::basic_set<Domain>::upper_bound(const typed::multi_val<Domain> &upper) const
-{
-  auto res = isl::basic_set::upper_bound(upper);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>>::basic_set(const typed::point<pair<Domain, Range>> &pnt)
-  : isl::basic_set(pnt)
-{
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>>::basic_set(const isl::ctx &ctx, const std::string &str)
-  : isl::basic_set(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::basic_set<Arg2> typed::basic_set<pair<Domain, Range>>::apply(const typed::basic_map<pair<Domain, Range>, Arg2> &bmap) const
-{
-  auto res = isl::basic_set::apply(bmap);
-  return typed::basic_set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::set<Arg2> typed::basic_set<pair<Domain, Range>>::apply(const typed::map<pair<Domain, Range>, Arg2> &map) const
-{
-  auto res = isl::basic_set::apply(map);
-  return typed::set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::union_set<Arg2> typed::basic_set<pair<Domain, Range>>::apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const
-{
-  auto res = isl::basic_set::apply(umap);
-  return typed::union_set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::as_pw_multi_aff() const
-{
-  auto res = isl::basic_set::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::as_set() const
-{
-  auto res = isl::basic_set::as_set();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<> typed::basic_set<pair<Domain, Range>>::bind(const typed::multi_id<pair<Domain, Range>> &tuple) const
-{
-  auto res = isl::basic_set::bind(tuple);
-  return typed::set<>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::coalesce() const
-{
-  auto res = isl::basic_set::coalesce();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::detect_equalities() const
-{
-  auto res = isl::basic_set::detect_equalities();
-  return typed::basic_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-bool typed::basic_set<pair<Domain, Range>>::every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<pair<Domain, Range>>(arg0));
-  };
-  return isl::basic_set::every_set(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::extract_set(const typed::space<pair<Domain, Range>> &space) const
-{
-  auto res = isl::basic_set::extract_set(space);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-void typed::basic_set<pair<Domain, Range>>::foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_set arg0) {
-    return fn(typed::basic_set<pair<Domain, Range>>(arg0));
-  };
-  return isl::basic_set::foreach_basic_set(lambda);
-}
-
-template <typename Domain, typename Range>
-void typed::basic_set<pair<Domain, Range>>::foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<pair<Domain, Range>>(arg0));
-  };
-  return isl::basic_set::foreach_point(lambda);
-}
-
-template <typename Domain, typename Range>
-void typed::basic_set<pair<Domain, Range>>::foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<pair<Domain, Range>>(arg0));
-  };
-  return isl::basic_set::foreach_set(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::gist(const typed::basic_set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::basic_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::gist(const typed::set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::gist(const typed::union_set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::gist(const typed::point<pair<Domain, Range>> &context) const
-{
-  auto res = isl::basic_set::gist(context);
-  return typed::basic_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::identity() const
-{
-  auto res = isl::basic_set::identity();
-  return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_aff<pair<Domain, Range>, Anonymous> typed::basic_set<pair<Domain, Range>>::indicator_function() const
-{
-  auto res = isl::basic_set::indicator_function();
-  return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::map<Arg2, pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::insert_domain(const typed::space<Arg2> &domain) const
-{
-  auto res = isl::basic_set::insert_domain(domain);
-  return typed::map<Arg2, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect(const typed::basic_set<pair<Domain, Range>> &bset2) const
-{
-  auto res = isl::basic_set::intersect(bset2);
-  return typed::basic_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect(const typed::set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::basic_set::intersect(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::basic_set::intersect(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect(const typed::point<pair<Domain, Range>> &bset2) const
-{
-  auto res = isl::basic_set::intersect(bset2);
-  return typed::basic_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect_params(const typed::basic_set<> &bset2) const
-{
-  auto res = isl::basic_set::intersect_params(bset2);
-  return typed::basic_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::basic_set::intersect_params(params);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect_params(const typed::point<> &bset2) const
-{
-  auto res = isl::basic_set::intersect_params(bset2);
-  return typed::basic_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lexmax() const
-{
-  auto res = isl::basic_set::lexmax();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::basic_set::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lexmin() const
-{
-  auto res = isl::basic_set::lexmin();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::basic_set::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const
-{
-  auto res = isl::basic_set::lower_bound(lower);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const
-{
-  auto res = isl::basic_set::lower_bound(lower);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::max_multi_pw_aff() const
-{
-  auto res = isl::basic_set::max_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::min_multi_pw_aff() const
-{
-  auto res = isl::basic_set::min_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<> typed::basic_set<pair<Domain, Range>>::params() const
-{
-  auto res = isl::basic_set::params();
-  return typed::basic_set<>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::plain_multi_val_if_fixed() const
-{
-  auto res = isl::basic_set::plain_multi_val_if_fixed();
-  return typed::multi_val<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::set<Domain2> typed::basic_set<pair<Domain, Range>>::preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
-{
-  auto res = isl::basic_set::preimage(ma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::set<Domain2> typed::basic_set<pair<Domain, Range>>::preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
-{
-  auto res = isl::basic_set::preimage(mpa);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::set<Domain2> typed::basic_set<pair<Domain, Range>>::preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
-{
-  auto res = isl::basic_set::preimage(pma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_set<Domain2> typed::basic_set<pair<Domain, Range>>::preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
-{
-  auto res = isl::basic_set::preimage(upma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::set<pair<pair<Domain, Range>, Arg2>> typed::basic_set<pair<Domain, Range>>::product(const typed::set<Arg2> &set2) const
-{
-  auto res = isl::basic_set::product(set2);
-  return typed::set<pair<pair<Domain, Range>, Arg2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::project_out_all_params() const
-{
-  auto res = isl::basic_set::project_out_all_params();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::project_out_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::basic_set::project_out_param(id);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::project_out_param(const std::string &id) const
-{
-  auto res = isl::basic_set::project_out_param(id);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::project_out_param(const typed::id_list<Anonymous> &list) const
-{
-  auto res = isl::basic_set::project_out_param(list);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::pw_multi_aff<pair<Domain, Range>, Arg2> typed::basic_set<pair<Domain, Range>>::pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const
-{
-  auto res = isl::basic_set::pw_multi_aff_on_domain(mv);
-  return typed::pw_multi_aff<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set_list<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::set_list() const
-{
-  auto res = isl::basic_set::set_list();
-  return typed::set_list<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::fixed_box<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::simple_fixed_box_hull() const
-{
-  auto res = isl::basic_set::simple_fixed_box_hull();
-  return typed::fixed_box<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::space() const
-{
-  auto res = isl::basic_set::space();
-  return typed::space<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::subtract(const typed::set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::basic_set::subtract(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::subtract(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::basic_set::subtract(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::to_set() const
-{
-  auto res = isl::basic_set::to_set();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::to_union_set() const
-{
-  auto res = isl::basic_set::to_union_set();
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::translation() const
-{
-  auto res = isl::basic_set::translation();
-  return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::map<Arg2, pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const
-{
-  auto res = isl::basic_set::unbind_params_insert_domain(domain);
-  return typed::map<Arg2, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::unite(const typed::basic_set<pair<Domain, Range>> &bset2) const
-{
-  auto res = isl::basic_set::unite(bset2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::unite(const typed::set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::basic_set::unite(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::unite(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::basic_set::unite(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::unite(const typed::point<pair<Domain, Range>> &bset2) const
-{
-  auto res = isl::basic_set::unite(bset2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::basic_set<pair<Domain, Range>>::unwrap() const
-{
-  auto res = isl::basic_set::unwrap();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const
-{
-  auto res = isl::basic_set::upper_bound(upper);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const
-{
-  auto res = isl::basic_set::upper_bound(upper);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::fixed_box<Domain>::offset() const
-{
-  auto res = isl::fixed_box::offset();
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::fixed_box<Domain>::size() const
-{
-  auto res = isl::fixed_box::size();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::fixed_box<Domain>::space() const
-{
-  auto res = isl::fixed_box::space();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::fixed_box<Domain, Range>::offset() const
-{
-  auto res = isl::fixed_box::offset();
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<Range> typed::fixed_box<Domain, Range>::size() const
-{
-  auto res = isl::fixed_box::size();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Domain, Range> typed::fixed_box<Domain, Range>::space() const
-{
-  auto res = isl::fixed_box::space();
-  return typed::space<Domain, Range>(res);
-}
-
-typed::id<Anonymous>::id(const isl::ctx &ctx, const std::string &str)
-  : isl::id(ctx, str)
-{
-}
-
-typed::id_list<Anonymous>::id_list(const isl::ctx &ctx, int n)
-  : isl::id_list(ctx, n)
-{
-}
-
-typed::id_list<Anonymous>::id_list(const typed::id<Anonymous> &el)
-  : isl::id_list(el)
-{
-}
-
-typed::id_list<Anonymous>::id_list(const isl::ctx &ctx, const std::string &str)
-  : isl::id_list(ctx, str)
-{
-}
-
-typed::id_list<Anonymous> typed::id_list<Anonymous>::add(const typed::id<Anonymous> &el) const
-{
-  auto res = isl::id_list::add(el);
-  return typed::id_list<Anonymous>(res);
-}
-
-typed::id_list<Anonymous> typed::id_list<Anonymous>::add(const std::string &el) const
-{
-  auto res = isl::id_list::add(el);
-  return typed::id_list<Anonymous>(res);
-}
-
-typed::id<Anonymous> typed::id_list<Anonymous>::at(int index) const
-{
-  auto res = isl::id_list::at(index);
-  return typed::id<Anonymous>(res);
-}
-
-typed::id_list<Anonymous> typed::id_list<Anonymous>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::id_list::drop(first, n);
-  return typed::id_list<Anonymous>(res);
-}
-
-void typed::id_list<Anonymous>::foreach(const std::function<void(typed::id<Anonymous>)> &fn) const
-{
-  auto lambda = [&] (isl::id arg0) {
-    return fn(typed::id<Anonymous>(arg0));
-  };
-  return isl::id_list::foreach(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range>::map(const typed::basic_map<Domain, Range> &bmap)
-  : isl::map(bmap)
-{
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range>::map(const isl::ctx &ctx, const std::string &str)
-  : isl::map(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::map<Domain, Range>::apply_domain(const typed::map<Domain, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<Domain2, Range> typed::map<Domain, Range>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::map::apply_domain(umap2);
-  return typed::union_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::map<Domain, Range>::apply_domain(const typed::basic_map<Domain, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Range>::apply_range(const typed::map<Range, Range2> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::map<Domain, Range>::apply_range(const typed::union_map<Range, Range2> &umap2) const
-{
-  auto res = isl::map::apply_range(umap2);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Range>::apply_range(const typed::basic_map<Range, Range2> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::as_map() const
-{
-  auto res = isl::map::as_map();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::map<Domain, Range>::as_multi_union_pw_aff() const
-{
-  auto res = isl::map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::map<Domain, Range>::as_pw_multi_aff() const
-{
-  auto res = isl::map::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::map<Domain, Range>::as_union_pw_multi_aff() const
-{
-  auto res = isl::map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Range> typed::map<Domain, Range>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::map::bind_domain(tuple);
-  return typed::set<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Domain> typed::map<Domain, Range>::bind_range(const typed::multi_id<Range> &tuple) const
-{
-  auto res = isl::map::bind_range(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::coalesce() const
-{
-  auto res = isl::map::coalesce();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::detect_equalities() const
-{
-  auto res = isl::map::detect_equalities();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Domain> typed::map<Domain, Range>::domain() const
-{
-  auto res = isl::map::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<pair<Domain, Range>, Domain> typed::map<Domain, Range>::domain_map() const
-{
-  auto res = isl::map::domain_map();
-  return typed::union_map<pair<Domain, Range>, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Range>, Domain> typed::map<Domain, Range>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, Range>, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<pair<Domain, Domain2>, Range> typed::map<Domain, Range>::domain_product(const typed::map<Domain2, Range> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, Range> typed::map<Domain, Range>::domain_product(const typed::union_map<Domain2, Range> &umap2) const
-{
-  auto res = isl::map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<pair<Domain, Domain2>, Range> typed::map<Domain, Range>::domain_product(const typed::basic_map<Domain2, Range> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-bool typed::map<Domain, Range>::every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<Domain, Range>(arg0));
-  };
-  return isl::map::every_map(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::extract_map(const typed::space<Domain, Range> &space) const
-{
-  auto res = isl::map::extract_map(space);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-void typed::map<Domain, Range>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, Range>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<Domain, Range>(arg0));
-  };
-  return isl::map::foreach_basic_map(lambda);
-}
-
-template <typename Domain, typename Range>
-void typed::map<Domain, Range>::foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<Domain, Range>(arg0));
-  };
-  return isl::map::foreach_map(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::gist(const typed::map<Domain, Range> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::gist(const typed::union_map<Domain, Range> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::gist(const typed::basic_map<Domain, Range> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::gist_domain(const typed::set<Domain> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::gist_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::map::gist_domain(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::gist_domain(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::gist_domain(const typed::point<Domain> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::intersect(const typed::map<Domain, Range> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::intersect(const typed::union_map<Domain, Range> &umap2) const
-{
-  auto res = isl::map::intersect(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::intersect(const typed::basic_map<Domain, Range> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::map::intersect_domain(space);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::map::intersect_domain(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::intersect_domain(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::intersect_domain(const typed::point<Domain> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::intersect_params(const typed::basic_set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::intersect_params(const typed::point<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::intersect_range(const typed::set<Range> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::intersect_range(const typed::space<Range> &space) const
-{
-  auto res = isl::map::intersect_range(space);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::intersect_range(const typed::union_set<Range> &uset) const
-{
-  auto res = isl::map::intersect_range(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::intersect_range(const typed::basic_set<Range> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::intersect_range(const typed::point<Range> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::lexmax() const
-{
-  auto res = isl::map::lexmax();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::map<Domain, Range>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::lexmin() const
-{
-  auto res = isl::map::lexmin();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::map<Domain, Range>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::lower_bound(const typed::multi_pw_aff<Domain, Range> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::lower_bound(const typed::aff<Domain, Range> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::lower_bound(const typed::multi_aff<Domain, Range> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::lower_bound(const typed::pw_aff<Domain, Range> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::lower_bound(const typed::pw_multi_aff<Domain, Range> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map_list<Domain, Range> typed::map<Domain, Range>::map_list() const
-{
-  auto res = isl::map::map_list();
-  return typed::map_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::map<Domain, Range>::max_multi_pw_aff() const
-{
-  auto res = isl::map::max_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::map<Domain, Range>::min_multi_pw_aff() const
-{
-  auto res = isl::map::min_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::map<Domain, Range>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::map::preimage_domain(ma);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::map<Domain, Range>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::map::preimage_domain(mpa);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::map<Domain, Range>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::map::preimage_domain(pma);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<Domain2, Range> typed::map<Domain, Range>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::map::preimage_domain(upma);
-  return typed::union_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Range>::preimage_range(const typed::multi_aff<Range2, Range> &ma) const
-{
-  auto res = isl::map::preimage_range(ma);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Range>::preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const
-{
-  auto res = isl::map::preimage_range(pma);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::map<Domain, Range>::preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const
-{
-  auto res = isl::map::preimage_range(upma);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, Range>::product(const typed::map<Domain2, Range2> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, Range>::product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, Range>::product(const typed::basic_map<Domain2, Range2> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::project_out_all_params() const
-{
-  auto res = isl::map::project_out_all_params();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Range> typed::map<Domain, Range>::range() const
-{
-  auto res = isl::map::range();
-  return typed::set<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::fixed_box<Domain, Range> typed::map<Domain, Range>::range_lattice_tile() const
-{
-  auto res = isl::map::range_lattice_tile();
-  return typed::fixed_box<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<pair<Domain, Range>, Range> typed::map<Domain, Range>::range_map() const
-{
-  auto res = isl::map::range_map();
-  return typed::union_map<pair<Domain, Range>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, Range>::range_product(const typed::map<Domain, Range2> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, Range>::range_product(const typed::union_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::map::range_product(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, Range>::range_product(const typed::basic_map<Domain, Range2> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::fixed_box<Domain, Range> typed::map<Domain, Range>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::map::range_simple_fixed_box_hull();
-  return typed::fixed_box<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Range, Domain> typed::map<Domain, Range>::reverse() const
-{
-  auto res = isl::map::reverse();
-  return typed::map<Range, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::map<Domain, Range>::set_domain_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::map::set_domain_tuple(id);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::map<Domain2, Range> typed::map<Domain, Range>::set_domain_tuple(const std::string &id) const
-{
-  auto res = isl::map::set_domain_tuple(id);
-  return typed::map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::map::set_range_tuple(id);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Range>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::map::set_range_tuple(id);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Domain, Range> typed::map<Domain, Range>::space() const
-{
-  auto res = isl::map::space();
-  return typed::space<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::subtract(const typed::map<Domain, Range> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::subtract(const typed::union_map<Domain, Range> &umap2) const
-{
-  auto res = isl::map::subtract(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::subtract(const typed::basic_map<Domain, Range> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::subtract_domain(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::map::subtract_domain(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::subtract_range(const typed::union_set<Range> &dom) const
-{
-  auto res = isl::map::subtract_range(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::to_union_map() const
-{
-  auto res = isl::map::to_union_map();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::unite(const typed::map<Domain, Range> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::map<Domain, Range>::unite(const typed::union_map<Domain, Range> &umap2) const
-{
-  auto res = isl::map::unite(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::unite(const typed::basic_map<Domain, Range> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::universe(const typed::space<Domain, Range> &space)
-{
-  auto res = isl::map::universe(space);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::upper_bound(const typed::multi_pw_aff<Domain, Range> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::upper_bound(const typed::aff<Domain, Range> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::upper_bound(const typed::multi_aff<Domain, Range> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::upper_bound(const typed::pw_aff<Domain, Range> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map<Domain, Range>::upper_bound(const typed::pw_multi_aff<Domain, Range> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::map<Domain, Range>::wrap() const
-{
-  auto res = isl::map::wrap();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2>::map(const typed::basic_map<pair<Domain, Range>, Range2> &bmap)
-  : isl::map(bmap)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2>::map(const isl::ctx &ctx, const std::string &str)
-  : isl::map(ctx, str)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::apply_domain(const typed::map<pair<Domain, Range>, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const
-{
-  auto res = isl::map::apply_domain(umap2);
-  return typed::union_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::apply_range(const typed::map<Range2, Arg3> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::apply_range(const typed::union_map<Range2, Arg3> &umap2) const
-{
-  auto res = isl::map::apply_range(umap2);
-  return typed::union_map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::apply_range(const typed::basic_map<Range2, Arg3> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::as_map() const
-{
-  auto res = isl::map::as_map();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::as_multi_union_pw_aff() const
-{
-  auto res = isl::map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::as_pw_multi_aff() const
-{
-  auto res = isl::map::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::as_union_pw_multi_aff() const
-{
-  auto res = isl::map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<Range2> typed::map<pair<Domain, Range>, Range2>::bind_domain(const typed::multi_id<pair<Domain, Range>> &tuple) const
-{
-  auto res = isl::map::bind_domain(tuple);
-  return typed::set<Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<Domain, Range>> typed::map<pair<Domain, Range>, Range2>::bind_range(const typed::multi_id<Range2> &tuple) const
-{
-  auto res = isl::map::bind_range(tuple);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::coalesce() const
-{
-  auto res = isl::map::coalesce();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<pair<Domain, Range>, Range2>::curry() const
-{
-  auto res = isl::map::curry();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::detect_equalities() const
-{
-  auto res = isl::map::detect_equalities();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<Domain, Range>> typed::map<pair<Domain, Range>, Range2>::domain() const
-{
-  auto res = isl::map::domain();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, Range2> typed::map<pair<Domain, Range>, Range2>::domain_factor_domain() const
-{
-  auto res = isl::map::domain_factor_domain();
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Range, Range2> typed::map<pair<Domain, Range>, Range2>::domain_factor_range() const
-{
-  auto res = isl::map::domain_factor_range();
-  return typed::map<Range, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::map<pair<Domain, Range>, Range2>::domain_map() const
-{
-  auto res = isl::map::domain_map();
-  return typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::map<pair<Domain, Range>, Range2>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<pair<pair<Domain, Range>, Domain2>, Range2> typed::map<pair<Domain, Range>, Range2>::domain_product(const typed::map<Domain2, Range2> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> typed::map<pair<Domain, Range>, Range2>::domain_product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::map::domain_product(umap2);
-  return typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<pair<pair<Domain, Range>, Domain2>, Range2> typed::map<pair<Domain, Range>, Range2>::domain_product(const typed::basic_map<Domain2, Range2> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-bool typed::map<pair<Domain, Range>, Range2>::every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<pair<Domain, Range>, Range2>(arg0));
-  };
-  return isl::map::every_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const
-{
-  auto res = isl::map::extract_map(space);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Anonymous, Range2> typed::map<pair<Domain, Range>, Range2>::flatten_domain() const
-{
-  auto res = isl::map::flatten_domain();
-  return typed::map<Anonymous, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-void typed::map<pair<Domain, Range>, Range2>::foreach_basic_map(const std::function<void(typed::basic_map<pair<Domain, Range>, Range2>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<pair<Domain, Range>, Range2>(arg0));
-  };
-  return isl::map::foreach_basic_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-void typed::map<pair<Domain, Range>, Range2>::foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<pair<Domain, Range>, Range2>(arg0));
-  };
-  return isl::map::foreach_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist(const typed::map<pair<Domain, Range>, Range2> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist_domain(const typed::set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const
-{
-  auto res = isl::map::gist_domain(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist_domain(const typed::basic_set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist_domain(const typed::point<pair<Domain, Range>> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect(const typed::map<pair<Domain, Range>, Range2> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::map::intersect(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain(const typed::set<pair<Domain, Range>> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain(const typed::space<pair<Domain, Range>> &space) const
-{
-  auto res = isl::map::intersect_domain(space);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const
-{
-  auto res = isl::map::intersect_domain(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain(const typed::basic_set<pair<Domain, Range>> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain(const typed::point<pair<Domain, Range>> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_params(const typed::basic_set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_params(const typed::point<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_range(const typed::set<Range2> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_range(const typed::space<Range2> &space) const
-{
-  auto res = isl::map::intersect_range(space);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_range(const typed::union_set<Range2> &uset) const
-{
-  auto res = isl::map::intersect_range(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_range(const typed::basic_set<Range2> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_range(const typed::point<Range2> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lexmax() const
-{
-  auto res = isl::map::lexmax();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lexmin() const
-{
-  auto res = isl::map::lexmin();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lower_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lower_bound(const typed::aff<pair<Domain, Range>, Range2> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lower_bound(const typed::multi_aff<pair<Domain, Range>, Range2> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lower_bound(const typed::pw_aff<pair<Domain, Range>, Range2> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lower_bound(const typed::pw_multi_aff<pair<Domain, Range>, Range2> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map_list<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::map_list() const
-{
-  auto res = isl::map::map_list();
-  return typed::map_list<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::max_multi_pw_aff() const
-{
-  auto res = isl::map::max_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::min_multi_pw_aff() const
-{
-  auto res = isl::map::min_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
-{
-  auto res = isl::map::preimage_domain(ma);
-  return typed::map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
-{
-  auto res = isl::map::preimage_domain(mpa);
-  return typed::map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
-{
-  auto res = isl::map::preimage_domain(pma);
-  return typed::map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
-{
-  auto res = isl::map::preimage_domain(upma);
-  return typed::union_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const
-{
-  auto res = isl::map::preimage_range(ma);
-  return typed::map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const
-{
-  auto res = isl::map::preimage_range(pma);
-  return typed::map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const
-{
-  auto res = isl::map::preimage_range(upma);
-  return typed::union_map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::product(const typed::map<Domain2, Arg3> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::product(const typed::union_map<Domain2, Arg3> &umap2) const
-{
-  auto res = isl::map::product(umap2);
-  return typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::product(const typed::basic_map<Domain2, Arg3> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::project_out_all_params() const
-{
-  auto res = isl::map::project_out_all_params();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<Range2> typed::map<pair<Domain, Range>, Range2>::range() const
-{
-  auto res = isl::map::range();
-  return typed::set<Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::fixed_box<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::range_lattice_tile() const
-{
-  auto res = isl::map::range_lattice_tile();
-  return typed::fixed_box<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> typed::map<pair<Domain, Range>, Range2>::range_map() const
-{
-  auto res = isl::map::range_map();
-  return typed::union_map<pair<pair<Domain, Range>, Range2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<pair<Domain, Range>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::range_product(const typed::map<pair<Domain, Range>, Arg3> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const
-{
-  auto res = isl::map::range_product(umap2);
-  return typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<pair<Domain, Range>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::range_product(const typed::basic_map<pair<Domain, Range>, Arg3> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::fixed_box<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::map::range_simple_fixed_box_hull();
-  return typed::fixed_box<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Range2, pair<Domain, Range>> typed::map<pair<Domain, Range>, Range2>::reverse() const
-{
-  auto res = isl::map::reverse();
-  return typed::map<Range2, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<Domain, Range>, Arg2> typed::map<pair<Domain, Range>, Range2>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::map::set_range_tuple(id);
-  return typed::map<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<Domain, Range>, Arg2> typed::map<pair<Domain, Range>, Range2>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::map::set_range_tuple(id);
-  return typed::map<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::space() const
-{
-  auto res = isl::map::space();
-  return typed::space<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::subtract(const typed::map<pair<Domain, Range>, Range2> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::map::subtract(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::subtract(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const
-{
-  auto res = isl::map::subtract_domain(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::subtract_range(const typed::union_set<Range2> &dom) const
-{
-  auto res = isl::map::subtract_range(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::to_union_map() const
-{
-  auto res = isl::map::to_union_map();
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::unite(const typed::map<pair<Domain, Range>, Range2> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::map::unite(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::unite(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::universe(const typed::space<pair<Domain, Range>, Range2> &space)
-{
-  auto res = isl::map::universe(space);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::upper_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::upper_bound(const typed::aff<pair<Domain, Range>, Range2> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::upper_bound(const typed::multi_aff<pair<Domain, Range>, Range2> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::upper_bound(const typed::pw_aff<pair<Domain, Range>, Range2> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::upper_bound(const typed::pw_multi_aff<pair<Domain, Range>, Range2> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<pair<Domain, Range>, Range2>> typed::map<pair<Domain, Range>, Range2>::wrap() const
-{
-  auto res = isl::map::wrap();
-  return typed::set<pair<pair<Domain, Range>, Range2>>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain>::map(const typed::basic_map<Domain, Domain> &bmap)
-  : isl::map(bmap)
-{
-}
-
-template <typename Domain>
-typed::map<Domain, Domain>::map(const isl::ctx &ctx, const std::string &str)
-  : isl::map(ctx, str)
-{
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::map<Domain, Domain>::apply_domain(const typed::map<Domain, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<Domain2, Domain> typed::map<Domain, Domain>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::map::apply_domain(umap2);
-  return typed::union_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::map<Domain, Domain>::apply_domain(const typed::basic_map<Domain, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Domain>::apply_range(const typed::map<Domain, Range2> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::map<Domain, Domain>::apply_range(const typed::union_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::map::apply_range(umap2);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Domain>::apply_range(const typed::basic_map<Domain, Range2> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::as_map() const
-{
-  auto res = isl::map::as_map();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Domain> typed::map<Domain, Domain>::as_multi_union_pw_aff() const
-{
-  auto res = isl::map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Domain> typed::map<Domain, Domain>::as_pw_multi_aff() const
-{
-  auto res = isl::map::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Domain> typed::map<Domain, Domain>::as_union_pw_multi_aff() const
-{
-  auto res = isl::map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::map<Domain, Domain>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::map::bind_domain(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::map<Domain, Domain>::bind_range(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::map::bind_range(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::coalesce() const
-{
-  auto res = isl::map::coalesce();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::map<Domain, Domain>::deltas() const
-{
-  auto res = isl::map::deltas();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::detect_equalities() const
-{
-  auto res = isl::map::detect_equalities();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::map<Domain, Domain>::domain() const
-{
-  auto res = isl::map::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<pair<Domain, Domain>, Domain> typed::map<Domain, Domain>::domain_map() const
-{
-  auto res = isl::map::domain_map();
-  return typed::union_map<pair<Domain, Domain>, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> typed::map<Domain, Domain>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, Domain>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<pair<Domain, Domain2>, Domain> typed::map<Domain, Domain>::domain_product(const typed::map<Domain2, Domain> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<Domain, Domain2>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, Domain> typed::map<Domain, Domain>::domain_product(const typed::union_map<Domain2, Domain> &umap2) const
-{
-  auto res = isl::map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<pair<Domain, Domain2>, Domain> typed::map<Domain, Domain>::domain_product(const typed::basic_map<Domain2, Domain> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<Domain, Domain2>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::eq_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const
-{
-  auto res = isl::map::eq_at(mupa);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::eq_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::multi_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::eq_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::eq_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::pw_multi_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::eq_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-bool typed::map<Domain, Domain>::every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<Domain, Domain>(arg0));
-  };
-  return isl::map::every_map(lambda);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::extract_map(const typed::space<Domain, Domain> &space) const
-{
-  auto res = isl::map::extract_map(space);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-void typed::map<Domain, Domain>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<Domain, Domain>(arg0));
-  };
-  return isl::map::foreach_basic_map(lambda);
-}
-
-template <typename Domain>
-void typed::map<Domain, Domain>::foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<Domain, Domain>(arg0));
-  };
-  return isl::map::foreach_map(lambda);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::gist(const typed::map<Domain, Domain> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::gist(const typed::union_map<Domain, Domain> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::gist(const typed::basic_map<Domain, Domain> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::gist_domain(const typed::set<Domain> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::gist_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::map::gist_domain(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::gist_domain(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::gist_domain(const typed::point<Domain> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect(const typed::map<Domain, Domain> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::intersect(const typed::union_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::map::intersect(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect(const typed::basic_map<Domain, Domain> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::map::intersect_domain(space);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::map::intersect_domain(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_domain(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_domain(const typed::point<Domain> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_params(const typed::basic_set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_params(const typed::point<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_range(const typed::set<Domain> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::intersect_range(const typed::space<Domain> &space) const
-{
-  auto res = isl::map::intersect_range(space);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::intersect_range(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::map::intersect_range(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_range(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_range(const typed::point<Domain> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_ge_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_ge_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_ge_at(const typed::aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_ge_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_ge_at(const typed::multi_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_ge_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_ge_at(const typed::pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_ge_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_ge_at(const typed::pw_multi_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_ge_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_gt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_gt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_gt_at(const typed::aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_gt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_gt_at(const typed::multi_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_gt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_gt_at(const typed::pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_gt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_gt_at(const typed::pw_multi_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_gt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_le_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_le_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_le_at(const typed::aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_le_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_le_at(const typed::multi_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_le_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_le_at(const typed::pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_le_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_le_at(const typed::pw_multi_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_le_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_lt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_lt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_lt_at(const typed::aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_lt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_lt_at(const typed::multi_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_lt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_lt_at(const typed::pw_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_lt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_lt_at(const typed::pw_multi_aff<Domain, Range> &mpa) const
-{
-  auto res = isl::map::lex_lt_at(mpa);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lexmax() const
-{
-  auto res = isl::map::lexmax();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Domain> typed::map<Domain, Domain>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lexmin() const
-{
-  auto res = isl::map::lexmin();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Domain> typed::map<Domain, Domain>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lower_bound(const typed::multi_pw_aff<Domain, Domain> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lower_bound(const typed::aff<Domain, Domain> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lower_bound(const typed::multi_aff<Domain, Domain> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lower_bound(const typed::pw_aff<Domain, Domain> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::lower_bound(const typed::pw_multi_aff<Domain, Domain> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map_list<Domain, Domain> typed::map<Domain, Domain>::map_list() const
-{
-  auto res = isl::map::map_list();
-  return typed::map_list<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Domain> typed::map<Domain, Domain>::max_multi_pw_aff() const
-{
-  auto res = isl::map::max_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Domain> typed::map<Domain, Domain>::min_multi_pw_aff() const
-{
-  auto res = isl::map::min_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::map<Domain, Domain>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::map::preimage_domain(ma);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::map<Domain, Domain>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::map::preimage_domain(mpa);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::map<Domain, Domain>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::map::preimage_domain(pma);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<Domain2, Domain> typed::map<Domain, Domain>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::map::preimage_domain(upma);
-  return typed::union_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Domain>::preimage_range(const typed::multi_aff<Range2, Domain> &ma) const
-{
-  auto res = isl::map::preimage_range(ma);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Domain>::preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const
-{
-  auto res = isl::map::preimage_range(pma);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::map<Domain, Domain>::preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const
-{
-  auto res = isl::map::preimage_range(upma);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::map<Domain, Domain>::product(const typed::map<Domain2, Range2> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::map<Domain, Domain>::product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::map<Domain, Domain>::product(const typed::basic_map<Domain2, Range2> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::project_out_all_params() const
-{
-  auto res = isl::map::project_out_all_params();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::map<Domain, Domain>::range() const
-{
-  auto res = isl::map::range();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::fixed_box<Domain, Domain> typed::map<Domain, Domain>::range_lattice_tile() const
-{
-  auto res = isl::map::range_lattice_tile();
-  return typed::fixed_box<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<pair<Domain, Domain>, Domain> typed::map<Domain, Domain>::range_map() const
-{
-  auto res = isl::map::range_map();
-  return typed::union_map<pair<Domain, Domain>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, pair<Domain, Range2>> typed::map<Domain, Domain>::range_product(const typed::map<Domain, Range2> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<Domain, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, pair<Domain, Range2>> typed::map<Domain, Domain>::range_product(const typed::union_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::map::range_product(umap2);
-  return typed::union_map<Domain, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, pair<Domain, Range2>> typed::map<Domain, Domain>::range_product(const typed::basic_map<Domain, Range2> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<Domain, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-typed::fixed_box<Domain, Domain> typed::map<Domain, Domain>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::map::range_simple_fixed_box_hull();
-  return typed::fixed_box<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::reverse() const
-{
-  auto res = isl::map::reverse();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::map<Domain, Domain>::set_domain_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::map::set_domain_tuple(id);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::map<Domain2, Domain> typed::map<Domain, Domain>::set_domain_tuple(const std::string &id) const
-{
-  auto res = isl::map::set_domain_tuple(id);
-  return typed::map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::map::set_range_tuple(id);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, Domain>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::map::set_range_tuple(id);
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-typed::space<Domain, Domain> typed::map<Domain, Domain>::space() const
-{
-  auto res = isl::map::space();
-  return typed::space<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::subtract(const typed::map<Domain, Domain> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::subtract(const typed::union_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::map::subtract(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::subtract(const typed::basic_map<Domain, Domain> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::subtract_domain(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::map::subtract_domain(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::subtract_range(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::map::subtract_range(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::to_union_map() const
-{
-  auto res = isl::map::to_union_map();
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::unite(const typed::map<Domain, Domain> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::map<Domain, Domain>::unite(const typed::union_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::map::unite(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::unite(const typed::basic_map<Domain, Domain> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::universe(const typed::space<Domain, Domain> &space)
-{
-  auto res = isl::map::universe(space);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::upper_bound(const typed::multi_pw_aff<Domain, Domain> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::upper_bound(const typed::aff<Domain, Domain> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::upper_bound(const typed::multi_aff<Domain, Domain> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::upper_bound(const typed::pw_aff<Domain, Domain> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::map<Domain, Domain>::upper_bound(const typed::pw_multi_aff<Domain, Domain> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<pair<Domain, Domain>> typed::map<Domain, Domain>::wrap() const
-{
-  auto res = isl::map::wrap();
-  return typed::set<pair<Domain, Domain>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>>::map(const typed::basic_map<Domain, pair<Range, Range2>> &bmap)
-  : isl::map(bmap)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>>::map(const isl::ctx &ctx, const std::string &str)
-  : isl::map(ctx, str)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::apply_domain(const typed::map<Domain, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::apply_domain(const typed::basic_map<Domain, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg3> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const
-{
-  auto res = isl::map::apply_range(umap2);
-  return typed::union_map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::as_map() const
-{
-  auto res = isl::map::as_map();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::as_pw_multi_aff() const
-{
-  auto res = isl::map::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::as_union_pw_multi_aff() const
-{
-  auto res = isl::map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::map::bind_domain(tuple);
-  return typed::set<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<Domain> typed::map<Domain, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
-{
-  auto res = isl::map::bind_range(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::map::coalesce();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::detect_equalities() const
-{
-  auto res = isl::map::detect_equalities();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<Domain> typed::map<Domain, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::map::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> typed::map<Domain, pair<Range, Range2>>::domain_map() const
-{
-  auto res = isl::map::domain_map();
-  return typed::union_map<pair<Domain, pair<Range, Range2>>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> typed::map<Domain, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-bool typed::map<Domain, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<Domain, pair<Range, Range2>>(arg0));
-  };
-  return isl::map::every_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const
-{
-  auto res = isl::map::extract_map(space);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, Anonymous> typed::map<Domain, pair<Range, Range2>>::flatten_range() const
-{
-  auto res = isl::map::flatten_range();
-  return typed::map<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-void typed::map<Domain, pair<Range, Range2>>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, pair<Range, Range2>>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<Domain, pair<Range, Range2>>(arg0));
-  };
-  return isl::map::foreach_basic_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-void typed::map<Domain, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<Domain, pair<Range, Range2>>(arg0));
-  };
-  return isl::map::foreach_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist(const typed::map<Domain, pair<Range, Range2>> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist_domain(const typed::set<Domain> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::map::gist_domain(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist_domain(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist_domain(const typed::point<Domain> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect(const typed::map<Domain, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::map::intersect(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::map::intersect_domain(space);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::map::intersect_domain(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_domain(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_domain(const typed::point<Domain> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_params(const typed::point<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range(const typed::set<pair<Range, Range2>> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
-{
-  auto res = isl::map::intersect_range(space);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
-{
-  auto res = isl::map::intersect_range(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range(const typed::basic_set<pair<Range, Range2>> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range(const typed::point<pair<Range, Range2>> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lexmax() const
-{
-  auto res = isl::map::lexmax();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lexmin() const
-{
-  auto res = isl::map::lexmin();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lower_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lower_bound(const typed::aff<Domain, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lower_bound(const typed::multi_aff<Domain, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lower_bound(const typed::pw_aff<Domain, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lower_bound(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map_list<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::map_list() const
-{
-  auto res = isl::map::map_list();
-  return typed::map_list<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::max_multi_pw_aff() const
-{
-  auto res = isl::map::max_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::min_multi_pw_aff() const
-{
-  auto res = isl::map::min_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::map::preimage_domain(ma);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::map::preimage_domain(mpa);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::map::preimage_domain(pma);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::map::preimage_domain(upma);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const
-{
-  auto res = isl::map::preimage_range(ma);
-  return typed::map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const
-{
-  auto res = isl::map::preimage_range(pma);
-  return typed::map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const
-{
-  auto res = isl::map::preimage_range(upma);
-  return typed::union_map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::product(const typed::map<Domain2, Arg3> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg3> &umap2) const
-{
-  auto res = isl::map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::product(const typed::basic_map<Domain2, Arg3> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::project_out_all_params() const
-{
-  auto res = isl::map::project_out_all_params();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::range() const
-{
-  auto res = isl::map::range();
-  return typed::set<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, Range> typed::map<Domain, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::map::range_factor_domain();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, Range2> typed::map<Domain, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::map::range_factor_range();
-  return typed::map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::fixed_box<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::range_lattice_tile() const
-{
-  auto res = isl::map::range_lattice_tile();
-  return typed::fixed_box<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::range_map() const
-{
-  auto res = isl::map::range_map();
-  return typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<Domain, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::range_product(const typed::map<Domain, Arg3> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::range_product(const typed::union_map<Domain, Arg3> &umap2) const
-{
-  auto res = isl::map::range_product(umap2);
-  return typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::map<Domain, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::range_product(const typed::basic_map<Domain, Arg3> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range2, Range>> typed::map<Domain, pair<Range, Range2>>::range_reverse() const
-{
-  auto res = isl::map::range_reverse();
-  return typed::map<Domain, pair<Range2, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::fixed_box<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::map::range_simple_fixed_box_hull();
-  return typed::fixed_box<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Range, Range2>, Domain> typed::map<Domain, pair<Range, Range2>>::reverse() const
-{
-  auto res = isl::map::reverse();
-  return typed::map<pair<Range, Range2>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::set_domain_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::map::set_domain_tuple(id);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::set_domain_tuple(const std::string &id) const
-{
-  auto res = isl::map::set_domain_tuple(id);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::space() const
-{
-  auto res = isl::map::space();
-  return typed::space<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::subtract(const typed::map<Domain, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::map::subtract(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::subtract(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::map::subtract_domain(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::map::subtract_range(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::to_union_map() const
-{
-  auto res = isl::map::to_union_map();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::map<Domain, pair<Range, Range2>>::uncurry() const
-{
-  auto res = isl::map::uncurry();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::unite(const typed::map<Domain, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::map::unite(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::unite(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::universe(const typed::space<Domain, pair<Range, Range2>> &space)
-{
-  auto res = isl::map::universe(space);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::upper_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::upper_bound(const typed::aff<Domain, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::upper_bound(const typed::multi_aff<Domain, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::upper_bound(const typed::pw_aff<Domain, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::upper_bound(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<pair<Domain, pair<Range, Range2>>> typed::map<Domain, pair<Range, Range2>>::wrap() const
-{
-  auto res = isl::map::wrap();
-  return typed::set<pair<Domain, pair<Range, Range2>>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>>::map(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap)
-  : isl::map(bmap)
-{
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>>::map(const isl::ctx &ctx, const std::string &str)
-  : isl::map(ctx, str)
-{
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
-{
-  auto res = isl::map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::map<pair<T1, T2>, Range2> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
-{
-  auto res = isl::map::apply_range(umap2);
-  return typed::union_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::basic_map<pair<T1, T2>, Range2> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::as_map() const
-{
-  auto res = isl::map::as_map();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::as_pw_multi_aff() const
-{
-  auto res = isl::map::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::as_union_pw_multi_aff() const
-{
-  auto res = isl::map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
-{
-  auto res = isl::map::bind_domain(tuple);
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const
-{
-  auto res = isl::map::bind_range(tuple);
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::coalesce() const
-{
-  auto res = isl::map::coalesce();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<T1, pair<T2, pair<T1, T2>>> typed::map<pair<T1, T2>, pair<T1, T2>>::curry() const
-{
-  auto res = isl::map::curry();
-  return typed::map<T1, pair<T2, pair<T1, T2>>>(res);
-}
-
-template <typename T1, typename T2>
-typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::deltas() const
-{
-  auto res = isl::map::deltas();
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::detect_equalities() const
-{
-  auto res = isl::map::detect_equalities();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain() const
-{
-  auto res = isl::map::domain();
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<T1, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_factor_domain() const
-{
-  auto res = isl::map::domain_factor_domain();
-  return typed::map<T1, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<T2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_factor_range() const
-{
-  auto res = isl::map::domain_factor_range();
-  return typed::map<T2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_map() const
-{
-  auto res = isl::map::domain_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::map<Domain2, pair<T1, T2>> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::map::domain_product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::basic_map<Domain2, pair<T1, T2>> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::eq_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const
-{
-  auto res = isl::map::eq_at(mupa);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::eq_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::eq_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::eq_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::eq_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-bool typed::map<pair<T1, T2>, pair<T1, T2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
-  };
-  return isl::map::every_map(lambda);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const
-{
-  auto res = isl::map::extract_map(space);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<Anonymous, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::flatten_domain() const
-{
-  auto res = isl::map::flatten_domain();
-  return typed::map<Anonymous, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, Anonymous> typed::map<pair<T1, T2>, pair<T1, T2>>::flatten_range() const
-{
-  auto res = isl::map::flatten_range();
-  return typed::map<pair<T1, T2>, Anonymous>(res);
-}
-
-template <typename T1, typename T2>
-void typed::map<pair<T1, T2>, pair<T1, T2>>::foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<T1, T2>>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<pair<T1, T2>, pair<T1, T2>>(arg0));
-  };
-  return isl::map::foreach_basic_map(lambda);
-}
-
-template <typename T1, typename T2>
-void typed::map<pair<T1, T2>, pair<T1, T2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
-  };
-  return isl::map::foreach_map(lambda);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::set<pair<T1, T2>> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::basic_set<pair<T1, T2>> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::point<pair<T1, T2>> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::map::intersect(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::map::intersect_domain(space);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::map::intersect_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::point<pair<T1, T2>> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::basic_set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::point<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::set<pair<T1, T2>> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::map::intersect_range(space);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::map::intersect_range(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::basic_set<pair<T1, T2>> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::point<pair<T1, T2>> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_ge_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_ge_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_ge_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_ge_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_ge_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_gt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_gt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_gt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_gt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_gt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_le_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_le_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_le_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_le_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_le_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_lt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_lt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_lt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::pw_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_lt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const
-{
-  auto res = isl::map::lex_lt_at(mpa);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lexmax() const
-{
-  auto res = isl::map::lexmax();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lexmin() const
-{
-  auto res = isl::map::lexmin();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::aff<pair<T1, T2>, pair<T1, T2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::multi_aff<pair<T1, T2>, pair<T1, T2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map_list<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::map_list() const
-{
-  auto res = isl::map::map_list();
-  return typed::map_list<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::max_multi_pw_aff() const
-{
-  auto res = isl::map::max_multi_pw_aff();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::min_multi_pw_aff() const
-{
-  auto res = isl::map::min_multi_pw_aff();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
-{
-  auto res = isl::map::preimage_domain(ma);
-  return typed::map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
-{
-  auto res = isl::map::preimage_domain(mpa);
-  return typed::map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
-{
-  auto res = isl::map::preimage_domain(pma);
-  return typed::map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
-{
-  auto res = isl::map::preimage_domain(upma);
-  return typed::union_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const
-{
-  auto res = isl::map::preimage_range(ma);
-  return typed::map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const
-{
-  auto res = isl::map::preimage_range(pma);
-  return typed::map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const
-{
-  auto res = isl::map::preimage_range(upma);
-  return typed::union_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2, typename Range2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::product(const typed::map<Domain2, Range2> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::map::product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2, typename Range2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::product(const typed::basic_map<Domain2, Range2> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::project_out_all_params() const
-{
-  auto res = isl::map::project_out_all_params();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range() const
-{
-  auto res = isl::map::range();
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, T1> typed::map<pair<T1, T2>, pair<T1, T2>>::range_factor_domain() const
-{
-  auto res = isl::map::range_factor_domain();
-  return typed::map<pair<T1, T2>, T1>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, T2> typed::map<pair<T1, T2>, pair<T1, T2>>::range_factor_range() const
-{
-  auto res = isl::map::range_factor_range();
-  return typed::map<pair<T1, T2>, T2>(res);
-}
-
-template <typename T1, typename T2>
-typed::fixed_box<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_lattice_tile() const
-{
-  auto res = isl::map::range_lattice_tile();
-  return typed::fixed_box<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_map() const
-{
-  auto res = isl::map::range_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::map<pair<T1, T2>, Range2> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
-{
-  auto res = isl::map::range_product(umap2);
-  return typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::basic_map<pair<T1, T2>, Range2> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T2, T1>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_reverse() const
-{
-  auto res = isl::map::range_reverse();
-  return typed::map<pair<T1, T2>, pair<T2, T1>>(res);
-}
-
-template <typename T1, typename T2>
-typed::fixed_box<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::map::range_simple_fixed_box_hull();
-  return typed::fixed_box<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::reverse() const
-{
-  auto res = isl::map::reverse();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::space<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::space() const
-{
-  auto res = isl::map::space();
-  return typed::space<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::map::subtract(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::union_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::to_union_map() const
-{
-  auto res = isl::map::to_union_map();
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<pair<T1, T2>, T1>, T2> typed::map<pair<T1, T2>, pair<T1, T2>>::uncurry() const
-{
-  auto res = isl::map::uncurry();
-  return typed::map<pair<pair<T1, T2>, T1>, T2>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::map::unite(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::universe(const typed::space<pair<T1, T2>, pair<T1, T2>> &space)
-{
-  auto res = isl::map::universe(space);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::aff<pair<T1, T2>, pair<T1, T2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::multi_aff<pair<T1, T2>, pair<T1, T2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::set<pair<pair<T1, T2>, pair<T1, T2>>> typed::map<pair<T1, T2>, pair<T1, T2>>::wrap() const
-{
-  auto res = isl::map::wrap();
-  return typed::set<pair<pair<T1, T2>, pair<T1, T2>>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>>::map(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap)
-  : isl::map(bmap)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>>::map(const isl::ctx &ctx, const std::string &str)
-  : isl::map(ctx, str)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
-{
-  auto res = isl::map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &map2) const
-{
-  auto res = isl::map::apply_domain(map2);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg2> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const
-{
-  auto res = isl::map::apply_range(umap2);
-  return typed::union_map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &map2) const
-{
-  auto res = isl::map::apply_range(map2);
-  return typed::map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::as_map() const
-{
-  auto res = isl::map::as_map();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::as_pw_multi_aff() const
-{
-  auto res = isl::map::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::as_union_pw_multi_aff() const
-{
-  auto res = isl::map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
-{
-  auto res = isl::map::bind_domain(tuple);
-  return typed::set<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
-{
-  auto res = isl::map::bind_range(tuple);
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::map::coalesce();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<T1, pair<T2, pair<Range, Range2>>> typed::map<pair<T1, T2>, pair<Range, Range2>>::curry() const
-{
-  auto res = isl::map::curry();
-  return typed::map<T1, pair<T2, pair<Range, Range2>>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::detect_equalities() const
-{
-  auto res = isl::map::detect_equalities();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::map::domain();
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<T1, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_domain() const
-{
-  auto res = isl::map::domain_factor_domain();
-  return typed::map<T1, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<T2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_range() const
-{
-  auto res = isl::map::domain_factor_range();
-  return typed::map<T2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_map() const
-{
-  auto res = isl::map::domain_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::map::domain_product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::domain_product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-bool typed::map<pair<T1, T2>, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
-  };
-  return isl::map::every_map(lambda);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
-{
-  auto res = isl::map::extract_map(space);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<Anonymous, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::flatten_domain() const
-{
-  auto res = isl::map::flatten_domain();
-  return typed::map<Anonymous, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, Anonymous> typed::map<pair<T1, T2>, pair<Range, Range2>>::flatten_range() const
-{
-  auto res = isl::map::flatten_range();
-  return typed::map<pair<T1, T2>, Anonymous>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-void typed::map<pair<T1, T2>, pair<Range, Range2>>::foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_map arg0) {
-    return fn(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(arg0));
-  };
-  return isl::map::foreach_basic_map(lambda);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-void typed::map<pair<T1, T2>, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
-  };
-  return isl::map::foreach_map(lambda);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const
-{
-  auto res = isl::map::gist(context);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::set<pair<T1, T2>> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::basic_set<pair<T1, T2>> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::point<pair<T1, T2>> &context) const
-{
-  auto res = isl::map::gist_domain(context);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::map::intersect(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::intersect(map2);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::map::intersect_domain(space);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::map::intersect_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::point<pair<T1, T2>> &set) const
-{
-  auto res = isl::map::intersect_domain(set);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::point<> &params) const
-{
-  auto res = isl::map::intersect_params(params);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::set<pair<Range, Range2>> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
-{
-  auto res = isl::map::intersect_range(space);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
-{
-  auto res = isl::map::intersect_range(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::basic_set<pair<Range, Range2>> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::point<pair<Range, Range2>> &set) const
-{
-  auto res = isl::map::intersect_range(set);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lexmax() const
-{
-  auto res = isl::map::lexmax();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::map::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lexmin() const
-{
-  auto res = isl::map::lexmin();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::map::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
-{
-  auto res = isl::map::lower_bound(lower);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map_list<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::map_list() const
-{
-  auto res = isl::map::map_list();
-  return typed::map_list<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::max_multi_pw_aff() const
-{
-  auto res = isl::map::max_multi_pw_aff();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::min_multi_pw_aff() const
-{
-  auto res = isl::map::min_multi_pw_aff();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
-{
-  auto res = isl::map::preimage_domain(ma);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
-{
-  auto res = isl::map::preimage_domain(mpa);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
-{
-  auto res = isl::map::preimage_domain(pma);
-  return typed::map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
-{
-  auto res = isl::map::preimage_domain(upma);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const
-{
-  auto res = isl::map::preimage_range(ma);
-  return typed::map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const
-{
-  auto res = isl::map::preimage_range(pma);
-  return typed::map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const
-{
-  auto res = isl::map::preimage_range(upma);
-  return typed::union_map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::map<Domain2, Arg2> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg2> &umap2) const
-{
-  auto res = isl::map::product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::basic_map<Domain2, Arg2> &map2) const
-{
-  auto res = isl::map::product(map2);
-  return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::project_out_all_params() const
-{
-  auto res = isl::map::project_out_all_params();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range() const
-{
-  auto res = isl::map::range();
-  return typed::set<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, Range> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::map::range_factor_domain();
-  return typed::map<pair<T1, T2>, Range>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::map::range_factor_range();
-  return typed::map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_lattice_tile() const
-{
-  auto res = isl::map::range_lattice_tile();
-  return typed::fixed_box<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_map() const
-{
-  auto res = isl::map::range_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::map<pair<T1, T2>, Arg2> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const
-{
-  auto res = isl::map::range_product(umap2);
-  return typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::basic_map<pair<T1, T2>, Arg2> &map2) const
-{
-  auto res = isl::map::range_product(map2);
-  return typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range2, Range>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_reverse() const
-{
-  auto res = isl::map::range_reverse();
-  return typed::map<pair<T1, T2>, pair<Range2, Range>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_simple_fixed_box_hull() const
-{
-  auto res = isl::map::range_simple_fixed_box_hull();
-  return typed::fixed_box<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<Range, Range2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::reverse() const
-{
-  auto res = isl::map::reverse();
-  return typed::map<pair<Range, Range2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::space() const
-{
-  auto res = isl::map::space();
-  return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::map::subtract(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::subtract(map2);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::to_union_map() const
-{
-  auto res = isl::map::to_union_map();
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<pair<T1, T2>, Range>, Range2> typed::map<pair<T1, T2>, pair<Range, Range2>>::uncurry() const
-{
-  auto res = isl::map::uncurry();
-  return typed::map<pair<pair<T1, T2>, Range>, Range2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::map::unite(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const
-{
-  auto res = isl::map::unite(map2);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::universe(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space)
-{
-  auto res = isl::map::universe(space);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
-{
-  auto res = isl::map::upper_bound(upper);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<pair<T1, T2>, pair<Range, Range2>>> typed::map<pair<T1, T2>, pair<Range, Range2>>::wrap() const
-{
-  auto res = isl::map::wrap();
-  return typed::set<pair<pair<T1, T2>, pair<Range, Range2>>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map_list<Domain, Range>::map_list(const isl::ctx &ctx, int n)
-  : isl::map_list(ctx, n)
-{
-}
-
-template <typename Domain, typename Range>
-typed::map_list<Domain, Range>::map_list(const typed::map<Domain, Range> &el)
-  : isl::map_list(el)
-{
-}
-
-template <typename Domain, typename Range>
-typed::map_list<Domain, Range>::map_list(const isl::ctx &ctx, const std::string &str)
-  : isl::map_list(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-typed::map_list<Domain, Range> typed::map_list<Domain, Range>::add(const typed::map<Domain, Range> &el) const
-{
-  auto res = isl::map_list::add(el);
-  return typed::map_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map_list<Domain, Range> typed::map_list<Domain, Range>::add(const typed::basic_map<Domain, Range> &el) const
-{
-  auto res = isl::map_list::add(el);
-  return typed::map_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::map_list<Domain, Range>::at(int index) const
-{
-  auto res = isl::map_list::at(index);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map_list<Domain, Range> typed::map_list<Domain, Range>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::map_list::drop(first, n);
-  return typed::map_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-void typed::map_list<Domain, Range>::foreach(const std::function<void(typed::map<Domain, Range>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<Domain, Range>(arg0));
-  };
-  return isl::map_list::foreach(lambda);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain>::multi_aff(const typed::aff<Domain> &aff)
-  : isl::multi_aff(aff)
-{
-}
-
-template <typename Domain>
-typed::multi_aff<Domain>::multi_aff(const typed::space<Domain> &space, const typed::aff_list<Anonymous> &list)
-  : isl::multi_aff(space, list)
-{
-}
-
-template <typename Domain>
-typed::multi_aff<Domain>::multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_aff(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::add(const typed::multi_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::add(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::add(const typed::multi_union_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::add(const typed::pw_multi_aff<Domain> &pma2) const
-{
-  auto res = isl::multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::multi_aff<Domain>::add(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::add(const typed::aff<Domain> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::add_constant(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::multi_aff::add_constant(mv);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::add_constant(const typed::val<Domain> &v) const
-{
-  auto res = isl::multi_aff::add_constant(v);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::add_constant(long v) const
-{
-  auto res = isl::multi_aff::add_constant(v);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_pw_multi_aff<Range> typed::multi_aff<Domain>::apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::as_multi_aff() const
-{
-  auto res = isl::multi_aff::as_multi_aff();
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::as_multi_union_pw_aff() const
-{
-  auto res = isl::multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::as_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::multi_aff<Domain>::as_set() const
-{
-  auto res = isl::multi_aff::as_set();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::aff<Anonymous> typed::multi_aff<Domain>::at(int pos) const
-{
-  auto res = isl::multi_aff::at(pos);
-  return typed::aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::basic_set<> typed::multi_aff<Domain>::bind(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::multi_aff::bind(tuple);
-  return typed::basic_set<>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::coalesce() const
-{
-  auto res = isl::multi_aff::coalesce();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_aff<Domain>::constant_multi_val() const
-{
-  auto res = isl::multi_aff::constant_multi_val();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<> typed::multi_aff<Domain>::domain() const
-{
-  auto res = isl::multi_aff::domain();
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::extract_pw_multi_aff(const typed::space<Domain> &space) const
-{
-  auto res = isl::multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::floor() const
-{
-  auto res = isl::multi_aff::floor();
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::gist(const typed::set<> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::multi_aff<Domain>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::gist(const typed::basic_set<> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::gist(const typed::point<> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain, Domain> typed::multi_aff<Domain>::identity() const
-{
-  auto res = isl::multi_aff::identity();
-  return typed::multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::multi_aff<Arg1, Domain> typed::multi_aff<Domain>::insert_domain(const typed::space<Arg1> &domain) const
-{
-  auto res = isl::multi_aff::insert_domain(domain);
-  return typed::multi_aff<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::aff_list<Anonymous> typed::multi_aff<Domain>::list() const
-{
-  auto res = isl::multi_aff::list();
-  return typed::aff_list<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::max(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_aff::max(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_aff<Domain>::max_multi_val() const
-{
-  auto res = isl::multi_aff::max_multi_val();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::min(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_aff::min(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_aff<Domain>::min_multi_val() const
-{
-  auto res = isl::multi_aff::min_multi_val();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::neg() const
-{
-  auto res = isl::multi_aff::neg();
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::multi_aff<pair<Domain, Range>> typed::multi_aff<Domain>::product(const typed::multi_aff<Range> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::multi_aff<Domain>::product(const typed::multi_pw_aff<Range> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::multi_aff<Domain>::product(const typed::pw_multi_aff<Range> &pma2) const
-{
-  auto res = isl::multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::multi_aff<pair<Domain, Range>> typed::multi_aff<Domain>::product(const typed::aff<Range> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain> typed::multi_aff<Domain>::pw_multi_aff_list() const
-{
-  auto res = isl::multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::scale(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::multi_aff::scale(mv);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::scale(const typed::val<Domain> &v) const
-{
-  auto res = isl::multi_aff::scale(v);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::scale(long v) const
-{
-  auto res = isl::multi_aff::scale(v);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::scale_down(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::multi_aff::scale_down(mv);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::scale_down(const typed::val<Domain> &v) const
-{
-  auto res = isl::multi_aff::scale_down(v);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::scale_down(long v) const
-{
-  auto res = isl::multi_aff::scale_down(v);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::set_at(int pos, const typed::aff<Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::set_at(int pos, const typed::pw_aff<Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::multi_aff<Domain2> typed::multi_aff<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::multi_aff::set_range_tuple(id);
-  return typed::multi_aff<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::multi_aff<Domain2> typed::multi_aff<Domain>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::multi_aff::set_range_tuple(id);
-  return typed::multi_aff<Domain2>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::multi_aff<Domain>::space() const
-{
-  auto res = isl::multi_aff::space();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::sub(const typed::multi_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::sub(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::sub(const typed::multi_union_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::sub(const typed::pw_multi_aff<Domain> &pma2) const
-{
-  auto res = isl::multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::multi_aff<Domain>::sub(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_aff<Domain>::sub(const typed::aff<Domain> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::to_multi_pw_aff() const
-{
-  auto res = isl::multi_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::to_multi_union_pw_aff() const
-{
-  auto res = isl::multi_aff::to_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::to_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::to_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::multi_aff<Domain>::to_union_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::multi_aff<Arg1, Domain> typed::multi_aff<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
-{
-  auto res = isl::multi_aff::unbind_params_insert_domain(domain);
-  return typed::multi_aff<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::union_add(const typed::multi_pw_aff<Domain> &mpa2) const
-{
-  auto res = isl::multi_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const
-{
-  auto res = isl::multi_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::union_add(const typed::pw_multi_aff<Domain> &pma2) const
-{
-  auto res = isl::multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::multi_aff<Domain>::union_add(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range>::multi_aff(const typed::aff<Domain, Range> &aff)
-  : isl::multi_aff(aff)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range>::multi_aff(const typed::space<Domain, Range> &space, const typed::aff_list<Domain, Anonymous> &list)
-  : isl::multi_aff(space, list)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range>::multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_aff(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::multi_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::pw_multi_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add_constant(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_aff::add_constant(mv);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add_constant(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_aff::add_constant(v);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add_constant(long v) const
-{
-  auto res = isl::multi_aff::add_constant(v);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, Range2> typed::multi_aff<Domain, Range>::apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const
-{
-  auto res = isl::multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::multi_aff<Domain, Range>::as_map() const
-{
-  auto res = isl::multi_aff::as_map();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::as_multi_aff() const
-{
-  auto res = isl::multi_aff::as_multi_aff();
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::as_multi_union_pw_aff() const
-{
-  auto res = isl::multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::as_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::multi_aff<Domain, Range>::as_union_map() const
-{
-  auto res = isl::multi_aff::as_union_map();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::aff<Domain, Anonymous> typed::multi_aff<Domain, Range>::at(int pos) const
-{
-  auto res = isl::multi_aff::at(pos);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<Domain> typed::multi_aff<Domain, Range>::bind(const typed::multi_id<Range> &tuple) const
-{
-  auto res = isl::multi_aff::bind(tuple);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Range> typed::multi_aff<Domain, Range>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::multi_aff::bind_domain(tuple);
-  return typed::multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::coalesce() const
-{
-  auto res = isl::multi_aff::coalesce();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<Range> typed::multi_aff<Domain, Range>::constant_multi_val() const
-{
-  auto res = isl::multi_aff::constant_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Domain> typed::multi_aff<Domain, Range>::domain() const
-{
-  auto res = isl::multi_aff::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::extract_pw_multi_aff(const typed::space<Domain, Range> &space) const
-{
-  auto res = isl::multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::floor() const
-{
-  auto res = isl::multi_aff::floor();
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::gist(const typed::point<Domain> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::identity() const
-{
-  auto res = isl::multi_aff::identity();
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::aff_list<Domain, Anonymous> typed::multi_aff<Domain, Range>::list() const
-{
-  auto res = isl::multi_aff::list();
-  return typed::aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::max(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_aff::max(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<Range> typed::multi_aff<Domain, Range>::max_multi_val() const
-{
-  auto res = isl::multi_aff::max_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::min(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_aff::min(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<Range> typed::multi_aff<Domain, Range>::min_multi_val() const
-{
-  auto res = isl::multi_aff::min_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::neg() const
-{
-  auto res = isl::multi_aff::neg();
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_aff<Domain, Range>::product(const typed::multi_aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_aff<Domain, Range>::product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_aff<Domain, Range>::product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const
-{
-  auto res = isl::multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_aff<Domain, Range>::product(const typed::aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_aff<Domain2, Range> typed::multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain2, Domain> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Range> typed::multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_pw_aff<Domain2, Range> typed::multi_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const
-{
-  auto res = isl::multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Range> typed::multi_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain> &mpa2) const
-{
-  auto res = isl::multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::pw_multi_aff<Domain2, Range> typed::multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const
-{
-  auto res = isl::multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Range> typed::multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain> &pma2) const
-{
-  auto res = isl::multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, Range> typed::multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Range> typed::multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_aff<Domain2, Range> typed::multi_aff<Domain, Range>::pullback(const typed::aff<Domain2, Domain> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Range> typed::multi_aff<Domain, Range>::pullback(const typed::aff<Domain> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff_list<Domain, Range> typed::multi_aff<Domain, Range>::pw_multi_aff_list() const
-{
-  auto res = isl::multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, Range>::range_product(const typed::multi_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, Range>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, Range>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, Range>::range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const
-{
-  auto res = isl::multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, Range>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
-{
-  auto res = isl::multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, Range>::range_product(const typed::aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_aff::scale(mv);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_aff::scale(v);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale(long v) const
-{
-  auto res = isl::multi_aff::scale(v);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale_down(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_aff::scale_down(mv);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale_down(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_aff::scale_down(v);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale_down(long v) const
-{
-  auto res = isl::multi_aff::scale_down(v);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::set_at(int pos, const typed::aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_aff<Domain, Range2> typed::multi_aff<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::multi_aff::set_range_tuple(id);
-  return typed::multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_aff<Domain, Range2> typed::multi_aff<Domain, Range>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::multi_aff::set_range_tuple(id);
-  return typed::multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Domain, Range> typed::multi_aff<Domain, Range>::space() const
-{
-  auto res = isl::multi_aff::space();
-  return typed::space<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::multi_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::pw_multi_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::subtract_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::subtract_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::subtract_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::to_multi_pw_aff() const
-{
-  auto res = isl::multi_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::to_multi_union_pw_aff() const
-{
-  auto res = isl::multi_aff::to_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::to_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::to_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::to_union_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const
-{
-  auto res = isl::multi_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const
-{
-  auto res = isl::multi_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::union_add(const typed::pw_multi_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range>::multi_aff(const typed::aff<pair<Domain2, Range2>, Range> &aff)
-  : isl::multi_aff(aff)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range>::multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space, const typed::aff_list<pair<Domain2, Range2>, Anonymous> &list)
-  : isl::multi_aff(space, list)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range>::multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_aff(ctx, str)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::multi_aff::add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
-{
-  auto res = isl::multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_aff::add_constant(mv);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_aff::add_constant(v);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add_constant(long v) const
-{
-  auto res = isl::multi_aff::add_constant(v);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> typed::multi_aff<pair<Domain2, Range2>, Range>::apply(const typed::union_pw_multi_aff<Range, Arg2> &upma2) const
-{
-  auto res = isl::multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::map<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::as_map() const
-{
-  auto res = isl::multi_aff::as_map();
-  return typed::map<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::as_multi_aff() const
-{
-  auto res = isl::multi_aff::as_multi_aff();
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::as_multi_union_pw_aff() const
-{
-  auto res = isl::multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::as_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_map<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::as_union_map() const
-{
-  auto res = isl::multi_aff::as_union_map();
-  return typed::union_map<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::multi_aff<pair<Domain2, Range2>, Range>::at(int pos) const
-{
-  auto res = isl::multi_aff::at(pos);
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::basic_set<pair<Domain2, Range2>> typed::multi_aff<pair<Domain2, Range2>, Range>::bind(const typed::multi_id<Range> &tuple) const
-{
-  auto res = isl::multi_aff::bind(tuple);
-  return typed::basic_set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const
-{
-  auto res = isl::multi_aff::bind_domain(tuple);
-  return typed::multi_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<Range2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const
-{
-  auto res = isl::multi_aff::bind_domain_wrapped_domain(tuple);
-  return typed::multi_aff<Range2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::coalesce() const
-{
-  auto res = isl::multi_aff::coalesce();
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_val<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::constant_multi_val() const
-{
-  auto res = isl::multi_aff::constant_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::set<pair<Domain2, Range2>> typed::multi_aff<pair<Domain2, Range2>, Range>::domain() const
-{
-  auto res = isl::multi_aff::domain();
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space) const
-{
-  auto res = isl::multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::floor() const
-{
-  auto res = isl::multi_aff::floor();
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::set<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::union_set<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::basic_set<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::point<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::identity() const
-{
-  auto res = isl::multi_aff::identity();
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const
-{
-  auto res = isl::multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
-{
-  auto res = isl::multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::aff_list<pair<Domain2, Range2>, Anonymous> typed::multi_aff<pair<Domain2, Range2>, Range>::list() const
-{
-  auto res = isl::multi_aff::list();
-  return typed::aff_list<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_aff::max(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_val<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::max_multi_val() const
-{
-  auto res = isl::multi_aff::max_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_aff::min(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_val<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::min_multi_val() const
-{
-  auto res = isl::multi_aff::min_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::neg() const
-{
-  auto res = isl::multi_aff::neg();
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Domain3>
-typed::pw_multi_aff<pair<Domain3, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const
-{
-  auto res = isl::multi_aff::preimage_domain_wrapped_domain(pma2);
-  return typed::pw_multi_aff<pair<Domain3, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const
-{
-  auto res = isl::multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_aff<Arg2, Arg3> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_aff<pair<Domain2, Range2>, Range>::product(const typed::pw_multi_aff<Arg2, Arg3> &pma2) const
-{
-  auto res = isl::multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_aff<pair<Domain2, Range2>, Range>::product(const typed::aff<Arg2, Arg3> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_aff<Arg2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<Arg2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const
-{
-  auto res = isl::multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const
-{
-  auto res = isl::multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::pw_multi_aff<Arg2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma2) const
-{
-  auto res = isl::multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma2) const
-{
-  auto res = isl::multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::union_pw_multi_aff<Arg2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma2) const
-{
-  auto res = isl::multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma2) const
-{
-  auto res = isl::multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_aff<Arg2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::aff<Arg2, pair<Domain2, Range2>> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::aff<pair<Domain2, Range2>> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff_list<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pw_multi_aff_list() const
-{
-  auto res = isl::multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const
-{
-  auto res = isl::multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> &upma2) const
-{
-  auto res = isl::multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_aff::scale(mv);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_aff::scale(v);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale(long v) const
-{
-  auto res = isl::multi_aff::scale(v);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_aff::scale_down(mv);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_aff::scale_down(v);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale_down(long v) const
-{
-  auto res = isl::multi_aff::scale_down(v);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg1>
-typed::multi_aff<pair<Domain2, Range2>, Arg1> typed::multi_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::multi_aff::set_range_tuple(id);
-  return typed::multi_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg1>
-typed::multi_aff<pair<Domain2, Range2>, Arg1> typed::multi_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::multi_aff::set_range_tuple(id);
-  return typed::multi_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::space<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::space() const
-{
-  auto res = isl::multi_aff::space();
-  return typed::space<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::multi_aff::sub(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
-{
-  auto res = isl::multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const
-{
-  auto res = isl::multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
-{
-  auto res = isl::multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::to_multi_pw_aff() const
-{
-  auto res = isl::multi_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::to_multi_union_pw_aff() const
-{
-  auto res = isl::multi_aff::to_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::to_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::to_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::to_union_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const
-{
-  auto res = isl::multi_aff::union_add(mpa2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const
-{
-  auto res = isl::multi_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
-{
-  auto res = isl::multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>>::multi_aff(const typed::aff<Domain, pair<Range, Range2>> &aff)
-  : isl::multi_aff(aff)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>>::multi_aff(const typed::space<Domain, pair<Range, Range2>> &space, const typed::aff_list<Domain, Anonymous> &list)
-  : isl::multi_aff(space, list)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>>::multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_aff(ctx, str)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::multi_aff::add_constant(mv);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add_constant(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::multi_aff::add_constant(v);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add_constant(long v) const
-{
-  auto res = isl::multi_aff::add_constant(v);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, Arg3> typed::multi_aff<Domain, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const
-{
-  auto res = isl::multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::as_map() const
-{
-  auto res = isl::multi_aff::as_map();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::as_multi_aff() const
-{
-  auto res = isl::multi_aff::as_multi_aff();
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::as_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::as_union_map() const
-{
-  auto res = isl::multi_aff::as_union_map();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::aff<Domain, Anonymous> typed::multi_aff<Domain, pair<Range, Range2>>::at(int pos) const
-{
-  auto res = isl::multi_aff::at(pos);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::basic_set<Domain> typed::multi_aff<Domain, pair<Range, Range2>>::bind(const typed::multi_id<pair<Range, Range2>> &tuple) const
-{
-  auto res = isl::multi_aff::bind(tuple);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::multi_aff::bind_domain(tuple);
-  return typed::multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::multi_aff::coalesce();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_val<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::constant_multi_val() const
-{
-  auto res = isl::multi_aff::constant_multi_val();
-  return typed::multi_val<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<Domain> typed::multi_aff<Domain, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::multi_aff::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const
-{
-  auto res = isl::multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::floor() const
-{
-  auto res = isl::multi_aff::floor();
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::gist(const typed::point<Domain> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::identity() const
-{
-  auto res = isl::multi_aff::identity();
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::aff_list<Domain, Anonymous> typed::multi_aff<Domain, pair<Range, Range2>>::list() const
-{
-  auto res = isl::multi_aff::list();
-  return typed::aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::max(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::max(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_val<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::max_multi_val() const
-{
-  auto res = isl::multi_aff::max_multi_val();
-  return typed::multi_val<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::min(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::min(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_val<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::min_multi_val() const
-{
-  auto res = isl::multi_aff::min_multi_val();
-  return typed::multi_val<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::neg() const
-{
-  auto res = isl::multi_aff::neg();
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::product(const typed::multi_aff<Domain2, Arg3> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::product(const typed::multi_pw_aff<Domain2, Arg3> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::product(const typed::pw_multi_aff<Domain2, Arg3> &pma2) const
-{
-  auto res = isl::multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::product(const typed::aff<Domain2, Arg3> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, Domain> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::multi_pw_aff<Domain2, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const
-{
-  auto res = isl::multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain> &mpa2) const
-{
-  auto res = isl::multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const
-{
-  auto res = isl::multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain> &pma2) const
-{
-  auto res = isl::multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::aff<Domain2, Domain> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::aff<Domain> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff_list<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff_list() const
-{
-  auto res = isl::multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::multi_aff::range_factor_domain();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, Range2> typed::multi_aff<Domain, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::multi_aff::range_factor_range();
-  return typed::pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_aff<Domain, Arg3> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_pw_aff<Domain, Arg3> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_union_pw_aff<Domain, Arg3> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<Domain, Arg3> &pma2) const
-{
-  auto res = isl::multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const
-{
-  auto res = isl::multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::aff<Domain, Arg3> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::multi_aff::scale(mv);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::multi_aff::scale(v);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale(long v) const
-{
-  auto res = isl::multi_aff::scale(v);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::multi_aff::scale_down(mv);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale_down(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::multi_aff::scale_down(v);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale_down(long v) const
-{
-  auto res = isl::multi_aff::scale_down(v);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::set_at(int pos, const typed::aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::space() const
-{
-  auto res = isl::multi_aff::space();
-  return typed::space<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::to_multi_pw_aff() const
-{
-  auto res = isl::multi_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::to_multi_union_pw_aff() const
-{
-  auto res = isl::multi_aff::to_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::to_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::to_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::to_union_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &mpa2) const
-{
-  auto res = isl::multi_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &mupa2) const
-{
-  auto res = isl::multi_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::multi_aff(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &aff)
-  : isl::multi_aff(aff)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space, const typed::aff_list<pair<T1, T2>, Anonymous> &list)
-  : isl::multi_aff(space, list)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_aff(ctx, str)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::multi_aff::add(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::add(multi2);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::multi_aff::add_constant(mv);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::multi_aff::add_constant(v);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(long v) const
-{
-  auto res = isl::multi_aff::add_constant(v);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, Arg2> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const
-{
-  auto res = isl::multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_map() const
-{
-  auto res = isl::multi_aff::as_map();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_multi_aff() const
-{
-  auto res = isl::multi_aff::as_multi_aff();
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_union_map() const
-{
-  auto res = isl::multi_aff::as_union_map();
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::aff<pair<T1, T2>, Anonymous> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::at(int pos) const
-{
-  auto res = isl::multi_aff::at(pos);
-  return typed::aff<pair<T1, T2>, Anonymous>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::basic_set<pair<T1, T2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind(const typed::multi_id<pair<Range, Range2>> &tuple) const
-{
-  auto res = isl::multi_aff::bind(tuple);
-  return typed::basic_set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
-{
-  auto res = isl::multi_aff::bind_domain(tuple);
-  return typed::multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<T2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind_domain_wrapped_domain(const typed::multi_id<T1> &tuple) const
-{
-  auto res = isl::multi_aff::bind_domain_wrapped_domain(tuple);
-  return typed::multi_aff<T2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::multi_aff::coalesce();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_val<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::constant_multi_val() const
-{
-  auto res = isl::multi_aff::constant_multi_val();
-  return typed::multi_val<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<T1, T2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::multi_aff::domain();
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
-{
-  auto res = isl::multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::floor() const
-{
-  auto res = isl::multi_aff::floor();
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::set<pair<T1, T2>> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_set<pair<T1, T2>> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_set<pair<T1, T2>> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::point<pair<T1, T2>> &context) const
-{
-  auto res = isl::multi_aff::gist(context);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::identity() const
-{
-  auto res = isl::multi_aff::identity();
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
-{
-  auto res = isl::multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::aff_list<pair<T1, T2>, Anonymous> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::list() const
-{
-  auto res = isl::multi_aff::list();
-  return typed::aff_list<pair<T1, T2>, Anonymous>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::max(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::max(multi2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_val<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::max_multi_val() const
-{
-  auto res = isl::multi_aff::max_multi_val();
-  return typed::multi_val<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::min(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::min(multi2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_val<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::min_multi_val() const
-{
-  auto res = isl::multi_aff::min_multi_val();
-  return typed::multi_val<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::neg() const
-{
-  auto res = isl::multi_aff::neg();
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain3>
-typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &pma2) const
-{
-  auto res = isl::multi_aff::preimage_domain_wrapped_domain(pma2);
-  return typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const
-{
-  auto res = isl::multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::multi_aff<Domain2, Arg2> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::multi_pw_aff<Domain2, Arg2> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::pw_multi_aff<Domain2, Arg2> &pma2) const
-{
-  auto res = isl::multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::aff<Domain2, Arg2> &multi2) const
-{
-  auto res = isl::multi_aff::product(multi2);
-  return typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<pair<T1, T2>> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::multi_pw_aff<Domain2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa2) const
-{
-  auto res = isl::multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<pair<T1, T2>> &mpa2) const
-{
-  auto res = isl::multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma2) const
-{
-  auto res = isl::multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<pair<T1, T2>> &pma2) const
-{
-  auto res = isl::multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const
-{
-  auto res = isl::multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const
-{
-  auto res = isl::multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::aff<Domain2, pair<T1, T2>> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::aff<pair<T1, T2>> &ma2) const
-{
-  auto res = isl::multi_aff::pullback(ma2);
-  return typed::multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff_list() const
-{
-  auto res = isl::multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, Range> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::multi_aff::range_factor_domain();
-  return typed::pw_multi_aff<pair<T1, T2>, Range>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, Range2> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::multi_aff::range_factor_range();
-  return typed::pw_multi_aff<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_pw_aff<pair<T1, T2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_union_pw_aff<pair<T1, T2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &pma2) const
-{
-  auto res = isl::multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const
-{
-  auto res = isl::multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::aff<pair<T1, T2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_aff::range_product(multi2);
-  return typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::multi_aff::scale(mv);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::multi_aff::scale(v);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(long v) const
-{
-  auto res = isl::multi_aff::scale(v);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::multi_aff::scale_down(mv);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::multi_aff::scale_down(v);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(long v) const
-{
-  auto res = isl::multi_aff::scale_down(v);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::set_at(int pos, const typed::aff<pair<T1, T2>, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::set_at(int pos, const typed::pw_aff<pair<T1, T2>, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::set_at(int pos, const typed::union_pw_aff<pair<T1, T2>, Anonymous> &el) const
-{
-  auto res = isl::multi_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::space() const
-{
-  auto res = isl::multi_aff::space();
-  return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::multi_aff::sub(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::multi_aff::sub(multi2);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::set<pair<T1, T2>> &set) const
-{
-  auto res = isl::multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_multi_pw_aff() const
-{
-  auto res = isl::multi_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_multi_union_pw_aff() const
-{
-  auto res = isl::multi_aff::to_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::to_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_union_pw_multi_aff() const
-{
-  auto res = isl::multi_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mpa2) const
-{
-  auto res = isl::multi_aff::union_add(mpa2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mupa2) const
-{
-  auto res = isl::multi_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain>
-typed::multi_id<Domain>::multi_id(const typed::space<Domain> &space, const typed::id_list<Anonymous> &list)
-  : isl::multi_id(space, list)
-{
-}
-
-template <typename Domain>
-typed::multi_id<Domain>::multi_id(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_id(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::id<Anonymous> typed::multi_id<Domain>::at(int pos) const
-{
-  auto res = isl::multi_id::at(pos);
-  return typed::id<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::id_list<Anonymous> typed::multi_id<Domain>::list() const
-{
-  auto res = isl::multi_id::list();
-  return typed::id_list<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_id<Domain> typed::multi_id<Domain>::set_at(int pos, const typed::id<Anonymous> &el) const
-{
-  auto res = isl::multi_id::set_at(pos, el);
-  return typed::multi_id<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_id<Domain> typed::multi_id<Domain>::set_at(int pos, const std::string &el) const
-{
-  auto res = isl::multi_id::set_at(pos, el);
-  return typed::multi_id<Domain>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::multi_id<Domain>::space() const
-{
-  auto res = isl::multi_id::space();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain>::multi_pw_aff(const typed::aff<Domain> &aff)
-  : isl::multi_pw_aff(aff)
-{
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain>::multi_pw_aff(const typed::multi_aff<Domain> &ma)
-  : isl::multi_pw_aff(ma)
-{
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain>::multi_pw_aff(const typed::pw_aff<Domain> &pa)
-  : isl::multi_pw_aff(pa)
-{
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain>::multi_pw_aff(const typed::space<Domain> &space, const typed::pw_aff_list<Anonymous> &list)
-  : isl::multi_pw_aff(space, list)
-{
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain>::multi_pw_aff(const typed::pw_multi_aff<Domain> &pma)
-  : isl::multi_pw_aff(pma)
-{
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain>::multi_pw_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_pw_aff(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::multi_union_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::multi_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::pw_multi_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add_constant(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::multi_pw_aff::add_constant(mv);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add_constant(const typed::val<Domain> &v) const
-{
-  auto res = isl::multi_pw_aff::add_constant(v);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add_constant(long v) const
-{
-  auto res = isl::multi_pw_aff::add_constant(v);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::multi_pw_aff<Domain>::as_multi_aff() const
-{
-  auto res = isl::multi_pw_aff::as_multi_aff();
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::multi_pw_aff<Domain>::as_set() const
-{
-  auto res = isl::multi_pw_aff::as_set();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Anonymous> typed::multi_pw_aff<Domain>::at(int pos) const
-{
-  auto res = isl::multi_pw_aff::at(pos);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<> typed::multi_pw_aff<Domain>::bind(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::multi_pw_aff::bind(tuple);
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::coalesce() const
-{
-  auto res = isl::multi_pw_aff::coalesce();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<> typed::multi_pw_aff<Domain>::domain() const
-{
-  auto res = isl::multi_pw_aff::domain();
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::gist(const typed::set<> &set) const
-{
-  auto res = isl::multi_pw_aff::gist(set);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_pw_aff<Domain>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::multi_pw_aff::gist(context);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::gist(const typed::basic_set<> &set) const
-{
-  auto res = isl::multi_pw_aff::gist(set);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::gist(const typed::point<> &set) const
-{
-  auto res = isl::multi_pw_aff::gist(set);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Domain> typed::multi_pw_aff<Domain>::identity() const
-{
-  auto res = isl::multi_pw_aff::identity();
-  return typed::multi_pw_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::multi_pw_aff<Arg1, Domain> typed::multi_pw_aff<Domain>::insert_domain(const typed::space<Arg1> &domain) const
-{
-  auto res = isl::multi_pw_aff::insert_domain(domain);
-  return typed::multi_pw_aff<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::multi_pw_aff::intersect_params(set);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::multi_pw_aff::intersect_params(set);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::multi_pw_aff::intersect_params(set);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_aff_list<Anonymous> typed::multi_pw_aff<Domain>::list() const
-{
-  auto res = isl::multi_pw_aff::list();
-  return typed::pw_aff_list<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::max(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::max(const typed::aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::max(const typed::multi_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::max(const typed::pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::max(const typed::pw_multi_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_pw_aff<Domain>::max_multi_val() const
-{
-  auto res = isl::multi_pw_aff::max_multi_val();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::min(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::min(const typed::aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::min(const typed::multi_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::min(const typed::pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::min(const typed::pw_multi_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_pw_aff<Domain>::min_multi_val() const
-{
-  auto res = isl::multi_pw_aff::min_multi_val();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::neg() const
-{
-  auto res = isl::multi_pw_aff::neg();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::multi_pw_aff<Domain>::product(const typed::multi_pw_aff<Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::multi_pw_aff<Domain>::product(const typed::aff<Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::multi_pw_aff<Domain>::product(const typed::multi_aff<Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::multi_pw_aff<Domain>::product(const typed::pw_aff<Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::multi_pw_aff<Domain>::product(const typed::pw_multi_aff<Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::multi_pw_aff::scale(mv);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale(const typed::val<Domain> &v) const
-{
-  auto res = isl::multi_pw_aff::scale(v);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale(long v) const
-{
-  auto res = isl::multi_pw_aff::scale(v);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale_down(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::multi_pw_aff::scale_down(mv);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale_down(const typed::val<Domain> &v) const
-{
-  auto res = isl::multi_pw_aff::scale_down(v);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale_down(long v) const
-{
-  auto res = isl::multi_pw_aff::scale_down(v);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::set_at(int pos, const typed::pw_aff<Anonymous> &el) const
-{
-  auto res = isl::multi_pw_aff::set_at(pos, el);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_pw_aff<Domain>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
-{
-  auto res = isl::multi_pw_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::multi_pw_aff<Domain2> typed::multi_pw_aff<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::multi_pw_aff::set_range_tuple(id);
-  return typed::multi_pw_aff<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::multi_pw_aff<Domain2> typed::multi_pw_aff<Domain>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::multi_pw_aff::set_range_tuple(id);
-  return typed::multi_pw_aff<Domain2>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::multi_pw_aff<Domain>::space() const
-{
-  auto res = isl::multi_pw_aff::space();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::multi_union_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::multi_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::pw_multi_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::multi_pw_aff<Arg1, Domain> typed::multi_pw_aff<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
-{
-  auto res = isl::multi_pw_aff::unbind_params_insert_domain(domain);
-  return typed::multi_pw_aff<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::multi_pw_aff<Domain> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::aff<Domain> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::multi_aff<Domain> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::pw_aff<Domain> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::pw_multi_aff<Domain> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const typed::aff<Domain, Range> &aff)
-  : isl::multi_pw_aff(aff)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const typed::multi_aff<Domain, Range> &ma)
-  : isl::multi_pw_aff(ma)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const typed::pw_aff<Domain, Range> &pa)
-  : isl::multi_pw_aff(pa)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const typed::space<Domain, Range> &space, const typed::pw_aff_list<Domain, Anonymous> &list)
-  : isl::multi_pw_aff(space, list)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const typed::pw_multi_aff<Domain, Range> &pma)
-  : isl::multi_pw_aff(pma)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_pw_aff(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::multi_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::pw_multi_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add_constant(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_pw_aff::add_constant(mv);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add_constant(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_pw_aff::add_constant(v);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add_constant(long v) const
-{
-  auto res = isl::multi_pw_aff::add_constant(v);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::multi_pw_aff<Domain, Range>::as_map() const
-{
-  auto res = isl::multi_pw_aff::as_map();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::as_multi_aff() const
-{
-  auto res = isl::multi_pw_aff::as_multi_aff();
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_aff<Domain, Anonymous> typed::multi_pw_aff<Domain, Range>::at(int pos) const
-{
-  auto res = isl::multi_pw_aff::at(pos);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Domain> typed::multi_pw_aff<Domain, Range>::bind(const typed::multi_id<Range> &tuple) const
-{
-  auto res = isl::multi_pw_aff::bind(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Range> typed::multi_pw_aff<Domain, Range>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::multi_pw_aff::bind_domain(tuple);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::coalesce() const
-{
-  auto res = isl::multi_pw_aff::coalesce();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Domain> typed::multi_pw_aff<Domain, Range>::domain() const
-{
-  auto res = isl::multi_pw_aff::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::gist(const typed::set<Domain> &set) const
-{
-  auto res = isl::multi_pw_aff::gist(set);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::multi_pw_aff::gist(context);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::gist(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::multi_pw_aff::gist(set);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::gist(const typed::point<Domain> &set) const
-{
-  auto res = isl::multi_pw_aff::gist(set);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::identity() const
-{
-  auto res = isl::multi_pw_aff::identity();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_domain(const typed::set<Domain> &domain) const
-{
-  auto res = isl::multi_pw_aff::intersect_domain(domain);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::multi_pw_aff::intersect_domain(uset);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_domain(const typed::basic_set<Domain> &domain) const
-{
-  auto res = isl::multi_pw_aff::intersect_domain(domain);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_domain(const typed::point<Domain> &domain) const
-{
-  auto res = isl::multi_pw_aff::intersect_domain(domain);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::multi_pw_aff::intersect_params(set);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::multi_pw_aff::intersect_params(set);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::multi_pw_aff::intersect_params(set);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_aff_list<Domain, Anonymous> typed::multi_pw_aff<Domain, Range>::list() const
-{
-  auto res = isl::multi_pw_aff::list();
-  return typed::pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::max(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::max(const typed::aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::max(const typed::multi_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::max(const typed::pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::max(const typed::pw_multi_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<Range> typed::multi_pw_aff<Domain, Range>::max_multi_val() const
-{
-  auto res = isl::multi_pw_aff::max_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::min(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::min(const typed::aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::min(const typed::multi_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::min(const typed::pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::min(const typed::pw_multi_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<Range> typed::multi_pw_aff<Domain, Range>::min_multi_val() const
-{
-  auto res = isl::multi_pw_aff::min_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::neg() const
-{
-  auto res = isl::multi_pw_aff::neg();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::product(const typed::aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::product(const typed::multi_aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::product(const typed::pw_aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::product(const typed::pw_multi_aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_pw_aff<Domain2, Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::multi_pw_aff::pullback(ma);
-  return typed::multi_pw_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::multi_aff<Domain> &ma) const
-{
-  auto res = isl::multi_pw_aff::pullback(ma);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_pw_aff<Domain2, Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_pw_aff<Domain2, Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::multi_pw_aff::pullback(pma);
-  return typed::multi_pw_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain> &pma) const
-{
-  auto res = isl::multi_pw_aff::pullback(pma);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_union_pw_aff<Domain2, Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::multi_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain> &upma) const
-{
-  auto res = isl::multi_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::multi_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::pw_multi_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_pw_aff::scale(mv);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_pw_aff::scale(v);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale(long v) const
-{
-  auto res = isl::multi_pw_aff::scale(v);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale_down(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_pw_aff::scale_down(mv);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale_down(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_pw_aff::scale_down(v);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale_down(long v) const
-{
-  auto res = isl::multi_pw_aff::scale_down(v);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::multi_pw_aff::set_at(pos, el);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::multi_pw_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_pw_aff<Domain, Range2> typed::multi_pw_aff<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::multi_pw_aff::set_range_tuple(id);
-  return typed::multi_pw_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_pw_aff<Domain, Range2> typed::multi_pw_aff<Domain, Range>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::multi_pw_aff::set_range_tuple(id);
-  return typed::multi_pw_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Domain, Range> typed::multi_pw_aff<Domain, Range>::space() const
-{
-  auto res = isl::multi_pw_aff::space();
-  return typed::space<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::multi_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::pw_multi_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::aff<Domain, Range> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::multi_aff<Domain, Range> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::pw_aff<Domain, Range> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::pw_multi_aff<Domain, Range> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const typed::aff<pair<Domain2, Range2>, Range> &aff)
-  : isl::multi_pw_aff(aff)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const typed::multi_aff<pair<Domain2, Range2>, Range> &ma)
-  : isl::multi_pw_aff(ma)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const typed::pw_aff<pair<Domain2, Range2>, Range> &pa)
-  : isl::multi_pw_aff(pa)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const typed::space<pair<Domain2, Range2>, Range> &space, const typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> &list)
-  : isl::multi_pw_aff(space, list)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma)
-  : isl::multi_pw_aff(pma)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_pw_aff(ctx, str)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::add(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_pw_aff::add_constant(mv);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_pw_aff::add_constant(v);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add_constant(long v) const
-{
-  auto res = isl::multi_pw_aff::add_constant(v);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::map<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::as_map() const
-{
-  auto res = isl::multi_pw_aff::as_map();
-  return typed::map<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::as_multi_aff() const
-{
-  auto res = isl::multi_pw_aff::as_multi_aff();
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::at(int pos) const
-{
-  auto res = isl::multi_pw_aff::at(pos);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::set<pair<Domain2, Range2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::bind(const typed::multi_id<Range> &tuple) const
-{
-  auto res = isl::multi_pw_aff::bind(tuple);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const
-{
-  auto res = isl::multi_pw_aff::bind_domain(tuple);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<Range2, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const
-{
-  auto res = isl::multi_pw_aff::bind_domain_wrapped_domain(tuple);
-  return typed::multi_pw_aff<Range2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::coalesce() const
-{
-  auto res = isl::multi_pw_aff::coalesce();
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::set<pair<Domain2, Range2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::domain() const
-{
-  auto res = isl::multi_pw_aff::domain();
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::gist(const typed::set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::multi_pw_aff::gist(set);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::gist(const typed::union_set<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::multi_pw_aff::gist(context);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::gist(const typed::basic_set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::multi_pw_aff::gist(set);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::gist(const typed::point<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::multi_pw_aff::gist(set);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::identity() const
-{
-  auto res = isl::multi_pw_aff::identity();
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::set<pair<Domain2, Range2>> &domain) const
-{
-  auto res = isl::multi_pw_aff::intersect_domain(domain);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
-{
-  auto res = isl::multi_pw_aff::intersect_domain(uset);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &domain) const
-{
-  auto res = isl::multi_pw_aff::intersect_domain(domain);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::point<pair<Domain2, Range2>> &domain) const
-{
-  auto res = isl::multi_pw_aff::intersect_domain(domain);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::multi_pw_aff::intersect_params(set);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::multi_pw_aff::intersect_params(set);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::multi_pw_aff::intersect_params(set);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::list() const
-{
-  auto res = isl::multi_pw_aff::list();
-  return typed::pw_aff_list<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::max(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_val<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max_multi_val() const
-{
-  auto res = isl::multi_pw_aff::max_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::min(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_val<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min_multi_val() const
-{
-  auto res = isl::multi_pw_aff::min_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::neg() const
-{
-  auto res = isl::multi_pw_aff::neg();
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::product(const typed::aff<Arg2, Arg3> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_aff<Arg2, Arg3> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::product(const typed::pw_aff<Arg2, Arg3> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::product(const typed::pw_multi_aff<Arg2, Arg3> &multi2) const
-{
-  auto res = isl::multi_pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<Arg2, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma) const
-{
-  auto res = isl::multi_pw_aff::pullback(ma);
-  return typed::multi_pw_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const
-{
-  auto res = isl::multi_pw_aff::pullback(ma);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<Arg2, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<Arg2, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma) const
-{
-  auto res = isl::multi_pw_aff::pullback(pma);
-  return typed::multi_pw_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const
-{
-  auto res = isl::multi_pw_aff::pullback(pma);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_union_pw_aff<Arg2, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma) const
-{
-  auto res = isl::multi_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const
-{
-  auto res = isl::multi_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::multi_pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_pw_aff::scale(mv);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_pw_aff::scale(v);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale(long v) const
-{
-  auto res = isl::multi_pw_aff::scale(v);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_pw_aff::scale_down(mv);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_pw_aff::scale_down(v);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale_down(long v) const
-{
-  auto res = isl::multi_pw_aff::scale_down(v);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::multi_pw_aff::set_at(pos, el);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::multi_pw_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg1>
-typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::multi_pw_aff::set_range_tuple(id);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg1>
-typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::multi_pw_aff::set_range_tuple(id);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::space<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::space() const
-{
-  auto res = isl::multi_pw_aff::space();
-  return typed::space<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::multi_pw_aff::sub(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::aff<pair<Domain2, Range2>, Range> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_aff<pair<Domain2, Range2>, Range> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::pw_aff<pair<Domain2, Range2>, Range> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &mpa2) const
-{
-  auto res = isl::multi_pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain>::multi_union_pw_aff(const typed::multi_pw_aff<Domain> &mpa)
-  : isl::multi_union_pw_aff(mpa)
-{
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain>::multi_union_pw_aff(const typed::union_pw_aff<Domain> &upa)
-  : isl::multi_union_pw_aff(upa)
-{
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain>::multi_union_pw_aff(const typed::space<Domain> &space, const typed::union_pw_aff_list<Anonymous> &list)
-  : isl::multi_union_pw_aff(space, list)
-{
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain>::multi_union_pw_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_union_pw_aff(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::add(const typed::multi_union_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::add(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::add(const typed::union_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Anonymous> typed::multi_union_pw_aff<Domain>::at(int pos) const
-{
-  auto res = isl::multi_union_pw_aff::at(pos);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_set<> typed::multi_union_pw_aff<Domain>::bind(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::multi_union_pw_aff::bind(tuple);
-  return typed::union_set<>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::coalesce() const
-{
-  auto res = isl::multi_union_pw_aff::coalesce();
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<> typed::multi_union_pw_aff<Domain>::domain() const
-{
-  auto res = isl::multi_union_pw_aff::domain();
-  return typed::union_set<>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::multi_union_pw_aff::gist(context);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::gist(const typed::basic_set<> &context) const
-{
-  auto res = isl::multi_union_pw_aff::gist(context);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::gist(const typed::point<> &context) const
-{
-  auto res = isl::multi_union_pw_aff::gist(context);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::gist(const typed::set<> &context) const
-{
-  auto res = isl::multi_union_pw_aff::gist(context);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::multi_union_pw_aff::intersect_params(params);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::intersect_params(const typed::basic_set<> &params) const
-{
-  auto res = isl::multi_union_pw_aff::intersect_params(params);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::intersect_params(const typed::point<> &params) const
-{
-  auto res = isl::multi_union_pw_aff::intersect_params(params);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff_list<Anonymous> typed::multi_union_pw_aff<Domain>::list() const
-{
-  auto res = isl::multi_union_pw_aff::list();
-  return typed::union_pw_aff_list<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::neg() const
-{
-  auto res = isl::multi_union_pw_aff::neg();
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::multi_union_pw_aff::scale(mv);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale(const typed::val<Domain> &v) const
-{
-  auto res = isl::multi_union_pw_aff::scale(v);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale(long v) const
-{
-  auto res = isl::multi_union_pw_aff::scale(v);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale_down(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::multi_union_pw_aff::scale_down(mv);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale_down(const typed::val<Domain> &v) const
-{
-  auto res = isl::multi_union_pw_aff::scale_down(v);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale_down(long v) const
-{
-  auto res = isl::multi_union_pw_aff::scale_down(v);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
-{
-  auto res = isl::multi_union_pw_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::multi_union_pw_aff<Domain2> typed::multi_union_pw_aff<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::multi_union_pw_aff::set_range_tuple(id);
-  return typed::multi_union_pw_aff<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::multi_union_pw_aff<Domain2> typed::multi_union_pw_aff<Domain>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::multi_union_pw_aff::set_range_tuple(id);
-  return typed::multi_union_pw_aff<Domain2>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::multi_union_pw_aff<Domain>::space() const
-{
-  auto res = isl::multi_union_pw_aff::space();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::sub(const typed::multi_union_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::sub(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::sub(const typed::union_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const
-{
-  auto res = isl::multi_union_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::union_add(const typed::multi_pw_aff<Domain> &mupa2) const
-{
-  auto res = isl::multi_union_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::union_add(const typed::union_pw_aff<Domain> &mupa2) const
-{
-  auto res = isl::multi_union_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range>::multi_union_pw_aff(const typed::multi_pw_aff<Domain, Range> &mpa)
-  : isl::multi_union_pw_aff(mpa)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range>::multi_union_pw_aff(const typed::union_pw_aff<Domain, Range> &upa)
-  : isl::multi_union_pw_aff(upa)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range>::multi_union_pw_aff(const typed::space<Domain, Range> &space, const typed::union_pw_aff_list<Domain, Anonymous> &list)
-  : isl::multi_union_pw_aff(space, list)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range>::multi_union_pw_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_union_pw_aff(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::add(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::add(const typed::union_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_aff<Domain, Anonymous> typed::multi_union_pw_aff<Domain, Range>::at(int pos) const
-{
-  auto res = isl::multi_union_pw_aff::at(pos);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<Domain> typed::multi_union_pw_aff<Domain, Range>::bind(const typed::multi_id<Range> &tuple) const
-{
-  auto res = isl::multi_union_pw_aff::bind(tuple);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::coalesce() const
-{
-  auto res = isl::multi_union_pw_aff::coalesce();
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<Domain> typed::multi_union_pw_aff<Domain, Range>::domain() const
-{
-  auto res = isl::multi_union_pw_aff::domain();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::multi_union_pw_aff::gist(context);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::multi_union_pw_aff::gist(context);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::gist(const typed::point<Domain> &context) const
-{
-  auto res = isl::multi_union_pw_aff::gist(context);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::multi_union_pw_aff::gist(context);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::multi_union_pw_aff::intersect_domain(uset);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_domain(const typed::basic_set<Domain> &uset) const
-{
-  auto res = isl::multi_union_pw_aff::intersect_domain(uset);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_domain(const typed::point<Domain> &uset) const
-{
-  auto res = isl::multi_union_pw_aff::intersect_domain(uset);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_domain(const typed::set<Domain> &uset) const
-{
-  auto res = isl::multi_union_pw_aff::intersect_domain(uset);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::multi_union_pw_aff::intersect_params(params);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_params(const typed::basic_set<> &params) const
-{
-  auto res = isl::multi_union_pw_aff::intersect_params(params);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_params(const typed::point<> &params) const
-{
-  auto res = isl::multi_union_pw_aff::intersect_params(params);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_aff_list<Domain, Anonymous> typed::multi_union_pw_aff<Domain, Range>::list() const
-{
-  auto res = isl::multi_union_pw_aff::list();
-  return typed::union_pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::neg() const
-{
-  auto res = isl::multi_union_pw_aff::neg();
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_union_pw_aff<Domain2, Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::multi_union_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain> &upma) const
-{
-  auto res = isl::multi_union_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_union_pw_aff<Domain2, Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::multi_union_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::multi_aff<Domain> &upma) const
-{
-  auto res = isl::multi_union_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_union_pw_aff<Domain2, Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::multi_union_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain> &upma) const
-{
-  auto res = isl::multi_union_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_union_pw_aff<Domain2, Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::union_pw_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::multi_union_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::union_pw_aff<Domain> &upma) const
-{
-  auto res = isl::multi_union_pw_aff::pullback(upma);
-  return typed::multi_union_pw_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_union_pw_aff<Domain, Range>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_union_pw_aff<Domain, Range>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_union_pw_aff<Domain, Range>::range_product(const typed::union_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_union_pw_aff::scale(mv);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_union_pw_aff::scale(v);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale(long v) const
-{
-  auto res = isl::multi_union_pw_aff::scale(v);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale_down(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::multi_union_pw_aff::scale_down(mv);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale_down(const typed::val<Range> &v) const
-{
-  auto res = isl::multi_union_pw_aff::scale_down(v);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale_down(long v) const
-{
-  auto res = isl::multi_union_pw_aff::scale_down(v);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::multi_union_pw_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, Range2> typed::multi_union_pw_aff<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::multi_union_pw_aff::set_range_tuple(id);
-  return typed::multi_union_pw_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, Range2> typed::multi_union_pw_aff<Domain, Range>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::multi_union_pw_aff::set_range_tuple(id);
-  return typed::multi_union_pw_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Range> typed::multi_union_pw_aff<Domain, Range>::space() const
-{
-  auto res = isl::multi_union_pw_aff::space();
-  return typed::space<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::sub(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::sub(const typed::union_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::multi_union_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const
-{
-  auto res = isl::multi_union_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::union_add(const typed::multi_pw_aff<Domain, Range> &mupa2) const
-{
-  auto res = isl::multi_union_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::union_add(const typed::union_pw_aff<Domain, Range> &mupa2) const
-{
-  auto res = isl::multi_union_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain>::multi_val(const typed::space<Domain> &space, const typed::val_list<Anonymous> &list)
-  : isl::multi_val(space, list)
-{
-}
-
-template <typename Domain>
-typed::multi_val<Domain>::multi_val(const isl::ctx &ctx, const std::string &str)
-  : isl::multi_val(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::add(const typed::multi_val<Domain> &multi2) const
-{
-  auto res = isl::multi_val::add(multi2);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::add(const typed::val<Domain> &v) const
-{
-  auto res = isl::multi_val::add(v);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::add(long v) const
-{
-  auto res = isl::multi_val::add(v);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::val<Anonymous> typed::multi_val<Domain>::at(int pos) const
-{
-  auto res = isl::multi_val::at(pos);
-  return typed::val<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::val_list<Anonymous> typed::multi_val<Domain>::list() const
-{
-  auto res = isl::multi_val::list();
-  return typed::val_list<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::max(const typed::multi_val<Domain> &multi2) const
-{
-  auto res = isl::multi_val::max(multi2);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::min(const typed::multi_val<Domain> &multi2) const
-{
-  auto res = isl::multi_val::min(multi2);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::neg() const
-{
-  auto res = isl::multi_val::neg();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::multi_val<pair<Domain, Range>> typed::multi_val<Domain>::product(const typed::multi_val<Range> &multi2) const
-{
-  auto res = isl::multi_val::product(multi2);
-  return typed::multi_val<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::scale(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::multi_val::scale(mv);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::scale(const typed::val<Domain> &v) const
-{
-  auto res = isl::multi_val::scale(v);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::scale(long v) const
-{
-  auto res = isl::multi_val::scale(v);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::scale_down(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::multi_val::scale_down(mv);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::scale_down(const typed::val<Domain> &v) const
-{
-  auto res = isl::multi_val::scale_down(v);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::scale_down(long v) const
-{
-  auto res = isl::multi_val::scale_down(v);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::set_at(int pos, const typed::val<Anonymous> &el) const
-{
-  auto res = isl::multi_val::set_at(pos, el);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::set_at(int pos, long el) const
-{
-  auto res = isl::multi_val::set_at(pos, el);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::multi_val<Domain2> typed::multi_val<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::multi_val::set_range_tuple(id);
-  return typed::multi_val<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::multi_val<Domain2> typed::multi_val<Domain>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::multi_val::set_range_tuple(id);
-  return typed::multi_val<Domain2>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::multi_val<Domain>::space() const
-{
-  auto res = isl::multi_val::space();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::multi_val<Domain>::sub(const typed::multi_val<Domain> &multi2) const
-{
-  auto res = isl::multi_val::sub(multi2);
-  return typed::multi_val<Domain>(res);
-}
-
-typed::set<> typed::point<>::coalesce() const
-{
-  auto res = isl::point::coalesce();
-  return typed::set<>(res);
-}
-
-typed::basic_set<> typed::point<>::detect_equalities() const
-{
-  auto res = isl::point::detect_equalities();
-  return typed::basic_set<>(res);
-}
-
-bool typed::point<>::every_set(const std::function<bool(typed::set<>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<>(arg0));
-  };
-  return isl::point::every_set(lambda);
-}
-
-typed::set<> typed::point<>::extract_set(const typed::space<> &space) const
-{
-  auto res = isl::point::extract_set(space);
-  return typed::set<>(res);
-}
-
-void typed::point<>::foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_set arg0) {
-    return fn(typed::basic_set<>(arg0));
-  };
-  return isl::point::foreach_basic_set(lambda);
-}
-
-void typed::point<>::foreach_point(const std::function<void(typed::point<>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<>(arg0));
-  };
-  return isl::point::foreach_point(lambda);
-}
-
-void typed::point<>::foreach_set(const std::function<void(typed::set<>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<>(arg0));
-  };
-  return isl::point::foreach_set(lambda);
-}
-
-typed::basic_set<> typed::point<>::gist(const typed::basic_set<> &context) const
-{
-  auto res = isl::point::gist(context);
-  return typed::basic_set<>(res);
-}
-
-typed::set<> typed::point<>::gist(const typed::set<> &context) const
-{
-  auto res = isl::point::gist(context);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::point<>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::point::gist(context);
-  return typed::union_set<>(res);
-}
-
-typed::pw_aff<Anonymous> typed::point<>::indicator_function() const
-{
-  auto res = isl::point::indicator_function();
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::basic_set<> typed::point<>::intersect(const typed::basic_set<> &bset2) const
-{
-  auto res = isl::point::intersect(bset2);
-  return typed::basic_set<>(res);
-}
-
-typed::set<> typed::point<>::intersect(const typed::set<> &set2) const
-{
-  auto res = isl::point::intersect(set2);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::point<>::intersect(const typed::union_set<> &uset2) const
-{
-  auto res = isl::point::intersect(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::set<> typed::point<>::project_out_all_params() const
-{
-  auto res = isl::point::project_out_all_params();
-  return typed::set<>(res);
-}
-
-typed::set<> typed::point<>::project_out_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::point::project_out_param(id);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::point<>::project_out_param(const std::string &id) const
-{
-  auto res = isl::point::project_out_param(id);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::point<>::project_out_param(const typed::id_list<Anonymous> &list) const
-{
-  auto res = isl::point::project_out_param(list);
-  return typed::set<>(res);
-}
-
-typed::set_list<> typed::point<>::set_list() const
-{
-  auto res = isl::point::set_list();
-  return typed::set_list<>(res);
-}
-
-typed::space<> typed::point<>::space() const
-{
-  auto res = isl::point::space();
-  return typed::space<>(res);
-}
-
-typed::set<> typed::point<>::subtract(const typed::set<> &set2) const
-{
-  auto res = isl::point::subtract(set2);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::point<>::subtract(const typed::union_set<> &uset2) const
-{
-  auto res = isl::point::subtract(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::set<> typed::point<>::to_set() const
-{
-  auto res = isl::point::to_set();
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::point<>::to_union_set() const
-{
-  auto res = isl::point::to_union_set();
-  return typed::union_set<>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<>::unbind_params(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::point::unbind_params(tuple);
-  return typed::set<Domain>(res);
-}
-
-typed::set<> typed::point<>::unite(const typed::basic_set<> &bset2) const
-{
-  auto res = isl::point::unite(bset2);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::point<>::unite(const typed::set<> &set2) const
-{
-  auto res = isl::point::unite(set2);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::point<>::unite(const typed::union_set<> &uset2) const
-{
-  auto res = isl::point::unite(uset2);
-  return typed::union_set<>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::basic_set<Range> typed::point<Domain>::apply(const typed::basic_map<Domain, Range> &bmap) const
-{
-  auto res = isl::point::apply(bmap);
-  return typed::basic_set<Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::set<Range> typed::point<Domain>::apply(const typed::map<Domain, Range> &map) const
-{
-  auto res = isl::point::apply(map);
-  return typed::set<Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_set<Range> typed::point<Domain>::apply(const typed::union_map<Domain, Range> &umap) const
-{
-  auto res = isl::point::apply(umap);
-  return typed::union_set<Range>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::point<Domain>::as_pw_multi_aff() const
-{
-  auto res = isl::point::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::as_set() const
-{
-  auto res = isl::point::as_set();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<> typed::point<Domain>::bind(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::point::bind(tuple);
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::coalesce() const
-{
-  auto res = isl::point::coalesce();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::point<Domain>::detect_equalities() const
-{
-  auto res = isl::point::detect_equalities();
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-bool typed::point<Domain>::every_set(const std::function<bool(typed::set<Domain>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<Domain>(arg0));
-  };
-  return isl::point::every_set(lambda);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::extract_set(const typed::space<Domain> &space) const
-{
-  auto res = isl::point::extract_set(space);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-void typed::point<Domain>::foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_set arg0) {
-    return fn(typed::basic_set<Domain>(arg0));
-  };
-  return isl::point::foreach_basic_set(lambda);
-}
-
-template <typename Domain>
-void typed::point<Domain>::foreach_point(const std::function<void(typed::point<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<Domain>(arg0));
-  };
-  return isl::point::foreach_point(lambda);
-}
-
-template <typename Domain>
-void typed::point<Domain>::foreach_set(const std::function<void(typed::set<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<Domain>(arg0));
-  };
-  return isl::point::foreach_set(lambda);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::point<Domain>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::point::gist(context);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::point::gist(context);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::point<Domain>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::point::gist(context);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::point<Domain>::identity() const
-{
-  auto res = isl::point::identity();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::point<Domain>::indicator_function() const
-{
-  auto res = isl::point::indicator_function();
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::map<Arg1, Domain> typed::point<Domain>::insert_domain(const typed::space<Arg1> &domain) const
-{
-  auto res = isl::point::insert_domain(domain);
-  return typed::map<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::point<Domain>::intersect(const typed::basic_set<Domain> &bset2) const
-{
-  auto res = isl::point::intersect(bset2);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::intersect(const typed::set<Domain> &set2) const
-{
-  auto res = isl::point::intersect(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::point<Domain>::intersect(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::point::intersect(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<Domain> typed::point<Domain>::intersect_params(const typed::basic_set<> &bset2) const
-{
-  auto res = isl::point::intersect_params(bset2);
-  return typed::basic_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::point::intersect_params(params);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::lexmax() const
-{
-  auto res = isl::point::lexmax();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::point<Domain>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::point::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::lexmin() const
-{
-  auto res = isl::point::lexmin();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::point<Domain>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::point::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::lower_bound(const typed::multi_pw_aff<Domain> &lower) const
-{
-  auto res = isl::point::lower_bound(lower);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::lower_bound(const typed::multi_val<Domain> &lower) const
-{
-  auto res = isl::point::lower_bound(lower);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::point<Domain>::max_multi_pw_aff() const
-{
-  auto res = isl::point::max_multi_pw_aff();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::point<Domain>::min_multi_pw_aff() const
-{
-  auto res = isl::point::min_multi_pw_aff();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::point<Domain>::multi_val() const
-{
-  auto res = isl::point::multi_val();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::basic_set<> typed::point<Domain>::params() const
-{
-  auto res = isl::point::params();
-  return typed::basic_set<>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::point<Domain>::plain_multi_val_if_fixed() const
-{
-  auto res = isl::point::plain_multi_val_if_fixed();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::set<Domain2> typed::point<Domain>::preimage(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::point::preimage(ma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::set<Domain2> typed::point<Domain>::preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::point::preimage(mpa);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::set<Domain2> typed::point<Domain>::preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::point::preimage(pma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_set<Domain2> typed::point<Domain>::preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::point::preimage(upma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::set<pair<Domain, Range>> typed::point<Domain>::product(const typed::set<Range> &set2) const
-{
-  auto res = isl::point::product(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::project_out_all_params() const
-{
-  auto res = isl::point::project_out_all_params();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::project_out_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::point::project_out_param(id);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::project_out_param(const std::string &id) const
-{
-  auto res = isl::point::project_out_param(id);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::project_out_param(const typed::id_list<Anonymous> &list) const
-{
-  auto res = isl::point::project_out_param(list);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::pw_multi_aff<Domain, Range> typed::point<Domain>::pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::point::pw_multi_aff_on_domain(mv);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain>
-typed::set_list<Domain> typed::point<Domain>::set_list() const
-{
-  auto res = isl::point::set_list();
-  return typed::set_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::fixed_box<Domain> typed::point<Domain>::simple_fixed_box_hull() const
-{
-  auto res = isl::point::simple_fixed_box_hull();
-  return typed::fixed_box<Domain>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::point<Domain>::space() const
-{
-  auto res = isl::point::space();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::subtract(const typed::set<Domain> &set2) const
-{
-  auto res = isl::point::subtract(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::point<Domain>::subtract(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::point::subtract(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::to_set() const
-{
-  auto res = isl::point::to_set();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::point<Domain>::to_union_set() const
-{
-  auto res = isl::point::to_union_set();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::point<Domain>::translation() const
-{
-  auto res = isl::point::translation();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::map<Arg1, Domain> typed::point<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
-{
-  auto res = isl::point::unbind_params_insert_domain(domain);
-  return typed::map<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::unite(const typed::basic_set<Domain> &bset2) const
-{
-  auto res = isl::point::unite(bset2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::unite(const typed::set<Domain> &set2) const
-{
-  auto res = isl::point::unite(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::point<Domain>::unite(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::point::unite(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::upper_bound(const typed::multi_pw_aff<Domain> &upper) const
-{
-  auto res = isl::point::upper_bound(upper);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::point<Domain>::upper_bound(const typed::multi_val<Domain> &upper) const
-{
-  auto res = isl::point::upper_bound(upper);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::basic_set<Arg2> typed::point<pair<Domain, Range>>::apply(const typed::basic_map<pair<Domain, Range>, Arg2> &bmap) const
-{
-  auto res = isl::point::apply(bmap);
-  return typed::basic_set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::set<Arg2> typed::point<pair<Domain, Range>>::apply(const typed::map<pair<Domain, Range>, Arg2> &map) const
-{
-  auto res = isl::point::apply(map);
-  return typed::set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::union_set<Arg2> typed::point<pair<Domain, Range>>::apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const
-{
-  auto res = isl::point::apply(umap);
-  return typed::union_set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::point<pair<Domain, Range>>::as_pw_multi_aff() const
-{
-  auto res = isl::point::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::as_set() const
-{
-  auto res = isl::point::as_set();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<> typed::point<pair<Domain, Range>>::bind(const typed::multi_id<pair<Domain, Range>> &tuple) const
-{
-  auto res = isl::point::bind(tuple);
-  return typed::set<>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::coalesce() const
-{
-  auto res = isl::point::coalesce();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::detect_equalities() const
-{
-  auto res = isl::point::detect_equalities();
-  return typed::basic_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-bool typed::point<pair<Domain, Range>>::every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<pair<Domain, Range>>(arg0));
-  };
-  return isl::point::every_set(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::extract_set(const typed::space<pair<Domain, Range>> &space) const
-{
-  auto res = isl::point::extract_set(space);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-void typed::point<pair<Domain, Range>>::foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_set arg0) {
-    return fn(typed::basic_set<pair<Domain, Range>>(arg0));
-  };
-  return isl::point::foreach_basic_set(lambda);
-}
-
-template <typename Domain, typename Range>
-void typed::point<pair<Domain, Range>>::foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<pair<Domain, Range>>(arg0));
-  };
-  return isl::point::foreach_point(lambda);
-}
-
-template <typename Domain, typename Range>
-void typed::point<pair<Domain, Range>>::foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<pair<Domain, Range>>(arg0));
-  };
-  return isl::point::foreach_set(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::gist(const typed::basic_set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::point::gist(context);
-  return typed::basic_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::gist(const typed::set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::point::gist(context);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::gist(const typed::union_set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::point::gist(context);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::point<pair<Domain, Range>>::identity() const
-{
-  auto res = isl::point::identity();
-  return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_aff<pair<Domain, Range>, Anonymous> typed::point<pair<Domain, Range>>::indicator_function() const
-{
-  auto res = isl::point::indicator_function();
-  return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::map<Arg2, pair<Domain, Range>> typed::point<pair<Domain, Range>>::insert_domain(const typed::space<Arg2> &domain) const
-{
-  auto res = isl::point::insert_domain(domain);
-  return typed::map<Arg2, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::intersect(const typed::basic_set<pair<Domain, Range>> &bset2) const
-{
-  auto res = isl::point::intersect(bset2);
-  return typed::basic_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::intersect(const typed::set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::point::intersect(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::intersect(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::point::intersect(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::intersect_params(const typed::basic_set<> &bset2) const
-{
-  auto res = isl::point::intersect_params(bset2);
-  return typed::basic_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::point::intersect_params(params);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lexmax() const
-{
-  auto res = isl::point::lexmax();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::point::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lexmin() const
-{
-  auto res = isl::point::lexmin();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::point::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const
-{
-  auto res = isl::point::lower_bound(lower);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const
-{
-  auto res = isl::point::lower_bound(lower);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::point<pair<Domain, Range>>::max_multi_pw_aff() const
-{
-  auto res = isl::point::max_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::point<pair<Domain, Range>>::min_multi_pw_aff() const
-{
-  auto res = isl::point::min_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<pair<Domain, Range>> typed::point<pair<Domain, Range>>::multi_val() const
-{
-  auto res = isl::point::multi_val();
-  return typed::multi_val<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::basic_set<> typed::point<pair<Domain, Range>>::params() const
-{
-  auto res = isl::point::params();
-  return typed::basic_set<>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<pair<Domain, Range>> typed::point<pair<Domain, Range>>::plain_multi_val_if_fixed() const
-{
-  auto res = isl::point::plain_multi_val_if_fixed();
-  return typed::multi_val<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::set<Domain2> typed::point<pair<Domain, Range>>::preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
-{
-  auto res = isl::point::preimage(ma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::set<Domain2> typed::point<pair<Domain, Range>>::preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
-{
-  auto res = isl::point::preimage(mpa);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::set<Domain2> typed::point<pair<Domain, Range>>::preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
-{
-  auto res = isl::point::preimage(pma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_set<Domain2> typed::point<pair<Domain, Range>>::preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
-{
-  auto res = isl::point::preimage(upma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::set<pair<pair<Domain, Range>, Arg2>> typed::point<pair<Domain, Range>>::product(const typed::set<Arg2> &set2) const
-{
-  auto res = isl::point::product(set2);
-  return typed::set<pair<pair<Domain, Range>, Arg2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::project_out_all_params() const
-{
-  auto res = isl::point::project_out_all_params();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::project_out_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::point::project_out_param(id);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::project_out_param(const std::string &id) const
-{
-  auto res = isl::point::project_out_param(id);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::project_out_param(const typed::id_list<Anonymous> &list) const
-{
-  auto res = isl::point::project_out_param(list);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::pw_multi_aff<pair<Domain, Range>, Arg2> typed::point<pair<Domain, Range>>::pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const
-{
-  auto res = isl::point::pw_multi_aff_on_domain(mv);
-  return typed::pw_multi_aff<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set_list<pair<Domain, Range>> typed::point<pair<Domain, Range>>::set_list() const
-{
-  auto res = isl::point::set_list();
-  return typed::set_list<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::fixed_box<pair<Domain, Range>> typed::point<pair<Domain, Range>>::simple_fixed_box_hull() const
-{
-  auto res = isl::point::simple_fixed_box_hull();
-  return typed::fixed_box<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<pair<Domain, Range>> typed::point<pair<Domain, Range>>::space() const
-{
-  auto res = isl::point::space();
-  return typed::space<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::subtract(const typed::set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::point::subtract(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::subtract(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::point::subtract(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::to_set() const
-{
-  auto res = isl::point::to_set();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::to_union_set() const
-{
-  auto res = isl::point::to_union_set();
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::point<pair<Domain, Range>>::translation() const
-{
-  auto res = isl::point::translation();
-  return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::map<Arg2, pair<Domain, Range>> typed::point<pair<Domain, Range>>::unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const
-{
-  auto res = isl::point::unbind_params_insert_domain(domain);
-  return typed::map<Arg2, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::unite(const typed::basic_set<pair<Domain, Range>> &bset2) const
-{
-  auto res = isl::point::unite(bset2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::unite(const typed::set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::point::unite(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::unite(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::point::unite(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::point<pair<Domain, Range>>::unwrap() const
-{
-  auto res = isl::point::unwrap();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const
-{
-  auto res = isl::point::upper_bound(upper);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const
-{
-  auto res = isl::point::upper_bound(upper);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-typed::pw_aff<Anonymous>::pw_aff(const typed::aff<Anonymous> &aff)
-  : isl::pw_aff(aff)
-{
-}
-
-typed::pw_aff<Anonymous>::pw_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_aff(ctx, str)
-{
-}
-
-typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::multi_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::add(multi2);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::multi_union_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::pw_aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::add(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::pw_multi_aff<Anonymous> &pma2) const
-{
-  auto res = isl::pw_aff::add(pma2);
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::union_pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::pw_aff::add(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
-{
-  auto res = isl::pw_aff::add(upma2);
-  return typed::union_pw_multi_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::add(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::add_constant(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::pw_aff::add_constant(v);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::add_constant(long v) const
-{
-  auto res = isl::pw_aff::add_constant(v);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::pw_aff::add_constant(mv);
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-template <typename Range>
-typed::union_pw_multi_aff<Range> typed::pw_aff<Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const
-{
-  auto res = isl::pw_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-typed::aff<Anonymous> typed::pw_aff<Anonymous>::as_aff() const
-{
-  auto res = isl::pw_aff::as_aff();
-  return typed::aff<Anonymous>(res);
-}
-
-typed::multi_aff<Anonymous> typed::pw_aff<Anonymous>::as_multi_aff() const
-{
-  auto res = isl::pw_aff::as_multi_aff();
-  return typed::multi_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::as_multi_union_pw_aff() const
-{
-  auto res = isl::pw_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::as_pw_multi_aff() const
-{
-  auto res = isl::pw_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::set<Anonymous> typed::pw_aff<Anonymous>::as_set() const
-{
-  auto res = isl::pw_aff::as_set();
-  return typed::set<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::at(int pos) const
-{
-  auto res = isl::pw_aff::at(pos);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::set<> typed::pw_aff<Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
-{
-  auto res = isl::pw_aff::bind(tuple);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::pw_aff<Anonymous>::bind(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::pw_aff::bind(id);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::pw_aff<Anonymous>::bind(const std::string &id) const
-{
-  auto res = isl::pw_aff::bind(id);
-  return typed::set<>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::ceil() const
-{
-  auto res = isl::pw_aff::ceil();
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::coalesce() const
-{
-  auto res = isl::pw_aff::coalesce();
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::cond(const typed::pw_aff<Anonymous> &pwaff_true, const typed::pw_aff<Anonymous> &pwaff_false) const
-{
-  auto res = isl::pw_aff::cond(pwaff_true, pwaff_false);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::set<> typed::pw_aff<Anonymous>::domain() const
-{
-  auto res = isl::pw_aff::domain();
-  return typed::set<>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::extract_pw_multi_aff(const typed::space<Anonymous> &space) const
-{
-  auto res = isl::pw_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::floor() const
-{
-  auto res = isl::pw_aff::floor();
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::gist(const typed::set<> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::gist(const typed::basic_set<> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::gist(const typed::point<> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous, Anonymous> typed::pw_aff<Anonymous>::identity() const
-{
-  auto res = isl::pw_aff::identity();
-  return typed::multi_pw_aff<Anonymous, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Anonymous>::insert_domain(const typed::space<Domain> &domain) const
-{
-  auto res = isl::pw_aff::insert_domain(domain);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::pw_aff::intersect_params(set);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::pw_aff::intersect_params(set);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::pw_aff::intersect_params(set);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff_list<Anonymous> typed::pw_aff<Anonymous>::list() const
-{
-  auto res = isl::pw_aff::list();
-  return typed::pw_aff_list<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::max(const typed::multi_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::max(multi2);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::max(const typed::pw_aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::max(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::max(const typed::aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::max(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::multi_val<Anonymous> typed::pw_aff<Anonymous>::max_multi_val() const
-{
-  auto res = isl::pw_aff::max_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::min(const typed::multi_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::min(multi2);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::min(const typed::pw_aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::min(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::min(const typed::aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::min(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::multi_val<Anonymous> typed::pw_aff<Anonymous>::min_multi_val() const
-{
-  auto res = isl::pw_aff::min_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::mod(const typed::val<Anonymous> &mod) const
-{
-  auto res = isl::pw_aff::mod(mod);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::mod(long mod) const
-{
-  auto res = isl::pw_aff::mod(mod);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::neg() const
-{
-  auto res = isl::pw_aff::neg();
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Range>
-typed::multi_pw_aff<pair<Anonymous, Range>> typed::pw_aff<Anonymous>::product(const typed::multi_pw_aff<Range> &multi2) const
-{
-  auto res = isl::pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Anonymous, Range>>(res);
-}
-
-template <typename Range>
-typed::pw_multi_aff<pair<Anonymous, Range>> typed::pw_aff<Anonymous>::product(const typed::pw_multi_aff<Range> &pma2) const
-{
-  auto res = isl::pw_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Anonymous, Range>>(res);
-}
-
-typed::pw_multi_aff_list<Anonymous> typed::pw_aff<Anonymous>::pw_multi_aff_list() const
-{
-  auto res = isl::pw_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::pw_aff::scale(mv);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::scale(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::pw_aff::scale(v);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::scale(long v) const
-{
-  auto res = isl::pw_aff::scale(v);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::pw_aff::scale_down(mv);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::scale_down(const typed::val<Anonymous> &f) const
-{
-  auto res = isl::pw_aff::scale_down(f);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::scale_down(long f) const
-{
-  auto res = isl::pw_aff::scale_down(f);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::set_at(int pos, const typed::pw_aff<Anonymous> &el) const
-{
-  auto res = isl::pw_aff::set_at(pos, el);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
-{
-  auto res = isl::pw_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2>
-typed::pw_multi_aff<Domain2> typed::pw_aff<Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::pw_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<Domain2>(res);
-}
-
-template <typename Domain2>
-typed::pw_multi_aff<Domain2> typed::pw_aff<Anonymous>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::pw_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<Domain2>(res);
-}
-
-typed::space<Anonymous> typed::pw_aff<Anonymous>::space() const
-{
-  auto res = isl::pw_aff::space();
-  return typed::space<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::multi_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::pw_aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::sub(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::pw_multi_aff<Anonymous> &pma2) const
-{
-  auto res = isl::pw_aff::sub(pma2);
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::union_pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::pw_aff::sub(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const
-{
-  auto res = isl::pw_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::sub(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::to_multi_pw_aff() const
-{
-  auto res = isl::pw_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::to_union_pw_aff() const
-{
-  auto res = isl::pw_aff::to_union_pw_aff();
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::to_union_pw_multi_aff() const
-{
-  auto res = isl::pw_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Anonymous>::unbind_params_insert_domain(const typed::multi_id<Domain> &domain) const
-{
-  auto res = isl::pw_aff::unbind_params_insert_domain(domain);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::multi_pw_aff<Anonymous> &mpa2) const
-{
-  auto res = isl::pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const
-{
-  auto res = isl::pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::pw_aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::union_add(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::pw_multi_aff<Anonymous> &pma2) const
-{
-  auto res = isl::pw_aff::union_add(pma2);
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::union_pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::pw_aff::union_add(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
-{
-  auto res = isl::pw_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::aff<Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::union_add(pwaff2);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous>::pw_aff(const typed::aff<Domain, Anonymous> &aff)
-  : isl::pw_aff(aff)
-{
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous>::pw_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_aff(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::add(multi2);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::add(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
-{
-  auto res = isl::pw_aff::add(pma2);
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::pw_aff::add(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
-{
-  auto res = isl::pw_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::add(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add_constant(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::pw_aff::add_constant(v);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add_constant(long v) const
-{
-  auto res = isl::pw_aff::add_constant(v);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::pw_aff::add_constant(mv);
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, Range2> typed::pw_aff<Domain, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const
-{
-  auto res = isl::pw_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_aff() const
-{
-  auto res = isl::pw_aff::as_aff();
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_map() const
-{
-  auto res = isl::pw_aff::as_map();
-  return typed::map<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_multi_aff() const
-{
-  auto res = isl::pw_aff::as_multi_aff();
-  return typed::multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_multi_union_pw_aff() const
-{
-  auto res = isl::pw_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_pw_multi_aff() const
-{
-  auto res = isl::pw_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_union_map() const
-{
-  auto res = isl::pw_aff::as_union_map();
-  return typed::union_map<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::at(int pos) const
-{
-  auto res = isl::pw_aff::at(pos);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
-{
-  auto res = isl::pw_aff::bind(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::bind(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::pw_aff::bind(id);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::bind(const std::string &id) const
-{
-  auto res = isl::pw_aff::bind(id);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Anonymous> typed::pw_aff<Domain, Anonymous>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::pw_aff::bind_domain(tuple);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::ceil() const
-{
-  auto res = isl::pw_aff::ceil();
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::coalesce() const
-{
-  auto res = isl::pw_aff::coalesce();
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::cond(const typed::pw_aff<Domain, Anonymous> &pwaff_true, const typed::pw_aff<Domain, Anonymous> &pwaff_false) const
-{
-  auto res = isl::pw_aff::cond(pwaff_true, pwaff_false);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::domain() const
-{
-  auto res = isl::pw_aff::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const
-{
-  auto res = isl::pw_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::floor() const
-{
-  auto res = isl::pw_aff::floor();
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::ge_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::ge_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::ge_set(const typed::aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::ge_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::gist(const typed::point<Domain> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::gt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::gt_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::gt_set(const typed::aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::gt_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::identity() const
-{
-  auto res = isl::pw_aff::identity();
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::pw_aff::intersect_domain(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::pw_aff::intersect_domain(space);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::pw_aff::intersect_domain(uset);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_domain(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::pw_aff::intersect_domain(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_domain(const typed::point<Domain> &set) const
-{
-  auto res = isl::pw_aff::intersect_domain(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::pw_aff::intersect_params(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::pw_aff::intersect_params(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::pw_aff::intersect_params(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::le_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::le_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::le_set(const typed::aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::le_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_aff_list<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::list() const
-{
-  auto res = isl::pw_aff::list();
-  return typed::pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::lt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::lt_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_aff<Domain, Anonymous>::lt_set(const typed::aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::lt_set(pwaff2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::max(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::max(multi2);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::max(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::max(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::max(const typed::aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::max(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Anonymous> typed::pw_aff<Domain, Anonymous>::max_multi_val() const
-{
-  auto res = isl::pw_aff::max_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::min(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::min(multi2);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::min(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::min(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::min(const typed::aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::min(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Anonymous> typed::pw_aff<Domain, Anonymous>::min_multi_val() const
-{
-  auto res = isl::pw_aff::min_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::mod(const typed::val<Anonymous> &mod) const
-{
-  auto res = isl::pw_aff::mod(mod);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::mod(long mod) const
-{
-  auto res = isl::pw_aff::mod(mod);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::neg() const
-{
-  auto res = isl::pw_aff::neg();
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const
-{
-  auto res = isl::pw_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::pw_aff<Domain2, Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::pw_aff::pullback(ma);
-  return typed::pw_aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain> &ma) const
-{
-  auto res = isl::pw_aff::pullback(ma);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::pw_aff<Domain2, Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::pw_aff::pullback(mpa);
-  return typed::pw_aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::multi_pw_aff<Domain> &mpa) const
-{
-  auto res = isl::pw_aff::pullback(mpa);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::pw_aff<Domain2, Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::pw_aff::pullback(pma);
-  return typed::pw_aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain> &pma) const
-{
-  auto res = isl::pw_aff::pullback(pma);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_pw_aff<Domain2, Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::pw_aff::pullback(upma);
-  return typed::union_pw_aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain> &upma) const
-{
-  auto res = isl::pw_aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::pw_multi_aff_list() const
-{
-  auto res = isl::pw_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::multi_pw_aff<Domain, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<Domain, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::pw_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::pw_multi_aff<Domain, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const
-{
-  auto res = isl::pw_aff::range_product(pma2);
-  return typed::pw_multi_aff<Domain, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
-{
-  auto res = isl::pw_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::pw_aff::scale(mv);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::pw_aff::scale(v);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale(long v) const
-{
-  auto res = isl::pw_aff::scale(v);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::pw_aff::scale_down(mv);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale_down(const typed::val<Anonymous> &f) const
-{
-  auto res = isl::pw_aff::scale_down(f);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale_down(long f) const
-{
-  auto res = isl::pw_aff::scale_down(f);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::pw_aff::set_at(pos, el);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::pw_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::pw_multi_aff<Domain, Range2> typed::pw_aff<Domain, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::pw_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::pw_multi_aff<Domain, Range2> typed::pw_aff<Domain, Anonymous>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::pw_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain>
-typed::space<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::space() const
-{
-  auto res = isl::pw_aff::space();
-  return typed::space<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::sub(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
-{
-  auto res = isl::pw_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::pw_aff::sub(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
-{
-  auto res = isl::pw_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::sub(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::subtract_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::pw_aff::subtract_domain(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::subtract_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::pw_aff::subtract_domain(space);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::subtract_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::pw_aff::subtract_domain(uset);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::subtract_domain(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::pw_aff::subtract_domain(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::subtract_domain(const typed::point<Domain> &set) const
-{
-  auto res = isl::pw_aff::subtract_domain(set);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::to_multi_pw_aff() const
-{
-  auto res = isl::pw_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::to_union_pw_aff() const
-{
-  auto res = isl::pw_aff::to_union_pw_aff();
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::to_union_pw_multi_aff() const
-{
-  auto res = isl::pw_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::multi_pw_aff<Domain, Anonymous> &mpa2) const
-{
-  auto res = isl::pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const
-{
-  auto res = isl::pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::union_add(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
-{
-  auto res = isl::pw_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::pw_aff::union_add(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
-{
-  auto res = isl::pw_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::aff<Domain, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::union_add(pwaff2);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pw_aff(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff)
-  : isl::pw_aff(aff)
-{
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pw_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_aff(ctx, str)
-{
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::add(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::add(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
-{
-  auto res = isl::pw_aff::add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
-{
-  auto res = isl::pw_aff::add(upa2);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
-{
-  auto res = isl::pw_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::add(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add_constant(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::pw_aff::add_constant(v);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add_constant(long v) const
-{
-  auto res = isl::pw_aff::add_constant(v);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::pw_aff::add_constant(mv);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Arg1> &upma2) const
-{
-  auto res = isl::pw_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_aff() const
-{
-  auto res = isl::pw_aff::as_aff();
-  return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::map<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_map() const
-{
-  auto res = isl::pw_aff::as_map();
-  return typed::map<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_multi_aff() const
-{
-  auto res = isl::pw_aff::as_multi_aff();
-  return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_multi_union_pw_aff() const
-{
-  auto res = isl::pw_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_pw_multi_aff() const
-{
-  auto res = isl::pw_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_union_map() const
-{
-  auto res = isl::pw_aff::as_union_map();
-  return typed::union_map<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::at(int pos) const
-{
-  auto res = isl::pw_aff::at(pos);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
-{
-  auto res = isl::pw_aff::bind(tuple);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::bind(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::pw_aff::bind(id);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::bind(const std::string &id) const
-{
-  auto res = isl::pw_aff::bind(id);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const
-{
-  auto res = isl::pw_aff::bind_domain(tuple);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<Range2, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const
-{
-  auto res = isl::pw_aff::bind_domain_wrapped_domain(tuple);
-  return typed::pw_aff<Range2, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::ceil() const
-{
-  auto res = isl::pw_aff::ceil();
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::coalesce() const
-{
-  auto res = isl::pw_aff::coalesce();
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::cond(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_true, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_false) const
-{
-  auto res = isl::pw_aff::cond(pwaff_true, pwaff_false);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::domain() const
-{
-  auto res = isl::pw_aff::domain();
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Anonymous> &space) const
-{
-  auto res = isl::pw_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::floor() const
-{
-  auto res = isl::pw_aff::floor();
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::ge_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::ge_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::ge_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::ge_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::set<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::union_set<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::basic_set<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::point<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::pw_aff::gist(context);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::gt_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::gt_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::identity() const
-{
-  auto res = isl::pw_aff::identity();
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_aff::intersect_domain(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const
-{
-  auto res = isl::pw_aff::intersect_domain(space);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
-{
-  auto res = isl::pw_aff::intersect_domain(uset);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_aff::intersect_domain(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::point<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_aff::intersect_domain(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::pw_aff::intersect_params(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::pw_aff::intersect_params(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::pw_aff::intersect_params(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::le_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::le_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::le_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::le_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::list() const
-{
-  auto res = isl::pw_aff::list();
-  return typed::pw_aff_list<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::lt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::lt_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::lt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::lt_set(pwaff2);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::max(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::max(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::max(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::max(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::max(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::max(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_val<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::max_multi_val() const
-{
-  auto res = isl::pw_aff::max_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::min(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::min(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::min(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::min(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::min(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::min(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_val<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::min_multi_val() const
-{
-  auto res = isl::pw_aff::min_multi_val();
-  return typed::multi_val<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::mod(const typed::val<Anonymous> &mod) const
-{
-  auto res = isl::pw_aff::mod(mod);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::mod(long mod) const
-{
-  auto res = isl::pw_aff::mod(mod);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::neg() const
-{
-  auto res = isl::pw_aff::neg();
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Domain3>
-typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const
-{
-  auto res = isl::pw_aff::preimage_domain_wrapped_domain(pma2);
-  return typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const
-{
-  auto res = isl::pw_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1, typename Arg2>
-typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::product(const typed::multi_pw_aff<Arg1, Arg2> &multi2) const
-{
-  auto res = isl::pw_aff::product(multi2);
-  return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1, typename Arg2>
-typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::product(const typed::pw_multi_aff<Arg1, Arg2> &pma2) const
-{
-  auto res = isl::pw_aff::product(pma2);
-  return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::pw_aff<Arg1, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_aff<Arg1, pair<Domain2, Range2>> &ma) const
-{
-  auto res = isl::pw_aff::pullback(ma);
-  return typed::pw_aff<Arg1, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const
-{
-  auto res = isl::pw_aff::pullback(ma);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::pw_aff<Arg1, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_pw_aff<Arg1, pair<Domain2, Range2>> &mpa) const
-{
-  auto res = isl::pw_aff::pullback(mpa);
-  return typed::pw_aff<Arg1, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa) const
-{
-  auto res = isl::pw_aff::pullback(mpa);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::pw_aff<Arg1, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::pw_multi_aff<Arg1, pair<Domain2, Range2>> &pma) const
-{
-  auto res = isl::pw_aff::pullback(pma);
-  return typed::pw_aff<Arg1, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const
-{
-  auto res = isl::pw_aff::pullback(pma);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::union_pw_aff<Arg1, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::union_pw_multi_aff<Arg1, pair<Domain2, Range2>> &upma) const
-{
-  auto res = isl::pw_aff::pullback(upma);
-  return typed::union_pw_aff<Arg1, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const
-{
-  auto res = isl::pw_aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pw_multi_aff_list() const
-{
-  auto res = isl::pw_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const
-{
-  auto res = isl::pw_aff::range_product(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const
-{
-  auto res = isl::pw_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> &pma2) const
-{
-  auto res = isl::pw_aff::range_product(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> &upma2) const
-{
-  auto res = isl::pw_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::pw_aff::scale(mv);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::pw_aff::scale(v);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale(long v) const
-{
-  auto res = isl::pw_aff::scale(v);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::pw_aff::scale_down(mv);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale_down(const typed::val<Anonymous> &f) const
-{
-  auto res = isl::pw_aff::scale_down(f);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale_down(long f) const
-{
-  auto res = isl::pw_aff::scale_down(f);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::pw_aff::set_at(pos, el);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::pw_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::pw_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2>
-template <typename Arg1>
-typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::pw_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::space<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::space() const
-{
-  auto res = isl::pw_aff::space();
-  return typed::space<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::sub(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
-{
-  auto res = isl::pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::sub(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
-{
-  auto res = isl::pw_aff::sub(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
-{
-  auto res = isl::pw_aff::sub(upa2);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
-{
-  auto res = isl::pw_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::sub(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_aff::subtract_domain(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const
-{
-  auto res = isl::pw_aff::subtract_domain(space);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
-{
-  auto res = isl::pw_aff::subtract_domain(uset);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_aff::subtract_domain(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::point<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_aff::subtract_domain(set);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::to_multi_pw_aff() const
-{
-  auto res = isl::pw_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::to_union_pw_aff() const
-{
-  auto res = isl::pw_aff::to_union_pw_aff();
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::to_union_pw_multi_aff() const
-{
-  auto res = isl::pw_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &mpa2) const
-{
-  auto res = isl::pw_aff::union_add(mpa2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &mupa2) const
-{
-  auto res = isl::pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::union_add(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
-{
-  auto res = isl::pw_aff::union_add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
-{
-  auto res = isl::pw_aff::union_add(upa2);
-  return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
-{
-  auto res = isl::pw_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
-{
-  auto res = isl::pw_aff::union_add(pwaff2);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-typed::pw_aff_list<Anonymous>::pw_aff_list(const isl::ctx &ctx, int n)
-  : isl::pw_aff_list(ctx, n)
-{
-}
-
-typed::pw_aff_list<Anonymous>::pw_aff_list(const typed::pw_aff<Anonymous> &el)
-  : isl::pw_aff_list(el)
-{
-}
-
-typed::pw_aff_list<Anonymous>::pw_aff_list(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_aff_list(ctx, str)
-{
-}
-
-typed::pw_aff_list<Anonymous> typed::pw_aff_list<Anonymous>::add(const typed::pw_aff<Anonymous> &el) const
-{
-  auto res = isl::pw_aff_list::add(el);
-  return typed::pw_aff_list<Anonymous>(res);
-}
-
-typed::pw_aff_list<Anonymous> typed::pw_aff_list<Anonymous>::add(const typed::aff<Anonymous> &el) const
-{
-  auto res = isl::pw_aff_list::add(el);
-  return typed::pw_aff_list<Anonymous>(res);
-}
-
-typed::pw_aff<Anonymous> typed::pw_aff_list<Anonymous>::at(int index) const
-{
-  auto res = isl::pw_aff_list::at(index);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::pw_aff_list<Anonymous> typed::pw_aff_list<Anonymous>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::pw_aff_list::drop(first, n);
-  return typed::pw_aff_list<Anonymous>(res);
-}
-
-void typed::pw_aff_list<Anonymous>::foreach(const std::function<void(typed::pw_aff<Anonymous>)> &fn) const
-{
-  auto lambda = [&] (isl::pw_aff arg0) {
-    return fn(typed::pw_aff<Anonymous>(arg0));
-  };
-  return isl::pw_aff_list::foreach(lambda);
-}
-
-template <typename Domain>
-typed::pw_aff_list<Domain, Anonymous>::pw_aff_list(const isl::ctx &ctx, int n)
-  : isl::pw_aff_list(ctx, n)
-{
-}
-
-template <typename Domain>
-typed::pw_aff_list<Domain, Anonymous>::pw_aff_list(const typed::pw_aff<Domain, Anonymous> &el)
-  : isl::pw_aff_list(el)
-{
-}
-
-template <typename Domain>
-typed::pw_aff_list<Domain, Anonymous>::pw_aff_list(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_aff_list(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::pw_aff_list<Domain, Anonymous> typed::pw_aff_list<Domain, Anonymous>::add(const typed::pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::pw_aff_list::add(el);
-  return typed::pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff_list<Domain, Anonymous> typed::pw_aff_list<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::pw_aff_list::add(el);
-  return typed::pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::pw_aff_list<Domain, Anonymous>::at(int index) const
-{
-  auto res = isl::pw_aff_list::at(index);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_aff_list<Domain, Anonymous> typed::pw_aff_list<Domain, Anonymous>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::pw_aff_list::drop(first, n);
-  return typed::pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-void typed::pw_aff_list<Domain, Anonymous>::foreach(const std::function<void(typed::pw_aff<Domain, Anonymous>)> &fn) const
-{
-  auto lambda = [&] (isl::pw_aff arg0) {
-    return fn(typed::pw_aff<Domain, Anonymous>(arg0));
-  };
-  return isl::pw_aff_list::foreach(lambda);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain>::pw_multi_aff(const typed::multi_aff<Domain> &ma)
-  : isl::pw_multi_aff(ma)
-{
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain>::pw_multi_aff(const typed::pw_aff<Domain> &pa)
-  : isl::pw_multi_aff(pa)
-{
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain>::pw_multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_multi_aff(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::pw_multi_aff::add(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::multi_union_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::pw_multi_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::pw_multi_aff<Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::multi_aff<Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::pw_aff<Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add_constant(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::pw_multi_aff::add_constant(mv);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add_constant(const typed::val<Domain> &v) const
-{
-  auto res = isl::pw_multi_aff::add_constant(v);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add_constant(long v) const
-{
-  auto res = isl::pw_multi_aff::add_constant(v);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_pw_multi_aff<Range> typed::pw_multi_aff<Domain>::apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::pw_multi_aff<Domain>::as_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::as_multi_aff();
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::pw_multi_aff<Domain>::as_multi_union_pw_aff() const
-{
-  auto res = isl::pw_multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::as_pw_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::pw_multi_aff<Domain>::as_set() const
-{
-  auto res = isl::pw_multi_aff::as_set();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Anonymous> typed::pw_multi_aff<Domain>::at(int pos) const
-{
-  auto res = isl::pw_multi_aff::at(pos);
-  return typed::pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::set<> typed::pw_multi_aff<Domain>::bind(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::pw_multi_aff::bind(tuple);
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::coalesce() const
-{
-  auto res = isl::pw_multi_aff::coalesce();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<> typed::pw_multi_aff<Domain>::domain() const
-{
-  auto res = isl::pw_multi_aff::domain();
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::extract_pw_multi_aff(const typed::space<Domain> &space) const
-{
-  auto res = isl::pw_multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::gist(const typed::set<> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::gist(const typed::basic_set<> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::gist(const typed::point<> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Domain> typed::pw_multi_aff<Domain>::identity() const
-{
-  auto res = isl::pw_multi_aff::identity();
-  return typed::multi_pw_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::pw_multi_aff<Arg1, Domain> typed::pw_multi_aff<Domain>::insert_domain(const typed::space<Arg1> &domain) const
-{
-  auto res = isl::pw_multi_aff::insert_domain(domain);
-  return typed::pw_multi_aff<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_aff_list<Anonymous> typed::pw_multi_aff<Domain>::list() const
-{
-  auto res = isl::pw_multi_aff::list();
-  return typed::pw_aff_list<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::max(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::pw_multi_aff::max(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::pw_multi_aff<Domain>::max_multi_val() const
-{
-  auto res = isl::pw_multi_aff::max_multi_val();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::min(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::pw_multi_aff::min(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::pw_multi_aff<Domain>::min_multi_val() const
-{
-  auto res = isl::pw_multi_aff::min_multi_val();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::neg() const
-{
-  auto res = isl::pw_multi_aff::neg();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::pw_multi_aff<Domain>::product(const typed::multi_pw_aff<Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::pw_multi_aff<Domain>::product(const typed::pw_multi_aff<Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::pw_multi_aff<Domain>::product(const typed::multi_aff<Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::pw_multi_aff<Domain>::product(const typed::pw_aff<Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain> typed::pw_multi_aff<Domain>::pw_multi_aff_list() const
-{
-  auto res = isl::pw_multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::scale(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::pw_multi_aff::scale(mv);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::scale(const typed::val<Domain> &v) const
-{
-  auto res = isl::pw_multi_aff::scale(v);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::scale(long v) const
-{
-  auto res = isl::pw_multi_aff::scale(v);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::scale_down(const typed::multi_val<Domain> &mv) const
-{
-  auto res = isl::pw_multi_aff::scale_down(mv);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::scale_down(const typed::val<Domain> &v) const
-{
-  auto res = isl::pw_multi_aff::scale_down(v);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::scale_down(long v) const
-{
-  auto res = isl::pw_multi_aff::scale_down(v);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::set_at(int pos, const typed::pw_aff<Anonymous> &el) const
-{
-  auto res = isl::pw_multi_aff::set_at(pos, el);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::pw_multi_aff<Domain>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
-{
-  auto res = isl::pw_multi_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::pw_multi_aff<Domain2> typed::pw_multi_aff<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::pw_multi_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::pw_multi_aff<Domain2> typed::pw_multi_aff<Domain>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::pw_multi_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<Domain2>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::pw_multi_aff<Domain>::space() const
-{
-  auto res = isl::pw_multi_aff::space();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::multi_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::pw_multi_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::multi_union_pw_aff<Domain> &multi2) const
-{
-  auto res = isl::pw_multi_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::pw_multi_aff<Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::multi_aff<Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::pw_aff<Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::to_multi_pw_aff() const
-{
-  auto res = isl::pw_multi_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::to_union_pw_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::multi_pw_aff<Arg1, Domain> typed::pw_multi_aff<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
-{
-  auto res = isl::pw_multi_aff::unbind_params_insert_domain(domain);
-  return typed::multi_pw_aff<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::multi_pw_aff<Domain> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const
-{
-  auto res = isl::pw_multi_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::pw_multi_aff<Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::multi_aff<Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::pw_aff<Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range>::pw_multi_aff(const typed::multi_aff<Domain, Range> &ma)
-  : isl::pw_multi_aff(ma)
-{
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range>::pw_multi_aff(const typed::pw_aff<Domain, Range> &pa)
-  : isl::pw_multi_aff(pa)
-{
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range>::pw_multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_multi_aff(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::add(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::pw_multi_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::multi_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::pw_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add_constant(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::pw_multi_aff::add_constant(mv);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add_constant(const typed::val<Range> &v) const
-{
-  auto res = isl::pw_multi_aff::add_constant(v);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add_constant(long v) const
-{
-  auto res = isl::pw_multi_aff::add_constant(v);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, Range2> typed::pw_multi_aff<Domain, Range>::apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const
-{
-  auto res = isl::pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::pw_multi_aff<Domain, Range>::as_map() const
-{
-  auto res = isl::pw_multi_aff::as_map();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::as_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::as_multi_aff();
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::as_multi_union_pw_aff() const
-{
-  auto res = isl::pw_multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::as_pw_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::pw_multi_aff<Domain, Range>::as_union_map() const
-{
-  auto res = isl::pw_multi_aff::as_union_map();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_aff<Domain, Anonymous> typed::pw_multi_aff<Domain, Range>::at(int pos) const
-{
-  auto res = isl::pw_multi_aff::at(pos);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Domain> typed::pw_multi_aff<Domain, Range>::bind(const typed::multi_id<Range> &tuple) const
-{
-  auto res = isl::pw_multi_aff::bind(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Range> typed::pw_multi_aff<Domain, Range>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::pw_multi_aff::bind_domain(tuple);
-  return typed::pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::coalesce() const
-{
-  auto res = isl::pw_multi_aff::coalesce();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<Domain> typed::pw_multi_aff<Domain, Range>::domain() const
-{
-  auto res = isl::pw_multi_aff::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::extract_pw_multi_aff(const typed::space<Domain, Range> &space) const
-{
-  auto res = isl::pw_multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::gist(const typed::set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::gist(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::gist(const typed::point<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::identity() const
-{
-  auto res = isl::pw_multi_aff::identity();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_domain(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_domain(const typed::point<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_aff_list<Domain, Anonymous> typed::pw_multi_aff<Domain, Range>::list() const
-{
-  auto res = isl::pw_multi_aff::list();
-  return typed::pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::max(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::max(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<Range> typed::pw_multi_aff<Domain, Range>::max_multi_val() const
-{
-  auto res = isl::pw_multi_aff::max_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::min(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::min(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<Range> typed::pw_multi_aff<Domain, Range>::min_multi_val() const
-{
-  auto res = isl::pw_multi_aff::min_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::neg() const
-{
-  auto res = isl::pw_multi_aff::neg();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const
-{
-  auto res = isl::pw_multi_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::product(const typed::multi_aff<Domain2, Range2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::product(const typed::pw_aff<Domain2, Range2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::multi_pw_aff<Domain2, Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::pw_multi_aff<Domain2, Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::pw_multi_aff::pullback(ma);
-  return typed::pw_multi_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain> &ma) const
-{
-  auto res = isl::pw_multi_aff::pullback(ma);
-  return typed::pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::pw_multi_aff<Domain2, Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff_list<Domain, Range> typed::pw_multi_aff<Domain, Range>::pw_multi_aff_list() const
-{
-  auto res = isl::pw_multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::pw_multi_aff::range_product(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::pw_multi_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::multi_aff<Domain, Range2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::pw_aff<Domain, Range2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::pw_multi_aff::scale(mv);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale(const typed::val<Range> &v) const
-{
-  auto res = isl::pw_multi_aff::scale(v);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale(long v) const
-{
-  auto res = isl::pw_multi_aff::scale(v);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale_down(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::pw_multi_aff::scale_down(mv);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale_down(const typed::val<Range> &v) const
-{
-  auto res = isl::pw_multi_aff::scale_down(v);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale_down(long v) const
-{
-  auto res = isl::pw_multi_aff::scale_down(v);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::pw_multi_aff::set_at(pos, el);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::pw_multi_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::pw_multi_aff<Domain, Range2> typed::pw_multi_aff<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::pw_multi_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::pw_multi_aff<Domain, Range2> typed::pw_multi_aff<Domain, Range>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::pw_multi_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Domain, Range> typed::pw_multi_aff<Domain, Range>::space() const
-{
-  auto res = isl::pw_multi_aff::space();
-  return typed::space<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::multi_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::pw_multi_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::multi_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::pw_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::subtract_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::subtract_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::subtract_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::subtract_domain(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::subtract_domain(const typed::point<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::to_multi_pw_aff() const
-{
-  auto res = isl::pw_multi_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::to_union_pw_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const
-{
-  auto res = isl::pw_multi_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::pw_multi_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::multi_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::pw_aff<Domain, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pw_multi_aff(const typed::multi_aff<pair<Domain2, Range2>, Range> &ma)
-  : isl::pw_multi_aff(ma)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pw_multi_aff(const typed::pw_aff<pair<Domain2, Range2>, Range> &pa)
-  : isl::pw_multi_aff(pa)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pw_multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_multi_aff(ctx, str)
-{
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::add(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::add(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
-{
-  auto res = isl::pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::pw_multi_aff::add_constant(mv);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::val<Range> &v) const
-{
-  auto res = isl::pw_multi_aff::add_constant(v);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add_constant(long v) const
-{
-  auto res = isl::pw_multi_aff::add_constant(v);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::apply(const typed::union_pw_multi_aff<Range, Arg2> &upma2) const
-{
-  auto res = isl::pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::map<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::as_map() const
-{
-  auto res = isl::pw_multi_aff::as_map();
-  return typed::map<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::as_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::as_multi_aff();
-  return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::as_multi_union_pw_aff() const
-{
-  auto res = isl::pw_multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::as_pw_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_map<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::as_union_map() const
-{
-  auto res = isl::pw_multi_aff::as_union_map();
-  return typed::union_map<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::at(int pos) const
-{
-  auto res = isl::pw_multi_aff::at(pos);
-  return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::set<pair<Domain2, Range2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::bind(const typed::multi_id<Range> &tuple) const
-{
-  auto res = isl::pw_multi_aff::bind(tuple);
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const
-{
-  auto res = isl::pw_multi_aff::bind_domain(tuple);
-  return typed::pw_multi_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<Range2, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const
-{
-  auto res = isl::pw_multi_aff::bind_domain_wrapped_domain(tuple);
-  return typed::pw_multi_aff<Range2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::coalesce() const
-{
-  auto res = isl::pw_multi_aff::coalesce();
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::set<pair<Domain2, Range2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::domain() const
-{
-  auto res = isl::pw_multi_aff::domain();
-  return typed::set<pair<Domain2, Range2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space) const
-{
-  auto res = isl::pw_multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::union_set<pair<Domain2, Range2>> &context) const
-{
-  auto res = isl::pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::basic_set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::point<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::identity() const
-{
-  auto res = isl::pw_multi_aff::identity();
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::point<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::list() const
-{
-  auto res = isl::pw_multi_aff::list();
-  return typed::pw_aff_list<pair<Domain2, Range2>, Anonymous>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::max(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_val<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::max_multi_val() const
-{
-  auto res = isl::pw_multi_aff::max_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::min(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_val<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::min_multi_val() const
-{
-  auto res = isl::pw_multi_aff::min_multi_val();
-  return typed::multi_val<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::neg() const
-{
-  auto res = isl::pw_multi_aff::neg();
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Domain3>
-typed::pw_multi_aff<pair<Domain3, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
-  return typed::pw_multi_aff<pair<Domain3, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const
-{
-  auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Domain3>
-typed::pw_multi_aff<pair<Domain3, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, Domain2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
-  return typed::pw_multi_aff<pair<Domain3, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Domain3>
-typed::pw_multi_aff<pair<Domain3, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::pw_aff<Domain3, Domain2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
-  return typed::pw_multi_aff<pair<Domain3, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const
-{
-  auto res = isl::pw_multi_aff::product(multi2);
-  return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::product(const typed::pw_multi_aff<Arg2, Arg3> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_aff<Arg2, Arg3> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2, typename Arg3>
-typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::product(const typed::pw_aff<Arg2, Arg3> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<Arg2, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::pw_multi_aff<Arg2, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma) const
-{
-  auto res = isl::pw_multi_aff::pullback(ma);
-  return typed::pw_multi_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const
-{
-  auto res = isl::pw_multi_aff::pullback(ma);
-  return typed::pw_multi_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::pw_multi_aff<Arg2, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::union_pw_multi_aff<Arg2, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Arg2, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff_list<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pw_multi_aff_list() const
-{
-  auto res = isl::pw_multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::pw_multi_aff::range_product(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
-{
-  auto res = isl::pw_multi_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> &upma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg2>
-typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::pw_aff<pair<Domain2, Range2>, Arg2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::pw_multi_aff::scale(mv);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale(const typed::val<Range> &v) const
-{
-  auto res = isl::pw_multi_aff::scale(v);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale(long v) const
-{
-  auto res = isl::pw_multi_aff::scale(v);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::pw_multi_aff::scale_down(mv);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::val<Range> &v) const
-{
-  auto res = isl::pw_multi_aff::scale_down(v);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale_down(long v) const
-{
-  auto res = isl::pw_multi_aff::scale_down(v);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::pw_multi_aff::set_at(pos, el);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
-{
-  auto res = isl::pw_multi_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg1>
-typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::pw_multi_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-template <typename Arg1>
-typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::pw_multi_aff::set_range_tuple(id);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::space<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::space() const
-{
-  auto res = isl::pw_multi_aff::space();
-  return typed::space<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::sub(multi2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
-{
-  auto res = isl::pw_multi_aff::sub(multi2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
-{
-  auto res = isl::pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::point<pair<Domain2, Range2>> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::to_multi_pw_aff() const
-{
-  auto res = isl::pw_multi_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::to_union_pw_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::union_add(mpa2);
-  return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const
-{
-  auto res = isl::pw_multi_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain2, typename Range2, typename Range>
-typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff(const typed::multi_aff<Domain, pair<Range, Range2>> &ma)
-  : isl::pw_multi_aff(ma)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff(const typed::pw_aff<Domain, pair<Range, Range2>> &pa)
-  : isl::pw_multi_aff(pa)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_multi_aff(ctx, str)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::add(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::pw_multi_aff::add_constant(mv);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add_constant(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::pw_multi_aff::add_constant(v);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add_constant(long v) const
-{
-  auto res = isl::pw_multi_aff::add_constant(v);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, Arg3> typed::pw_multi_aff<Domain, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const
-{
-  auto res = isl::pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::as_map() const
-{
-  auto res = isl::pw_multi_aff::as_map();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::as_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::as_multi_aff();
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::pw_multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::as_pw_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::as_union_map() const
-{
-  auto res = isl::pw_multi_aff::as_union_map();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_aff<Domain, Anonymous> typed::pw_multi_aff<Domain, pair<Range, Range2>>::at(int pos) const
-{
-  auto res = isl::pw_multi_aff::at(pos);
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<Domain> typed::pw_multi_aff<Domain, pair<Range, Range2>>::bind(const typed::multi_id<pair<Range, Range2>> &tuple) const
-{
-  auto res = isl::pw_multi_aff::bind(tuple);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::bind_domain(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::pw_multi_aff::bind_domain(tuple);
-  return typed::pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::pw_multi_aff::coalesce();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::set<Domain> typed::pw_multi_aff<Domain, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::pw_multi_aff::domain();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const
-{
-  auto res = isl::pw_multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::point<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::identity() const
-{
-  auto res = isl::pw_multi_aff::identity();
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::point<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_aff_list<Domain, Anonymous> typed::pw_multi_aff<Domain, pair<Range, Range2>>::list() const
-{
-  auto res = isl::pw_multi_aff::list();
-  return typed::pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::max(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::max(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_val<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::max_multi_val() const
-{
-  auto res = isl::pw_multi_aff::max_multi_val();
-  return typed::multi_val<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::min(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::min(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_val<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::min_multi_val() const
-{
-  auto res = isl::pw_multi_aff::min_multi_val();
-  return typed::multi_val<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::neg() const
-{
-  auto res = isl::pw_multi_aff::neg();
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::product(const typed::multi_pw_aff<Domain2, Arg3> &multi2) const
-{
-  auto res = isl::pw_multi_aff::product(multi2);
-  return typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::product(const typed::pw_multi_aff<Domain2, Arg3> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::product(const typed::multi_aff<Domain2, Arg3> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::product(const typed::pw_aff<Domain2, Arg3> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::multi_pw_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::pw_multi_aff::pullback(ma);
-  return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain> &ma) const
-{
-  auto res = isl::pw_multi_aff::pullback(ma);
-  return typed::pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain> &pma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff_list<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff_list() const
-{
-  auto res = isl::pw_multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::pw_multi_aff::range_factor_domain();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, Range2> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::pw_multi_aff::range_factor_range();
-  return typed::pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_pw_aff<Domain, Arg3> &multi2) const
-{
-  auto res = isl::pw_multi_aff::range_product(multi2);
-  return typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_union_pw_aff<Domain, Arg3> &multi2) const
-{
-  auto res = isl::pw_multi_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<Domain, Arg3> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_aff<Domain, Arg3> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::pw_aff<Domain, Arg3> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::pw_multi_aff::scale(mv);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::pw_multi_aff::scale(v);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale(long v) const
-{
-  auto res = isl::pw_multi_aff::scale(v);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::pw_multi_aff::scale_down(mv);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale_down(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::pw_multi_aff::scale_down(v);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale_down(long v) const
-{
-  auto res = isl::pw_multi_aff::scale_down(v);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::pw_multi_aff::set_at(pos, el);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::pw_multi_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::space() const
-{
-  auto res = isl::pw_multi_aff::space();
-  return typed::space<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::sub(multi2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::basic_set<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::point<Domain> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::to_multi_pw_aff() const
-{
-  auto res = isl::pw_multi_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::to_union_pw_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::union_add(mpa2);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &mupa2) const
-{
-  auto res = isl::pw_multi_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &ma)
-  : isl::pw_multi_aff(ma)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pa)
-  : isl::pw_multi_aff(pa)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_multi_aff(ctx, str)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::add(multi2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::add(multi2);
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::add(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::pw_multi_aff::add_constant(mv);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::pw_multi_aff::add_constant(v);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(long v) const
-{
-  auto res = isl::pw_multi_aff::add_constant(v);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, Arg2> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const
-{
-  auto res = isl::pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_map() const
-{
-  auto res = isl::pw_multi_aff::as_map();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::as_multi_aff();
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::pw_multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_pw_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_union_map() const
-{
-  auto res = isl::pw_multi_aff::as_union_map();
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_aff<pair<T1, T2>, Anonymous> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::at(int pos) const
-{
-  auto res = isl::pw_multi_aff::at(pos);
-  return typed::pw_aff<pair<T1, T2>, Anonymous>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<T1, T2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind(const typed::multi_id<pair<Range, Range2>> &tuple) const
-{
-  auto res = isl::pw_multi_aff::bind(tuple);
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
-{
-  auto res = isl::pw_multi_aff::bind_domain(tuple);
-  return typed::pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<T2, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind_domain_wrapped_domain(const typed::multi_id<T1> &tuple) const
-{
-  auto res = isl::pw_multi_aff::bind_domain_wrapped_domain(tuple);
-  return typed::pw_multi_aff<T2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::pw_multi_aff::coalesce();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::set<pair<T1, T2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::pw_multi_aff::domain();
-  return typed::set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
-{
-  auto res = isl::pw_multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::set<pair<T1, T2>> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_set<pair<T1, T2>> &context) const
-{
-  auto res = isl::pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_set<pair<T1, T2>> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::point<pair<T1, T2>> &set) const
-{
-  auto res = isl::pw_multi_aff::gist(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::identity() const
-{
-  auto res = isl::pw_multi_aff::identity();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::point<pair<T1, T2>> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_domain(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::pw_multi_aff::intersect_params(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_aff_list<pair<T1, T2>, Anonymous> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::list() const
-{
-  auto res = isl::pw_multi_aff::list();
-  return typed::pw_aff_list<pair<T1, T2>, Anonymous>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::max(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::max(multi2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_val<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::max_multi_val() const
-{
-  auto res = isl::pw_multi_aff::max_multi_val();
-  return typed::multi_val<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::min(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::min(multi2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_val<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::min_multi_val() const
-{
-  auto res = isl::pw_multi_aff::min_multi_val();
-  return typed::multi_val<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::neg() const
-{
-  auto res = isl::pw_multi_aff::neg();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain3>
-typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &pma2) const
-{
-  auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
-  return typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const
-{
-  auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain3>
-typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, T1> &pma2) const
-{
-  auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
-  return typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain3>
-typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::pw_aff<Domain3, T1> &pma2) const
-{
-  auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
-  return typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::multi_pw_aff<Domain2, Arg2> &multi2) const
-{
-  auto res = isl::pw_multi_aff::product(multi2);
-  return typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::pw_multi_aff<Domain2, Arg2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::multi_aff<Domain2, Arg2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::pw_aff<Domain2, Arg2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::product(pma2);
-  return typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::multi_pw_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<pair<T1, T2>> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::pullback(mpa2);
-  return typed::multi_pw_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
-{
-  auto res = isl::pw_multi_aff::pullback(ma);
-  return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<pair<T1, T2>> &ma) const
-{
-  auto res = isl::pw_multi_aff::pullback(ma);
-  return typed::pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<pair<T1, T2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(pma2);
-  return typed::pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const
-{
-  auto res = isl::pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff_list() const
-{
-  auto res = isl::pw_multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, Range> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::pw_multi_aff::range_factor_domain();
-  return typed::pw_multi_aff<pair<T1, T2>, Range>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, Range2> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::pw_multi_aff::range_factor_range();
-  return typed::pw_multi_aff<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_pw_aff<pair<T1, T2>, Arg2> &multi2) const
-{
-  auto res = isl::pw_multi_aff::range_product(multi2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_union_pw_aff<pair<T1, T2>, Arg2> &multi2) const
-{
-  auto res = isl::pw_multi_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::pw_aff<pair<T1, T2>, Arg2> &pma2) const
-{
-  auto res = isl::pw_multi_aff::range_product(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::pw_multi_aff::scale(mv);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::pw_multi_aff::scale(v);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(long v) const
-{
-  auto res = isl::pw_multi_aff::scale(v);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const
-{
-  auto res = isl::pw_multi_aff::scale_down(mv);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(const typed::val<pair<Range, Range2>> &v) const
-{
-  auto res = isl::pw_multi_aff::scale_down(v);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(long v) const
-{
-  auto res = isl::pw_multi_aff::scale_down(v);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::set_at(int pos, const typed::pw_aff<pair<T1, T2>, Anonymous> &el) const
-{
-  auto res = isl::pw_multi_aff::set_at(pos, el);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::set_at(int pos, const typed::union_pw_aff<pair<T1, T2>, Anonymous> &el) const
-{
-  auto res = isl::pw_multi_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::space() const
-{
-  auto res = isl::pw_multi_aff::space();
-  return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::sub(multi2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
-{
-  auto res = isl::pw_multi_aff::sub(multi2);
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::sub(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::set<pair<T1, T2>> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::basic_set<pair<T1, T2>> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::point<pair<T1, T2>> &set) const
-{
-  auto res = isl::pw_multi_aff::subtract_domain(set);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_multi_pw_aff() const
-{
-  auto res = isl::pw_multi_aff::to_multi_pw_aff();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_union_pw_multi_aff() const
-{
-  auto res = isl::pw_multi_aff::to_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mpa2) const
-{
-  auto res = isl::pw_multi_aff::union_add(mpa2);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mupa2) const
-{
-  auto res = isl::pw_multi_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
-{
-  auto res = isl::pw_multi_aff::union_add(pma2);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain>::pw_multi_aff_list(const isl::ctx &ctx, int n)
-  : isl::pw_multi_aff_list(ctx, n)
-{
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain>::pw_multi_aff_list(const typed::pw_multi_aff<Domain> &el)
-  : isl::pw_multi_aff_list(el)
-{
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain>::pw_multi_aff_list(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_multi_aff_list(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain> typed::pw_multi_aff_list<Domain>::add(const typed::pw_multi_aff<Domain> &el) const
-{
-  auto res = isl::pw_multi_aff_list::add(el);
-  return typed::pw_multi_aff_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain> typed::pw_multi_aff_list<Domain>::add(const typed::multi_aff<Domain> &el) const
-{
-  auto res = isl::pw_multi_aff_list::add(el);
-  return typed::pw_multi_aff_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain> typed::pw_multi_aff_list<Domain>::add(const typed::pw_aff<Domain> &el) const
-{
-  auto res = isl::pw_multi_aff_list::add(el);
-  return typed::pw_multi_aff_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::pw_multi_aff_list<Domain>::at(int index) const
-{
-  auto res = isl::pw_multi_aff_list::at(index);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain> typed::pw_multi_aff_list<Domain>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::pw_multi_aff_list::drop(first, n);
-  return typed::pw_multi_aff_list<Domain>(res);
-}
-
-template <typename Domain>
-void typed::pw_multi_aff_list<Domain>::foreach(const std::function<void(typed::pw_multi_aff<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::pw_multi_aff arg0) {
-    return fn(typed::pw_multi_aff<Domain>(arg0));
-  };
-  return isl::pw_multi_aff_list::foreach(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff_list<Domain, Range>::pw_multi_aff_list(const isl::ctx &ctx, int n)
-  : isl::pw_multi_aff_list(ctx, n)
-{
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff_list<Domain, Range>::pw_multi_aff_list(const typed::pw_multi_aff<Domain, Range> &el)
-  : isl::pw_multi_aff_list(el)
-{
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff_list<Domain, Range>::pw_multi_aff_list(const isl::ctx &ctx, const std::string &str)
-  : isl::pw_multi_aff_list(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff_list<Domain, Range> typed::pw_multi_aff_list<Domain, Range>::add(const typed::pw_multi_aff<Domain, Range> &el) const
-{
-  auto res = isl::pw_multi_aff_list::add(el);
-  return typed::pw_multi_aff_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff_list<Domain, Range> typed::pw_multi_aff_list<Domain, Range>::add(const typed::multi_aff<Domain, Range> &el) const
-{
-  auto res = isl::pw_multi_aff_list::add(el);
-  return typed::pw_multi_aff_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff_list<Domain, Range> typed::pw_multi_aff_list<Domain, Range>::add(const typed::pw_aff<Domain, Range> &el) const
-{
-  auto res = isl::pw_multi_aff_list::add(el);
-  return typed::pw_multi_aff_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff_list<Domain, Range>::at(int index) const
-{
-  auto res = isl::pw_multi_aff_list::at(index);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff_list<Domain, Range> typed::pw_multi_aff_list<Domain, Range>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::pw_multi_aff_list::drop(first, n);
-  return typed::pw_multi_aff_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-void typed::pw_multi_aff_list<Domain, Range>::foreach(const std::function<void(typed::pw_multi_aff<Domain, Range>)> &fn) const
-{
-  auto lambda = [&] (isl::pw_multi_aff arg0) {
-    return fn(typed::pw_multi_aff<Domain, Range>(arg0));
-  };
-  return isl::pw_multi_aff_list::foreach(lambda);
-}
-
-typed::set<>::set(const typed::basic_set<> &bset)
-  : isl::set(bset)
-{
-}
-
-typed::set<>::set(const typed::point<> &pnt)
-  : isl::set(pnt)
-{
-}
-
-typed::set<>::set(const isl::ctx &ctx, const std::string &str)
-  : isl::set(ctx, str)
-{
-}
-
-typed::set<> typed::set<>::coalesce() const
-{
-  auto res = isl::set::coalesce();
-  return typed::set<>(res);
-}
-
-typed::set<> typed::set<>::detect_equalities() const
-{
-  auto res = isl::set::detect_equalities();
-  return typed::set<>(res);
-}
-
-bool typed::set<>::every_set(const std::function<bool(typed::set<>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<>(arg0));
-  };
-  return isl::set::every_set(lambda);
-}
-
-typed::set<> typed::set<>::extract_set(const typed::space<> &space) const
-{
-  auto res = isl::set::extract_set(space);
-  return typed::set<>(res);
-}
-
-void typed::set<>::foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_set arg0) {
-    return fn(typed::basic_set<>(arg0));
-  };
-  return isl::set::foreach_basic_set(lambda);
-}
-
-void typed::set<>::foreach_point(const std::function<void(typed::point<>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<>(arg0));
-  };
-  return isl::set::foreach_point(lambda);
-}
-
-void typed::set<>::foreach_set(const std::function<void(typed::set<>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<>(arg0));
-  };
-  return isl::set::foreach_set(lambda);
-}
-
-typed::set<> typed::set<>::gist(const typed::set<> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::set<>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::union_set<>(res);
-}
-
-typed::set<> typed::set<>::gist(const typed::basic_set<> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::set<>::gist(const typed::point<> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::set<>(res);
-}
-
-typed::pw_aff<Anonymous> typed::set<>::indicator_function() const
-{
-  auto res = isl::set::indicator_function();
-  return typed::pw_aff<Anonymous>(res);
-}
-
-typed::set<> typed::set<>::intersect(const typed::set<> &set2) const
-{
-  auto res = isl::set::intersect(set2);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::set<>::intersect(const typed::union_set<> &uset2) const
-{
-  auto res = isl::set::intersect(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::set<> typed::set<>::intersect(const typed::basic_set<> &set2) const
-{
-  auto res = isl::set::intersect(set2);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::set<>::intersect(const typed::point<> &set2) const
-{
-  auto res = isl::set::intersect(set2);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::set<>::project_out_all_params() const
-{
-  auto res = isl::set::project_out_all_params();
-  return typed::set<>(res);
-}
-
-typed::set<> typed::set<>::project_out_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::set::project_out_param(id);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::set<>::project_out_param(const std::string &id) const
-{
-  auto res = isl::set::project_out_param(id);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::set<>::project_out_param(const typed::id_list<Anonymous> &list) const
-{
-  auto res = isl::set::project_out_param(list);
-  return typed::set<>(res);
-}
-
-typed::set_list<> typed::set<>::set_list() const
-{
-  auto res = isl::set::set_list();
-  return typed::set_list<>(res);
-}
-
-typed::space<> typed::set<>::space() const
-{
-  auto res = isl::set::space();
-  return typed::space<>(res);
-}
-
-typed::set<> typed::set<>::subtract(const typed::set<> &set2) const
-{
-  auto res = isl::set::subtract(set2);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::set<>::subtract(const typed::union_set<> &uset2) const
-{
-  auto res = isl::set::subtract(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::set<> typed::set<>::subtract(const typed::basic_set<> &set2) const
-{
-  auto res = isl::set::subtract(set2);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::set<>::subtract(const typed::point<> &set2) const
-{
-  auto res = isl::set::subtract(set2);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::set<>::to_union_set() const
-{
-  auto res = isl::set::to_union_set();
-  return typed::union_set<>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<>::unbind_params(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::set::unbind_params(tuple);
-  return typed::set<Domain>(res);
-}
-
-typed::set<> typed::set<>::unite(const typed::set<> &set2) const
-{
-  auto res = isl::set::unite(set2);
-  return typed::set<>(res);
-}
-
-typed::union_set<> typed::set<>::unite(const typed::union_set<> &uset2) const
-{
-  auto res = isl::set::unite(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::set<> typed::set<>::unite(const typed::basic_set<> &set2) const
-{
-  auto res = isl::set::unite(set2);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::set<>::unite(const typed::point<> &set2) const
-{
-  auto res = isl::set::unite(set2);
-  return typed::set<>(res);
-}
-
-typed::set<> typed::set<>::universe(const typed::space<> &space)
-{
-  auto res = isl::set::universe(space);
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-typed::set<Domain>::set(const typed::basic_set<Domain> &bset)
-  : isl::set(bset)
-{
-}
-
-template <typename Domain>
-typed::set<Domain>::set(const typed::point<Domain> &pnt)
-  : isl::set(pnt)
-{
-}
-
-template <typename Domain>
-typed::set<Domain>::set(const isl::ctx &ctx, const std::string &str)
-  : isl::set(ctx, str)
-{
-}
-
-template <typename Domain>
-template <typename Range>
-typed::set<Range> typed::set<Domain>::apply(const typed::map<Domain, Range> &map) const
-{
-  auto res = isl::set::apply(map);
-  return typed::set<Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_set<Range> typed::set<Domain>::apply(const typed::union_map<Domain, Range> &umap) const
-{
-  auto res = isl::set::apply(umap);
-  return typed::union_set<Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::set<Range> typed::set<Domain>::apply(const typed::basic_map<Domain, Range> &map) const
-{
-  auto res = isl::set::apply(map);
-  return typed::set<Range>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::set<Domain>::as_pw_multi_aff() const
-{
-  auto res = isl::set::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::as_set() const
-{
-  auto res = isl::set::as_set();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<> typed::set<Domain>::bind(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::set::bind(tuple);
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::coalesce() const
-{
-  auto res = isl::set::coalesce();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::detect_equalities() const
-{
-  auto res = isl::set::detect_equalities();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-bool typed::set<Domain>::every_set(const std::function<bool(typed::set<Domain>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<Domain>(arg0));
-  };
-  return isl::set::every_set(lambda);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::extract_set(const typed::space<Domain> &space) const
-{
-  auto res = isl::set::extract_set(space);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-void typed::set<Domain>::foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_set arg0) {
-    return fn(typed::basic_set<Domain>(arg0));
-  };
-  return isl::set::foreach_basic_set(lambda);
-}
-
-template <typename Domain>
-void typed::set<Domain>::foreach_point(const std::function<void(typed::point<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<Domain>(arg0));
-  };
-  return isl::set::foreach_point(lambda);
-}
-
-template <typename Domain>
-void typed::set<Domain>::foreach_set(const std::function<void(typed::set<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<Domain>(arg0));
-  };
-  return isl::set::foreach_set(lambda);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::set<Domain>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::gist(const typed::point<Domain> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::set<Domain>::identity() const
-{
-  auto res = isl::set::identity();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_aff<Domain, Anonymous> typed::set<Domain>::indicator_function() const
-{
-  auto res = isl::set::indicator_function();
-  return typed::pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::map<Arg1, Domain> typed::set<Domain>::insert_domain(const typed::space<Arg1> &domain) const
-{
-  auto res = isl::set::insert_domain(domain);
-  return typed::map<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::intersect(const typed::set<Domain> &set2) const
-{
-  auto res = isl::set::intersect(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::set<Domain>::intersect(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::set::intersect(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::intersect(const typed::basic_set<Domain> &set2) const
-{
-  auto res = isl::set::intersect(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::intersect(const typed::point<Domain> &set2) const
-{
-  auto res = isl::set::intersect(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::set::intersect_params(params);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::intersect_params(const typed::basic_set<> &params) const
-{
-  auto res = isl::set::intersect_params(params);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::intersect_params(const typed::point<> &params) const
-{
-  auto res = isl::set::intersect_params(params);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::lexmax() const
-{
-  auto res = isl::set::lexmax();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::set<Domain>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::set::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::lexmin() const
-{
-  auto res = isl::set::lexmin();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::set<Domain>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::set::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::lower_bound(const typed::multi_pw_aff<Domain> &lower) const
-{
-  auto res = isl::set::lower_bound(lower);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::lower_bound(const typed::multi_val<Domain> &lower) const
-{
-  auto res = isl::set::lower_bound(lower);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::set<Domain>::max_multi_pw_aff() const
-{
-  auto res = isl::set::max_multi_pw_aff();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::set<Domain>::min_multi_pw_aff() const
-{
-  auto res = isl::set::min_multi_pw_aff();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<> typed::set<Domain>::params() const
-{
-  auto res = isl::set::params();
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::set<Domain>::plain_multi_val_if_fixed() const
-{
-  auto res = isl::set::plain_multi_val_if_fixed();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::set<Domain2> typed::set<Domain>::preimage(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::set::preimage(ma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::set<Domain2> typed::set<Domain>::preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::set::preimage(mpa);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::set<Domain2> typed::set<Domain>::preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::set::preimage(pma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_set<Domain2> typed::set<Domain>::preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::set::preimage(upma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::set<pair<Domain, Range>> typed::set<Domain>::product(const typed::set<Range> &set2) const
-{
-  auto res = isl::set::product(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::set<pair<Domain, Range>> typed::set<Domain>::product(const typed::basic_set<Range> &set2) const
-{
-  auto res = isl::set::product(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::set<pair<Domain, Range>> typed::set<Domain>::product(const typed::point<Range> &set2) const
-{
-  auto res = isl::set::product(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::project_out_all_params() const
-{
-  auto res = isl::set::project_out_all_params();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::project_out_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::set::project_out_param(id);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::project_out_param(const std::string &id) const
-{
-  auto res = isl::set::project_out_param(id);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::project_out_param(const typed::id_list<Anonymous> &list) const
-{
-  auto res = isl::set::project_out_param(list);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::pw_multi_aff<Domain, Range> typed::set<Domain>::pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::set::pw_multi_aff_on_domain(mv);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain>
-typed::set_list<Domain> typed::set<Domain>::set_list() const
-{
-  auto res = isl::set::set_list();
-  return typed::set_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::fixed_box<Domain> typed::set<Domain>::simple_fixed_box_hull() const
-{
-  auto res = isl::set::simple_fixed_box_hull();
-  return typed::fixed_box<Domain>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::set<Domain>::space() const
-{
-  auto res = isl::set::space();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::subtract(const typed::set<Domain> &set2) const
-{
-  auto res = isl::set::subtract(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::set<Domain>::subtract(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::set::subtract(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::subtract(const typed::basic_set<Domain> &set2) const
-{
-  auto res = isl::set::subtract(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::subtract(const typed::point<Domain> &set2) const
-{
-  auto res = isl::set::subtract(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::set<Domain>::to_union_set() const
-{
-  auto res = isl::set::to_union_set();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::set<Domain>::translation() const
-{
-  auto res = isl::set::translation();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Arg1>
-typed::map<Arg1, Domain> typed::set<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
-{
-  auto res = isl::set::unbind_params_insert_domain(domain);
-  return typed::map<Arg1, Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::unite(const typed::set<Domain> &set2) const
-{
-  auto res = isl::set::unite(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::set<Domain>::unite(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::set::unite(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::unite(const typed::basic_set<Domain> &set2) const
-{
-  auto res = isl::set::unite(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::unite(const typed::point<Domain> &set2) const
-{
-  auto res = isl::set::unite(set2);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::universe(const typed::space<Domain> &space)
-{
-  auto res = isl::set::universe(space);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::upper_bound(const typed::multi_pw_aff<Domain> &upper) const
-{
-  auto res = isl::set::upper_bound(upper);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set<Domain>::upper_bound(const typed::multi_val<Domain> &upper) const
-{
-  auto res = isl::set::upper_bound(upper);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>>::set(const typed::basic_set<pair<Domain, Range>> &bset)
-  : isl::set(bset)
-{
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>>::set(const typed::point<pair<Domain, Range>> &pnt)
-  : isl::set(pnt)
-{
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>>::set(const isl::ctx &ctx, const std::string &str)
-  : isl::set(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::set<Arg2> typed::set<pair<Domain, Range>>::apply(const typed::map<pair<Domain, Range>, Arg2> &map) const
-{
-  auto res = isl::set::apply(map);
-  return typed::set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::union_set<Arg2> typed::set<pair<Domain, Range>>::apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const
-{
-  auto res = isl::set::apply(umap);
-  return typed::union_set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::set<Arg2> typed::set<pair<Domain, Range>>::apply(const typed::basic_map<pair<Domain, Range>, Arg2> &map) const
-{
-  auto res = isl::set::apply(map);
-  return typed::set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::set<pair<Domain, Range>>::as_pw_multi_aff() const
-{
-  auto res = isl::set::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::as_set() const
-{
-  auto res = isl::set::as_set();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<> typed::set<pair<Domain, Range>>::bind(const typed::multi_id<pair<Domain, Range>> &tuple) const
-{
-  auto res = isl::set::bind(tuple);
-  return typed::set<>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::coalesce() const
-{
-  auto res = isl::set::coalesce();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::detect_equalities() const
-{
-  auto res = isl::set::detect_equalities();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-bool typed::set<pair<Domain, Range>>::every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<pair<Domain, Range>>(arg0));
-  };
-  return isl::set::every_set(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::extract_set(const typed::space<pair<Domain, Range>> &space) const
-{
-  auto res = isl::set::extract_set(space);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-void typed::set<pair<Domain, Range>>::foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const
-{
-  auto lambda = [&] (isl::basic_set arg0) {
-    return fn(typed::basic_set<pair<Domain, Range>>(arg0));
-  };
-  return isl::set::foreach_basic_set(lambda);
-}
-
-template <typename Domain, typename Range>
-void typed::set<pair<Domain, Range>>::foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<pair<Domain, Range>>(arg0));
-  };
-  return isl::set::foreach_point(lambda);
-}
-
-template <typename Domain, typename Range>
-void typed::set<pair<Domain, Range>>::foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<pair<Domain, Range>>(arg0));
-  };
-  return isl::set::foreach_set(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::gist(const typed::set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::gist(const typed::union_set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::gist(const typed::basic_set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::gist(const typed::point<pair<Domain, Range>> &context) const
-{
-  auto res = isl::set::gist(context);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::set<pair<Domain, Range>>::identity() const
-{
-  auto res = isl::set::identity();
-  return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_aff<pair<Domain, Range>, Anonymous> typed::set<pair<Domain, Range>>::indicator_function() const
-{
-  auto res = isl::set::indicator_function();
-  return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::map<Arg2, pair<Domain, Range>> typed::set<pair<Domain, Range>>::insert_domain(const typed::space<Arg2> &domain) const
-{
-  auto res = isl::set::insert_domain(domain);
-  return typed::map<Arg2, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect(const typed::set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::set::intersect(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::set::intersect(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect(const typed::basic_set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::set::intersect(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect(const typed::point<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::set::intersect(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect_params(const typed::set<> &params) const
-{
-  auto res = isl::set::intersect_params(params);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect_params(const typed::basic_set<> &params) const
-{
-  auto res = isl::set::intersect_params(params);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect_params(const typed::point<> &params) const
-{
-  auto res = isl::set::intersect_params(params);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lexmax() const
-{
-  auto res = isl::set::lexmax();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lexmax_pw_multi_aff() const
-{
-  auto res = isl::set::lexmax_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lexmin() const
-{
-  auto res = isl::set::lexmin();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lexmin_pw_multi_aff() const
-{
-  auto res = isl::set::lexmin_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const
-{
-  auto res = isl::set::lower_bound(lower);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const
-{
-  auto res = isl::set::lower_bound(lower);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::set<pair<Domain, Range>>::max_multi_pw_aff() const
-{
-  auto res = isl::set::max_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::set<pair<Domain, Range>>::min_multi_pw_aff() const
-{
-  auto res = isl::set::min_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<> typed::set<pair<Domain, Range>>::params() const
-{
-  auto res = isl::set::params();
-  return typed::set<>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<pair<Domain, Range>> typed::set<pair<Domain, Range>>::plain_multi_val_if_fixed() const
-{
-  auto res = isl::set::plain_multi_val_if_fixed();
-  return typed::multi_val<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::set<Domain2> typed::set<pair<Domain, Range>>::preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
-{
-  auto res = isl::set::preimage(ma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::set<Domain2> typed::set<pair<Domain, Range>>::preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
-{
-  auto res = isl::set::preimage(mpa);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::set<Domain2> typed::set<pair<Domain, Range>>::preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
-{
-  auto res = isl::set::preimage(pma);
-  return typed::set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_set<Domain2> typed::set<pair<Domain, Range>>::preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
-{
-  auto res = isl::set::preimage(upma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::set<pair<pair<Domain, Range>, Arg2>> typed::set<pair<Domain, Range>>::product(const typed::set<Arg2> &set2) const
-{
-  auto res = isl::set::product(set2);
-  return typed::set<pair<pair<Domain, Range>, Arg2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::set<pair<pair<Domain, Range>, Arg2>> typed::set<pair<Domain, Range>>::product(const typed::basic_set<Arg2> &set2) const
-{
-  auto res = isl::set::product(set2);
-  return typed::set<pair<pair<Domain, Range>, Arg2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::set<pair<pair<Domain, Range>, Arg2>> typed::set<pair<Domain, Range>>::product(const typed::point<Arg2> &set2) const
-{
-  auto res = isl::set::product(set2);
-  return typed::set<pair<pair<Domain, Range>, Arg2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::project_out_all_params() const
-{
-  auto res = isl::set::project_out_all_params();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::project_out_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::set::project_out_param(id);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::project_out_param(const std::string &id) const
-{
-  auto res = isl::set::project_out_param(id);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::project_out_param(const typed::id_list<Anonymous> &list) const
-{
-  auto res = isl::set::project_out_param(list);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::pw_multi_aff<pair<Domain, Range>, Arg2> typed::set<pair<Domain, Range>>::pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const
-{
-  auto res = isl::set::pw_multi_aff_on_domain(mv);
-  return typed::pw_multi_aff<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set_list<pair<Domain, Range>> typed::set<pair<Domain, Range>>::set_list() const
-{
-  auto res = isl::set::set_list();
-  return typed::set_list<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::fixed_box<pair<Domain, Range>> typed::set<pair<Domain, Range>>::simple_fixed_box_hull() const
-{
-  auto res = isl::set::simple_fixed_box_hull();
-  return typed::fixed_box<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<pair<Domain, Range>> typed::set<pair<Domain, Range>>::space() const
-{
-  auto res = isl::set::space();
-  return typed::space<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::subtract(const typed::set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::set::subtract(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::subtract(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::set::subtract(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::subtract(const typed::basic_set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::set::subtract(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::subtract(const typed::point<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::set::subtract(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::to_union_set() const
-{
-  auto res = isl::set::to_union_set();
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::set<pair<Domain, Range>>::translation() const
-{
-  auto res = isl::set::translation();
-  return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::map<Arg2, pair<Domain, Range>> typed::set<pair<Domain, Range>>::unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const
-{
-  auto res = isl::set::unbind_params_insert_domain(domain);
-  return typed::map<Arg2, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::unite(const typed::set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::set::unite(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::unite(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::set::unite(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::unite(const typed::basic_set<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::set::unite(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::unite(const typed::point<pair<Domain, Range>> &set2) const
-{
-  auto res = isl::set::unite(set2);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::universe(const typed::space<pair<Domain, Range>> &space)
-{
-  auto res = isl::set::universe(space);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::set<pair<Domain, Range>>::unwrap() const
-{
-  auto res = isl::set::unwrap();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const
-{
-  auto res = isl::set::upper_bound(upper);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const
-{
-  auto res = isl::set::upper_bound(upper);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-typed::set_list<>::set_list(const isl::ctx &ctx, int n)
-  : isl::set_list(ctx, n)
-{
-}
-
-typed::set_list<>::set_list(const typed::set<> &el)
-  : isl::set_list(el)
-{
-}
-
-typed::set_list<>::set_list(const isl::ctx &ctx, const std::string &str)
-  : isl::set_list(ctx, str)
-{
-}
-
-typed::set_list<> typed::set_list<>::add(const typed::set<> &el) const
-{
-  auto res = isl::set_list::add(el);
-  return typed::set_list<>(res);
-}
-
-typed::set_list<> typed::set_list<>::add(const typed::basic_set<> &el) const
-{
-  auto res = isl::set_list::add(el);
-  return typed::set_list<>(res);
-}
-
-typed::set_list<> typed::set_list<>::add(const typed::point<> &el) const
-{
-  auto res = isl::set_list::add(el);
-  return typed::set_list<>(res);
-}
-
-typed::set_list<> typed::set_list<>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::set_list::drop(first, n);
-  return typed::set_list<>(res);
-}
-
-void typed::set_list<>::foreach(const std::function<void(typed::set<>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<>(arg0));
-  };
-  return isl::set_list::foreach(lambda);
-}
-
-template <typename Domain>
-typed::set_list<Domain>::set_list(const isl::ctx &ctx, int n)
-  : isl::set_list(ctx, n)
-{
-}
-
-template <typename Domain>
-typed::set_list<Domain>::set_list(const typed::set<Domain> &el)
-  : isl::set_list(el)
-{
-}
-
-template <typename Domain>
-typed::set_list<Domain>::set_list(const isl::ctx &ctx, const std::string &str)
-  : isl::set_list(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::set_list<Domain> typed::set_list<Domain>::add(const typed::set<Domain> &el) const
-{
-  auto res = isl::set_list::add(el);
-  return typed::set_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::set_list<Domain> typed::set_list<Domain>::add(const typed::basic_set<Domain> &el) const
-{
-  auto res = isl::set_list::add(el);
-  return typed::set_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::set_list<Domain> typed::set_list<Domain>::add(const typed::point<Domain> &el) const
-{
-  auto res = isl::set_list::add(el);
-  return typed::set_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::set_list<Domain>::at(int index) const
-{
-  auto res = isl::set_list::at(index);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::set_list<Domain> typed::set_list<Domain>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::set_list::drop(first, n);
-  return typed::set_list<Domain>(res);
-}
-
-template <typename Domain>
-void typed::set_list<Domain>::foreach(const std::function<void(typed::set<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<Domain>(arg0));
-  };
-  return isl::set_list::foreach(lambda);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::space<>::add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const
-{
-  auto res = isl::space::add_named_tuple(tuple_id, dim);
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::space<>::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
-{
-  auto res = isl::space::add_named_tuple(tuple_id, dim);
-  return typed::space<Domain>(res);
-}
-
-typed::space<> typed::space<>::add_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<>(res);
-}
-
-typed::space<> typed::space<>::add_param(const std::string &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::space<>::add_unnamed_tuple(unsigned int dim) const
-{
-  auto res = isl::space::add_unnamed_tuple(dim);
-  return typed::space<Domain>(res);
-}
-
-typed::aff<Anonymous> typed::space<>::param_aff_on_domain(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::param_aff_on_domain(id);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::aff<Anonymous> typed::space<>::param_aff_on_domain(const std::string &id) const
-{
-  auto res = isl::space::param_aff_on_domain(id);
-  return typed::aff<Anonymous>(res);
-}
-
-typed::space<> typed::space<>::unit(const isl::ctx &ctx)
-{
-  auto res = isl::space::unit(ctx);
-  return typed::space<>(res);
-}
-
-typed::set<> typed::space<>::universe_set() const
-{
-  auto res = isl::space::universe_set();
-  return typed::set<>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::space<Domain, Range> typed::space<Domain>::add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const
-{
-  auto res = isl::space::add_named_tuple(tuple_id, dim);
-  return typed::space<Domain, Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::space<Domain, Range> typed::space<Domain>::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
-{
-  auto res = isl::space::add_named_tuple(tuple_id, dim);
-  return typed::space<Domain, Range>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::space<Domain>::add_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-typed::space<Domain> typed::space<Domain>::add_param(const std::string &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::space<Domain, Range> typed::space<Domain>::add_unnamed_tuple(unsigned int dim) const
-{
-  auto res = isl::space::add_unnamed_tuple(dim);
-  return typed::space<Domain, Range>(res);
-}
-
-template <typename Domain>
-typed::space<> typed::space<Domain>::domain() const
-{
-  auto res = isl::space::domain();
-  return typed::space<>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain, Domain> typed::space<Domain>::identity_multi_aff_on_domain() const
-{
-  auto res = isl::space::identity_multi_aff_on_domain();
-  return typed::multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain, Domain> typed::space<Domain>::identity_multi_pw_aff_on_domain() const
-{
-  auto res = isl::space::identity_multi_pw_aff_on_domain();
-  return typed::multi_pw_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Domain> typed::space<Domain>::identity_pw_multi_aff_on_domain() const
-{
-  auto res = isl::space::identity_pw_multi_aff_on_domain();
-  return typed::pw_multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::space<Domain, Domain> typed::space<Domain>::map_from_set() const
-{
-  auto res = isl::space::map_from_set();
-  return typed::space<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::space<Domain>::multi_aff(const typed::aff_list<Anonymous> &list) const
-{
-  auto res = isl::space::multi_aff(list);
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::multi_aff<Domain, Range> typed::space<Domain>::multi_aff_on_domain(const typed::multi_val<Range> &mv) const
-{
-  auto res = isl::space::multi_aff_on_domain(mv);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain>
-typed::multi_id<Domain> typed::space<Domain>::multi_id(const typed::id_list<Anonymous> &list) const
-{
-  auto res = isl::space::multi_id(list);
-  return typed::multi_id<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::space<Domain>::multi_pw_aff(const typed::pw_aff_list<Anonymous> &list) const
-{
-  auto res = isl::space::multi_pw_aff(list);
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::space<Domain>::multi_union_pw_aff(const typed::union_pw_aff_list<Anonymous> &list) const
-{
-  auto res = isl::space::multi_union_pw_aff(list);
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::space<Domain>::multi_val(const typed::val_list<Anonymous> &list) const
-{
-  auto res = isl::space::multi_val(list);
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::space<Domain>::param_aff_on_domain(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::param_aff_on_domain(id);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::space<Domain>::param_aff_on_domain(const std::string &id) const
-{
-  auto res = isl::space::param_aff_on_domain(id);
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::space<> typed::space<Domain>::params() const
-{
-  auto res = isl::space::params();
-  return typed::space<>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::space<pair<Domain, Range>> typed::space<Domain>::product(const typed::space<Range> &right) const
-{
-  auto res = isl::space::product(right);
-  return typed::space<pair<Domain, Range>>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::space<Domain2> typed::space<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::set_range_tuple(id);
-  return typed::space<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::space<Domain2> typed::space<Domain>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::space::set_range_tuple(id);
-  return typed::space<Domain2>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::space<Domain>::universe_set() const
-{
-  auto res = isl::space::universe_set();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::aff<Domain, Anonymous> typed::space<Domain>::zero_aff_on_domain() const
-{
-  auto res = isl::space::zero_aff_on_domain();
-  return typed::aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_aff<Domain> typed::space<Domain>::zero_multi_aff() const
-{
-  auto res = isl::space::zero_multi_aff();
-  return typed::multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_pw_aff<Domain> typed::space<Domain>::zero_multi_pw_aff() const
-{
-  auto res = isl::space::zero_multi_pw_aff();
-  return typed::multi_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::space<Domain>::zero_multi_union_pw_aff() const
-{
-  auto res = isl::space::zero_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_val<Domain> typed::space<Domain>::zero_multi_val() const
-{
-  auto res = isl::space::zero_multi_val();
-  return typed::multi_val<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Domain, Range> typed::space<Domain, Range>::add_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Domain, Range> typed::space<Domain, Range>::add_param(const std::string &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Domain> typed::space<Domain, Range>::domain() const
-{
-  auto res = isl::space::domain();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<pair<Domain, Range>, Domain> typed::space<Domain, Range>::domain_map_multi_aff() const
-{
-  auto res = isl::space::domain_map_multi_aff();
-  return typed::multi_aff<pair<Domain, Range>, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>, Domain> typed::space<Domain, Range>::domain_map_pw_multi_aff() const
-{
-  auto res = isl::space::domain_map_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::space<Domain, Range>::multi_aff(const typed::aff_list<Domain, Anonymous> &list) const
-{
-  auto res = isl::space::multi_aff(list);
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::space<Domain, Range>::multi_pw_aff(const typed::pw_aff_list<Domain, Anonymous> &list) const
-{
-  auto res = isl::space::multi_pw_aff(list);
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::space<Domain, Range>::multi_union_pw_aff(const typed::union_pw_aff_list<Domain, Anonymous> &list) const
-{
-  auto res = isl::space::multi_union_pw_aff(list);
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<> typed::space<Domain, Range>::params() const
-{
-  auto res = isl::space::params();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::space<pair<Domain, Domain2>, pair<Range, Range2>> typed::space<Domain, Range>::product(const typed::space<Domain2, Range2> &right) const
-{
-  auto res = isl::space::product(right);
-  return typed::space<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Range> typed::space<Domain, Range>::range() const
-{
-  auto res = isl::space::range();
-  return typed::space<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<pair<Domain, Range>, Range> typed::space<Domain, Range>::range_map_multi_aff() const
-{
-  auto res = isl::space::range_map_multi_aff();
-  return typed::multi_aff<pair<Domain, Range>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>, Range> typed::space<Domain, Range>::range_map_pw_multi_aff() const
-{
-  auto res = isl::space::range_map_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Range>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Range, Domain> typed::space<Domain, Range>::reverse() const
-{
-  auto res = isl::space::reverse();
-  return typed::space<Range, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::space<Domain2, Range> typed::space<Domain, Range>::set_domain_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::set_domain_tuple(id);
-  return typed::space<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::space<Domain2, Range> typed::space<Domain, Range>::set_domain_tuple(const std::string &id) const
-{
-  auto res = isl::space::set_domain_tuple(id);
-  return typed::space<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::space<Domain, Range2> typed::space<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::set_range_tuple(id);
-  return typed::space<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::space<Domain, Range2> typed::space<Domain, Range>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::space::set_range_tuple(id);
-  return typed::space<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::space<Domain, Range>::universe_map() const
-{
-  auto res = isl::space::universe_map();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<pair<Domain, Range>> typed::space<Domain, Range>::wrap() const
-{
-  auto res = isl::space::wrap();
-  return typed::space<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<Domain, Range> typed::space<Domain, Range>::zero_multi_aff() const
-{
-  auto res = isl::space::zero_multi_aff();
-  return typed::multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<Domain, Range> typed::space<Domain, Range>::zero_multi_pw_aff() const
-{
-  auto res = isl::space::zero_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::space<Domain, Range>::zero_multi_union_pw_aff() const
-{
-  auto res = isl::space::zero_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::space<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>>::add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const
-{
-  auto res = isl::space::add_named_tuple(tuple_id, dim);
-  return typed::space<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::space<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>>::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
-{
-  auto res = isl::space::add_named_tuple(tuple_id, dim);
-  return typed::space<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<pair<Domain, Range>> typed::space<pair<Domain, Range>>::add_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<pair<Domain, Range>> typed::space<pair<Domain, Range>>::add_param(const std::string &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::space<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>>::add_unnamed_tuple(unsigned int dim) const
-{
-  auto res = isl::space::add_unnamed_tuple(dim);
-  return typed::space<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<> typed::space<pair<Domain, Range>>::domain() const
-{
-  auto res = isl::space::domain();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<pair<Domain, Range>, pair<Domain, Range>> typed::space<pair<Domain, Range>>::identity_multi_aff_on_domain() const
-{
-  auto res = isl::space::identity_multi_aff_on_domain();
-  return typed::multi_aff<pair<Domain, Range>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<pair<Domain, Range>, pair<Domain, Range>> typed::space<pair<Domain, Range>>::identity_multi_pw_aff_on_domain() const
-{
-  auto res = isl::space::identity_multi_pw_aff_on_domain();
-  return typed::multi_pw_aff<pair<Domain, Range>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<pair<Domain, Range>, pair<Domain, Range>> typed::space<pair<Domain, Range>>::identity_pw_multi_aff_on_domain() const
-{
-  auto res = isl::space::identity_pw_multi_aff_on_domain();
-  return typed::pw_multi_aff<pair<Domain, Range>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<pair<Domain, Range>, pair<Domain, Range>> typed::space<pair<Domain, Range>>::map_from_set() const
-{
-  auto res = isl::space::map_from_set();
-  return typed::space<pair<Domain, Range>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::multi_aff(const typed::aff_list<Anonymous> &list) const
-{
-  auto res = isl::space::multi_aff(list);
-  return typed::multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::multi_aff<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>>::multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const
-{
-  auto res = isl::space::multi_aff_on_domain(mv);
-  return typed::multi_aff<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_id<pair<Domain, Range>> typed::space<pair<Domain, Range>>::multi_id(const typed::id_list<Anonymous> &list) const
-{
-  auto res = isl::space::multi_id(list);
-  return typed::multi_id<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::multi_pw_aff(const typed::pw_aff_list<Anonymous> &list) const
-{
-  auto res = isl::space::multi_pw_aff(list);
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::multi_union_pw_aff(const typed::union_pw_aff_list<Anonymous> &list) const
-{
-  auto res = isl::space::multi_union_pw_aff(list);
-  return typed::multi_union_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<pair<Domain, Range>> typed::space<pair<Domain, Range>>::multi_val(const typed::val_list<Anonymous> &list) const
-{
-  auto res = isl::space::multi_val(list);
-  return typed::multi_val<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::aff<pair<Domain, Range>, Anonymous> typed::space<pair<Domain, Range>>::param_aff_on_domain(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::param_aff_on_domain(id);
-  return typed::aff<pair<Domain, Range>, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-typed::aff<pair<Domain, Range>, Anonymous> typed::space<pair<Domain, Range>>::param_aff_on_domain(const std::string &id) const
-{
-  auto res = isl::space::param_aff_on_domain(id);
-  return typed::aff<pair<Domain, Range>, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<> typed::space<pair<Domain, Range>>::params() const
-{
-  auto res = isl::space::params();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::space<pair<pair<Domain, Range>, Arg2>> typed::space<pair<Domain, Range>>::product(const typed::space<Arg2> &right) const
-{
-  auto res = isl::space::product(right);
-  return typed::space<pair<pair<Domain, Range>, Arg2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::space<pair<Domain, Range>>::universe_set() const
-{
-  auto res = isl::space::universe_set();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<Domain, Range> typed::space<pair<Domain, Range>>::unwrap() const
-{
-  auto res = isl::space::unwrap();
-  return typed::space<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::aff<pair<Domain, Range>, Anonymous> typed::space<pair<Domain, Range>>::zero_aff_on_domain() const
-{
-  auto res = isl::space::zero_aff_on_domain();
-  return typed::aff<pair<Domain, Range>, Anonymous>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::zero_multi_aff() const
-{
-  auto res = isl::space::zero_multi_aff();
-  return typed::multi_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_pw_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::zero_multi_pw_aff() const
-{
-  auto res = isl::space::zero_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::zero_multi_union_pw_aff() const
-{
-  auto res = isl::space::zero_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_val<pair<Domain, Range>> typed::space<pair<Domain, Range>>::zero_multi_val() const
-{
-  auto res = isl::space::zero_multi_val();
-  return typed::multi_val<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::add_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::add_param(const std::string &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Domain, pair<Range, Range2>> typed::space<pair<Domain, Range>, Range2>::curry() const
-{
-  auto res = isl::space::curry();
-  return typed::space<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<pair<Domain, Range>> typed::space<pair<Domain, Range>, Range2>::domain() const
-{
-  auto res = isl::space::domain();
-  return typed::space<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::space<pair<Domain, Range>, Range2>::domain_map_multi_aff() const
-{
-  auto res = isl::space::domain_map_multi_aff();
-  return typed::multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::space<pair<Domain, Range>, Range2>::domain_map_pw_multi_aff() const
-{
-  auto res = isl::space::domain_map_pw_multi_aff();
-  return typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Anonymous, Range2> typed::space<pair<Domain, Range>, Range2>::flatten_domain() const
-{
-  auto res = isl::space::flatten_domain();
-  return typed::space<Anonymous, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::multi_aff(const typed::aff_list<pair<Domain, Range>, Anonymous> &list) const
-{
-  auto res = isl::space::multi_aff(list);
-  return typed::multi_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::multi_pw_aff(const typed::pw_aff_list<pair<Domain, Range>, Anonymous> &list) const
-{
-  auto res = isl::space::multi_pw_aff(list);
-  return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::multi_union_pw_aff(const typed::union_pw_aff_list<pair<Domain, Range>, Anonymous> &list) const
-{
-  auto res = isl::space::multi_union_pw_aff(list);
-  return typed::multi_union_pw_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<> typed::space<pair<Domain, Range>, Range2>::params() const
-{
-  auto res = isl::space::params();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::space<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::space<pair<Domain, Range>, Range2>::product(const typed::space<Domain2, Arg3> &right) const
-{
-  auto res = isl::space::product(right);
-  return typed::space<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Range2> typed::space<pair<Domain, Range>, Range2>::range() const
-{
-  auto res = isl::space::range();
-  return typed::space<Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<pair<pair<Domain, Range>, Range2>, Range2> typed::space<pair<Domain, Range>, Range2>::range_map_multi_aff() const
-{
-  auto res = isl::space::range_map_multi_aff();
-  return typed::multi_aff<pair<pair<Domain, Range>, Range2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, Range2> typed::space<pair<Domain, Range>, Range2>::range_map_pw_multi_aff() const
-{
-  auto res = isl::space::range_map_pw_multi_aff();
-  return typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Range2, pair<Domain, Range>> typed::space<pair<Domain, Range>, Range2>::reverse() const
-{
-  auto res = isl::space::reverse();
-  return typed::space<Range2, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg2>
-typed::space<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>, Range2>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::set_range_tuple(id);
-  return typed::space<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg2>
-typed::space<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>, Range2>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::space::set_range_tuple(id);
-  return typed::space<pair<Domain, Range>, Arg2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::universe_map() const
-{
-  auto res = isl::space::universe_map();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<pair<pair<Domain, Range>, Range2>> typed::space<pair<Domain, Range>, Range2>::wrap() const
-{
-  auto res = isl::space::wrap();
-  return typed::space<pair<pair<Domain, Range>, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::zero_multi_aff() const
-{
-  auto res = isl::space::zero_multi_aff();
-  return typed::multi_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::zero_multi_pw_aff() const
-{
-  auto res = isl::space::zero_multi_pw_aff();
-  return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::zero_multi_union_pw_aff() const
-{
-  auto res = isl::space::zero_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::add_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::add_param(const std::string &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Domain> typed::space<Domain, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::space::domain();
-  return typed::space<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<pair<Domain, pair<Range, Range2>>, Domain> typed::space<Domain, pair<Range, Range2>>::domain_map_multi_aff() const
-{
-  auto res = isl::space::domain_map_multi_aff();
-  return typed::multi_aff<pair<Domain, pair<Range, Range2>>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> typed::space<Domain, pair<Range, Range2>>::domain_map_pw_multi_aff() const
-{
-  auto res = isl::space::domain_map_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Domain, Anonymous> typed::space<Domain, pair<Range, Range2>>::flatten_range() const
-{
-  auto res = isl::space::flatten_range();
-  return typed::space<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::multi_aff(const typed::aff_list<Domain, Anonymous> &list) const
-{
-  auto res = isl::space::multi_aff(list);
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::multi_pw_aff(const typed::pw_aff_list<Domain, Anonymous> &list) const
-{
-  auto res = isl::space::multi_pw_aff(list);
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::multi_union_pw_aff(const typed::union_pw_aff_list<Domain, Anonymous> &list) const
-{
-  auto res = isl::space::multi_union_pw_aff(list);
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<> typed::space<Domain, pair<Range, Range2>>::params() const
-{
-  auto res = isl::space::params();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::space<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::space<Domain, pair<Range, Range2>>::product(const typed::space<Domain2, Arg3> &right) const
-{
-  auto res = isl::space::product(right);
-  return typed::space<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::range() const
-{
-  auto res = isl::space::range();
-  return typed::space<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::range_map_multi_aff() const
-{
-  auto res = isl::space::range_map_multi_aff();
-  return typed::multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::range_map_pw_multi_aff() const
-{
-  auto res = isl::space::range_map_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<Domain, pair<Range2, Range>> typed::space<Domain, pair<Range, Range2>>::range_reverse() const
-{
-  auto res = isl::space::range_reverse();
-  return typed::space<Domain, pair<Range2, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<pair<Range, Range2>, Domain> typed::space<Domain, pair<Range, Range2>>::reverse() const
-{
-  auto res = isl::space::reverse();
-  return typed::space<pair<Range, Range2>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::space<Domain2, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::set_domain_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::set_domain_tuple(id);
-  return typed::space<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::space<Domain2, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::set_domain_tuple(const std::string &id) const
-{
-  auto res = isl::space::set_domain_tuple(id);
-  return typed::space<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<pair<Domain, Range>, Range2> typed::space<Domain, pair<Range, Range2>>::uncurry() const
-{
-  auto res = isl::space::uncurry();
-  return typed::space<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::universe_map() const
-{
-  auto res = isl::space::universe_map();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<pair<Domain, pair<Range, Range2>>> typed::space<Domain, pair<Range, Range2>>::wrap() const
-{
-  auto res = isl::space::wrap();
-  return typed::space<pair<Domain, pair<Range, Range2>>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_aff<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::zero_multi_aff() const
-{
-  auto res = isl::space::zero_multi_aff();
-  return typed::multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::zero_multi_pw_aff() const
-{
-  auto res = isl::space::zero_multi_pw_aff();
-  return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::zero_multi_union_pw_aff() const
-{
-  auto res = isl::space::zero_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::add_param(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::add_param(const std::string &id) const
-{
-  auto res = isl::space::add_param(id);
-  return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<T1, pair<T2, pair<Range, Range2>>> typed::space<pair<T1, T2>, pair<Range, Range2>>::curry() const
-{
-  auto res = isl::space::curry();
-  return typed::space<T1, pair<T2, pair<Range, Range2>>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<T1, T2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::space::domain();
-  return typed::space<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::domain_map_multi_aff() const
-{
-  auto res = isl::space::domain_map_multi_aff();
-  return typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::domain_map_pw_multi_aff() const
-{
-  auto res = isl::space::domain_map_pw_multi_aff();
-  return typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<Anonymous, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::flatten_domain() const
-{
-  auto res = isl::space::flatten_domain();
-  return typed::space<Anonymous, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<T1, T2>, Anonymous> typed::space<pair<T1, T2>, pair<Range, Range2>>::flatten_range() const
-{
-  auto res = isl::space::flatten_range();
-  return typed::space<pair<T1, T2>, Anonymous>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::multi_aff(const typed::aff_list<pair<T1, T2>, Anonymous> &list) const
-{
-  auto res = isl::space::multi_aff(list);
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::multi_pw_aff(const typed::pw_aff_list<pair<T1, T2>, Anonymous> &list) const
-{
-  auto res = isl::space::multi_pw_aff(list);
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::multi_union_pw_aff(const typed::union_pw_aff_list<pair<T1, T2>, Anonymous> &list) const
-{
-  auto res = isl::space::multi_union_pw_aff(list);
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<> typed::space<pair<T1, T2>, pair<Range, Range2>>::params() const
-{
-  auto res = isl::space::params();
-  return typed::space<>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::space<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::product(const typed::space<Domain2, Arg2> &right) const
-{
-  auto res = isl::space::product(right);
-  return typed::space<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::range() const
-{
-  auto res = isl::space::range();
-  return typed::space<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::range_map_multi_aff() const
-{
-  auto res = isl::space::range_map_multi_aff();
-  return typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::range_map_pw_multi_aff() const
-{
-  auto res = isl::space::range_map_pw_multi_aff();
-  return typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<T1, T2>, pair<Range2, Range>> typed::space<pair<T1, T2>, pair<Range, Range2>>::range_reverse() const
-{
-  auto res = isl::space::range_reverse();
-  return typed::space<pair<T1, T2>, pair<Range2, Range>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<Range, Range2>, pair<T1, T2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::reverse() const
-{
-  auto res = isl::space::reverse();
-  return typed::space<pair<Range, Range2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<pair<T1, T2>, Range>, Range2> typed::space<pair<T1, T2>, pair<Range, Range2>>::uncurry() const
-{
-  auto res = isl::space::uncurry();
-  return typed::space<pair<pair<T1, T2>, Range>, Range2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::universe_map() const
-{
-  auto res = isl::space::universe_map();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<pair<pair<T1, T2>, pair<Range, Range2>>> typed::space<pair<T1, T2>, pair<Range, Range2>>::wrap() const
-{
-  auto res = isl::space::wrap();
-  return typed::space<pair<pair<T1, T2>, pair<Range, Range2>>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::zero_multi_aff() const
-{
-  auto res = isl::space::zero_multi_aff();
-  return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::zero_multi_pw_aff() const
-{
-  auto res = isl::space::zero_multi_pw_aff();
-  return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::zero_multi_union_pw_aff() const
-{
-  auto res = isl::space::zero_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range>::union_map(const typed::basic_map<Domain, Range> &bmap)
-  : isl::union_map(bmap)
-{
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range>::union_map(const typed::map<Domain, Range> &map)
-  : isl::union_map(map)
-{
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range>::union_map(const isl::ctx &ctx, const std::string &str)
-  : isl::union_map(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::apply_domain(const typed::map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::apply_range(const typed::union_map<Range, Range2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::apply_range(const typed::basic_map<Range, Range2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::apply_range(const typed::map<Range, Range2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::union_map<Domain, Range>::as_map() const
-{
-  auto res = isl::union_map::as_map();
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::union_map<Domain, Range>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_map<Domain, Range>::as_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<Domain> typed::union_map<Domain, Range>::bind_range(const typed::multi_id<Range> &tuple) const
-{
-  auto res = isl::union_map::bind_range(tuple);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::coalesce() const
-{
-  auto res = isl::union_map::coalesce();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::detect_equalities() const
-{
-  auto res = isl::union_map::detect_equalities();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<Domain> typed::union_map<Domain, Range>::domain() const
-{
-  auto res = isl::union_map::domain();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<pair<Domain, Range>, Domain> typed::union_map<Domain, Range>::domain_map() const
-{
-  auto res = isl::union_map::domain_map();
-  return typed::union_map<pair<Domain, Range>, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Range>, Domain> typed::union_map<Domain, Range>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, Range>, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, Range> typed::union_map<Domain, Range>::domain_product(const typed::union_map<Domain2, Range> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, Range> typed::union_map<Domain, Range>::domain_product(const typed::basic_map<Domain2, Range> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, Range> typed::union_map<Domain, Range>::domain_product(const typed::map<Domain2, Range> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_map::empty(ctx);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-bool typed::union_map<Domain, Range>::every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<Domain, Range>(arg0));
-  };
-  return isl::union_map::every_map(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::map<Domain, Range> typed::union_map<Domain, Range>::extract_map(const typed::space<Domain, Range> &space) const
-{
-  auto res = isl::union_map::extract_map(space);
-  return typed::map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-void typed::union_map<Domain, Range>::foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<Domain, Range>(arg0));
-  };
-  return isl::union_map::foreach_map(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist(const typed::union_map<Domain, Range> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist(const typed::basic_map<Domain, Range> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist(const typed::map<Domain, Range> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist_domain(const typed::basic_set<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist_domain(const typed::point<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist_domain(const typed::set<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect(const typed::union_map<Domain, Range> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect(const typed::basic_map<Domain, Range> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect(const typed::map<Domain, Range> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_map::intersect_domain(space);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_map::intersect_domain(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_range(const typed::space<Range> &space) const
-{
-  auto res = isl::union_map::intersect_range(space);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_range(const typed::union_set<Range> &uset) const
-{
-  auto res = isl::union_map::intersect_range(uset);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::lexmax() const
-{
-  auto res = isl::union_map::lexmax();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::lexmin() const
-{
-  auto res = isl::union_map::lexmin();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::map_list<Domain, Range> typed::union_map<Domain, Range>::map_list() const
-{
-  auto res = isl::union_map::map_list();
-  return typed::map_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::union_map::preimage_domain(ma);
-  return typed::union_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::union_map::preimage_domain(mpa);
-  return typed::union_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::union_map::preimage_domain(pma);
-  return typed::union_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::union_map::preimage_domain(upma);
-  return typed::union_map<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::preimage_range(const typed::multi_aff<Range2, Range> &ma) const
-{
-  auto res = isl::union_map::preimage_range(ma);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const
-{
-  auto res = isl::union_map::preimage_range(pma);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const
-{
-  auto res = isl::union_map::preimage_range(upma);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, Range>::product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, Range>::product(const typed::basic_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, Range>::product(const typed::map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::project_out_all_params() const
-{
-  auto res = isl::union_map::project_out_all_params();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<Range> typed::union_map<Domain, Range>::range() const
-{
-  auto res = isl::union_map::range();
-  return typed::union_set<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<pair<Domain, Range>, Range> typed::union_map<Domain, Range>::range_map() const
-{
-  auto res = isl::union_map::range_map();
-  return typed::union_map<pair<Domain, Range>, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, Range>::range_product(const typed::union_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, Range>::range_product(const typed::basic_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, Range>::range_product(const typed::map<Domain, Range2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Range, Domain> typed::union_map<Domain, Range>::reverse() const
-{
-  auto res = isl::union_map::reverse();
-  return typed::union_map<Range, Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<> typed::union_map<Domain, Range>::space() const
-{
-  auto res = isl::union_map::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract(const typed::union_map<Domain, Range> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract(const typed::basic_map<Domain, Range> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract(const typed::map<Domain, Range> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_domain(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_domain(const typed::basic_set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_domain(const typed::point<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_domain(const typed::set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_range(const typed::union_set<Range> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_range(const typed::basic_set<Range> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_range(const typed::point<Range> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_range(const typed::set<Range> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::unite(const typed::union_map<Domain, Range> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::unite(const typed::basic_map<Domain, Range> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::unite(const typed::map<Domain, Range> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_map<Domain, Range>::universe() const
-{
-  auto res = isl::union_map::universe();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_map<Domain, Range>::wrap() const
-{
-  auto res = isl::union_map::wrap();
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2>::union_map(const typed::basic_map<pair<Domain, Range>, Range2> &bmap)
-  : isl::union_map(bmap)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2>::union_map(const typed::map<pair<Domain, Range>, Range2> &map)
-  : isl::union_map(map)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2>::union_map(const isl::ctx &ctx, const std::string &str)
-  : isl::union_map(ctx, str)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::apply_domain(const typed::map<pair<Domain, Range>, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::apply_range(const typed::union_map<Range2, Arg3> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::apply_range(const typed::basic_map<Range2, Arg3> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::apply_range(const typed::map<Range2, Arg3> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::as_map() const
-{
-  auto res = isl::union_map::as_map();
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::as_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_set<pair<Domain, Range>> typed::union_map<pair<Domain, Range>, Range2>::bind_range(const typed::multi_id<Range2> &tuple) const
-{
-  auto res = isl::union_map::bind_range(tuple);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::coalesce() const
-{
-  auto res = isl::union_map::coalesce();
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<pair<Domain, Range>, Range2>::curry() const
-{
-  auto res = isl::union_map::curry();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::detect_equalities() const
-{
-  auto res = isl::union_map::detect_equalities();
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_set<pair<Domain, Range>> typed::union_map<pair<Domain, Range>, Range2>::domain() const
-{
-  auto res = isl::union_map::domain();
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<pair<Domain, Range>, Range2>::domain_factor_domain() const
-{
-  auto res = isl::union_map::domain_factor_domain();
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Range, Range2> typed::union_map<pair<Domain, Range>, Range2>::domain_factor_range() const
-{
-  auto res = isl::union_map::domain_factor_range();
-  return typed::union_map<Range, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::union_map<pair<Domain, Range>, Range2>::domain_map() const
-{
-  auto res = isl::union_map::domain_map();
-  return typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::union_map<pair<Domain, Range>, Range2>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> typed::union_map<pair<Domain, Range>, Range2>::domain_product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> typed::union_map<pair<Domain, Range>, Range2>::domain_product(const typed::basic_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> typed::union_map<pair<Domain, Range>, Range2>::domain_product(const typed::map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_map::empty(ctx);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-bool typed::union_map<pair<Domain, Range>, Range2>::every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<pair<Domain, Range>, Range2>(arg0));
-  };
-  return isl::union_map::every_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const
-{
-  auto res = isl::union_map::extract_map(space);
-  return typed::map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-void typed::union_map<pair<Domain, Range>, Range2>::foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<pair<Domain, Range>, Range2>(arg0));
-  };
-  return isl::union_map::foreach_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist(const typed::map<pair<Domain, Range>, Range2> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist_domain(const typed::basic_set<pair<Domain, Range>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist_domain(const typed::point<pair<Domain, Range>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist_domain(const typed::set<pair<Domain, Range>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect(const typed::map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::space<pair<Domain, Range>> &space) const
-{
-  auto res = isl::union_map::intersect_domain(space);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const
-{
-  auto res = isl::union_map::intersect_domain(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_range(const typed::space<Range2> &space) const
-{
-  auto res = isl::union_map::intersect_range(space);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_range(const typed::union_set<Range2> &uset) const
-{
-  auto res = isl::union_map::intersect_range(uset);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::lexmax() const
-{
-  auto res = isl::union_map::lexmax();
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::lexmin() const
-{
-  auto res = isl::union_map::lexmin();
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map_list<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::map_list() const
-{
-  auto res = isl::union_map::map_list();
-  return typed::map_list<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
-{
-  auto res = isl::union_map::preimage_domain(ma);
-  return typed::union_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
-{
-  auto res = isl::union_map::preimage_domain(mpa);
-  return typed::union_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
-{
-  auto res = isl::union_map::preimage_domain(pma);
-  return typed::union_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
-{
-  auto res = isl::union_map::preimage_domain(upma);
-  return typed::union_map<Domain2, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const
-{
-  auto res = isl::union_map::preimage_range(ma);
-  return typed::union_map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const
-{
-  auto res = isl::union_map::preimage_range(pma);
-  return typed::union_map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const
-{
-  auto res = isl::union_map::preimage_range(upma);
-  return typed::union_map<pair<Domain, Range>, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::product(const typed::union_map<Domain2, Arg3> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::product(const typed::basic_map<Domain2, Arg3> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::product(const typed::map<Domain2, Arg3> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::project_out_all_params() const
-{
-  auto res = isl::union_map::project_out_all_params();
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_set<Range2> typed::union_map<pair<Domain, Range>, Range2>::range() const
-{
-  auto res = isl::union_map::range();
-  return typed::union_set<Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> typed::union_map<pair<Domain, Range>, Range2>::range_map() const
-{
-  auto res = isl::union_map::range_map();
-  return typed::union_map<pair<pair<Domain, Range>, Range2>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::range_product(const typed::basic_map<pair<Domain, Range>, Arg3> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::range_product(const typed::map<pair<Domain, Range>, Arg3> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Range2, pair<Domain, Range>> typed::union_map<pair<Domain, Range>, Range2>::reverse() const
-{
-  auto res = isl::union_map::reverse();
-  return typed::union_map<Range2, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<> typed::union_map<pair<Domain, Range>, Range2>::space() const
-{
-  auto res = isl::union_map::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract(const typed::map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_domain(const typed::basic_set<pair<Domain, Range>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_domain(const typed::point<pair<Domain, Range>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_domain(const typed::set<pair<Domain, Range>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_range(const typed::union_set<Range2> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_range(const typed::basic_set<Range2> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_range(const typed::point<Range2> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_range(const typed::set<Range2> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::unite(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::unite(const typed::map<pair<Domain, Range>, Range2> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::universe() const
-{
-  auto res = isl::union_map::universe();
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_set<pair<pair<Domain, Range>, Range2>> typed::union_map<pair<Domain, Range>, Range2>::wrap() const
-{
-  auto res = isl::union_map::wrap();
-  return typed::union_set<pair<pair<Domain, Range>, Range2>>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain>::union_map(const typed::basic_map<Domain, Domain> &bmap)
-  : isl::union_map(bmap)
-{
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain>::union_map(const typed::map<Domain, Domain> &map)
-  : isl::union_map(map)
-{
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain>::union_map(const isl::ctx &ctx, const std::string &str)
-  : isl::union_map(ctx, str)
-{
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::apply_domain(const typed::map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::apply_range(const typed::union_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::apply_range(const typed::basic_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::apply_range(const typed::map<Domain, Range2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::union_map<Domain, Domain>::as_map() const
-{
-  auto res = isl::union_map::as_map();
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Domain> typed::union_map<Domain, Domain>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Domain> typed::union_map<Domain, Domain>::as_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_map<Domain, Domain>::bind_range(const typed::multi_id<Domain> &tuple) const
-{
-  auto res = isl::union_map::bind_range(tuple);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::coalesce() const
-{
-  auto res = isl::union_map::coalesce();
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_map<Domain, Domain>::deltas() const
-{
-  auto res = isl::union_map::deltas();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::detect_equalities() const
-{
-  auto res = isl::union_map::detect_equalities();
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_map<Domain, Domain>::domain() const
-{
-  auto res = isl::union_map::domain();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<pair<Domain, Domain>, Domain> typed::union_map<Domain, Domain>::domain_map() const
-{
-  auto res = isl::union_map::domain_map();
-  return typed::union_map<pair<Domain, Domain>, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> typed::union_map<Domain, Domain>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, Domain>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, Domain> typed::union_map<Domain, Domain>::domain_product(const typed::union_map<Domain2, Domain> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, Domain> typed::union_map<Domain, Domain>::domain_product(const typed::basic_map<Domain2, Domain> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, Domain> typed::union_map<Domain, Domain>::domain_product(const typed::map<Domain2, Domain> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_map::empty(ctx);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const
-{
-  auto res = isl::union_map::eq_at(mupa);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::eq_at(const typed::multi_pw_aff<Domain, Range> &mupa) const
-{
-  auto res = isl::union_map::eq_at(mupa);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::eq_at(const typed::union_pw_aff<Domain, Range> &mupa) const
-{
-  auto res = isl::union_map::eq_at(mupa);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-bool typed::union_map<Domain, Domain>::every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<Domain, Domain>(arg0));
-  };
-  return isl::union_map::every_map(lambda);
-}
-
-template <typename Domain>
-typed::map<Domain, Domain> typed::union_map<Domain, Domain>::extract_map(const typed::space<Domain, Domain> &space) const
-{
-  auto res = isl::union_map::extract_map(space);
-  return typed::map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-void typed::union_map<Domain, Domain>::foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<Domain, Domain>(arg0));
-  };
-  return isl::union_map::foreach_map(lambda);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist(const typed::union_map<Domain, Domain> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist(const typed::basic_map<Domain, Domain> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist(const typed::map<Domain, Domain> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist_domain(const typed::basic_set<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist_domain(const typed::point<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist_domain(const typed::set<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect(const typed::union_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect(const typed::basic_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect(const typed::map<Domain, Domain> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_map::intersect_domain(space);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_map::intersect_domain(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_range(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_map::intersect_range(space);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_range(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_map::intersect_range(uset);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::lexmax() const
-{
-  auto res = isl::union_map::lexmax();
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::lexmin() const
-{
-  auto res = isl::union_map::lexmin();
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::map_list<Domain, Domain> typed::union_map<Domain, Domain>::map_list() const
-{
-  auto res = isl::union_map::map_list();
-  return typed::map_list<Domain, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::union_map::preimage_domain(ma);
-  return typed::union_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::union_map::preimage_domain(mpa);
-  return typed::union_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::union_map::preimage_domain(pma);
-  return typed::union_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::union_map::preimage_domain(upma);
-  return typed::union_map<Domain2, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::preimage_range(const typed::multi_aff<Range2, Domain> &ma) const
-{
-  auto res = isl::union_map::preimage_range(ma);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const
-{
-  auto res = isl::union_map::preimage_range(pma);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const
-{
-  auto res = isl::union_map::preimage_range(upma);
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::union_map<Domain, Domain>::product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::union_map<Domain, Domain>::product(const typed::basic_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::union_map<Domain, Domain>::product(const typed::map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::project_out_all_params() const
-{
-  auto res = isl::union_map::project_out_all_params();
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_map<Domain, Domain>::range() const
-{
-  auto res = isl::union_map::range();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<pair<Domain, Domain>, Domain> typed::union_map<Domain, Domain>::range_map() const
-{
-  auto res = isl::union_map::range_map();
-  return typed::union_map<pair<Domain, Domain>, Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, pair<Domain, Range2>> typed::union_map<Domain, Domain>::range_product(const typed::union_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<Domain, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, pair<Domain, Range2>> typed::union_map<Domain, Domain>::range_product(const typed::basic_map<Domain, Range2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<Domain, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_map<Domain, pair<Domain, Range2>> typed::union_map<Domain, Domain>::range_product(const typed::map<Domain, Range2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<Domain, pair<Domain, Range2>>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::reverse() const
-{
-  auto res = isl::union_map::reverse();
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::space<> typed::union_map<Domain, Domain>::space() const
-{
-  auto res = isl::union_map::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract(const typed::union_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract(const typed::basic_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract(const typed::map<Domain, Domain> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_domain(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_domain(const typed::basic_set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_domain(const typed::point<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_domain(const typed::set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_range(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_range(const typed::basic_set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_range(const typed::point<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_range(const typed::set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::unite(const typed::union_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::unite(const typed::basic_map<Domain, Domain> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::unite(const typed::map<Domain, Domain> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::universe() const
-{
-  auto res = isl::union_map::universe();
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<pair<Domain, Domain>> typed::union_map<Domain, Domain>::wrap() const
-{
-  auto res = isl::union_map::wrap();
-  return typed::union_set<pair<Domain, Domain>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>>::union_map(const typed::basic_map<Domain, pair<Range, Range2>> &bmap)
-  : isl::union_map(bmap)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>>::union_map(const typed::map<Domain, pair<Range, Range2>> &map)
-  : isl::union_map(map)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>>::union_map(const isl::ctx &ctx, const std::string &str)
-  : isl::union_map(ctx, str)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::apply_domain(const typed::map<Domain, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg3> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::as_map() const
-{
-  auto res = isl::union_map::as_map();
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::as_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_set<Domain> typed::union_map<Domain, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
-{
-  auto res = isl::union_map::bind_range(tuple);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::union_map::coalesce();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::detect_equalities() const
-{
-  auto res = isl::union_map::detect_equalities();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_set<Domain> typed::union_map<Domain, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::union_map::domain();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> typed::union_map<Domain, pair<Range, Range2>>::domain_map() const
-{
-  auto res = isl::union_map::domain_map();
-  return typed::union_map<pair<Domain, pair<Range, Range2>>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> typed::union_map<Domain, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_map::empty(ctx);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-bool typed::union_map<Domain, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<Domain, pair<Range, Range2>>(arg0));
-  };
-  return isl::union_map::every_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const
-{
-  auto res = isl::union_map::extract_map(space);
-  return typed::map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-void typed::union_map<Domain, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<Domain, pair<Range, Range2>>(arg0));
-  };
-  return isl::union_map::foreach_map(lambda);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist(const typed::map<Domain, pair<Range, Range2>> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist_domain(const typed::basic_set<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist_domain(const typed::point<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist_domain(const typed::set<Domain> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect(const typed::map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_map::intersect_domain(space);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_map::intersect_domain(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
-{
-  auto res = isl::union_map::intersect_range(space);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
-{
-  auto res = isl::union_map::intersect_range(uset);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::lexmax() const
-{
-  auto res = isl::union_map::lexmax();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::lexmin() const
-{
-  auto res = isl::union_map::lexmin();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::map_list<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::map_list() const
-{
-  auto res = isl::union_map::map_list();
-  return typed::map_list<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::union_map::preimage_domain(ma);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
-{
-  auto res = isl::union_map::preimage_domain(mpa);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::union_map::preimage_domain(pma);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::union_map::preimage_domain(upma);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const
-{
-  auto res = isl::union_map::preimage_range(ma);
-  return typed::union_map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const
-{
-  auto res = isl::union_map::preimage_range(pma);
-  return typed::union_map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const
-{
-  auto res = isl::union_map::preimage_range(upma);
-  return typed::union_map<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg3> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::product(const typed::basic_map<Domain2, Arg3> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2, typename Arg3>
-typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::product(const typed::map<Domain2, Arg3> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::project_out_all_params() const
-{
-  auto res = isl::union_map::project_out_all_params();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_set<pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::range() const
-{
-  auto res = isl::union_map::range();
-  return typed::union_set<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, Range> typed::union_map<Domain, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::union_map::range_factor_domain();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, Range2> typed::union_map<Domain, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::union_map::range_factor_range();
-  return typed::union_map<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::range_map() const
-{
-  auto res = isl::union_map::range_map();
-  return typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::range_product(const typed::union_map<Domain, Arg3> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::range_product(const typed::basic_map<Domain, Arg3> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::range_product(const typed::map<Domain, Arg3> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range2, Range>> typed::union_map<Domain, pair<Range, Range2>>::range_reverse() const
-{
-  auto res = isl::union_map::range_reverse();
-  return typed::union_map<Domain, pair<Range2, Range>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Range, Range2>, Domain> typed::union_map<Domain, pair<Range, Range2>>::reverse() const
-{
-  auto res = isl::union_map::reverse();
-  return typed::union_map<pair<Range, Range2>, Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<> typed::union_map<Domain, pair<Range, Range2>>::space() const
-{
-  auto res = isl::union_map::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract(const typed::map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_domain(const typed::basic_set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_domain(const typed::point<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_domain(const typed::set<Domain> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_range(const typed::basic_set<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_range(const typed::point<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_range(const typed::set<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<pair<Domain, Range>, Range2> typed::union_map<Domain, pair<Range, Range2>>::uncurry() const
-{
-  auto res = isl::union_map::uncurry();
-  return typed::union_map<pair<Domain, Range>, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::unite(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::unite(const typed::map<Domain, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::universe() const
-{
-  auto res = isl::union_map::universe();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_set<pair<Domain, pair<Range, Range2>>> typed::union_map<Domain, pair<Range, Range2>>::wrap() const
-{
-  auto res = isl::union_map::wrap();
-  return typed::union_set<pair<Domain, pair<Range, Range2>>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>>::union_map(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap)
-  : isl::union_map(bmap)
-{
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>>::union_map(const typed::map<pair<T1, T2>, pair<T1, T2>> &map)
-  : isl::union_map(map)
-{
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>>::union_map(const isl::ctx &ctx, const std::string &str)
-  : isl::union_map(ctx, str)
-{
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::basic_map<pair<T1, T2>, Range2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::map<pair<T1, T2>, Range2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::as_map() const
-{
-  auto res = isl::union_map::as_map();
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::as_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const
-{
-  auto res = isl::union_map::bind_range(tuple);
-  return typed::union_set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::coalesce() const
-{
-  auto res = isl::union_map::coalesce();
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<T1, pair<T2, pair<T1, T2>>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::curry() const
-{
-  auto res = isl::union_map::curry();
-  return typed::union_map<T1, pair<T2, pair<T1, T2>>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::deltas() const
-{
-  auto res = isl::union_map::deltas();
-  return typed::union_set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::detect_equalities() const
-{
-  auto res = isl::union_map::detect_equalities();
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain() const
-{
-  auto res = isl::union_map::domain();
-  return typed::union_set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<T1, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_factor_domain() const
-{
-  auto res = isl::union_map::domain_factor_domain();
-  return typed::union_map<T1, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<T2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_factor_range() const
-{
-  auto res = isl::union_map::domain_factor_range();
-  return typed::union_map<T2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_map() const
-{
-  auto res = isl::union_map::domain_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::basic_map<Domain2, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::map<Domain2, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_map::empty(ctx);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const
-{
-  auto res = isl::union_map::eq_at(mupa);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mupa) const
-{
-  auto res = isl::union_map::eq_at(mupa);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::union_pw_aff<pair<T1, T2>, Range> &mupa) const
-{
-  auto res = isl::union_map::eq_at(mupa);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-bool typed::union_map<pair<T1, T2>, pair<T1, T2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
-  };
-  return isl::union_map::every_map(lambda);
-}
-
-template <typename T1, typename T2>
-typed::map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const
-{
-  auto res = isl::union_map::extract_map(space);
-  return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-void typed::union_map<pair<T1, T2>, pair<T1, T2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
-  };
-  return isl::union_map::foreach_map(lambda);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::basic_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::point<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::union_map::intersect_domain(space);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_map::intersect_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::union_map::intersect_range(space);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_map::intersect_range(uset);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::lexmax() const
-{
-  auto res = isl::union_map::lexmax();
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::lexmin() const
-{
-  auto res = isl::union_map::lexmin();
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::map_list<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::map_list() const
-{
-  auto res = isl::union_map::map_list();
-  return typed::map_list<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
-{
-  auto res = isl::union_map::preimage_domain(ma);
-  return typed::union_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
-{
-  auto res = isl::union_map::preimage_domain(mpa);
-  return typed::union_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
-{
-  auto res = isl::union_map::preimage_domain(pma);
-  return typed::union_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
-{
-  auto res = isl::union_map::preimage_domain(upma);
-  return typed::union_map<Domain2, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const
-{
-  auto res = isl::union_map::preimage_range(ma);
-  return typed::union_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const
-{
-  auto res = isl::union_map::preimage_range(pma);
-  return typed::union_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const
-{
-  auto res = isl::union_map::preimage_range(upma);
-  return typed::union_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::product(const typed::union_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::product(const typed::basic_map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Domain2, typename Range2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::product(const typed::map<Domain2, Range2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::project_out_all_params() const
-{
-  auto res = isl::union_map::project_out_all_params();
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range() const
-{
-  auto res = isl::union_map::range();
-  return typed::union_set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, T1> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_factor_domain() const
-{
-  auto res = isl::union_map::range_factor_domain();
-  return typed::union_map<pair<T1, T2>, T1>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, T2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_factor_range() const
-{
-  auto res = isl::union_map::range_factor_range();
-  return typed::union_map<pair<T1, T2>, T2>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_map() const
-{
-  auto res = isl::union_map::range_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::basic_map<pair<T1, T2>, Range2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-template <typename Range2>
-typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::map<pair<T1, T2>, Range2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T2, T1>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_reverse() const
-{
-  auto res = isl::union_map::range_reverse();
-  return typed::union_map<pair<T1, T2>, pair<T2, T1>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::reverse() const
-{
-  auto res = isl::union_map::reverse();
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::space<> typed::union_map<pair<T1, T2>, pair<T1, T2>>::space() const
-{
-  auto res = isl::union_map::space();
-  return typed::space<>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::basic_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::point<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::union_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::basic_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::point<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<pair<T1, T2>, T1>, T2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::uncurry() const
-{
-  auto res = isl::union_map::uncurry();
-  return typed::union_map<pair<pair<T1, T2>, T1>, T2>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::universe() const
-{
-  auto res = isl::union_map::universe();
-  return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2>
-typed::union_set<pair<pair<T1, T2>, pair<T1, T2>>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::wrap() const
-{
-  auto res = isl::union_map::wrap();
-  return typed::union_set<pair<pair<T1, T2>, pair<T1, T2>>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>>::union_map(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap)
-  : isl::union_map(bmap)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>>::union_map(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map)
-  : isl::union_map(map)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>>::union_map(const isl::ctx &ctx, const std::string &str)
-  : isl::union_map(ctx, str)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &umap2) const
-{
-  auto res = isl::union_map::apply_domain(umap2);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg2> &umap2) const
-{
-  auto res = isl::union_map::apply_range(umap2);
-  return typed::union_map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::as_map() const
-{
-  auto res = isl::union_map::as_map();
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_map::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::as_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::as_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
-{
-  auto res = isl::union_map::bind_range(tuple);
-  return typed::union_set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::union_map::coalesce();
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<T1, pair<T2, pair<Range, Range2>>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::curry() const
-{
-  auto res = isl::union_map::curry();
-  return typed::union_map<T1, pair<T2, pair<Range, Range2>>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::detect_equalities() const
-{
-  auto res = isl::union_map::detect_equalities();
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::union_map::domain();
-  return typed::union_set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<T1, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_domain() const
-{
-  auto res = isl::union_map::domain_factor_domain();
-  return typed::union_map<T1, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<T2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_range() const
-{
-  auto res = isl::union_map::domain_factor_range();
-  return typed::union_map<T2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_map() const
-{
-  auto res = isl::union_map::domain_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
-{
-  auto res = isl::union_map::domain_map_union_pw_multi_aff();
-  return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::domain_product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_map::empty(ctx);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-bool typed::union_map<pair<T1, T2>, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return test(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
-  };
-  return isl::union_map::every_map(lambda);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
-{
-  auto res = isl::union_map::extract_map(space);
-  return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-void typed::union_map<pair<T1, T2>, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const
-{
-  auto lambda = [&] (isl::map arg0) {
-    return fn(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
-  };
-  return isl::union_map::foreach_map(lambda);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const
-{
-  auto res = isl::union_map::gist(context);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::basic_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::point<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_map::gist_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::intersect(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::union_map::intersect_domain(space);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_map::intersect_domain(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_map::intersect_params(set);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
-{
-  auto res = isl::union_map::intersect_range(space);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
-{
-  auto res = isl::union_map::intersect_range(uset);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::lexmax() const
-{
-  auto res = isl::union_map::lexmax();
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::lexmin() const
-{
-  auto res = isl::union_map::lexmin();
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::map_list<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::map_list() const
-{
-  auto res = isl::union_map::map_list();
-  return typed::map_list<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
-{
-  auto res = isl::union_map::preimage_domain(ma);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
-{
-  auto res = isl::union_map::preimage_domain(mpa);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
-{
-  auto res = isl::union_map::preimage_domain(pma);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
-{
-  auto res = isl::union_map::preimage_domain(upma);
-  return typed::union_map<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const
-{
-  auto res = isl::union_map::preimage_range(ma);
-  return typed::union_map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const
-{
-  auto res = isl::union_map::preimage_range(pma);
-  return typed::union_map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const
-{
-  auto res = isl::union_map::preimage_range(upma);
-  return typed::union_map<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::basic_map<Domain2, Arg2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2, typename Arg2>
-typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::map<Domain2, Arg2> &umap2) const
-{
-  auto res = isl::union_map::product(umap2);
-  return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::project_out_all_params() const
-{
-  auto res = isl::union_map::project_out_all_params();
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_set<pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range() const
-{
-  auto res = isl::union_map::range();
-  return typed::union_set<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, Range> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::union_map::range_factor_domain();
-  return typed::union_map<pair<T1, T2>, Range>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::union_map::range_factor_range();
-  return typed::union_map<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_map() const
-{
-  auto res = isl::union_map::range_map();
-  return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::basic_map<pair<T1, T2>, Arg2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::map<pair<T1, T2>, Arg2> &umap2) const
-{
-  auto res = isl::union_map::range_product(umap2);
-  return typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range2, Range>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_reverse() const
-{
-  auto res = isl::union_map::range_reverse();
-  return typed::union_map<pair<T1, T2>, pair<Range2, Range>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<Range, Range2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::reverse() const
-{
-  auto res = isl::union_map::reverse();
-  return typed::union_map<pair<Range, Range2>, pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::space() const
-{
-  auto res = isl::union_map::space();
-  return typed::space<>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::subtract(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::basic_set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::point<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::set<pair<T1, T2>> &dom) const
-{
-  auto res = isl::union_map::subtract_domain(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::basic_set<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::point<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::set<pair<Range, Range2>> &dom) const
-{
-  auto res = isl::union_map::subtract_range(dom);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<pair<T1, T2>, Range>, Range2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::uncurry() const
-{
-  auto res = isl::union_map::uncurry();
-  return typed::union_map<pair<pair<T1, T2>, Range>, Range2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
-{
-  auto res = isl::union_map::unite(umap2);
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::universe() const
-{
-  auto res = isl::union_map::universe();
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_set<pair<pair<T1, T2>, pair<Range, Range2>>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::wrap() const
-{
-  auto res = isl::union_map::wrap();
-  return typed::union_set<pair<pair<T1, T2>, pair<Range, Range2>>>(res);
-}
-
-typed::union_pw_aff<Anonymous>::union_pw_aff(const typed::aff<Anonymous> &aff)
-  : isl::union_pw_aff(aff)
-{
-}
-
-typed::union_pw_aff<Anonymous>::union_pw_aff(const typed::pw_aff<Anonymous> &pa)
-  : isl::union_pw_aff(pa)
-{
-}
-
-typed::union_pw_aff<Anonymous>::union_pw_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::union_pw_aff(ctx, str)
-{
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::add(const typed::multi_union_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::union_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::add(const typed::union_pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::add(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_multi_aff<Anonymous> typed::union_pw_aff<Anonymous>::add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
-{
-  auto res = isl::union_pw_aff::add(upma2);
-  return typed::union_pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::add(const typed::aff<Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::add(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::add(const typed::pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::add(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_aff<Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const
-{
-  auto res = isl::union_pw_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_pw_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::union_pw_aff<Anonymous>::as_pw_multi_aff() const
-{
-  auto res = isl::union_pw_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::at(int pos) const
-{
-  auto res = isl::union_pw_aff::at(pos);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_set<> typed::union_pw_aff<Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
-{
-  auto res = isl::union_pw_aff::bind(tuple);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_pw_aff<Anonymous>::bind(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::union_pw_aff::bind(id);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_pw_aff<Anonymous>::bind(const std::string &id) const
-{
-  auto res = isl::union_pw_aff::bind(id);
-  return typed::union_set<>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::coalesce() const
-{
-  auto res = isl::union_pw_aff::coalesce();
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_set<> typed::union_pw_aff<Anonymous>::domain() const
-{
-  auto res = isl::union_pw_aff::domain();
-  return typed::union_set<>(res);
-}
-
-typed::pw_multi_aff<Anonymous> typed::union_pw_aff<Anonymous>::extract_pw_multi_aff(const typed::space<Anonymous> &space) const
-{
-  auto res = isl::union_pw_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::gist(const typed::basic_set<> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::gist(const typed::point<> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::gist(const typed::set<> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_pw_aff::intersect_params(set);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_pw_aff::intersect_params(set);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_pw_aff::intersect_params(set);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff_list<Anonymous> typed::union_pw_aff<Anonymous>::list() const
-{
-  auto res = isl::union_pw_aff::list();
-  return typed::union_pw_aff_list<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::neg() const
-{
-  auto res = isl::union_pw_aff::neg();
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::pw_multi_aff_list<Anonymous> typed::union_pw_aff<Anonymous>::pw_multi_aff_list() const
-{
-  auto res = isl::union_pw_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::union_pw_aff::scale(mv);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::union_pw_aff::scale(v);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale(long v) const
-{
-  auto res = isl::union_pw_aff::scale(v);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::union_pw_aff::scale_down(mv);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale_down(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::union_pw_aff::scale_down(v);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale_down(long v) const
-{
-  auto res = isl::union_pw_aff::scale_down(v);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
-{
-  auto res = isl::union_pw_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain2>
-typed::multi_union_pw_aff<Domain2> typed::union_pw_aff<Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::union_pw_aff::set_range_tuple(id);
-  return typed::multi_union_pw_aff<Domain2>(res);
-}
-
-template <typename Domain2>
-typed::multi_union_pw_aff<Domain2> typed::union_pw_aff<Anonymous>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::union_pw_aff::set_range_tuple(id);
-  return typed::multi_union_pw_aff<Domain2>(res);
-}
-
-typed::space<> typed::union_pw_aff<Anonymous>::space() const
-{
-  auto res = isl::union_pw_aff::space();
-  return typed::space<>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const
-{
-  auto res = isl::union_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::sub(const typed::union_pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::sub(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_multi_aff<Anonymous> typed::union_pw_aff<Anonymous>::sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const
-{
-  auto res = isl::union_pw_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::sub(const typed::aff<Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::sub(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::sub(const typed::pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::sub(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const
-{
-  auto res = isl::union_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::union_add(const typed::union_pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::union_add(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_multi_aff<Anonymous> typed::union_pw_aff<Anonymous>::union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
-{
-  auto res = isl::union_pw_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::union_add(const typed::aff<Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::union_add(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::union_add(const typed::pw_aff<Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::union_add(upa2);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous>::union_pw_aff(const typed::aff<Domain, Anonymous> &aff)
-  : isl::union_pw_aff(aff)
-{
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous>::union_pw_aff(const typed::pw_aff<Domain, Anonymous> &pa)
-  : isl::union_pw_aff(pa)
-{
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous>::union_pw_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::union_pw_aff(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::union_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::add(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
-{
-  auto res = isl::union_pw_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::add(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::add(const typed::pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::add(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, Range2> typed::union_pw_aff<Domain, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const
-{
-  auto res = isl::union_pw_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_pw_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::as_pw_multi_aff() const
-{
-  auto res = isl::union_pw_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::as_union_map() const
-{
-  auto res = isl::union_pw_aff::as_union_map();
-  return typed::union_map<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::at(int pos) const
-{
-  auto res = isl::union_pw_aff::at(pos);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_pw_aff<Domain, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
-{
-  auto res = isl::union_pw_aff::bind(tuple);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_pw_aff<Domain, Anonymous>::bind(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::union_pw_aff::bind(id);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_pw_aff<Domain, Anonymous>::bind(const std::string &id) const
-{
-  auto res = isl::union_pw_aff::bind(id);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::coalesce() const
-{
-  auto res = isl::union_pw_aff::coalesce();
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_pw_aff<Domain, Anonymous>::domain() const
-{
-  auto res = isl::union_pw_aff::domain();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const
-{
-  auto res = isl::union_pw_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::gist(const typed::point<Domain> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_pw_aff::intersect_domain(space);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_pw_aff::intersect_domain(uset);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_pw_aff::intersect_params(set);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_pw_aff::intersect_params(set);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_pw_aff::intersect_params(set);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff_list<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::list() const
-{
-  auto res = isl::union_pw_aff::list();
-  return typed::union_pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::neg() const
-{
-  auto res = isl::union_pw_aff::neg();
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_pw_aff<Domain2, Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_pw_aff<Domain2, Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_pw_aff<Domain2, Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_pw_aff<Domain2, Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Domain2, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_aff<Domain> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::pw_multi_aff_list() const
-{
-  auto res = isl::union_pw_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> typed::union_pw_aff<Domain, Anonymous>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
-{
-  auto res = isl::union_pw_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> typed::union_pw_aff<Domain, Anonymous>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
-{
-  auto res = isl::union_pw_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::union_pw_aff::scale(mv);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::union_pw_aff::scale(v);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale(long v) const
-{
-  auto res = isl::union_pw_aff::scale(v);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::union_pw_aff::scale_down(mv);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale_down(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::union_pw_aff::scale_down(v);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale_down(long v) const
-{
-  auto res = isl::union_pw_aff::scale_down(v);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::union_pw_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, Range2> typed::union_pw_aff<Domain, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::union_pw_aff::set_range_tuple(id);
-  return typed::multi_union_pw_aff<Domain, Range2>(res);
-}
-
-template <typename Domain>
-template <typename Range2>
-typed::multi_union_pw_aff<Domain, Range2> typed::union_pw_aff<Domain, Anonymous>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::union_pw_aff::set_range_tuple(id);
-  return typed::multi_union_pw_aff<Domain, Range2>(res);
-}
-
-template <typename Domain>
-typed::space<> typed::union_pw_aff<Domain, Anonymous>::space() const
-{
-  auto res = isl::union_pw_aff::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
-{
-  auto res = isl::union_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::sub(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
-{
-  auto res = isl::union_pw_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::sub(const typed::aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::sub(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::sub(const typed::pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::sub(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::subtract_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_pw_aff::subtract_domain(space);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::subtract_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_pw_aff::subtract_domain(uset);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const
-{
-  auto res = isl::union_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::union_add(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
-{
-  auto res = isl::union_pw_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::union_add(const typed::aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::union_add(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::union_add(const typed::pw_aff<Domain, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::union_add(upa2);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_pw_aff(const typed::aff<pair<Domain, Domain2>, Anonymous> &aff)
-  : isl::union_pw_aff(aff)
-{
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_pw_aff(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &pa)
-  : isl::union_pw_aff(pa)
-{
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_pw_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::union_pw_aff(ctx, str)
-{
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::add(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &multi2) const
-{
-  auto res = isl::union_pw_aff::add(multi2);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::add(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::add(upa2);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const
-{
-  auto res = isl::union_pw_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::add(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::add(upa2);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::add(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::add(upa2);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-template <typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const
-{
-  auto res = isl::union_pw_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_pw_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::as_pw_multi_aff() const
-{
-  auto res = isl::union_pw_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_map<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::as_union_map() const
-{
-  auto res = isl::union_pw_aff::as_union_map();
-  return typed::union_map<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::at(int pos) const
-{
-  auto res = isl::union_pw_aff::at(pos);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_set<pair<Domain, Domain2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
-{
-  auto res = isl::union_pw_aff::bind(tuple);
-  return typed::union_set<pair<Domain, Domain2>>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_set<pair<Domain, Domain2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::bind(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::union_pw_aff::bind(id);
-  return typed::union_set<pair<Domain, Domain2>>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_set<pair<Domain, Domain2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::bind(const std::string &id) const
-{
-  auto res = isl::union_pw_aff::bind(id);
-  return typed::union_set<pair<Domain, Domain2>>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::coalesce() const
-{
-  auto res = isl::union_pw_aff::coalesce();
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_set<pair<Domain, Domain2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::domain() const
-{
-  auto res = isl::union_pw_aff::domain();
-  return typed::union_set<pair<Domain, Domain2>>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::extract_pw_multi_aff(const typed::space<pair<Domain, Domain2>, Anonymous> &space) const
-{
-  auto res = isl::union_pw_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::gist(const typed::union_set<pair<Domain, Domain2>> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::gist(const typed::basic_set<pair<Domain, Domain2>> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::gist(const typed::point<pair<Domain, Domain2>> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::gist(const typed::set<pair<Domain, Domain2>> &context) const
-{
-  auto res = isl::union_pw_aff::gist(context);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_domain(const typed::space<pair<Domain, Domain2>> &space) const
-{
-  auto res = isl::union_pw_aff::intersect_domain(space);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const
-{
-  auto res = isl::union_pw_aff::intersect_domain(uset);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_pw_aff::intersect_params(set);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_pw_aff::intersect_params(set);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_pw_aff::intersect_params(set);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff_list<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::list() const
-{
-  auto res = isl::union_pw_aff::list();
-  return typed::union_pw_aff_list<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::neg() const
-{
-  auto res = isl::union_pw_aff::neg();
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain> &upma2) const
-{
-  auto res = isl::union_pw_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-template <typename Arg2>
-typed::union_pw_aff<Arg2, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain, Domain2>> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Arg2, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::union_pw_multi_aff<pair<Domain, Domain2>> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-template <typename Arg2>
-typed::union_pw_aff<Arg2, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::multi_aff<Arg2, pair<Domain, Domain2>> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Arg2, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::multi_aff<pair<Domain, Domain2>> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-template <typename Arg2>
-typed::union_pw_aff<Arg2, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::pw_multi_aff<Arg2, pair<Domain, Domain2>> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Arg2, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::pw_multi_aff<pair<Domain, Domain2>> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-template <typename Arg2>
-typed::union_pw_aff<Arg2, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::union_pw_aff<Arg2, pair<Domain, Domain2>> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Arg2, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::union_pw_aff<pair<Domain, Domain2>> &upma) const
-{
-  auto res = isl::union_pw_aff::pullback(upma);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::pw_multi_aff_list<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pw_multi_aff_list() const
-{
-  auto res = isl::union_pw_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-template <typename Range2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::range_product(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> &multi2) const
-{
-  auto res = isl::union_pw_aff::range_product(multi2);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain, typename Domain2>
-template <typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::range_product(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const
-{
-  auto res = isl::union_pw_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::union_pw_aff::scale(mv);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::union_pw_aff::scale(v);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale(long v) const
-{
-  auto res = isl::union_pw_aff::scale(v);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
-{
-  auto res = isl::union_pw_aff::scale_down(mv);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale_down(const typed::val<Anonymous> &v) const
-{
-  auto res = isl::union_pw_aff::scale_down(v);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale_down(long v) const
-{
-  auto res = isl::union_pw_aff::scale_down(v);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::set_at(int pos, const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &el) const
-{
-  auto res = isl::union_pw_aff::set_at(pos, el);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-template <typename Range2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
-{
-  auto res = isl::union_pw_aff::set_range_tuple(id);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Domain2>
-template <typename Range2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::set_range_tuple(const std::string &id) const
-{
-  auto res = isl::union_pw_aff::set_range_tuple(id);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::space<> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::space() const
-{
-  auto res = isl::union_pw_aff::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::sub(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &multi2) const
-{
-  auto res = isl::union_pw_aff::sub(multi2);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::sub(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::sub(upa2);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::sub(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const
-{
-  auto res = isl::union_pw_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::sub(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::sub(upa2);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::sub(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::sub(upa2);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::subtract_domain(const typed::space<pair<Domain, Domain2>> &space) const
-{
-  auto res = isl::union_pw_aff::subtract_domain(space);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::subtract_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const
-{
-  auto res = isl::union_pw_aff::subtract_domain(uset);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_add(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &mupa2) const
-{
-  auto res = isl::union_pw_aff::union_add(mupa2);
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_add(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::union_add(upa2);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const
-{
-  auto res = isl::union_pw_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_add(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::union_add(upa2);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-template <typename Domain, typename Domain2>
-typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_add(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
-{
-  auto res = isl::union_pw_aff::union_add(upa2);
-  return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
-}
-
-typed::union_pw_aff_list<Anonymous>::union_pw_aff_list(const isl::ctx &ctx, int n)
-  : isl::union_pw_aff_list(ctx, n)
-{
-}
-
-typed::union_pw_aff_list<Anonymous>::union_pw_aff_list(const typed::union_pw_aff<Anonymous> &el)
-  : isl::union_pw_aff_list(el)
-{
-}
-
-typed::union_pw_aff_list<Anonymous>::union_pw_aff_list(const isl::ctx &ctx, const std::string &str)
-  : isl::union_pw_aff_list(ctx, str)
-{
-}
-
-typed::union_pw_aff_list<Anonymous> typed::union_pw_aff_list<Anonymous>::add(const typed::union_pw_aff<Anonymous> &el) const
-{
-  auto res = isl::union_pw_aff_list::add(el);
-  return typed::union_pw_aff_list<Anonymous>(res);
-}
-
-typed::union_pw_aff_list<Anonymous> typed::union_pw_aff_list<Anonymous>::add(const typed::aff<Anonymous> &el) const
-{
-  auto res = isl::union_pw_aff_list::add(el);
-  return typed::union_pw_aff_list<Anonymous>(res);
-}
-
-typed::union_pw_aff_list<Anonymous> typed::union_pw_aff_list<Anonymous>::add(const typed::pw_aff<Anonymous> &el) const
-{
-  auto res = isl::union_pw_aff_list::add(el);
-  return typed::union_pw_aff_list<Anonymous>(res);
-}
-
-typed::union_pw_aff<Anonymous> typed::union_pw_aff_list<Anonymous>::at(int index) const
-{
-  auto res = isl::union_pw_aff_list::at(index);
-  return typed::union_pw_aff<Anonymous>(res);
-}
-
-typed::union_pw_aff_list<Anonymous> typed::union_pw_aff_list<Anonymous>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::union_pw_aff_list::drop(first, n);
-  return typed::union_pw_aff_list<Anonymous>(res);
-}
-
-void typed::union_pw_aff_list<Anonymous>::foreach(const std::function<void(typed::union_pw_aff<Anonymous>)> &fn) const
-{
-  auto lambda = [&] (isl::union_pw_aff arg0) {
-    return fn(typed::union_pw_aff<Anonymous>(arg0));
-  };
-  return isl::union_pw_aff_list::foreach(lambda);
-}
-
-template <typename Domain>
-typed::union_pw_aff_list<Domain, Anonymous>::union_pw_aff_list(const isl::ctx &ctx, int n)
-  : isl::union_pw_aff_list(ctx, n)
-{
-}
-
-template <typename Domain>
-typed::union_pw_aff_list<Domain, Anonymous>::union_pw_aff_list(const typed::union_pw_aff<Domain, Anonymous> &el)
-  : isl::union_pw_aff_list(el)
-{
-}
-
-template <typename Domain>
-typed::union_pw_aff_list<Domain, Anonymous>::union_pw_aff_list(const isl::ctx &ctx, const std::string &str)
-  : isl::union_pw_aff_list(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::union_pw_aff_list<Domain, Anonymous> typed::union_pw_aff_list<Domain, Anonymous>::add(const typed::union_pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::union_pw_aff_list::add(el);
-  return typed::union_pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff_list<Domain, Anonymous> typed::union_pw_aff_list<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::union_pw_aff_list::add(el);
-  return typed::union_pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff_list<Domain, Anonymous> typed::union_pw_aff_list<Domain, Anonymous>::add(const typed::pw_aff<Domain, Anonymous> &el) const
-{
-  auto res = isl::union_pw_aff_list::add(el);
-  return typed::union_pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff_list<Domain, Anonymous>::at(int index) const
-{
-  auto res = isl::union_pw_aff_list::at(index);
-  return typed::union_pw_aff<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-typed::union_pw_aff_list<Domain, Anonymous> typed::union_pw_aff_list<Domain, Anonymous>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::union_pw_aff_list::drop(first, n);
-  return typed::union_pw_aff_list<Domain, Anonymous>(res);
-}
-
-template <typename Domain>
-void typed::union_pw_aff_list<Domain, Anonymous>::foreach(const std::function<void(typed::union_pw_aff<Domain, Anonymous>)> &fn) const
-{
-  auto lambda = [&] (isl::union_pw_aff arg0) {
-    return fn(typed::union_pw_aff<Domain, Anonymous>(arg0));
-  };
-  return isl::union_pw_aff_list::foreach(lambda);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain>::union_pw_multi_aff(const typed::multi_aff<Domain> &ma)
-  : isl::union_pw_multi_aff(ma)
-{
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain>::union_pw_multi_aff(const typed::pw_multi_aff<Domain> &pma)
-  : isl::union_pw_multi_aff(pma)
-{
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain>::union_pw_multi_aff(const typed::union_pw_aff<Domain> &upa)
-  : isl::union_pw_multi_aff(upa)
-{
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::union_pw_multi_aff(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::add(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::add(const typed::multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::add(const typed::pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::add(const typed::union_pw_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain>::apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain>::apply(const typed::multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain>::apply(const typed::pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain>::apply(const typed::union_pw_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain>
-typed::multi_union_pw_aff<Domain> typed::union_pw_multi_aff<Domain>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::as_pw_multi_aff() const
-{
-  auto res = isl::union_pw_multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::coalesce() const
-{
-  auto res = isl::union_pw_multi_aff::coalesce();
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<> typed::union_pw_multi_aff<Domain>::domain() const
-{
-  auto res = isl::union_pw_multi_aff::domain();
-  return typed::union_set<>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_pw_multi_aff::empty(ctx);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::extract_pw_multi_aff(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::gist(const typed::basic_set<> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::gist(const typed::point<> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::gist(const typed::set<> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::pw_multi_aff_list<Domain> typed::union_pw_multi_aff<Domain>::pw_multi_aff_list() const
-{
-  auto res = isl::union_pw_multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::space<> typed::union_pw_multi_aff<Domain>::space() const
-{
-  auto res = isl::union_pw_multi_aff::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::sub(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::sub(const typed::multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::sub(const typed::pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::sub(const typed::union_pw_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::union_add(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::union_add(const typed::multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::union_add(const typed::pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::union_add(const typed::union_pw_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range>::union_pw_multi_aff(const typed::multi_aff<Domain, Range> &ma)
-  : isl::union_pw_multi_aff(ma)
-{
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range>::union_pw_multi_aff(const typed::pw_multi_aff<Domain, Range> &pma)
-  : isl::union_pw_multi_aff(pma)
-{
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range>::union_pw_multi_aff(const typed::union_pw_aff<Domain, Range> &upa)
-  : isl::union_pw_multi_aff(upa)
-{
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::union_pw_multi_aff(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::add(const typed::multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::add(const typed::pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::add(const typed::union_pw_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, Range2> typed::union_pw_multi_aff<Domain, Range>::apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, Range2> typed::union_pw_multi_aff<Domain, Range>::apply(const typed::multi_aff<Range, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, Range2> typed::union_pw_multi_aff<Domain, Range>::apply(const typed::pw_multi_aff<Range, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, Range2> typed::union_pw_multi_aff<Domain, Range>::apply(const typed::union_pw_aff<Range, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::multi_union_pw_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::as_pw_multi_aff() const
-{
-  auto res = isl::union_pw_multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::as_union_map() const
-{
-  auto res = isl::union_pw_multi_aff::as_union_map();
-  return typed::union_map<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::coalesce() const
-{
-  auto res = isl::union_pw_multi_aff::coalesce();
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<Domain> typed::union_pw_multi_aff<Domain, Range>::domain() const
-{
-  auto res = isl::union_pw_multi_aff::domain();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_pw_multi_aff::empty(ctx);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::extract_pw_multi_aff(const typed::space<Domain, Range> &space) const
-{
-  auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::gist(const typed::point<Domain> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::pw_multi_aff_list<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::pw_multi_aff_list() const
-{
-  auto res = isl::union_pw_multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, Range>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, Range>::range_product(const typed::multi_aff<Domain, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, Range>::range_product(const typed::pw_multi_aff<Domain, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, Range>::range_product(const typed::union_pw_aff<Domain, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<> typed::union_pw_multi_aff<Domain, Range>::space() const
-{
-  auto res = isl::union_pw_multi_aff::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::sub(const typed::multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::sub(const typed::pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::sub(const typed::union_pw_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::subtract_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_pw_multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::subtract_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_pw_multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::union_add(const typed::multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::union_add(const typed::pw_multi_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::union_add(const typed::union_pw_aff<Domain, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_pw_multi_aff(const typed::multi_aff<pair<Domain, Domain2>, Range> &ma)
-  : isl::union_pw_multi_aff(ma)
-{
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_pw_multi_aff(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &pma)
-  : isl::union_pw_multi_aff(pma)
-{
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_pw_multi_aff(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upa)
-  : isl::union_pw_multi_aff(upa)
-{
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::union_pw_multi_aff(ctx, str)
-{
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::add(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::add(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::add(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::apply(const typed::multi_aff<Range, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::apply(const typed::pw_multi_aff<Range, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::apply(const typed::union_pw_aff<Range, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::multi_union_pw_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::as_pw_multi_aff() const
-{
-  auto res = isl::union_pw_multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_map<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::as_union_map() const
-{
-  auto res = isl::union_pw_multi_aff::as_union_map();
-  return typed::union_map<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::coalesce() const
-{
-  auto res = isl::union_pw_multi_aff::coalesce();
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_set<pair<Domain, Domain2>> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::domain() const
-{
-  auto res = isl::union_pw_multi_aff::domain();
-  return typed::union_set<pair<Domain, Domain2>>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_pw_multi_aff::empty(ctx);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::extract_pw_multi_aff(const typed::space<pair<Domain, Domain2>, Range> &space) const
-{
-  auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::gist(const typed::union_set<pair<Domain, Domain2>> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::gist(const typed::basic_set<pair<Domain, Domain2>> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::gist(const typed::point<pair<Domain, Domain2>> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::gist(const typed::set<pair<Domain, Domain2>> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_domain(const typed::space<pair<Domain, Domain2>> &space) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::preimage_domain_wrapped_domain(const typed::union_pw_aff<Domain3, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Arg3>
-typed::union_pw_multi_aff<Arg3, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::union_pw_multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Arg3, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::union_pw_multi_aff<pair<Domain, Domain2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Arg3>
-typed::union_pw_multi_aff<Arg3, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Arg3, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::multi_aff<pair<Domain, Domain2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Arg3>
-typed::union_pw_multi_aff<Arg3, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::pw_multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Arg3, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::pw_multi_aff<pair<Domain, Domain2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Arg3>
-typed::union_pw_multi_aff<Arg3, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::union_pw_aff<Arg3, pair<Domain, Domain2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Arg3, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::union_pw_aff<pair<Domain, Domain2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::pw_multi_aff_list<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pw_multi_aff_list() const
-{
-  auto res = isl::union_pw_multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::range_product(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::range_product(const typed::multi_aff<pair<Domain, Domain2>, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::range_product(const typed::pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-template <typename Range2>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::range_product(const typed::union_pw_aff<pair<Domain, Domain2>, Range2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::space<> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::space() const
-{
-  auto res = isl::union_pw_multi_aff::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::sub(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::sub(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::sub(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::sub(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::subtract_domain(const typed::space<pair<Domain, Domain2>> &space) const
-{
-  auto res = isl::union_pw_multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::subtract_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const
-{
-  auto res = isl::union_pw_multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_add(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_add(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Domain2, typename Range>
-typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_add(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_pw_multi_aff(const typed::multi_aff<Domain, pair<Range, Range2>> &ma)
-  : isl::union_pw_multi_aff(ma)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_pw_multi_aff(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma)
-  : isl::union_pw_multi_aff(pma)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_pw_multi_aff(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upa)
-  : isl::union_pw_multi_aff(upa)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::union_pw_multi_aff(ctx, str)
-{
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, Arg3> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, Arg3> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::apply(const typed::multi_aff<pair<Range, Range2>, Arg3> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, Arg3> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::apply(const typed::pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, Arg3> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::apply(const typed::union_pw_aff<pair<Range, Range2>, Arg3> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<Domain, Arg3>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::as_pw_multi_aff() const
-{
-  auto res = isl::union_pw_multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_map<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::as_union_map() const
-{
-  auto res = isl::union_pw_multi_aff::as_union_map();
-  return typed::union_map<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::union_pw_multi_aff::coalesce();
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_set<Domain> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::union_pw_multi_aff::domain();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_pw_multi_aff::empty(ctx);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const
-{
-  auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::point<Domain> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_aff<Domain2, Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_aff<Domain> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::pw_multi_aff_list<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff_list() const
-{
-  auto res = isl::union_pw_multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::union_pw_multi_aff::range_factor_domain();
-  return typed::union_pw_multi_aff<Domain, Range>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, Range2> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::union_pw_multi_aff::range_factor_range();
-  return typed::union_pw_multi_aff<Domain, Range2>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_aff<Domain, Arg3> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<Domain, Arg3> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-template <typename Arg3>
-typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::union_pw_aff<Domain, Arg3> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::space<> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::space() const
-{
-  auto res = isl::union_pw_multi_aff::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_pw_multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &uset) const
-{
-  auto res = isl::union_pw_multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename Domain, typename Range, typename Range2>
-typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_pw_multi_aff(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &ma)
-  : isl::union_pw_multi_aff(ma)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_pw_multi_aff(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma)
-  : isl::union_pw_multi_aff(pma)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_pw_multi_aff(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upa)
-  : isl::union_pw_multi_aff(upa)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str)
-  : isl::union_pw_multi_aff(ctx, str)
-{
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, Arg2> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, Arg2> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::multi_aff<pair<Range, Range2>, Arg2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, Arg2> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, Arg2> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::union_pw_aff<pair<Range, Range2>, Arg2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::apply(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, Arg2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
-{
-  auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff();
-  return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_pw_multi_aff() const
-{
-  auto res = isl::union_pw_multi_aff::as_pw_multi_aff();
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_union_map() const
-{
-  auto res = isl::union_pw_multi_aff::as_union_map();
-  return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
-{
-  auto res = isl::union_pw_multi_aff::coalesce();
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_set<pair<T1, T2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::domain() const
-{
-  auto res = isl::union_pw_multi_aff::domain();
-  return typed::union_set<pair<T1, T2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_pw_multi_aff::empty(ctx);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
-{
-  auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space);
-  return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_set<pair<T1, T2>> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_set<pair<T1, T2>> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::point<pair<T1, T2>> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::set<pair<T1, T2>> &context) const
-{
-  auto res = isl::union_pw_multi_aff::gist(context);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_domain(space);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_domain(uset);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_pw_multi_aff::intersect_params(set);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, T1> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain3>
-typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::union_pw_aff<Domain3, T1> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
-  return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<pair<T1, T2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<pair<T1, T2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Domain2>
-typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_aff<Domain2, pair<T1, T2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_aff<pair<T1, T2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::pullback(upma2);
-  return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff_list() const
-{
-  auto res = isl::union_pw_multi_aff::pw_multi_aff_list();
-  return typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, Range> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
-{
-  auto res = isl::union_pw_multi_aff::range_factor_domain();
-  return typed::union_pw_multi_aff<pair<T1, T2>, Range>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, Range2> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
-{
-  auto res = isl::union_pw_multi_aff::range_factor_range();
-  return typed::union_pw_multi_aff<pair<T1, T2>, Range2>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-template <typename Arg2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_pw_aff<pair<T1, T2>, Arg2> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::range_product(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::space<> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::space() const
-{
-  auto res = isl::union_pw_multi_aff::space();
-  return typed::space<>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::sub(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::space<pair<T1, T2>> &space) const
-{
-  auto res = isl::union_pw_multi_aff::subtract_domain(space);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const
-{
-  auto res = isl::union_pw_multi_aff::subtract_domain(uset);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-template <typename T1, typename T2, typename Range, typename Range2>
-typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
-{
-  auto res = isl::union_pw_multi_aff::union_add(upma2);
-  return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
-}
-
-typed::union_set<>::union_set(const typed::basic_set<> &bset)
-  : isl::union_set(bset)
-{
-}
-
-typed::union_set<>::union_set(const typed::point<> &pnt)
-  : isl::union_set(pnt)
-{
-}
-
-typed::union_set<>::union_set(const typed::set<> &set)
-  : isl::union_set(set)
-{
-}
-
-typed::union_set<>::union_set(const isl::ctx &ctx, const std::string &str)
-  : isl::union_set(ctx, str)
-{
-}
-
-typed::union_set<> typed::union_set<>::coalesce() const
-{
-  auto res = isl::union_set::coalesce();
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::detect_equalities() const
-{
-  auto res = isl::union_set::detect_equalities();
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_set::empty(ctx);
-  return typed::union_set<>(res);
-}
-
-bool typed::union_set<>::every_set(const std::function<bool(typed::set<>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<>(arg0));
-  };
-  return isl::union_set::every_set(lambda);
-}
-
-typed::set<> typed::union_set<>::extract_set(const typed::space<> &space) const
-{
-  auto res = isl::union_set::extract_set(space);
-  return typed::set<>(res);
-}
-
-void typed::union_set<>::foreach_point(const std::function<void(typed::point<>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<>(arg0));
-  };
-  return isl::union_set::foreach_point(lambda);
-}
-
-void typed::union_set<>::foreach_set(const std::function<void(typed::set<>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<>(arg0));
-  };
-  return isl::union_set::foreach_set(lambda);
-}
-
-typed::union_set<> typed::union_set<>::gist(const typed::union_set<> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::gist(const typed::basic_set<> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::gist(const typed::point<> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::gist(const typed::set<> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::intersect(const typed::union_set<> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::intersect(const typed::basic_set<> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::intersect(const typed::point<> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::intersect(const typed::set<> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::set_list<> typed::union_set<>::set_list() const
-{
-  auto res = isl::union_set::set_list();
-  return typed::set_list<>(res);
-}
-
-typed::space<> typed::union_set<>::space() const
-{
-  auto res = isl::union_set::space();
-  return typed::space<>(res);
-}
-
-typed::union_set<> typed::union_set<>::subtract(const typed::union_set<> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::subtract(const typed::basic_set<> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::subtract(const typed::point<> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::subtract(const typed::set<> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::unite(const typed::union_set<> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::unite(const typed::basic_set<> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::unite(const typed::point<> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::unite(const typed::set<> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<>(res);
-}
-
-typed::union_set<> typed::union_set<>::universe() const
-{
-  auto res = isl::union_set::universe();
-  return typed::union_set<>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain>::union_set(const typed::basic_set<Domain> &bset)
-  : isl::union_set(bset)
-{
-}
-
-template <typename Domain>
-typed::union_set<Domain>::union_set(const typed::point<Domain> &pnt)
-  : isl::union_set(pnt)
-{
-}
-
-template <typename Domain>
-typed::union_set<Domain>::union_set(const typed::set<Domain> &set)
-  : isl::union_set(set)
-{
-}
-
-template <typename Domain>
-typed::union_set<Domain>::union_set(const isl::ctx &ctx, const std::string &str)
-  : isl::union_set(ctx, str)
-{
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_set<Range> typed::union_set<Domain>::apply(const typed::union_map<Domain, Range> &umap) const
-{
-  auto res = isl::union_set::apply(umap);
-  return typed::union_set<Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_set<Range> typed::union_set<Domain>::apply(const typed::basic_map<Domain, Range> &umap) const
-{
-  auto res = isl::union_set::apply(umap);
-  return typed::union_set<Range>(res);
-}
-
-template <typename Domain>
-template <typename Range>
-typed::union_set<Range> typed::union_set<Domain>::apply(const typed::map<Domain, Range> &umap) const
-{
-  auto res = isl::union_set::apply(umap);
-  return typed::union_set<Range>(res);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::union_set<Domain>::as_set() const
-{
-  auto res = isl::union_set::as_set();
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::coalesce() const
-{
-  auto res = isl::union_set::coalesce();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::detect_equalities() const
-{
-  auto res = isl::union_set::detect_equalities();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_set::empty(ctx);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-bool typed::union_set<Domain>::every_set(const std::function<bool(typed::set<Domain>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<Domain>(arg0));
-  };
-  return isl::union_set::every_set(lambda);
-}
-
-template <typename Domain>
-typed::set<Domain> typed::union_set<Domain>::extract_set(const typed::space<Domain> &space) const
-{
-  auto res = isl::union_set::extract_set(space);
-  return typed::set<Domain>(res);
-}
-
-template <typename Domain>
-void typed::union_set<Domain>::foreach_point(const std::function<void(typed::point<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<Domain>(arg0));
-  };
-  return isl::union_set::foreach_point(lambda);
-}
-
-template <typename Domain>
-void typed::union_set<Domain>::foreach_set(const std::function<void(typed::set<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<Domain>(arg0));
-  };
-  return isl::union_set::foreach_set(lambda);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::gist(const typed::union_set<Domain> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::gist(const typed::basic_set<Domain> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::gist(const typed::point<Domain> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::gist(const typed::set<Domain> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_map<Domain, Domain> typed::union_set<Domain>::identity() const
-{
-  auto res = isl::union_set::identity();
-  return typed::union_map<Domain, Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::intersect(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::intersect(const typed::basic_set<Domain> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::intersect(const typed::point<Domain> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::intersect(const typed::set<Domain> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_set::intersect_params(set);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_set::intersect_params(set);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_set::intersect_params(set);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::lexmax() const
-{
-  auto res = isl::union_set::lexmax();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::lexmin() const
-{
-  auto res = isl::union_set::lexmin();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_set<Domain2> typed::union_set<Domain>::preimage(const typed::multi_aff<Domain2, Domain> &ma) const
-{
-  auto res = isl::union_set::preimage(ma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_set<Domain2> typed::union_set<Domain>::preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const
-{
-  auto res = isl::union_set::preimage(pma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain>
-template <typename Domain2>
-typed::union_set<Domain2> typed::union_set<Domain>::preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
-{
-  auto res = isl::union_set::preimage(upma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain>
-typed::set_list<Domain> typed::union_set<Domain>::set_list() const
-{
-  auto res = isl::union_set::set_list();
-  return typed::set_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::space<> typed::union_set<Domain>::space() const
-{
-  auto res = isl::union_set::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::subtract(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::subtract(const typed::basic_set<Domain> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::subtract(const typed::point<Domain> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::subtract(const typed::set<Domain> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::unite(const typed::union_set<Domain> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::unite(const typed::basic_set<Domain> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::unite(const typed::point<Domain> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::unite(const typed::set<Domain> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set<Domain>::universe() const
-{
-  auto res = isl::union_set::universe();
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>>::union_set(const typed::basic_set<pair<Domain, Range>> &bset)
-  : isl::union_set(bset)
-{
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>>::union_set(const typed::point<pair<Domain, Range>> &pnt)
-  : isl::union_set(pnt)
-{
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>>::union_set(const typed::set<pair<Domain, Range>> &set)
-  : isl::union_set(set)
-{
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>>::union_set(const isl::ctx &ctx, const std::string &str)
-  : isl::union_set(ctx, str)
-{
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::union_set<Arg2> typed::union_set<pair<Domain, Range>>::apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const
-{
-  auto res = isl::union_set::apply(umap);
-  return typed::union_set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::union_set<Arg2> typed::union_set<pair<Domain, Range>>::apply(const typed::basic_map<pair<Domain, Range>, Arg2> &umap) const
-{
-  auto res = isl::union_set::apply(umap);
-  return typed::union_set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Arg2>
-typed::union_set<Arg2> typed::union_set<pair<Domain, Range>>::apply(const typed::map<pair<Domain, Range>, Arg2> &umap) const
-{
-  auto res = isl::union_set::apply(umap);
-  return typed::union_set<Arg2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::as_set() const
-{
-  auto res = isl::union_set::as_set();
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::coalesce() const
-{
-  auto res = isl::union_set::coalesce();
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::detect_equalities() const
-{
-  auto res = isl::union_set::detect_equalities();
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::empty(const isl::ctx &ctx)
-{
-  auto res = isl::union_set::empty(ctx);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-bool typed::union_set<pair<Domain, Range>>::every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return test(typed::set<pair<Domain, Range>>(arg0));
-  };
-  return isl::union_set::every_set(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::extract_set(const typed::space<pair<Domain, Range>> &space) const
-{
-  auto res = isl::union_set::extract_set(space);
-  return typed::set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-void typed::union_set<pair<Domain, Range>>::foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const
-{
-  auto lambda = [&] (isl::point arg0) {
-    return fn(typed::point<pair<Domain, Range>>(arg0));
-  };
-  return isl::union_set::foreach_point(lambda);
-}
-
-template <typename Domain, typename Range>
-void typed::union_set<pair<Domain, Range>>::foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const
-{
-  auto lambda = [&] (isl::set arg0) {
-    return fn(typed::set<pair<Domain, Range>>(arg0));
-  };
-  return isl::union_set::foreach_set(lambda);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::gist(const typed::union_set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::gist(const typed::basic_set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::gist(const typed::point<pair<Domain, Range>> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::gist(const typed::set<pair<Domain, Range>> &context) const
-{
-  auto res = isl::union_set::gist(context);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<pair<Domain, Range>, pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::identity() const
-{
-  auto res = isl::union_set::identity();
-  return typed::union_map<pair<Domain, Range>, pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect(const typed::basic_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect(const typed::point<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect(const typed::set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::intersect(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect_params(const typed::set<> &set) const
-{
-  auto res = isl::union_set::intersect_params(set);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect_params(const typed::basic_set<> &set) const
-{
-  auto res = isl::union_set::intersect_params(set);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect_params(const typed::point<> &set) const
-{
-  auto res = isl::union_set::intersect_params(set);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::lexmax() const
-{
-  auto res = isl::union_set::lexmax();
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::lexmin() const
-{
-  auto res = isl::union_set::lexmin();
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_set<Domain2> typed::union_set<pair<Domain, Range>>::preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
-{
-  auto res = isl::union_set::preimage(ma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_set<Domain2> typed::union_set<pair<Domain, Range>>::preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
-{
-  auto res = isl::union_set::preimage(pma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-template <typename Domain2>
-typed::union_set<Domain2> typed::union_set<pair<Domain, Range>>::preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
-{
-  auto res = isl::union_set::preimage(upma);
-  return typed::union_set<Domain2>(res);
-}
-
-template <typename Domain, typename Range>
-typed::set_list<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::set_list() const
-{
-  auto res = isl::union_set::set_list();
-  return typed::set_list<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::space<> typed::union_set<pair<Domain, Range>>::space() const
-{
-  auto res = isl::union_set::space();
-  return typed::space<>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::subtract(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::subtract(const typed::basic_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::subtract(const typed::point<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::subtract(const typed::set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::subtract(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::unite(const typed::union_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::unite(const typed::basic_set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::unite(const typed::point<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::unite(const typed::set<pair<Domain, Range>> &uset2) const
-{
-  auto res = isl::union_set::unite(uset2);
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::universe() const
-{
-  auto res = isl::union_set::universe();
-  return typed::union_set<pair<Domain, Range>>(res);
-}
-
-template <typename Domain, typename Range>
-typed::union_map<Domain, Range> typed::union_set<pair<Domain, Range>>::unwrap() const
-{
-  auto res = isl::union_set::unwrap();
-  return typed::union_map<Domain, Range>(res);
-}
-
-typed::union_set_list<>::union_set_list(const isl::ctx &ctx, int n)
-  : isl::union_set_list(ctx, n)
-{
-}
-
-typed::union_set_list<>::union_set_list(const typed::union_set<> &el)
-  : isl::union_set_list(el)
-{
-}
-
-typed::union_set_list<>::union_set_list(const isl::ctx &ctx, const std::string &str)
-  : isl::union_set_list(ctx, str)
-{
-}
-
-typed::union_set_list<> typed::union_set_list<>::add(const typed::union_set<> &el) const
-{
-  auto res = isl::union_set_list::add(el);
-  return typed::union_set_list<>(res);
-}
-
-typed::union_set_list<> typed::union_set_list<>::add(const typed::basic_set<> &el) const
-{
-  auto res = isl::union_set_list::add(el);
-  return typed::union_set_list<>(res);
-}
-
-typed::union_set_list<> typed::union_set_list<>::add(const typed::point<> &el) const
-{
-  auto res = isl::union_set_list::add(el);
-  return typed::union_set_list<>(res);
-}
-
-typed::union_set_list<> typed::union_set_list<>::add(const typed::set<> &el) const
-{
-  auto res = isl::union_set_list::add(el);
-  return typed::union_set_list<>(res);
-}
-
-typed::union_set_list<> typed::union_set_list<>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::union_set_list::drop(first, n);
-  return typed::union_set_list<>(res);
-}
-
-void typed::union_set_list<>::foreach(const std::function<void(typed::union_set<>)> &fn) const
-{
-  auto lambda = [&] (isl::union_set arg0) {
-    return fn(typed::union_set<>(arg0));
-  };
-  return isl::union_set_list::foreach(lambda);
-}
-
-template <typename Domain>
-typed::union_set_list<Domain>::union_set_list(const isl::ctx &ctx, int n)
-  : isl::union_set_list(ctx, n)
-{
-}
-
-template <typename Domain>
-typed::union_set_list<Domain>::union_set_list(const typed::union_set<Domain> &el)
-  : isl::union_set_list(el)
-{
-}
-
-template <typename Domain>
-typed::union_set_list<Domain>::union_set_list(const isl::ctx &ctx, const std::string &str)
-  : isl::union_set_list(ctx, str)
-{
-}
-
-template <typename Domain>
-typed::union_set_list<Domain> typed::union_set_list<Domain>::add(const typed::union_set<Domain> &el) const
-{
-  auto res = isl::union_set_list::add(el);
-  return typed::union_set_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set_list<Domain> typed::union_set_list<Domain>::add(const typed::basic_set<Domain> &el) const
-{
-  auto res = isl::union_set_list::add(el);
-  return typed::union_set_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set_list<Domain> typed::union_set_list<Domain>::add(const typed::point<Domain> &el) const
-{
-  auto res = isl::union_set_list::add(el);
-  return typed::union_set_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set_list<Domain> typed::union_set_list<Domain>::add(const typed::set<Domain> &el) const
-{
-  auto res = isl::union_set_list::add(el);
-  return typed::union_set_list<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set<Domain> typed::union_set_list<Domain>::at(int index) const
-{
-  auto res = isl::union_set_list::at(index);
-  return typed::union_set<Domain>(res);
-}
-
-template <typename Domain>
-typed::union_set_list<Domain> typed::union_set_list<Domain>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::union_set_list::drop(first, n);
-  return typed::union_set_list<Domain>(res);
-}
-
-template <typename Domain>
-void typed::union_set_list<Domain>::foreach(const std::function<void(typed::union_set<Domain>)> &fn) const
-{
-  auto lambda = [&] (isl::union_set arg0) {
-    return fn(typed::union_set<Domain>(arg0));
-  };
-  return isl::union_set_list::foreach(lambda);
-}
-
-typed::val<Anonymous>::val(const isl::ctx &ctx, long i)
-  : isl::val(ctx, i)
-{
-}
-
-typed::val<Anonymous>::val(const isl::ctx &ctx, const std::string &str)
-  : isl::val(ctx, str)
-{
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::add(const typed::val<Anonymous> &v2) const
-{
-  auto res = isl::val::add(v2);
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::add(long v2) const
-{
-  auto res = isl::val::add(v2);
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::ceil() const
-{
-  auto res = isl::val::ceil();
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::floor() const
-{
-  auto res = isl::val::floor();
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::max(const typed::val<Anonymous> &v2) const
-{
-  auto res = isl::val::max(v2);
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::max(long v2) const
-{
-  auto res = isl::val::max(v2);
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::min(const typed::val<Anonymous> &v2) const
-{
-  auto res = isl::val::min(v2);
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::min(long v2) const
-{
-  auto res = isl::val::min(v2);
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::mod(const typed::val<Anonymous> &v2) const
-{
-  auto res = isl::val::mod(v2);
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::mod(long v2) const
-{
-  auto res = isl::val::mod(v2);
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::neg() const
-{
-  auto res = isl::val::neg();
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::sub(const typed::val<Anonymous> &v2) const
-{
-  auto res = isl::val::sub(v2);
-  return typed::val<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val<Anonymous>::sub(long v2) const
-{
-  auto res = isl::val::sub(v2);
-  return typed::val<Anonymous>(res);
-}
-
-typed::val_list<Anonymous>::val_list(const isl::ctx &ctx, int n)
-  : isl::val_list(ctx, n)
-{
-}
-
-typed::val_list<Anonymous>::val_list(const typed::val<Anonymous> &el)
-  : isl::val_list(el)
-{
-}
-
-typed::val_list<Anonymous>::val_list(const isl::ctx &ctx, const std::string &str)
-  : isl::val_list(ctx, str)
-{
-}
-
-typed::val_list<Anonymous> typed::val_list<Anonymous>::add(const typed::val<Anonymous> &el) const
-{
-  auto res = isl::val_list::add(el);
-  return typed::val_list<Anonymous>(res);
-}
-
-typed::val_list<Anonymous> typed::val_list<Anonymous>::add(long el) const
-{
-  auto res = isl::val_list::add(el);
-  return typed::val_list<Anonymous>(res);
-}
-
-typed::val<Anonymous> typed::val_list<Anonymous>::at(int index) const
-{
-  auto res = isl::val_list::at(index);
-  return typed::val<Anonymous>(res);
-}
-
-typed::val_list<Anonymous> typed::val_list<Anonymous>::drop(unsigned int first, unsigned int n) const
-{
-  auto res = isl::val_list::drop(first, n);
-  return typed::val_list<Anonymous>(res);
-}
-
-void typed::val_list<Anonymous>::foreach(const std::function<void(typed::val<Anonymous>)> &fn) const
-{
-  auto lambda = [&] (isl::val arg0) {
-    return fn(typed::val<Anonymous>(arg0));
-  };
-  return isl::val_list::foreach(lambda);
-}
-
-} // namespace typed
-} // namespace isl
-
-#endif /* ISL_TYPED_CPP */
diff --git a/polly/lib/External/isl/install-sh b/polly/lib/External/isl/install-sh
deleted file mode 100755 (executable)
index ec298b5..0000000
+++ /dev/null
@@ -1,541 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2020-11-14.01; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# 'make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-tab='  '
-nl='
-'
-IFS=" $tab$nl"
-
-# Set DOITPROG to "echo" to test this script.
-
-doit=${DOITPROG-}
-doit_exec=${doit:-exec}
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-# Create dirs (including intermediate dirs) using mode 755.
-# This is like GNU 'install' as of coreutils 8.32 (2020).
-mkdir_umask=22
-
-backupsuffix=
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-is_target_a_directory=possibly
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -p            pass -p to $cpprog.
-  -s            $stripprog installed files.
-  -S SUFFIX     attempt to back up existing files, with suffix SUFFIX.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-
-By default, rm is invoked with -f; when overridden with RMPROG,
-it's up to you to specify -f if you want it.
-
-If -S is not specified, no backups are attempted.
-
-Email bug reports to bug-automake@gnu.org.
-Automake home page: https://www.gnu.org/software/automake/
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-        shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-        case $mode in
-          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
-            echo "$0: invalid mode: $mode" >&2
-            exit 1;;
-        esac
-        shift;;
-
-    -o) chowncmd="$chownprog $2"
-        shift;;
-
-    -p) cpprog="$cpprog -p";;
-
-    -s) stripcmd=$stripprog;;
-
-    -S) backupsuffix="$2"
-        shift;;
-
-    -t)
-        is_target_a_directory=always
-        dst_arg=$2
-        # Protect names problematic for 'test' and other utilities.
-        case $dst_arg in
-          -* | [=\(\)!]) dst_arg=./$dst_arg;;
-        esac
-        shift;;
-
-    -T) is_target_a_directory=never;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --) shift
-        break;;
-
-    -*) echo "$0: invalid option: $1" >&2
-        exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-# We allow the use of options -d and -T together, by making -d
-# take the precedence; this is for compatibility with GNU install.
-
-if test -n "$dir_arg"; then
-  if test -n "$dst_arg"; then
-    echo "$0: target directory not allowed when installing a directory." >&2
-    exit 1
-  fi
-fi
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-    # Protect names problematic for 'test' and other utilities.
-    case $dst_arg in
-      -* | [=\(\)!]) dst_arg=./$dst_arg;;
-    esac
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call 'install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  if test $# -gt 1 || test "$is_target_a_directory" = always; then
-    if test ! -d "$dst_arg"; then
-      echo "$0: $dst_arg: Is not a directory." >&2
-      exit 1
-    fi
-  fi
-fi
-
-if test -z "$dir_arg"; then
-  do_exit='(exit $ret); exit $ret'
-  trap "ret=129; $do_exit" 1
-  trap "ret=130; $do_exit" 2
-  trap "ret=141; $do_exit" 13
-  trap "ret=143; $do_exit" 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-        u_plus_rw=
-      else
-        u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-        u_plus_rw=
-      else
-        u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names problematic for 'test' and other utilities.
-  case $src in
-    -* | [=\(\)!]) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-    # Don't chown directories that already exist.
-    if test $dstdir_status = 0; then
-      chowncmd=""
-    fi
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-    dst=$dst_arg
-
-    # If destination is a directory, append the input filename.
-    if test -d "$dst"; then
-      if test "$is_target_a_directory" = never; then
-        echo "$0: $dst_arg: Is a directory" >&2
-        exit 1
-      fi
-      dstdir=$dst
-      dstbase=`basename "$src"`
-      case $dst in
-       */) dst=$dst$dstbase;;
-       *)  dst=$dst/$dstbase;;
-      esac
-      dstdir_status=0
-    else
-      dstdir=`dirname "$dst"`
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  case $dstdir in
-    */) dstdirslash=$dstdir;;
-    *)  dstdirslash=$dstdir/;;
-  esac
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-        # With -d, create the new directory with the user-specified mode.
-        # Otherwise, rely on $mkdir_umask.
-        if test -n "$dir_arg"; then
-          mkdir_mode=-m$mode
-        else
-          mkdir_mode=
-        fi
-
-        posix_mkdir=false
-       # The $RANDOM variable is not portable (e.g., dash).  Use it
-       # here however when possible just to lower collision chance.
-       tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-
-       trap '
-         ret=$?
-         rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
-         exit $ret
-       ' 0
-
-       # Because "mkdir -p" follows existing symlinks and we likely work
-       # directly in world-writeable /tmp, make sure that the '$tmpdir'
-       # directory is successfully created first before we actually test
-       # 'mkdir -p'.
-       if (umask $mkdir_umask &&
-           $mkdirprog $mkdir_mode "$tmpdir" &&
-           exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
-       then
-         if test -z "$dir_arg" || {
-              # Check for POSIX incompatibilities with -m.
-              # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-              # other-writable bit of parent directory when it shouldn't.
-              # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-              test_tmpdir="$tmpdir/a"
-              ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
-              case $ls_ld_tmpdir in
-                d????-?r-*) different_mode=700;;
-                d????-?--*) different_mode=755;;
-                *) false;;
-              esac &&
-              $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
-                ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
-                test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-              }
-            }
-         then posix_mkdir=:
-         fi
-         rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
-       else
-         # Remove any dirs left behind by ancient mkdir implementations.
-         rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
-       fi
-       trap '' 0;;
-    esac
-
-    if
-      $posix_mkdir && (
-        umask $mkdir_umask &&
-        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-        /*) prefix='/';;
-        [-=\(\)!]*) prefix='./';;
-        *)  prefix='';;
-      esac
-
-      oIFS=$IFS
-      IFS=/
-      set -f
-      set fnord $dstdir
-      shift
-      set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-        test X"$d" = X && continue
-
-        prefix=$prefix$d
-        if test -d "$prefix"; then
-          prefixes=
-        else
-          if $posix_mkdir; then
-            (umask $mkdir_umask &&
-             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-            # Don't fail if two instances are running concurrently.
-            test -d "$prefix" || exit 1
-          else
-            case $prefix in
-              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-              *) qprefix=$prefix;;
-            esac
-            prefixes="$prefixes '$qprefix'"
-          fi
-        fi
-        prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-        # Don't fail if two instances are running concurrently.
-        (umask $mkdir_umask &&
-         eval "\$doit_exec \$mkdirprog $prefixes") ||
-          test -d "$dstdir" || exit 1
-        obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=${dstdirslash}_inst.$$_
-    rmtmp=${dstdirslash}_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask &&
-     { test -z "$stripcmd" || {
-        # Create $dsttmp read-write so that cp doesn't create it read-only,
-        # which would cause strip to fail.
-        if test -z "$doit"; then
-          : >"$dsttmp" # No need to fork-exec 'touch'.
-        else
-          $doit touch "$dsttmp"
-        fi
-       }
-     } &&
-     $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
-       set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       set +f &&
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # If $backupsuffix is set, and the file being installed
-      # already exists, attempt a backup.  Don't worry if it fails,
-      # e.g., if mv doesn't support -f.
-      if test -n "$backupsuffix" && test -f "$dst"; then
-        $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
-      fi
-
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-        # Now remove or move aside any old file at destination location.
-        # We try this two ways since rm can't unlink itself on some
-        # systems and the destination file might be busy for other
-        # reasons.  In this case, the final cleanup might fail but the new
-        # file should still install successfully.
-        {
-          test ! -f "$dst" ||
-          $doit $rmcmd "$dst" 2>/dev/null ||
-          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-            { $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
-          } ||
-          { echo "$0: cannot unlink or rename $dst" >&2
-            (exit 1); exit 1
-          }
-        } &&
-
-        # Now rename the file to the real destination.
-        $doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/isl/interface/Makefile.am b/polly/lib/External/isl/interface/Makefile.am
deleted file mode 100644 (file)
index 702f9a4..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-ACLOCAL_AMFLAGS = -I ../m4
-AUTOMAKE_OPTIONS = nostdinc
-
-noinst_PROGRAMS = extract_interface
-
-includes = -I$(top_builddir) -I$(top_srcdir) \
-       -I$(top_builddir)/include -I$(top_srcdir)/include
-
-extract_interface_CPPFLAGS = $(includes)
-extract_interface_CXXFLAGS = $(CLANG_CXXFLAGS)
-extract_interface_SOURCES = \
-       generator.h \
-       generator.cc \
-       python.h \
-       python.cc \
-       cpp.h \
-       cpp.cc \
-       cpp_conversion.h \
-       cpp_conversion.cc \
-       plain_cpp.h \
-       plain_cpp.cc \
-       set_lang_defaults_arg4.h \
-       template_cpp.h \
-       template_cpp.cc \
-       extract_interface.h \
-       extract_interface.cc
-extract_interface_LDFLAGS = $(CLANG_LDFLAGS) $(CLANG_RFLAG)
-extract_interface_LDADD = $(CLANG_LIBS) $(CLANG_LDFLAGS)
diff --git a/polly/lib/External/isl/interface/Makefile.in b/polly/lib/External/isl/interface/Makefile.in
deleted file mode 100644 (file)
index 93c6371..0000000
+++ /dev/null
@@ -1,1002 +0,0 @@
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-noinst_PROGRAMS = extract_interface$(EXEEXT)
-subdir = .
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../m4/ax_cxx_compile_stdcxx.m4 \
-       $(top_srcdir)/../m4/ax_cxx_compile_stdcxx_11.m4 \
-       $(top_srcdir)/../m4/ax_cxx_compile_stdcxx_11_no_override.m4 \
-       $(top_srcdir)/../m4/ax_detect_clang.m4 \
-       $(top_srcdir)/../m4/ax_prog_cc_for_build.m4 \
-       $(top_srcdir)/../m4/ax_prog_cxx_for_build.m4 \
-       $(top_srcdir)/../m4/libtool.m4 \
-       $(top_srcdir)/../m4/ltoptions.m4 \
-       $(top_srcdir)/../m4/ltsugar.m4 \
-       $(top_srcdir)/../m4/ltversion.m4 \
-       $(top_srcdir)/../m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
-       $(am__configure_deps) $(am__DIST_COMMON)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = isl_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_extract_interface_OBJECTS = extract_interface-generator.$(OBJEXT) \
-       extract_interface-python.$(OBJEXT) \
-       extract_interface-cpp.$(OBJEXT) \
-       extract_interface-cpp_conversion.$(OBJEXT) \
-       extract_interface-plain_cpp.$(OBJEXT) \
-       extract_interface-template_cpp.$(OBJEXT) \
-       extract_interface-extract_interface.$(OBJEXT)
-extract_interface_OBJECTS = $(am_extract_interface_OBJECTS)
-am__DEPENDENCIES_1 =
-extract_interface_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-extract_interface_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-       $(extract_interface_CXXFLAGS) $(CXXFLAGS) \
-       $(extract_interface_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = 
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ./$(DEPDIR)/extract_interface-cpp.Po \
-       ./$(DEPDIR)/extract_interface-cpp_conversion.Po \
-       ./$(DEPDIR)/extract_interface-extract_interface.Po \
-       ./$(DEPDIR)/extract_interface-generator.Po \
-       ./$(DEPDIR)/extract_interface-plain_cpp.Po \
-       ./$(DEPDIR)/extract_interface-python.Po \
-       ./$(DEPDIR)/extract_interface-template_cpp.Po
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-       $(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-       $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-       $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(extract_interface_SOURCES)
-DIST_SOURCES = $(extract_interface_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
-       isl_config.h.in
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
-AM_RECURSIVE_TARGETS = cscope
-am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/isl_config.h.in \
-       compile config.guess config.sub depcomp install-sh ltmain.sh \
-       missing
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  if test -d "$(distdir)"; then \
-    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-      && rm -rf "$(distdir)" \
-      || { sleep 5 && rm -rf "$(distdir)"; }; \
-  else :; fi
-am__post_remove_distdir = $(am__remove_distdir)
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-DIST_TARGETS = dist-gzip
-# Exists only to be overridden by the user if desired.
-AM_DISTCHECK_DVI_TARGET = dvi
-distuninstallcheck_listfiles = find . -type f -print
-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
-  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BUILD_EXEEXT = @BUILD_EXEEXT@
-BUILD_OBJEXT = @BUILD_OBJEXT@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_FOR_BUILD = @CC_FOR_BUILD@
-CFLAGS = @CFLAGS@
-CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
-CLANG_CXXFLAGS = @CLANG_CXXFLAGS@
-CLANG_LDFLAGS = @CLANG_LDFLAGS@
-CLANG_LIBS = @CLANG_LIBS@
-CLANG_RFLAG = @CLANG_RFLAG@
-CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
-CPP_FOR_BUILD = @CPP_FOR_BUILD@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXCPPFLAGS_FOR_BUILD = @CXXCPPFLAGS_FOR_BUILD@
-CXXCPP_FOR_BUILD = @CXXCPP_FOR_BUILD@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
-CXX_FOR_BUILD = @CXX_FOR_BUILD@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-HAVE_CXX11 = @HAVE_CXX11@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LLVM_CONFIG = @LLVM_CONFIG@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-XCODE_SELECT = @XCODE_SELECT@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_CXX_FOR_BUILD = @ac_ct_CXX_FOR_BUILD@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-ACLOCAL_AMFLAGS = -I ../m4
-AUTOMAKE_OPTIONS = nostdinc
-includes = -I$(top_builddir) -I$(top_srcdir) \
-       -I$(top_builddir)/include -I$(top_srcdir)/include
-
-extract_interface_CPPFLAGS = $(includes)
-extract_interface_CXXFLAGS = $(CLANG_CXXFLAGS)
-extract_interface_SOURCES = \
-       generator.h \
-       generator.cc \
-       python.h \
-       python.cc \
-       cpp.h \
-       cpp.cc \
-       cpp_conversion.h \
-       cpp_conversion.cc \
-       plain_cpp.h \
-       plain_cpp.cc \
-       set_lang_defaults_arg4.h \
-       template_cpp.h \
-       template_cpp.cc \
-       extract_interface.h \
-       extract_interface.cc
-
-extract_interface_LDFLAGS = $(CLANG_LDFLAGS) $(CLANG_RFLAG)
-extract_interface_LDADD = $(CLANG_LIBS) $(CLANG_LDFLAGS)
-all: isl_config.h
-       $(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .lo .o .obj
-am--refresh: Makefile
-       @:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
-             $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
-               && exit 0; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
-       $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --foreign Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           echo ' $(SHELL) ./config.status'; \
-           $(SHELL) ./config.status;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-       $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-isl_config.h: stamp-h1
-       @test -f $@ || rm -f stamp-h1
-       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
-
-stamp-h1: $(srcdir)/isl_config.h.in $(top_builddir)/config.status
-       @rm -f stamp-h1
-       cd $(top_builddir) && $(SHELL) ./config.status isl_config.h
-$(srcdir)/isl_config.h.in:  $(am__configure_deps) 
-       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
-       rm -f stamp-h1
-       touch $@
-
-distclean-hdr:
-       -rm -f isl_config.h stamp-h1
-
-clean-noinstPROGRAMS:
-       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-       echo " rm -f" $$list; \
-       rm -f $$list || exit $$?; \
-       test -n "$(EXEEXT)" || exit 0; \
-       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-       echo " rm -f" $$list; \
-       rm -f $$list
-
-extract_interface$(EXEEXT): $(extract_interface_OBJECTS) $(extract_interface_DEPENDENCIES) $(EXTRA_extract_interface_DEPENDENCIES) 
-       @rm -f extract_interface$(EXEEXT)
-       $(AM_V_CXXLD)$(extract_interface_LINK) $(extract_interface_OBJECTS) $(extract_interface_LDADD) $(LIBS)
-
-mostlyclean-compile:
-       -rm -f *.$(OBJEXT)
-
-distclean-compile:
-       -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-cpp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-cpp_conversion.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-extract_interface.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-generator.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-plain_cpp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-python.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_interface-template_cpp.Po@am__quote@ # am--include-marker
-
-$(am__depfiles_remade):
-       @$(MKDIR_P) $(@D)
-       @echo '# dummy' >$@-t && $(am__mv) $@-t $@
-
-am--depfiles: $(am__depfiles_remade)
-
-.cc.o:
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-extract_interface-generator.o: generator.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-generator.o -MD -MP -MF $(DEPDIR)/extract_interface-generator.Tpo -c -o extract_interface-generator.o `test -f 'generator.cc' || echo '$(srcdir)/'`generator.cc
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-generator.Tpo $(DEPDIR)/extract_interface-generator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='generator.cc' object='extract_interface-generator.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-generator.o `test -f 'generator.cc' || echo '$(srcdir)/'`generator.cc
-
-extract_interface-generator.obj: generator.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-generator.obj -MD -MP -MF $(DEPDIR)/extract_interface-generator.Tpo -c -o extract_interface-generator.obj `if test -f 'generator.cc'; then $(CYGPATH_W) 'generator.cc'; else $(CYGPATH_W) '$(srcdir)/generator.cc'; fi`
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-generator.Tpo $(DEPDIR)/extract_interface-generator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='generator.cc' object='extract_interface-generator.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-generator.obj `if test -f 'generator.cc'; then $(CYGPATH_W) 'generator.cc'; else $(CYGPATH_W) '$(srcdir)/generator.cc'; fi`
-
-extract_interface-python.o: python.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-python.o -MD -MP -MF $(DEPDIR)/extract_interface-python.Tpo -c -o extract_interface-python.o `test -f 'python.cc' || echo '$(srcdir)/'`python.cc
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-python.Tpo $(DEPDIR)/extract_interface-python.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='python.cc' object='extract_interface-python.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-python.o `test -f 'python.cc' || echo '$(srcdir)/'`python.cc
-
-extract_interface-python.obj: python.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-python.obj -MD -MP -MF $(DEPDIR)/extract_interface-python.Tpo -c -o extract_interface-python.obj `if test -f 'python.cc'; then $(CYGPATH_W) 'python.cc'; else $(CYGPATH_W) '$(srcdir)/python.cc'; fi`
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-python.Tpo $(DEPDIR)/extract_interface-python.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='python.cc' object='extract_interface-python.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-python.obj `if test -f 'python.cc'; then $(CYGPATH_W) 'python.cc'; else $(CYGPATH_W) '$(srcdir)/python.cc'; fi`
-
-extract_interface-cpp.o: cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-cpp.o -MD -MP -MF $(DEPDIR)/extract_interface-cpp.Tpo -c -o extract_interface-cpp.o `test -f 'cpp.cc' || echo '$(srcdir)/'`cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-cpp.Tpo $(DEPDIR)/extract_interface-cpp.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='cpp.cc' object='extract_interface-cpp.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-cpp.o `test -f 'cpp.cc' || echo '$(srcdir)/'`cpp.cc
-
-extract_interface-cpp.obj: cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-cpp.obj -MD -MP -MF $(DEPDIR)/extract_interface-cpp.Tpo -c -o extract_interface-cpp.obj `if test -f 'cpp.cc'; then $(CYGPATH_W) 'cpp.cc'; else $(CYGPATH_W) '$(srcdir)/cpp.cc'; fi`
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-cpp.Tpo $(DEPDIR)/extract_interface-cpp.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='cpp.cc' object='extract_interface-cpp.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-cpp.obj `if test -f 'cpp.cc'; then $(CYGPATH_W) 'cpp.cc'; else $(CYGPATH_W) '$(srcdir)/cpp.cc'; fi`
-
-extract_interface-cpp_conversion.o: cpp_conversion.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-cpp_conversion.o -MD -MP -MF $(DEPDIR)/extract_interface-cpp_conversion.Tpo -c -o extract_interface-cpp_conversion.o `test -f 'cpp_conversion.cc' || echo '$(srcdir)/'`cpp_conversion.cc
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-cpp_conversion.Tpo $(DEPDIR)/extract_interface-cpp_conversion.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='cpp_conversion.cc' object='extract_interface-cpp_conversion.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-cpp_conversion.o `test -f 'cpp_conversion.cc' || echo '$(srcdir)/'`cpp_conversion.cc
-
-extract_interface-cpp_conversion.obj: cpp_conversion.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-cpp_conversion.obj -MD -MP -MF $(DEPDIR)/extract_interface-cpp_conversion.Tpo -c -o extract_interface-cpp_conversion.obj `if test -f 'cpp_conversion.cc'; then $(CYGPATH_W) 'cpp_conversion.cc'; else $(CYGPATH_W) '$(srcdir)/cpp_conversion.cc'; fi`
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-cpp_conversion.Tpo $(DEPDIR)/extract_interface-cpp_conversion.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='cpp_conversion.cc' object='extract_interface-cpp_conversion.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-cpp_conversion.obj `if test -f 'cpp_conversion.cc'; then $(CYGPATH_W) 'cpp_conversion.cc'; else $(CYGPATH_W) '$(srcdir)/cpp_conversion.cc'; fi`
-
-extract_interface-plain_cpp.o: plain_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-plain_cpp.o -MD -MP -MF $(DEPDIR)/extract_interface-plain_cpp.Tpo -c -o extract_interface-plain_cpp.o `test -f 'plain_cpp.cc' || echo '$(srcdir)/'`plain_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-plain_cpp.Tpo $(DEPDIR)/extract_interface-plain_cpp.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='plain_cpp.cc' object='extract_interface-plain_cpp.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-plain_cpp.o `test -f 'plain_cpp.cc' || echo '$(srcdir)/'`plain_cpp.cc
-
-extract_interface-plain_cpp.obj: plain_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-plain_cpp.obj -MD -MP -MF $(DEPDIR)/extract_interface-plain_cpp.Tpo -c -o extract_interface-plain_cpp.obj `if test -f 'plain_cpp.cc'; then $(CYGPATH_W) 'plain_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/plain_cpp.cc'; fi`
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-plain_cpp.Tpo $(DEPDIR)/extract_interface-plain_cpp.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='plain_cpp.cc' object='extract_interface-plain_cpp.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-plain_cpp.obj `if test -f 'plain_cpp.cc'; then $(CYGPATH_W) 'plain_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/plain_cpp.cc'; fi`
-
-extract_interface-template_cpp.o: template_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-template_cpp.o -MD -MP -MF $(DEPDIR)/extract_interface-template_cpp.Tpo -c -o extract_interface-template_cpp.o `test -f 'template_cpp.cc' || echo '$(srcdir)/'`template_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-template_cpp.Tpo $(DEPDIR)/extract_interface-template_cpp.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='template_cpp.cc' object='extract_interface-template_cpp.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-template_cpp.o `test -f 'template_cpp.cc' || echo '$(srcdir)/'`template_cpp.cc
-
-extract_interface-template_cpp.obj: template_cpp.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-template_cpp.obj -MD -MP -MF $(DEPDIR)/extract_interface-template_cpp.Tpo -c -o extract_interface-template_cpp.obj `if test -f 'template_cpp.cc'; then $(CYGPATH_W) 'template_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/template_cpp.cc'; fi`
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-template_cpp.Tpo $(DEPDIR)/extract_interface-template_cpp.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='template_cpp.cc' object='extract_interface-template_cpp.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-template_cpp.obj `if test -f 'template_cpp.cc'; then $(CYGPATH_W) 'template_cpp.cc'; else $(CYGPATH_W) '$(srcdir)/template_cpp.cc'; fi`
-
-extract_interface-extract_interface.o: extract_interface.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-extract_interface.o -MD -MP -MF $(DEPDIR)/extract_interface-extract_interface.Tpo -c -o extract_interface-extract_interface.o `test -f 'extract_interface.cc' || echo '$(srcdir)/'`extract_interface.cc
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-extract_interface.Tpo $(DEPDIR)/extract_interface-extract_interface.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='extract_interface.cc' object='extract_interface-extract_interface.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-extract_interface.o `test -f 'extract_interface.cc' || echo '$(srcdir)/'`extract_interface.cc
-
-extract_interface-extract_interface.obj: extract_interface.cc
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -MT extract_interface-extract_interface.obj -MD -MP -MF $(DEPDIR)/extract_interface-extract_interface.Tpo -c -o extract_interface-extract_interface.obj `if test -f 'extract_interface.cc'; then $(CYGPATH_W) 'extract_interface.cc'; else $(CYGPATH_W) '$(srcdir)/extract_interface.cc'; fi`
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/extract_interface-extract_interface.Tpo $(DEPDIR)/extract_interface-extract_interface.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='extract_interface.cc' object='extract_interface-extract_interface.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(extract_interface_CPPFLAGS) $(CPPFLAGS) $(extract_interface_CXXFLAGS) $(CXXFLAGS) -c -o extract_interface-extract_interface.obj `if test -f 'extract_interface.cc'; then $(CYGPATH_W) 'extract_interface.cc'; else $(CYGPATH_W) '$(srcdir)/extract_interface.cc'; fi`
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool config.lt
-
-ID: $(am__tagged_files)
-       $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       set x; \
-       here=`pwd`; \
-       $(am__define_uniq_tagged_files); \
-       shift; \
-       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-         test -n "$$unique" || unique=$$empty_fix; \
-         if test $$# -gt 0; then \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             "$$@" $$unique; \
-         else \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             $$unique; \
-         fi; \
-       fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       $(am__define_uniq_tagged_files); \
-       test -z "$(CTAGS_ARGS)$$unique" \
-         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$unique
-
-GTAGS:
-       here=`$(am__cd) $(top_builddir) && pwd` \
-         && $(am__cd) $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) "$$here"
-cscope: cscope.files
-       test ! -s cscope.files \
-         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-clean-cscope:
-       -rm -f cscope.files
-cscope.files: clean-cscope cscopelist
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-       list='$(am__tagged_files)'; \
-       case "$(srcdir)" in \
-         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-         *) sdir=$(subdir)/$(srcdir) ;; \
-       esac; \
-       for i in $$list; do \
-         if test -f "$$i"; then \
-           echo "$(subdir)/$$i"; \
-         else \
-           echo "$$sdir/$$i"; \
-         fi; \
-       done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-
-distdir: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
-       $(am__remove_distdir)
-       test -d "$(distdir)" || mkdir "$(distdir)"
-       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       list='$(DISTFILES)'; \
-         dist_files=`for file in $$list; do echo $$file; done | \
-         sed -e "s|^$$srcdirstrip/||;t" \
-             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-       case $$dist_files in \
-         */*) $(MKDIR_P) `echo "$$dist_files" | \
-                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-                          sort -u` ;; \
-       esac; \
-       for file in $$dist_files; do \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-           if test -d "$(distdir)/$$file"; then \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-       -test -n "$(am__skip_mode_fix)" \
-       || find "$(distdir)" -type d ! -perm -755 \
-               -exec chmod u+rwx,go+rx {} \; -o \
-         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-       || chmod -R a+r "$(distdir)"
-dist-gzip: distdir
-       tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
-       $(am__post_remove_distdir)
-
-dist-bzip2: distdir
-       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-       $(am__post_remove_distdir)
-
-dist-lzip: distdir
-       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-       $(am__post_remove_distdir)
-
-dist-xz: distdir
-       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-       $(am__post_remove_distdir)
-
-dist-zstd: distdir
-       tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
-       $(am__post_remove_distdir)
-
-dist-tarZ: distdir
-       @echo WARNING: "Support for distribution archives compressed with" \
-                      "legacy program 'compress' is deprecated." >&2
-       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
-       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-       $(am__post_remove_distdir)
-
-dist-shar: distdir
-       @echo WARNING: "Support for shar distribution archives is" \
-                      "deprecated." >&2
-       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
-       shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
-       $(am__post_remove_distdir)
-
-dist-zip: distdir
-       -rm -f $(distdir).zip
-       zip -rq $(distdir).zip $(distdir)
-       $(am__post_remove_distdir)
-
-dist dist-all:
-       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
-       $(am__post_remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-       case '$(DIST_ARCHIVES)' in \
-       *.tar.gz*) \
-         eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
-       *.tar.bz2*) \
-         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-       *.tar.lz*) \
-         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
-       *.tar.xz*) \
-         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
-       *.tar.Z*) \
-         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-       *.shar.gz*) \
-         eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
-       *.zip*) \
-         unzip $(distdir).zip ;;\
-       *.tar.zst*) \
-         zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
-       esac
-       chmod -R a-w $(distdir)
-       chmod u+w $(distdir)
-       mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
-       chmod a-w $(distdir)
-       test -d $(distdir)/_build || exit 0; \
-       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-         && am__cwd=`pwd` \
-         && $(am__cd) $(distdir)/_build/sub \
-         && ../../configure \
-           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
-           $(DISTCHECK_CONFIGURE_FLAGS) \
-           --srcdir=../.. --prefix="$$dc_install_base" \
-         && $(MAKE) $(AM_MAKEFLAGS) \
-         && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
-         && $(MAKE) $(AM_MAKEFLAGS) check \
-         && $(MAKE) $(AM_MAKEFLAGS) install \
-         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-               distuninstallcheck \
-         && chmod -R a-w "$$dc_install_base" \
-         && ({ \
-              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-             } || { rm -rf "$$dc_destdir"; exit 1; }) \
-         && rm -rf "$$dc_destdir" \
-         && $(MAKE) $(AM_MAKEFLAGS) dist \
-         && rm -rf $(DIST_ARCHIVES) \
-         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
-         && cd "$$am__cwd" \
-         || exit 1
-       $(am__post_remove_distdir)
-       @(echo "$(distdir) archives ready for distribution: "; \
-         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
-       @test -n '$(distuninstallcheck_dir)' || { \
-         echo 'ERROR: trying to run $@ with an empty' \
-              '$$(distuninstallcheck_dir)' >&2; \
-         exit 1; \
-       }; \
-       $(am__cd) '$(distuninstallcheck_dir)' || { \
-         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
-         exit 1; \
-       }; \
-       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
-          || { echo "ERROR: files left after uninstall:" ; \
-               if test -n "$(DESTDIR)"; then \
-                 echo "  (check DESTDIR support)"; \
-               fi ; \
-               $(distuninstallcheck_listfiles) ; \
-               exit 1; } >&2
-distcleancheck: distclean
-       @if test '$(srcdir)' = . ; then \
-         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-         exit 1 ; \
-       fi
-       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-         || { echo "ERROR: files left in build directory after distclean:" ; \
-              $(distcleancheck_listfiles) ; \
-              exit 1; } >&2
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS) isl_config.h
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       if test -z '$(STRIP)'; then \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-             install; \
-       else \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-       fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-       mostlyclean-am
-
-distclean: distclean-am
-       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-               -rm -f ./$(DEPDIR)/extract_interface-cpp.Po
-       -rm -f ./$(DEPDIR)/extract_interface-cpp_conversion.Po
-       -rm -f ./$(DEPDIR)/extract_interface-extract_interface.Po
-       -rm -f ./$(DEPDIR)/extract_interface-generator.Po
-       -rm -f ./$(DEPDIR)/extract_interface-plain_cpp.Po
-       -rm -f ./$(DEPDIR)/extract_interface-python.Po
-       -rm -f ./$(DEPDIR)/extract_interface-template_cpp.Po
-       -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-hdr distclean-libtool distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-       -rm -rf $(top_srcdir)/autom4te.cache
-               -rm -f ./$(DEPDIR)/extract_interface-cpp.Po
-       -rm -f ./$(DEPDIR)/extract_interface-cpp_conversion.Po
-       -rm -f ./$(DEPDIR)/extract_interface-extract_interface.Po
-       -rm -f ./$(DEPDIR)/extract_interface-generator.Po
-       -rm -f ./$(DEPDIR)/extract_interface-plain_cpp.Po
-       -rm -f ./$(DEPDIR)/extract_interface-python.Po
-       -rm -f ./$(DEPDIR)/extract_interface-template_cpp.Po
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-       mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: all install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles am--refresh check \
-       check-am clean clean-cscope clean-generic clean-libtool \
-       clean-noinstPROGRAMS cscope cscopelist-am ctags ctags-am dist \
-       dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
-       dist-xz dist-zip dist-zstd distcheck distclean \
-       distclean-compile distclean-generic distclean-hdr \
-       distclean-libtool distclean-tags distcleancheck distdir \
-       distuninstallcheck dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-       pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am
-
-.PRECIOUS: Makefile
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/polly/lib/External/isl/interface/aclocal.m4 b/polly/lib/External/isl/interface/aclocal.m4
deleted file mode 100644 (file)
index f7f49e4..0000000
+++ /dev/null
@@ -1,1181 +0,0 @@
-# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
-
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
-[m4_warning([this file was generated for autoconf 2.69.
-You have another version of autoconf.  It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-
-# ===========================================================================
-#    https://www.gnu.org/software/autoconf-archive/ax_require_defined.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_REQUIRE_DEFINED(MACRO)
-#
-# DESCRIPTION
-#
-#   AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
-#   been defined and thus are available for use.  This avoids random issues
-#   where a macro isn't expanded.  Instead the configure script emits a
-#   non-fatal:
-#
-#     ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
-#
-#   It's like AC_REQUIRE except it doesn't expand the required macro.
-#
-#   Here's an example:
-#
-#     AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
-#
-# LICENSE
-#
-#   Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved. This file is offered as-is, without any
-#   warranty.
-
-#serial 2
-
-AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
-  m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
-])dnl AX_REQUIRE_DEFINED
-
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.16'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.16.3], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too.  Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.3])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
-# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is '.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-# Expand $ac_aux_dir to an absolute path.
-am_aux_dir=`cd "$ac_aux_dir" && pwd`
-])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
-      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
-      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                    [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  am__universal=false
-  m4_case([$1], [CC],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac],
-    [CXX],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac])
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
-  [--enable-dependency-tracking],
-  [do not reject slow dependency extractors])
-AS_HELP_STRING(
-  [--disable-dependency-tracking],
-  [speeds up one-time build])])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  # TODO: see whether this extra hack can be removed once we start
-  # requiring Autoconf 2.70 or later.
-  AS_CASE([$CONFIG_FILES],
-          [*\'*], [eval set x "$CONFIG_FILES"],
-          [*], [set x $CONFIG_FILES])
-  shift
-  # Used to flag and report bootstrapping failures.
-  am_rc=0
-  for am_mf
-  do
-    # Strip MF so we end up with the name of the file.
-    am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile which includes
-    # dependency-tracking related rules and includes.
-    # Grep'ing the whole file directly is not great: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
-      || continue
-    am_dirpart=`AS_DIRNAME(["$am_mf"])`
-    am_filepart=`AS_BASENAME(["$am_mf"])`
-    AM_RUN_LOG([cd "$am_dirpart" \
-      && sed -e '/# am--include-marker/d' "$am_filepart" \
-        | $MAKE -f - am--depfiles]) || am_rc=$?
-  done
-  if test $am_rc -ne 0; then
-    AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
-    for automatic dependency tracking.  If GNU make was not used, consider
-    re-running the configure script with MAKE="gmake" (or whatever is
-    necessary).  You can also try re-running configure with the
-    '--disable-dependency-tracking' option to at least be able to build
-    the package (albeit without support for automatic dependency tracking).])
-  fi
-  AS_UNSET([am_dirpart])
-  AS_UNSET([am_filepart])
-  AS_UNSET([am_mf])
-  AS_UNSET([am_rc])
-  rm -f conftest-deps.mk
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking is enabled.
-# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
-# order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
-
-dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
-m4_define([AC_PROG_CC],
-m4_defn([AC_PROG_CC])
-[_AM_PROG_CC_C_O
-])
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.65])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
-             [$0: two- and three-arguments forms are deprecated.])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(
-  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-  [ok:ok],,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target (and possibly the TAP driver).  The
-# system "awk" is bad on some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-                            [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-                 [_AM_DEPENDENCIES([CC])],
-                 [m4_define([AC_PROG_CC],
-                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                 [_AM_DEPENDENCIES([CXX])],
-                 [m4_define([AC_PROG_CXX],
-                            m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                 [_AM_DEPENDENCIES([OBJC])],
-                 [m4_define([AC_PROG_OBJC],
-                            m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-                 [_AM_DEPENDENCIES([OBJCXX])],
-                 [m4_define([AC_PROG_OBJCXX],
-                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
-])
-AC_REQUIRE([AM_SILENT_RULES])dnl
-dnl The testsuite driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <https://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
-  fi
-fi
-dnl The trailing newline in this macro's definition is deliberate, for
-dnl backward compatibility and to allow trailing 'dnl'-style comments
-dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
-])
-
-dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-AC_SUBST([install_sh])])
-
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes.                 -*- Autoconf -*-
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check whether make has an 'include' directive that can support all
-# the idioms we need for our automatic dependency tracking code.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
-cat > confinc.mk << 'END'
-am__doit:
-       @echo this is the am__doit target >confinc.out
-.PHONY: am__doit
-END
-am__include="#"
-am__quote=
-# BSD make does it like this.
-echo '.include "confinc.mk" # ignored' > confmf.BSD
-# Other make implementations (GNU, Solaris 10, AIX) do it like this.
-echo 'include confinc.mk # ignored' > confmf.GNU
-_am_result=no
-for s in GNU BSD; do
-  AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
-  AS_CASE([$?:`cat confinc.out 2>/dev/null`],
-      ['0:this is the am__doit target'],
-      [AS_CASE([$s],
-          [BSD], [am__include='.include' am__quote='"'],
-          [am__include='include' am__quote=''])])
-  if test "$am__include" != "#"; then
-    _am_result="yes ($s style)"
-    break
-  fi
-done
-rm -f confinc.* confmf.*
-AC_MSG_RESULT([${_am_result}])
-AC_SUBST([am__include])])
-AC_SUBST([am__quote])])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it is modern enough.
-# If it is, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
-  MISSING="\${SHELL} '$am_aux_dir/missing'"
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  AC_MSG_WARN(['missing' script is too old or missing])
-fi
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# --------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_CC_C_O
-# ---------------
-# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
-# to automatically call this.
-AC_DEFUN([_AM_PROG_CC_C_O],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-AC_LANG_PUSH([C])dnl
-AC_CACHE_CHECK(
-  [whether $CC understands -c and -o together],
-  [am_cv_prog_cc_c_o],
-  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i])
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-AC_LANG_POP([C])])
-
-# For backward compatibility.
-AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_RUN_LOG(COMMAND)
-# -------------------
-# Run COMMAND, save the exit status in ac_status, and log it.
-# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
-AC_DEFUN([AM_RUN_LOG],
-[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   (exit $ac_status); }])
-
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[[\\\"\#\$\&\'\`$am_lf]]*)
-    AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
-  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
-    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$[*]" = "X"; then
-       # -L didn't work.
-       set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$[*]" != "X $srcdir/configure conftest.file" \
-       && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-       # If neither matched, then we have a broken ls.  This can happen
-       # if, for instance, CONFIG_SHELL is bash and it inherits a
-       # broken ls alias from the environment.  This has actually
-       # happened.  Such a system could not be considered "sane".
-       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment])
-     fi
-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
-  [AC_MSG_CHECKING([that generated files are newer than configure])
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
-
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SILENT_RULES([DEFAULT])
-# --------------------------
-# Enable less verbose build rules; with the default set to DEFAULT
-# ("yes" being less verbose, "no" or empty being verbose).
-AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules], [dnl
-AS_HELP_STRING(
-  [--enable-silent-rules],
-  [less verbose build output (undo: "make V=1")])
-AS_HELP_STRING(
-  [--disable-silent-rules],
-  [verbose build output (undo: "make V=0")])dnl
-])
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
-dnl
-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
-dnl do not support nested variable expansions.
-dnl See automake bug#9928 and bug#10237.
-am_make=${MAKE-make}
-AC_CACHE_CHECK([whether $am_make supports nested variables],
-   [am_cv_make_support_nested_variables],
-   [if AS_ECHO([['TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi])
-if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
-  AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AC_SUBST([AM_V])dnl
-AM_SUBST_NOTMAKE([AM_V])dnl
-AC_SUBST([AM_DEFAULT_V])dnl
-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor 'install' (even GNU) is that you can't
-# specify the program used to strip binaries.  This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in "make install-strip", and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# --------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball.                            -*- Autoconf -*-
-
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of 'v7', 'ustar', or 'pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-#     tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-#     $(am__untar) < result.tar
-#
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-
-m4_if([$1], [v7],
-  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-
-  [m4_case([$1],
-    [ustar],
-     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
-      # There is notably a 21 bits limit for the UID and the GID.  In fact,
-      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
-      # and bug#13588).
-      am_max_uid=2097151 # 2^21 - 1
-      am_max_gid=$am_max_uid
-      # The $UID and $GID variables are not portable, so we need to resort
-      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
-      # below are definitely unexpected, so allow the users to see them
-      # (that is, avoid stderr redirection).
-      am_uid=`id -u || echo unknown`
-      am_gid=`id -g || echo unknown`
-      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
-      if test $am_uid -le $am_max_uid; then
-         AC_MSG_RESULT([yes])
-      else
-         AC_MSG_RESULT([no])
-         _am_tools=none
-      fi
-      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
-      if test $am_gid -le $am_max_gid; then
-         AC_MSG_RESULT([yes])
-      else
-        AC_MSG_RESULT([no])
-        _am_tools=none
-      fi],
-
-  [pax],
-    [],
-
-  [m4_fatal([Unknown tar format])])
-
-  AC_MSG_CHECKING([how to create a $1 tar archive])
-
-  # Go ahead even if we have the value already cached.  We do so because we
-  # need to set the values for the 'am__tar' and 'am__untar' variables.
-  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
-
-  for _am_tool in $_am_tools; do
-    case $_am_tool in
-    gnutar)
-      for _am_tar in tar gnutar gtar; do
-        AM_RUN_LOG([$_am_tar --version]) && break
-      done
-      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-      am__untar="$_am_tar -xf -"
-      ;;
-    plaintar)
-      # Must skip GNU tar: if it does not support --format= it doesn't create
-      # ustar tarball either.
-      (tar --version) >/dev/null 2>&1 && continue
-      am__tar='tar chf - "$$tardir"'
-      am__tar_='tar chf - "$tardir"'
-      am__untar='tar xf -'
-      ;;
-    pax)
-      am__tar='pax -L -x $1 -w "$$tardir"'
-      am__tar_='pax -L -x $1 -w "$tardir"'
-      am__untar='pax -r'
-      ;;
-    cpio)
-      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-      am__untar='cpio -i -H $1 -d'
-      ;;
-    none)
-      am__tar=false
-      am__tar_=false
-      am__untar=false
-      ;;
-    esac
-
-    # If the value was cached, stop now.  We just wanted to have am__tar
-    # and am__untar set.
-    test -n "${am_cv_prog_tar_$1}" && break
-
-    # tar/untar a dummy directory, and stop if the command works.
-    rm -rf conftest.dir
-    mkdir conftest.dir
-    echo GrepMe > conftest.dir/file
-    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-    rm -rf conftest.dir
-    if test -s conftest.tar; then
-      AM_RUN_LOG([$am__untar <conftest.tar])
-      AM_RUN_LOG([cat conftest.dir/file])
-      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-    fi
-  done
-  rm -rf conftest.dir
-
-  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
-m4_include([../m4/ax_cxx_compile_stdcxx.m4])
-m4_include([../m4/ax_cxx_compile_stdcxx_11.m4])
-m4_include([../m4/ax_cxx_compile_stdcxx_11_no_override.m4])
-m4_include([../m4/ax_detect_clang.m4])
-m4_include([../m4/ax_prog_cc_for_build.m4])
-m4_include([../m4/ax_prog_cxx_for_build.m4])
-m4_include([../m4/libtool.m4])
-m4_include([../m4/ltoptions.m4])
-m4_include([../m4/ltsugar.m4])
-m4_include([../m4/ltversion.m4])
-m4_include([../m4/lt~obsolete.m4])
diff --git a/polly/lib/External/isl/interface/compile b/polly/lib/External/isl/interface/compile
deleted file mode 100755 (executable)
index 23fcba0..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-#! /bin/sh
-# Wrapper for compilers which do not understand '-c -o'.
-
-scriptversion=2018-03-07.03; # UTC
-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey@cygnus.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-nl='
-'
-
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent tools from complaining about whitespace usage.
-IFS=" ""       $nl"
-
-file_conv=
-
-# func_file_conv build_file lazy
-# Convert a $build file to $host form and store it in $file
-# Currently only supports Windows hosts. If the determined conversion
-# type is listed in (the comma separated) LAZY, no conversion will
-# take place.
-func_file_conv ()
-{
-  file=$1
-  case $file in
-    / | /[!/]*) # absolute file, and not a UNC file
-      if test -z "$file_conv"; then
-       # lazily determine how to convert abs files
-       case `uname -s` in
-         MINGW*)
-           file_conv=mingw
-           ;;
-         CYGWIN* | MSYS*)
-           file_conv=cygwin
-           ;;
-         *)
-           file_conv=wine
-           ;;
-       esac
-      fi
-      case $file_conv/,$2, in
-       *,$file_conv,*)
-         ;;
-       mingw/*)
-         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
-         ;;
-       cygwin/* | msys/*)
-         file=`cygpath -m "$file" || echo "$file"`
-         ;;
-       wine/*)
-         file=`winepath -w "$file" || echo "$file"`
-         ;;
-      esac
-      ;;
-  esac
-}
-
-# func_cl_dashL linkdir
-# Make cl look for libraries in LINKDIR
-func_cl_dashL ()
-{
-  func_file_conv "$1"
-  if test -z "$lib_path"; then
-    lib_path=$file
-  else
-    lib_path="$lib_path;$file"
-  fi
-  linker_opts="$linker_opts -LIBPATH:$file"
-}
-
-# func_cl_dashl library
-# Do a library search-path lookup for cl
-func_cl_dashl ()
-{
-  lib=$1
-  found=no
-  save_IFS=$IFS
-  IFS=';'
-  for dir in $lib_path $LIB
-  do
-    IFS=$save_IFS
-    if $shared && test -f "$dir/$lib.dll.lib"; then
-      found=yes
-      lib=$dir/$lib.dll.lib
-      break
-    fi
-    if test -f "$dir/$lib.lib"; then
-      found=yes
-      lib=$dir/$lib.lib
-      break
-    fi
-    if test -f "$dir/lib$lib.a"; then
-      found=yes
-      lib=$dir/lib$lib.a
-      break
-    fi
-  done
-  IFS=$save_IFS
-
-  if test "$found" != yes; then
-    lib=$lib.lib
-  fi
-}
-
-# func_cl_wrapper cl arg...
-# Adjust compile command to suit cl
-func_cl_wrapper ()
-{
-  # Assume a capable shell
-  lib_path=
-  shared=:
-  linker_opts=
-  for arg
-  do
-    if test -n "$eat"; then
-      eat=
-    else
-      case $1 in
-       -o)
-         # configure might choose to run compile as 'compile cc -o foo foo.c'.
-         eat=1
-         case $2 in
-           *.o | *.[oO][bB][jJ])
-             func_file_conv "$2"
-             set x "$@" -Fo"$file"
-             shift
-             ;;
-           *)
-             func_file_conv "$2"
-             set x "$@" -Fe"$file"
-             shift
-             ;;
-         esac
-         ;;
-       -I)
-         eat=1
-         func_file_conv "$2" mingw
-         set x "$@" -I"$file"
-         shift
-         ;;
-       -I*)
-         func_file_conv "${1#-I}" mingw
-         set x "$@" -I"$file"
-         shift
-         ;;
-       -l)
-         eat=1
-         func_cl_dashl "$2"
-         set x "$@" "$lib"
-         shift
-         ;;
-       -l*)
-         func_cl_dashl "${1#-l}"
-         set x "$@" "$lib"
-         shift
-         ;;
-       -L)
-         eat=1
-         func_cl_dashL "$2"
-         ;;
-       -L*)
-         func_cl_dashL "${1#-L}"
-         ;;
-       -static)
-         shared=false
-         ;;
-       -Wl,*)
-         arg=${1#-Wl,}
-         save_ifs="$IFS"; IFS=','
-         for flag in $arg; do
-           IFS="$save_ifs"
-           linker_opts="$linker_opts $flag"
-         done
-         IFS="$save_ifs"
-         ;;
-       -Xlinker)
-         eat=1
-         linker_opts="$linker_opts $2"
-         ;;
-       -*)
-         set x "$@" "$1"
-         shift
-         ;;
-       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
-         func_file_conv "$1"
-         set x "$@" -Tp"$file"
-         shift
-         ;;
-       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
-         func_file_conv "$1" mingw
-         set x "$@" "$file"
-         shift
-         ;;
-       *)
-         set x "$@" "$1"
-         shift
-         ;;
-      esac
-    fi
-    shift
-  done
-  if test -n "$linker_opts"; then
-    linker_opts="-link$linker_opts"
-  fi
-  exec "$@" $linker_opts
-  exit 1
-}
-
-eat=
-
-case $1 in
-  '')
-     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: compile [--help] [--version] PROGRAM [ARGS]
-
-Wrapper for compilers which do not understand '-c -o'.
-Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
-arguments, and rename the output as expected.
-
-If you are trying to build a whole package this is not the
-right script to run: please start by reading the file 'INSTALL'.
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "compile $scriptversion"
-    exit $?
-    ;;
-  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
-  icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
-    func_cl_wrapper "$@"      # Doesn't return...
-    ;;
-esac
-
-ofile=
-cfile=
-
-for arg
-do
-  if test -n "$eat"; then
-    eat=
-  else
-    case $1 in
-      -o)
-       # configure might choose to run compile as 'compile cc -o foo foo.c'.
-       # So we strip '-o arg' only if arg is an object.
-       eat=1
-       case $2 in
-         *.o | *.obj)
-           ofile=$2
-           ;;
-         *)
-           set x "$@" -o "$2"
-           shift
-           ;;
-       esac
-       ;;
-      *.c)
-       cfile=$1
-       set x "$@" "$1"
-       shift
-       ;;
-      *)
-       set x "$@" "$1"
-       shift
-       ;;
-    esac
-  fi
-  shift
-done
-
-if test -z "$ofile" || test -z "$cfile"; then
-  # If no '-o' option was seen then we might have been invoked from a
-  # pattern rule where we don't need one.  That is ok -- this is a
-  # normal compilation that the losing compiler can handle.  If no
-  # '.c' file was seen then we are probably linking.  That is also
-  # ok.
-  exec "$@"
-fi
-
-# Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
-
-# Create the lock directory.
-# Note: use '[/\\:.-]' here to ensure that we don't use the same name
-# that we are using for the .o file.  Also, base the name on the expected
-# object file name, since that is what matters with a parallel build.
-lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
-while true; do
-  if mkdir "$lockdir" >/dev/null 2>&1; then
-    break
-  fi
-  sleep 1
-done
-# FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir '$lockdir'; exit 1" 1 2 15
-
-# Run the compile.
-"$@"
-ret=$?
-
-if test -f "$cofile"; then
-  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
-  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
-fi
-
-rmdir "$lockdir"
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/isl/interface/config.guess b/polly/lib/External/isl/interface/config.guess
deleted file mode 100755 (executable)
index 0fc11ed..0000000
+++ /dev/null
@@ -1,1686 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2020 Free Software Foundation, Inc.
-
-timestamp='2020-11-07'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
-#
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-#
-# Please send patches to <config-patches@gnu.org>.
-
-
-me=$(echo "$0" | sed -e 's,.*/,,')
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2020 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-tmp=
-# shellcheck disable=SC2172
-trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
-
-set_cc_for_build() {
-    # prevent multiple calls if $tmp is already set
-    test "$tmp" && return 0
-    : "${TMPDIR=/tmp}"
-    # shellcheck disable=SC2039
-    { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } ||
-       { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
-       { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
-       { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
-    dummy=$tmp/dummy
-    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
-       ,,)    echo "int x;" > "$dummy.c"
-              for driver in cc gcc c89 c99 ; do
-                  if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
-                      CC_FOR_BUILD="$driver"
-                      break
-                  fi
-              done
-              if test x"$CC_FOR_BUILD" = x ; then
-                  CC_FOR_BUILD=no_compiler_found
-              fi
-              ;;
-       ,,*)   CC_FOR_BUILD=$CC ;;
-       ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-    esac
-}
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if test -f /.attbin/uname ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
-UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
-UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
-UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
-
-case "$UNAME_SYSTEM" in
-Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
-
-       set_cc_for_build
-       cat <<-EOF > "$dummy.c"
-       #include <features.h>
-       #if defined(__UCLIBC__)
-       LIBC=uclibc
-       #elif defined(__dietlibc__)
-       LIBC=dietlibc
-       #else
-       #include <stdarg.h>
-       #ifdef __DEFINED_va_list
-       LIBC=musl
-       #else
-       LIBC=gnu
-       #endif
-       #endif
-       EOF
-       eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
-       ;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
-    *:NetBSD:*:*)
-       # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-       # switched to ELF, *-*-netbsd* would select the old
-       # object file format.  This provides both forward
-       # compatibility and a consistent mechanism for selecting the
-       # object file format.
-       #
-       # Note: NetBSD doesn't particularly care about the vendor
-       # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
-           "/sbin/$sysctl" 2>/dev/null || \
-           "/usr/sbin/$sysctl" 2>/dev/null || \
-           echo unknown))
-       case "$UNAME_MACHINE_ARCH" in
-           aarch64eb) machine=aarch64_be-unknown ;;
-           armeb) machine=armeb-unknown ;;
-           arm*) machine=arm-unknown ;;
-           sh3el) machine=shl-unknown ;;
-           sh3eb) machine=sh-unknown ;;
-           sh5el) machine=sh5le-unknown ;;
-           earmv*)
-               arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,')
-               endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p')
-               machine="${arch}${endian}"-unknown
-               ;;
-           *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
-       esac
-       # The Operating System including object format, if it has switched
-       # to ELF recently (or will in the future) and ABI.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               os=netbsdelf
-               ;;
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               set_cc_for_build
-               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
-               then
-                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-                   # Return netbsd for either.  FIX?
-                   os=netbsd
-               else
-                   os=netbsdelf
-               fi
-               ;;
-           *)
-               os=netbsd
-               ;;
-       esac
-       # Determine ABI tags.
-       case "$UNAME_MACHINE_ARCH" in
-           earm*)
-               expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-               abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
-               ;;
-       esac
-       # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "$UNAME_VERSION" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
-               ;;
-       esac
-       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-       # contains redundant information, the shorter form:
-       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "$machine-${os}${release}${abi-}"
-       exit ;;
-    *:Bitrig:*:*)
-       UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
-       echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
-       exit ;;
-    *:OpenBSD:*:*)
-       UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
-       echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
-       exit ;;
-    *:LibertyBSD:*:*)
-       UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
-       echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
-       exit ;;
-    *:MidnightBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
-       exit ;;
-    *:ekkoBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
-       exit ;;
-    *:SolidBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
-       exit ;;
-    *:OS108:*:*)
-       echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
-       exit ;;
-    macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:MirBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
-    *:Sortix:*:*)
-       echo "$UNAME_MACHINE"-unknown-sortix
-       exit ;;
-    *:Twizzler:*:*)
-       echo "$UNAME_MACHINE"-unknown-twizzler
-       exit ;;
-    *:Redox:*:*)
-       echo "$UNAME_MACHINE"-unknown-redox
-       exit ;;
-    mips:OSF1:*.*)
-       echo mips-dec-osf1
-       exit ;;
-    alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
-               UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
-               ;;
-       *5.*)
-               UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1)
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE=alpha ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE=alpha ;;
-           "EV5 (21164)")
-               UNAME_MACHINE=alphaev5 ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE=alphaev56 ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE=alphapca56 ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE=alphapca57 ;;
-           "EV6 (21264)")
-               UNAME_MACHINE=alphaev6 ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE=alphaev67 ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE=alphaev68 ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE=alphaev69 ;;
-           "EV7 (21364)")
-               UNAME_MACHINE=alphaev7 ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE=alphaev79 ;;
-       esac
-       # A Pn.n version is a patched version.
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)"
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-amigaos
-       exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-morphos
-       exit ;;
-    *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
-    *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix"$UNAME_RELEASE"
-       exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "$( (/bin/universe) 2>/dev/null)" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
-    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-       case $(/usr/bin/uname -p) in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
-    s390x:SunOS:*:*)
-       echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
-       exit ;;
-    sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
-       exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux"$UNAME_RELEASE"
-       exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       set_cc_for_build
-       SUN_ARCH=i386
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if test "$CC_FOR_BUILD" != no_compiler_found; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH=x86_64
-           fi
-       fi
-       echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    sun4*:SunOS:*:*)
-       case "$(/usr/bin/arch -k)" in
-           Series*|S4*)
-               UNAME_RELEASE=$(uname -v)
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
-       exit ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos"$UNAME_RELEASE"
-       exit ;;
-    sun*:*:4.2BSD:*)
-       UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
-       test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
-       case "$(/bin/arch)" in
-           sun3)
-               echo m68k-sun-sunos"$UNAME_RELEASE"
-               ;;
-           sun4)
-               echo sparc-sun-sunos"$UNAME_RELEASE"
-               ;;
-       esac
-       exit ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos"$UNAME_RELEASE"
-       exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint"$UNAME_RELEASE"
-       exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint"$UNAME_RELEASE"
-       exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint"$UNAME_RELEASE"
-       exit ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten"$UNAME_RELEASE"
-       exit ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix"$UNAME_RELEASE"
-       exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       set_cc_for_build
-       sed 's/^        //' << EOF > "$dummy.c"
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
-         dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
-         SYSTEM_NAME=$("$dummy" "$dummyarg") &&
-           { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos"$UNAME_RELEASE"
-       exit ;;
-    Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
-    AViiON:dgux:*:*)
-       # DG/UX returns AViiON for all architectures
-       UNAME_PROCESSOR=$(/usr/bin/uname -p)
-       if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
-       then
-           if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
-              test "$TARGET_BINARY_INTERFACE"x = x
-           then
-               echo m88k-dg-dgux"$UNAME_RELEASE"
-           else
-               echo m88k-dg-dguxbcs"$UNAME_RELEASE"
-           fi
-       else
-           echo i586-dg-dgux"$UNAME_RELEASE"
-       fi
-       exit ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
-       exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'$(uname -s)'" gives 'AIX '
-    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
-    ia64:AIX:*:*)
-       if test -x /usr/bin/oslevel ; then
-               IBM_REV=$(/usr/bin/oslevel)
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               set_cc_for_build
-               sed 's/^                //' << EOF > "$dummy.c"
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
-               then
-                       echo "$SYSTEM_NAME"
-               else
-                       echo rs6000-ibm-aix3.2.5
-               fi
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit ;;
-    *:AIX:*:[4567])
-       IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
-       if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if test -x /usr/bin/lslpp ; then
-               IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc |
-                          awk -F: '{ print $3 }' | sed s/[0-9]*$/0/)
-       else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
-       fi
-       echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
-       exit ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
-    9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
-       case "$UNAME_MACHINE" in
-           9000/31?)            HP_ARCH=m68000 ;;
-           9000/[34]??)         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9])
-               if test -x /usr/bin/getconf; then
-                   sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
-                   sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
-                   case "$sc_cpu_version" in
-                     523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
-                     532)                      # CPU_PA_RISC2_0
-                       case "$sc_kernel_bits" in
-                         32) HP_ARCH=hppa2.0n ;;
-                         64) HP_ARCH=hppa2.0w ;;
-                         '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
-                       esac ;;
-                   esac
-               fi
-               if test "$HP_ARCH" = ""; then
-                   set_cc_for_build
-                   sed 's/^            //' << EOF > "$dummy.c"
-
-               #define _HPUX_SOURCE
-               #include <stdlib.h>
-               #include <unistd.h>
-
-               int main ()
-               {
-               #if defined(_SC_KERNEL_BITS)
-                   long bits = sysconf(_SC_KERNEL_BITS);
-               #endif
-                   long cpu  = sysconf (_SC_CPU_VERSION);
-
-                   switch (cpu)
-                       {
-                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-                       case CPU_PA_RISC2_0:
-               #if defined(_SC_KERNEL_BITS)
-                           switch (bits)
-                               {
-                               case 64: puts ("hppa2.0w"); break;
-                               case 32: puts ("hppa2.0n"); break;
-                               default: puts ("hppa2.0"); break;
-                               } break;
-               #else  /* !defined(_SC_KERNEL_BITS) */
-                           puts ("hppa2.0"); break;
-               #endif
-                       default: puts ("hppa1.0"); break;
-                       }
-                   exit (0);
-               }
-EOF
-                   (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy")
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
-               fi ;;
-       esac
-       if test "$HP_ARCH" = hppa2.0w
-       then
-           set_cc_for_build
-
-           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-           # generating 64-bit code.  GNU and HP use different nomenclature:
-           #
-           # $ CC_FOR_BUILD=cc ./config.guess
-           # => hppa2.0w-hp-hpux11.23
-           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-           # => hppa64-hp-hpux11.23
-
-           if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
-           then
-               HP_ARCH=hppa2.0w
-           else
-               HP_ARCH=hppa64
-           fi
-       fi
-       echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
-       exit ;;
-    ia64:HP-UX:*:*)
-       HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
-       echo ia64-hp-hpux"$HPUX_REV"
-       exit ;;
-    3050*:HI-UX:*:*)
-       set_cc_for_build
-       sed 's/^        //' << EOF > "$dummy.c"
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
-               { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
-       echo hppa1.1-hp-bsd
-       exit ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
-       echo hppa1.1-hp-osf
-       exit ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
-    i*86:OSF1:*:*)
-       if test -x /usr/sbin/sysversion ; then
-           echo "$UNAME_MACHINE"-unknown-osf1mk
-       else
-           echo "$UNAME_MACHINE"-unknown-osf1
-       fi
-       exit ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-             -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
-       FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
-       FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/')
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
-       FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/')
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
-       exit ;;
-    sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    *:BSD/OS:*:*)
-       echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
-    arm:FreeBSD:*:*)
-       UNAME_PROCESSOR=$(uname -p)
-       set_cc_for_build
-       if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_PCS_VFP
-       then
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
-       else
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
-       fi
-       exit ;;
-    *:FreeBSD:*:*)
-       UNAME_PROCESSOR=$(/usr/bin/uname -p)
-       case "$UNAME_PROCESSOR" in
-           amd64)
-               UNAME_PROCESSOR=x86_64 ;;
-           i386)
-               UNAME_PROCESSOR=i586 ;;
-       esac
-       echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
-       exit ;;
-    i*:CYGWIN*:*)
-       echo "$UNAME_MACHINE"-pc-cygwin
-       exit ;;
-    *:MINGW64*:*)
-       echo "$UNAME_MACHINE"-pc-mingw64
-       exit ;;
-    *:MINGW*:*)
-       echo "$UNAME_MACHINE"-pc-mingw32
-       exit ;;
-    *:MSYS*:*)
-       echo "$UNAME_MACHINE"-pc-msys
-       exit ;;
-    i*:PW*:*)
-       echo "$UNAME_MACHINE"-pc-pw32
-       exit ;;
-    *:Interix*:*)
-       case "$UNAME_MACHINE" in
-           x86)
-               echo i586-pc-interix"$UNAME_RELEASE"
-               exit ;;
-           authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-           IA64)
-               echo ia64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
-       esac ;;
-    i*:UWIN*:*)
-       echo "$UNAME_MACHINE"-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-pc-cygwin
-       exit ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-       exit ;;
-    *:GNU:*:*)
-       # the GNU system
-       echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')"
-       exit ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
-       exit ;;
-    *:Minix:*:*)
-       echo "$UNAME_MACHINE"-unknown-minix
-       exit ;;
-    aarch64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    aarch64_be:Linux:*:*)
-       UNAME_MACHINE=aarch64_be
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    alpha:Linux:*:*)
-       case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-       esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arm*:Linux:*:*)
-       set_cc_for_build
-       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_EABI__
-       then
-           echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       else
-           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep -q __ARM_PCS_VFP
-           then
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
-           else
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
-           fi
-       fi
-       exit ;;
-    avr32*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    cris:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    crisv32:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
-    e2k:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    frv:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    hexagon:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:Linux:*:*)
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-       exit ;;
-    ia64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    k1om:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m32r*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    m68*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-       set_cc_for_build
-       IS_GLIBC=0
-       test x"${LIBC}" = xgnu && IS_GLIBC=1
-       sed 's/^        //' << EOF > "$dummy.c"
-       #undef CPU
-       #undef mips
-       #undef mipsel
-       #undef mips64
-       #undef mips64el
-       #if ${IS_GLIBC} && defined(_ABI64)
-       LIBCABI=gnuabi64
-       #else
-       #if ${IS_GLIBC} && defined(_ABIN32)
-       LIBCABI=gnuabin32
-       #else
-       LIBCABI=${LIBC}
-       #endif
-       #endif
-
-       #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
-       CPU=mipsisa64r6
-       #else
-       #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
-       CPU=mipsisa32r6
-       #else
-       #if defined(__mips64)
-       CPU=mips64
-       #else
-       CPU=mips
-       #endif
-       #endif
-       #endif
-
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       MIPS_ENDIAN=el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       MIPS_ENDIAN=
-       #else
-       MIPS_ENDIAN=
-       #endif
-       #endif
-EOF
-       eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
-       test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
-       ;;
-    mips64el:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-"$LIBC"
-       exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-"$LIBC"
-       exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-"$LIBC"
-       exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-       # Look for CPU level
-       case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
-         PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
-         PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
-         *)    echo hppa-unknown-linux-"$LIBC" ;;
-       esac
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-"$LIBC"
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-"$LIBC"
-       exit ;;
-    ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-"$LIBC"
-       exit ;;
-    ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-"$LIBC"
-       exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-       echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
-       exit ;;
-    sh64*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sh*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    tile*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    vax:Linux:*:*)
-       echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
-       exit ;;
-    x86_64:Linux:*:*)
-       set_cc_for_build
-       LIBCABI=$LIBC
-       if test "$CC_FOR_BUILD" != no_compiler_found; then
-           if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_X32 >/dev/null
-           then
-               LIBCABI="$LIBC"x32
-           fi
-       fi
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
-       exit ;;
-    xtensa*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    i*86:DYNIX/ptx:4*:*)
-       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-       # earlier versions are messed up and put the nodename in both
-       # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-       # Unixware is an offshoot of SVR4, but it has its own version
-       # number series starting with 2...
-       # I am not positive that other SVR4 systems won't match this,
-       # I just have to hope.  -- rms.
-       # Use sysv4.2uw... so that sysv4* matches it.
-       echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
-       exit ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo "$UNAME_MACHINE"-pc-os2-emx
-       exit ;;
-    i*86:XTS-300:*:STOP)
-       echo "$UNAME_MACHINE"-unknown-stop
-       exit ;;
-    i*86:atheos:*:*)
-       echo "$UNAME_MACHINE"-unknown-atheos
-       exit ;;
-    i*86:syllable:*:*)
-       echo "$UNAME_MACHINE"-pc-syllable
-       exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    i*86:*DOS:*:*)
-       echo "$UNAME_MACHINE"-pc-msdosdjgpp
-       exit ;;
-    i*86:*:4.*:*)
-       UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
-       fi
-       exit ;;
-    i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
-       case $(/bin/uname -X | grep "^Machine") in
-           *486*)           UNAME_MACHINE=i486 ;;
-           *Pentium)        UNAME_MACHINE=i586 ;;
-           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-       esac
-       echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
-       exit ;;
-    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
-               echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
-               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
-       else
-               echo "$UNAME_MACHINE"-pc-sysv32
-       fi
-       exit ;;
-    pc:*:*:*)
-       # Left here for compatibility:
-       # uname -m prints for DJGPP always 'pc', but it prints nothing about
-       # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configure will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
-       fi
-       exit ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
-    M68*:*:R3V[5678]*:*)
-       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv"$UNAME_RELEASE"
-       exit ;;
-    RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=$( (uname -p) 2>/dev/null)
-               echo "$UNAME_MACHINE"-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                       # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo "$UNAME_MACHINE"-stratus-vos
-       exit ;;
-    *:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux"$UNAME_RELEASE"
-       exit ;;
-    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if test -d /usr/nec; then
-               echo mips-nec-sysv"$UNAME_RELEASE"
-       else
-               echo mips-unknown-sysv"$UNAME_RELEASE"
-       fi
-       exit ;;
-    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
-    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
-    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
-    x86_64:Haiku:*:*)
-       echo x86_64-unknown-haiku
-       exit ;;
-    SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    SX-ACE:SUPER-UX:*:*)
-       echo sxace-nec-superux"$UNAME_RELEASE"
-       exit ;;
-    Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    *:Rhapsody:*:*)
-       echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
-    arm64:Darwin:*:*)
-       echo aarch64-apple-darwin"$UNAME_RELEASE"
-       exit ;;
-    *:Darwin:*:*)
-       UNAME_PROCESSOR=$(uname -p)
-       case $UNAME_PROCESSOR in
-           unknown) UNAME_PROCESSOR=powerpc ;;
-       esac
-       if command -v xcode-select > /dev/null 2> /dev/null && \
-               ! xcode-select --print-path > /dev/null 2> /dev/null ; then
-           # Avoid executing cc if there is no toolchain installed as
-           # cc will be a stub that puts up a graphical alert
-           # prompting the user to install developer tools.
-           CC_FOR_BUILD=no_compiler_found
-       else
-           set_cc_for_build
-       fi
-       if test "$CC_FOR_BUILD" != no_compiler_found; then
-           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                  (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                  grep IS_64BIT_ARCH >/dev/null
-           then
-               case $UNAME_PROCESSOR in
-                   i386) UNAME_PROCESSOR=x86_64 ;;
-                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
-               esac
-           fi
-           # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
-           if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
-                  (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                  grep IS_PPC >/dev/null
-           then
-               UNAME_PROCESSOR=powerpc
-           fi
-       elif test "$UNAME_PROCESSOR" = i386 ; then
-           # uname -m returns i386 or x86_64
-           UNAME_PROCESSOR=$UNAME_MACHINE
-       fi
-       echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
-       exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-       UNAME_PROCESSOR=$(uname -p)
-       if test "$UNAME_PROCESSOR" = x86; then
-               UNAME_PROCESSOR=i386
-               UNAME_MACHINE=pc
-       fi
-       echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
-       exit ;;
-    *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
-    NEO-*:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSR-*:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSV-*:NONSTOP_KERNEL:*:*)
-       echo nsv-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSX-*:NONSTOP_KERNEL:*:*)
-       echo nsx-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
-    BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
-    DS/*:UNIX_System_V:*:*)
-       echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
-       exit ;;
-    *:Plan9:*:*)
-       # "uname -m" is not consistent, so use $cputype instead. 386
-       # is converted to i386 for consistency with other x86
-       # operating systems.
-       # shellcheck disable=SC2154
-       if test "$cputype" = 386; then
-           UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
-       fi
-       echo "$UNAME_MACHINE"-unknown-plan9
-       exit ;;
-    *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
-    *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
-    *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
-    *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
-    SEI:*:*:SEIUX)
-       echo mips-sei-seiux"$UNAME_RELEASE"
-       exit ;;
-    *:DragonFly:*:*)
-       echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
-       exit ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=$( (uname -p) 2>/dev/null)
-       case "$UNAME_MACHINE" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
-    i*86:skyos:*:*)
-       echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')"
-       exit ;;
-    i*86:rdos:*:*)
-       echo "$UNAME_MACHINE"-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo "$UNAME_MACHINE"-pc-aros
-       exit ;;
-    x86_64:VMkernel:*:*)
-       echo "$UNAME_MACHINE"-unknown-esx
-       exit ;;
-    amd64:Isilon\ OneFS:*:*)
-       echo x86_64-unknown-onefs
-       exit ;;
-    *:Unleashed:*:*)
-       echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
-       exit ;;
-esac
-
-# No uname command or uname output not recognized.
-set_cc_for_build
-cat > "$dummy.c" <<EOF
-#ifdef _SEQUENT_
-#include <sys/types.h>
-#include <sys/utsname.h>
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#include <signal.h>
-#if defined(_SIZE_T_) || defined(SIGLOST)
-#include <sys/utsname.h>
-#endif
-#endif
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-  "4"
-#else
-  ""
-#endif
-  ); exit (0);
-#endif
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null);
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-  struct utsname un;
-
-  uname(&un);
-  if (strncmp(un.version, "V2", 2) == 0) {
-    printf ("i386-sequent-ptx2\n"); exit (0);
-  }
-  if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-    printf ("i386-sequent-ptx1\n"); exit (0);
-  }
-  printf ("i386-sequent-ptx\n"); exit (0);
-#endif
-
-#if defined (vax)
-#if !defined (ultrix)
-#include <sys/param.h>
-#if defined (BSD)
-#if BSD == 43
-  printf ("vax-dec-bsd4.3\n"); exit (0);
-#else
-#if BSD == 199006
-  printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#else
-  printf ("vax-dec-bsd\n"); exit (0);
-#endif
-#endif
-#else
-  printf ("vax-dec-bsd\n"); exit (0);
-#endif
-#else
-#if defined(_SIZE_T_) || defined(SIGLOST)
-  struct utsname un;
-  uname (&un);
-  printf ("vax-dec-ultrix%s\n", un.release); exit (0);
-#else
-  printf ("vax-dec-ultrix\n"); exit (0);
-#endif
-#endif
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#if defined(_SIZE_T_) || defined(SIGLOST)
-  struct utsname *un;
-  uname (&un);
-  printf ("mips-dec-ultrix%s\n", un.release); exit (0);
-#else
-  printf ("mips-dec-ultrix\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
-
-echo "$0: unable to guess system type" >&2
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
-    mips:Linux | mips64:Linux)
-       # If we got here on MIPS GNU/Linux, output extra information.
-       cat >&2 <<EOF
-
-NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
-the system type. Please install a C compiler and try again.
-EOF
-       ;;
-esac
-
-cat >&2 <<EOF
-
-This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite *all*
-copies of config.guess and config.sub with the latest versions from:
-
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-and
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-EOF
-
-year=$(echo $timestamp | sed 's,-.*,,')
-# shellcheck disable=SC2003
-if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
-   cat >&2 <<EOF
-
-If $0 has already been updated, send the following data and any
-information you think might be pertinent to config-patches@gnu.org to
-provide the necessary information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = $( (uname -m) 2>/dev/null || echo unknown)
-uname -r = $( (uname -r) 2>/dev/null || echo unknown)
-uname -s = $( (uname -s) 2>/dev/null || echo unknown)
-uname -v = $( (uname -v) 2>/dev/null || echo unknown)
-
-/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
-/bin/uname -X     = $( (/bin/uname -X) 2>/dev/null)
-
-hostinfo               = $( (hostinfo) 2>/dev/null)
-/bin/universe          = $( (/bin/universe) 2>/dev/null)
-/usr/bin/arch -k       = $( (/usr/bin/arch -k) 2>/dev/null)
-/bin/arch              = $( (/bin/arch) 2>/dev/null)
-/usr/bin/oslevel       = $( (/usr/bin/oslevel) 2>/dev/null)
-/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
-
-UNAME_MACHINE = "$UNAME_MACHINE"
-UNAME_RELEASE = "$UNAME_RELEASE"
-UNAME_SYSTEM  = "$UNAME_SYSTEM"
-UNAME_VERSION = "$UNAME_VERSION"
-EOF
-fi
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/polly/lib/External/isl/interface/config.sub b/polly/lib/External/isl/interface/config.sub
deleted file mode 100755 (executable)
index c874b7a..0000000
+++ /dev/null
@@ -1,1853 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2020 Free Software Foundation, Inc.
-
-timestamp='2020-11-07'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches to <config-patches@gnu.org>.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=$(echo "$0" | sed -e 's,.*/,,')
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
-
-Canonicalize a configuration name.
-
-Options:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2020 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo "$1"
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Split fields of configuration type
-# shellcheck disable=SC2162
-IFS="-" read field1 field2 field3 field4 <<EOF
-$1
-EOF
-
-# Separate into logical components for further validation
-case $1 in
-       *-*-*-*-*)
-               echo Invalid configuration \`"$1"\': more than four components >&2
-               exit 1
-               ;;
-       *-*-*-*)
-               basic_machine=$field1-$field2
-               basic_os=$field3-$field4
-               ;;
-       *-*-*)
-               # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
-               # parts
-               maybe_os=$field2-$field3
-               case $maybe_os in
-                       nto-qnx* | linux-* | uclinux-uclibc* \
-                       | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
-                       | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-                       | storm-chaos* | os2-emx* | rtmk-nova*)
-                               basic_machine=$field1
-                               basic_os=$maybe_os
-                               ;;
-                       android-linux)
-                               basic_machine=$field1-unknown
-                               basic_os=linux-android
-                               ;;
-                       *)
-                               basic_machine=$field1-$field2
-                               basic_os=$field3
-                               ;;
-               esac
-               ;;
-       *-*)
-               # A lone config we happen to match not fitting any pattern
-               case $field1-$field2 in
-                       decstation-3100)
-                               basic_machine=mips-dec
-                               basic_os=
-                               ;;
-                       *-*)
-                               # Second component is usually, but not always the OS
-                               case $field2 in
-                                       # Prevent following clause from handling this valid os
-                                       sun*os*)
-                                               basic_machine=$field1
-                                               basic_os=$field2
-                                               ;;
-                                       # Manufacturers
-                                       dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
-                                       | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
-                                       | unicom* | ibm* | next | hp | isi* | apollo | altos* \
-                                       | convergent* | ncr* | news | 32* | 3600* | 3100* \
-                                       | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
-                                       | ultra | tti* | harris | dolphin | highlevel | gould \
-                                       | cbm | ns | masscomp | apple | axis | knuth | cray \
-                                       | microblaze* | sim | cisco \
-                                       | oki | wec | wrs | winbond)
-                                               basic_machine=$field1-$field2
-                                               basic_os=
-                                               ;;
-                                       *)
-                                               basic_machine=$field1
-                                               basic_os=$field2
-                                               ;;
-                               esac
-                       ;;
-               esac
-               ;;
-       *)
-               # Convert single-component short-hands not valid as part of
-               # multi-component configurations.
-               case $field1 in
-                       386bsd)
-                               basic_machine=i386-pc
-                               basic_os=bsd
-                               ;;
-                       a29khif)
-                               basic_machine=a29k-amd
-                               basic_os=udi
-                               ;;
-                       adobe68k)
-                               basic_machine=m68010-adobe
-                               basic_os=scout
-                               ;;
-                       alliant)
-                               basic_machine=fx80-alliant
-                               basic_os=
-                               ;;
-                       altos | altos3068)
-                               basic_machine=m68k-altos
-                               basic_os=
-                               ;;
-                       am29k)
-                               basic_machine=a29k-none
-                               basic_os=bsd
-                               ;;
-                       amdahl)
-                               basic_machine=580-amdahl
-                               basic_os=sysv
-                               ;;
-                       amiga)
-                               basic_machine=m68k-unknown
-                               basic_os=
-                               ;;
-                       amigaos | amigados)
-                               basic_machine=m68k-unknown
-                               basic_os=amigaos
-                               ;;
-                       amigaunix | amix)
-                               basic_machine=m68k-unknown
-                               basic_os=sysv4
-                               ;;
-                       apollo68)
-                               basic_machine=m68k-apollo
-                               basic_os=sysv
-                               ;;
-                       apollo68bsd)
-                               basic_machine=m68k-apollo
-                               basic_os=bsd
-                               ;;
-                       aros)
-                               basic_machine=i386-pc
-                               basic_os=aros
-                               ;;
-                       aux)
-                               basic_machine=m68k-apple
-                               basic_os=aux
-                               ;;
-                       balance)
-                               basic_machine=ns32k-sequent
-                               basic_os=dynix
-                               ;;
-                       blackfin)
-                               basic_machine=bfin-unknown
-                               basic_os=linux
-                               ;;
-                       cegcc)
-                               basic_machine=arm-unknown
-                               basic_os=cegcc
-                               ;;
-                       convex-c1)
-                               basic_machine=c1-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c2)
-                               basic_machine=c2-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c32)
-                               basic_machine=c32-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c34)
-                               basic_machine=c34-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c38)
-                               basic_machine=c38-convex
-                               basic_os=bsd
-                               ;;
-                       cray)
-                               basic_machine=j90-cray
-                               basic_os=unicos
-                               ;;
-                       crds | unos)
-                               basic_machine=m68k-crds
-                               basic_os=
-                               ;;
-                       da30)
-                               basic_machine=m68k-da30
-                               basic_os=
-                               ;;
-                       decstation | pmax | pmin | dec3100 | decstatn)
-                               basic_machine=mips-dec
-                               basic_os=
-                               ;;
-                       delta88)
-                               basic_machine=m88k-motorola
-                               basic_os=sysv3
-                               ;;
-                       dicos)
-                               basic_machine=i686-pc
-                               basic_os=dicos
-                               ;;
-                       djgpp)
-                               basic_machine=i586-pc
-                               basic_os=msdosdjgpp
-                               ;;
-                       ebmon29k)
-                               basic_machine=a29k-amd
-                               basic_os=ebmon
-                               ;;
-                       es1800 | OSE68k | ose68k | ose | OSE)
-                               basic_machine=m68k-ericsson
-                               basic_os=ose
-                               ;;
-                       gmicro)
-                               basic_machine=tron-gmicro
-                               basic_os=sysv
-                               ;;
-                       go32)
-                               basic_machine=i386-pc
-                               basic_os=go32
-                               ;;
-                       h8300hms)
-                               basic_machine=h8300-hitachi
-                               basic_os=hms
-                               ;;
-                       h8300xray)
-                               basic_machine=h8300-hitachi
-                               basic_os=xray
-                               ;;
-                       h8500hms)
-                               basic_machine=h8500-hitachi
-                               basic_os=hms
-                               ;;
-                       harris)
-                               basic_machine=m88k-harris
-                               basic_os=sysv3
-                               ;;
-                       hp300 | hp300hpux)
-                               basic_machine=m68k-hp
-                               basic_os=hpux
-                               ;;
-                       hp300bsd)
-                               basic_machine=m68k-hp
-                               basic_os=bsd
-                               ;;
-                       hppaosf)
-                               basic_machine=hppa1.1-hp
-                               basic_os=osf
-                               ;;
-                       hppro)
-                               basic_machine=hppa1.1-hp
-                               basic_os=proelf
-                               ;;
-                       i386mach)
-                               basic_machine=i386-mach
-                               basic_os=mach
-                               ;;
-                       isi68 | isi)
-                               basic_machine=m68k-isi
-                               basic_os=sysv
-                               ;;
-                       m68knommu)
-                               basic_machine=m68k-unknown
-                               basic_os=linux
-                               ;;
-                       magnum | m3230)
-                               basic_machine=mips-mips
-                               basic_os=sysv
-                               ;;
-                       merlin)
-                               basic_machine=ns32k-utek
-                               basic_os=sysv
-                               ;;
-                       mingw64)
-                               basic_machine=x86_64-pc
-                               basic_os=mingw64
-                               ;;
-                       mingw32)
-                               basic_machine=i686-pc
-                               basic_os=mingw32
-                               ;;
-                       mingw32ce)
-                               basic_machine=arm-unknown
-                               basic_os=mingw32ce
-                               ;;
-                       monitor)
-                               basic_machine=m68k-rom68k
-                               basic_os=coff
-                               ;;
-                       morphos)
-                               basic_machine=powerpc-unknown
-                               basic_os=morphos
-                               ;;
-                       moxiebox)
-                               basic_machine=moxie-unknown
-                               basic_os=moxiebox
-                               ;;
-                       msdos)
-                               basic_machine=i386-pc
-                               basic_os=msdos
-                               ;;
-                       msys)
-                               basic_machine=i686-pc
-                               basic_os=msys
-                               ;;
-                       mvs)
-                               basic_machine=i370-ibm
-                               basic_os=mvs
-                               ;;
-                       nacl)
-                               basic_machine=le32-unknown
-                               basic_os=nacl
-                               ;;
-                       ncr3000)
-                               basic_machine=i486-ncr
-                               basic_os=sysv4
-                               ;;
-                       netbsd386)
-                               basic_machine=i386-pc
-                               basic_os=netbsd
-                               ;;
-                       netwinder)
-                               basic_machine=armv4l-rebel
-                               basic_os=linux
-                               ;;
-                       news | news700 | news800 | news900)
-                               basic_machine=m68k-sony
-                               basic_os=newsos
-                               ;;
-                       news1000)
-                               basic_machine=m68030-sony
-                               basic_os=newsos
-                               ;;
-                       necv70)
-                               basic_machine=v70-nec
-                               basic_os=sysv
-                               ;;
-                       nh3000)
-                               basic_machine=m68k-harris
-                               basic_os=cxux
-                               ;;
-                       nh[45]000)
-                               basic_machine=m88k-harris
-                               basic_os=cxux
-                               ;;
-                       nindy960)
-                               basic_machine=i960-intel
-                               basic_os=nindy
-                               ;;
-                       mon960)
-                               basic_machine=i960-intel
-                               basic_os=mon960
-                               ;;
-                       nonstopux)
-                               basic_machine=mips-compaq
-                               basic_os=nonstopux
-                               ;;
-                       os400)
-                               basic_machine=powerpc-ibm
-                               basic_os=os400
-                               ;;
-                       OSE68000 | ose68000)
-                               basic_machine=m68000-ericsson
-                               basic_os=ose
-                               ;;
-                       os68k)
-                               basic_machine=m68k-none
-                               basic_os=os68k
-                               ;;
-                       paragon)
-                               basic_machine=i860-intel
-                               basic_os=osf
-                               ;;
-                       parisc)
-                               basic_machine=hppa-unknown
-                               basic_os=linux
-                               ;;
-                       psp)
-                               basic_machine=mipsallegrexel-sony
-                               basic_os=psp
-                               ;;
-                       pw32)
-                               basic_machine=i586-unknown
-                               basic_os=pw32
-                               ;;
-                       rdos | rdos64)
-                               basic_machine=x86_64-pc
-                               basic_os=rdos
-                               ;;
-                       rdos32)
-                               basic_machine=i386-pc
-                               basic_os=rdos
-                               ;;
-                       rom68k)
-                               basic_machine=m68k-rom68k
-                               basic_os=coff
-                               ;;
-                       sa29200)
-                               basic_machine=a29k-amd
-                               basic_os=udi
-                               ;;
-                       sei)
-                               basic_machine=mips-sei
-                               basic_os=seiux
-                               ;;
-                       sequent)
-                               basic_machine=i386-sequent
-                               basic_os=
-                               ;;
-                       sps7)
-                               basic_machine=m68k-bull
-                               basic_os=sysv2
-                               ;;
-                       st2000)
-                               basic_machine=m68k-tandem
-                               basic_os=
-                               ;;
-                       stratus)
-                               basic_machine=i860-stratus
-                               basic_os=sysv4
-                               ;;
-                       sun2)
-                               basic_machine=m68000-sun
-                               basic_os=
-                               ;;
-                       sun2os3)
-                               basic_machine=m68000-sun
-                               basic_os=sunos3
-                               ;;
-                       sun2os4)
-                               basic_machine=m68000-sun
-                               basic_os=sunos4
-                               ;;
-                       sun3)
-                               basic_machine=m68k-sun
-                               basic_os=
-                               ;;
-                       sun3os3)
-                               basic_machine=m68k-sun
-                               basic_os=sunos3
-                               ;;
-                       sun3os4)
-                               basic_machine=m68k-sun
-                               basic_os=sunos4
-                               ;;
-                       sun4)
-                               basic_machine=sparc-sun
-                               basic_os=
-                               ;;
-                       sun4os3)
-                               basic_machine=sparc-sun
-                               basic_os=sunos3
-                               ;;
-                       sun4os4)
-                               basic_machine=sparc-sun
-                               basic_os=sunos4
-                               ;;
-                       sun4sol2)
-                               basic_machine=sparc-sun
-                               basic_os=solaris2
-                               ;;
-                       sun386 | sun386i | roadrunner)
-                               basic_machine=i386-sun
-                               basic_os=
-                               ;;
-                       sv1)
-                               basic_machine=sv1-cray
-                               basic_os=unicos
-                               ;;
-                       symmetry)
-                               basic_machine=i386-sequent
-                               basic_os=dynix
-                               ;;
-                       t3e)
-                               basic_machine=alphaev5-cray
-                               basic_os=unicos
-                               ;;
-                       t90)
-                               basic_machine=t90-cray
-                               basic_os=unicos
-                               ;;
-                       toad1)
-                               basic_machine=pdp10-xkl
-                               basic_os=tops20
-                               ;;
-                       tpf)
-                               basic_machine=s390x-ibm
-                               basic_os=tpf
-                               ;;
-                       udi29k)
-                               basic_machine=a29k-amd
-                               basic_os=udi
-                               ;;
-                       ultra3)
-                               basic_machine=a29k-nyu
-                               basic_os=sym1
-                               ;;
-                       v810 | necv810)
-                               basic_machine=v810-nec
-                               basic_os=none
-                               ;;
-                       vaxv)
-                               basic_machine=vax-dec
-                               basic_os=sysv
-                               ;;
-                       vms)
-                               basic_machine=vax-dec
-                               basic_os=vms
-                               ;;
-                       vsta)
-                               basic_machine=i386-pc
-                               basic_os=vsta
-                               ;;
-                       vxworks960)
-                               basic_machine=i960-wrs
-                               basic_os=vxworks
-                               ;;
-                       vxworks68)
-                               basic_machine=m68k-wrs
-                               basic_os=vxworks
-                               ;;
-                       vxworks29k)
-                               basic_machine=a29k-wrs
-                               basic_os=vxworks
-                               ;;
-                       xbox)
-                               basic_machine=i686-pc
-                               basic_os=mingw32
-                               ;;
-                       ymp)
-                               basic_machine=ymp-cray
-                               basic_os=unicos
-                               ;;
-                       *)
-                               basic_machine=$1
-                               basic_os=
-                               ;;
-               esac
-               ;;
-esac
-
-# Decode 1-component or ad-hoc basic machines
-case $basic_machine in
-       # Here we handle the default manufacturer of certain CPU types.  It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               cpu=hppa1.1
-               vendor=winbond
-               ;;
-       op50n)
-               cpu=hppa1.1
-               vendor=oki
-               ;;
-       op60c)
-               cpu=hppa1.1
-               vendor=oki
-               ;;
-       ibm*)
-               cpu=i370
-               vendor=ibm
-               ;;
-       orion105)
-               cpu=clipper
-               vendor=highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               cpu=m68k
-               vendor=apple
-               ;;
-       pmac | pmac-mpw)
-               cpu=powerpc
-               vendor=apple
-               ;;
-
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               cpu=m68000
-               vendor=att
-               ;;
-       3b*)
-               cpu=we32k
-               vendor=att
-               ;;
-       bluegene*)
-               cpu=powerpc
-               vendor=ibm
-               basic_os=cnk
-               ;;
-       decsystem10* | dec10*)
-               cpu=pdp10
-               vendor=dec
-               basic_os=tops10
-               ;;
-       decsystem20* | dec20*)
-               cpu=pdp10
-               vendor=dec
-               basic_os=tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               cpu=m68k
-               vendor=motorola
-               ;;
-       dpx2*)
-               cpu=m68k
-               vendor=bull
-               basic_os=sysv3
-               ;;
-       encore | umax | mmax)
-               cpu=ns32k
-               vendor=encore
-               ;;
-       elxsi)
-               cpu=elxsi
-               vendor=elxsi
-               basic_os=${basic_os:-bsd}
-               ;;
-       fx2800)
-               cpu=i860
-               vendor=alliant
-               ;;
-       genix)
-               cpu=ns32k
-               vendor=ns
-               ;;
-       h3050r* | hiux*)
-               cpu=hppa1.1
-               vendor=hitachi
-               basic_os=hiuxwe2
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               cpu=m68000
-               vendor=hp
-               ;;
-       hp9k3[2-9][0-9])
-               cpu=m68k
-               vendor=hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               cpu=hppa1.1
-               vendor=hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
-               ;;
-       i*86v32)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=sysv32
-               ;;
-       i*86v4*)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=sysv4
-               ;;
-       i*86v)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=sysv
-               ;;
-       i*86sol2)
-               cpu=$(echo "$1" | sed -e 's/86.*/86/')
-               vendor=pc
-               basic_os=solaris2
-               ;;
-       j90 | j90-cray)
-               cpu=j90
-               vendor=cray
-               basic_os=${basic_os:-unicos}
-               ;;
-       iris | iris4d)
-               cpu=mips
-               vendor=sgi
-               case $basic_os in
-                   irix*)
-                       ;;
-                   *)
-                       basic_os=irix4
-                       ;;
-               esac
-               ;;
-       miniframe)
-               cpu=m68000
-               vendor=convergent
-               ;;
-       *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               cpu=m68k
-               vendor=atari
-               basic_os=mint
-               ;;
-       news-3600 | risc-news)
-               cpu=mips
-               vendor=sony
-               basic_os=newsos
-               ;;
-       next | m*-next)
-               cpu=m68k
-               vendor=next
-               case $basic_os in
-                   openstep*)
-                       ;;
-                   nextstep*)
-                       ;;
-                   ns2*)
-                     basic_os=nextstep2
-                       ;;
-                   *)
-                     basic_os=nextstep3
-                       ;;
-               esac
-               ;;
-       np1)
-               cpu=np1
-               vendor=gould
-               ;;
-       op50n-* | op60c-*)
-               cpu=hppa1.1
-               vendor=oki
-               basic_os=proelf
-               ;;
-       pa-hitachi)
-               cpu=hppa1.1
-               vendor=hitachi
-               basic_os=hiuxwe2
-               ;;
-       pbd)
-               cpu=sparc
-               vendor=tti
-               ;;
-       pbb)
-               cpu=m68k
-               vendor=tti
-               ;;
-       pc532)
-               cpu=ns32k
-               vendor=pc532
-               ;;
-       pn)
-               cpu=pn
-               vendor=gould
-               ;;
-       power)
-               cpu=power
-               vendor=ibm
-               ;;
-       ps2)
-               cpu=i386
-               vendor=ibm
-               ;;
-       rm[46]00)
-               cpu=mips
-               vendor=siemens
-               ;;
-       rtpc | rtpc-*)
-               cpu=romp
-               vendor=ibm
-               ;;
-       sde)
-               cpu=mipsisa32
-               vendor=sde
-               basic_os=${basic_os:-elf}
-               ;;
-       simso-wrs)
-               cpu=sparclite
-               vendor=wrs
-               basic_os=vxworks
-               ;;
-       tower | tower-32)
-               cpu=m68k
-               vendor=ncr
-               ;;
-       vpp*|vx|vx-*)
-               cpu=f301
-               vendor=fujitsu
-               ;;
-       w65)
-               cpu=w65
-               vendor=wdc
-               ;;
-       w89k-*)
-               cpu=hppa1.1
-               vendor=winbond
-               basic_os=proelf
-               ;;
-       none)
-               cpu=none
-               vendor=none
-               ;;
-       leon|leon[3-9])
-               cpu=sparc
-               vendor=$basic_machine
-               ;;
-       leon-*|leon[3-9]-*)
-               cpu=sparc
-               vendor=$(echo "$basic_machine" | sed 's/-.*//')
-               ;;
-
-       *-*)
-               # shellcheck disable=SC2162
-               IFS="-" read cpu vendor <<EOF
-$basic_machine
-EOF
-               ;;
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-               cpu=$basic_machine
-               vendor=pc
-               ;;
-       # These rules are duplicated from below for sake of the special case above;
-       # i.e. things that normalized to x86 arches should also default to "pc"
-       pc98)
-               cpu=i386
-               vendor=pc
-               ;;
-       x64 | amd64)
-               cpu=x86_64
-               vendor=pc
-               ;;
-       # Recognize the basic CPU types without company name.
-       *)
-               cpu=$basic_machine
-               vendor=unknown
-               ;;
-esac
-
-unset -v basic_machine
-
-# Decode basic machines in the full and proper CPU-Company form.
-case $cpu-$vendor in
-       # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       craynv-unknown)
-               vendor=cray
-               basic_os=${basic_os:-unicosmp}
-               ;;
-       c90-unknown | c90-cray)
-               vendor=cray
-               basic_os=${Basic_os:-unicos}
-               ;;
-       fx80-unknown)
-               vendor=alliant
-               ;;
-       romp-unknown)
-               vendor=ibm
-               ;;
-       mmix-unknown)
-               vendor=knuth
-               ;;
-       microblaze-unknown | microblazeel-unknown)
-               vendor=xilinx
-               ;;
-       rs6000-unknown)
-               vendor=ibm
-               ;;
-       vax-unknown)
-               vendor=dec
-               ;;
-       pdp11-unknown)
-               vendor=dec
-               ;;
-       we32k-unknown)
-               vendor=att
-               ;;
-       cydra-unknown)
-               vendor=cydrome
-               ;;
-       i370-ibm*)
-               vendor=ibm
-               ;;
-       orion-unknown)
-               vendor=highlevel
-               ;;
-       xps-unknown | xps100-unknown)
-               cpu=xps100
-               vendor=honeywell
-               ;;
-
-       # Here we normalize CPU types with a missing or matching vendor
-       dpx20-unknown | dpx20-bull)
-               cpu=rs6000
-               vendor=bull
-               basic_os=${basic_os:-bosx}
-               ;;
-
-       # Here we normalize CPU types irrespective of the vendor
-       amd64-*)
-               cpu=x86_64
-               ;;
-       blackfin-*)
-               cpu=bfin
-               basic_os=linux
-               ;;
-       c54x-*)
-               cpu=tic54x
-               ;;
-       c55x-*)
-               cpu=tic55x
-               ;;
-       c6x-*)
-               cpu=tic6x
-               ;;
-       e500v[12]-*)
-               cpu=powerpc
-               basic_os=${basic_os}"spe"
-               ;;
-       mips3*-*)
-               cpu=mips64
-               ;;
-       ms1-*)
-               cpu=mt
-               ;;
-       m68knommu-*)
-               cpu=m68k
-               basic_os=linux
-               ;;
-       m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
-               cpu=s12z
-               ;;
-       openrisc-*)
-               cpu=or32
-               ;;
-       parisc-*)
-               cpu=hppa
-               basic_os=linux
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               cpu=i586
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
-               cpu=i686
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               cpu=i686
-               ;;
-       pentium4-*)
-               cpu=i786
-               ;;
-       pc98-*)
-               cpu=i386
-               ;;
-       ppc-* | ppcbe-*)
-               cpu=powerpc
-               ;;
-       ppcle-* | powerpclittle-*)
-               cpu=powerpcle
-               ;;
-       ppc64-*)
-               cpu=powerpc64
-               ;;
-       ppc64le-* | powerpc64little-*)
-               cpu=powerpc64le
-               ;;
-       sb1-*)
-               cpu=mipsisa64sb1
-               ;;
-       sb1el-*)
-               cpu=mipsisa64sb1el
-               ;;
-       sh5e[lb]-*)
-               cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
-               ;;
-       spur-*)
-               cpu=spur
-               ;;
-       strongarm-* | thumb-*)
-               cpu=arm
-               ;;
-       tx39-*)
-               cpu=mipstx39
-               ;;
-       tx39el-*)
-               cpu=mipstx39el
-               ;;
-       x64-*)
-               cpu=x86_64
-               ;;
-       xscale-* | xscalee[bl]-*)
-               cpu=$(echo "$cpu" | sed 's/^xscale/arm/')
-               ;;
-       arm64-*)
-               cpu=aarch64
-               ;;
-
-       # Recognize the canonical CPU Types that limit and/or modify the
-       # company names they are paired with.
-       cr16-*)
-               basic_os=${basic_os:-elf}
-               ;;
-       crisv32-* | etraxfs*-*)
-               cpu=crisv32
-               vendor=axis
-               ;;
-       cris-* | etrax*-*)
-               cpu=cris
-               vendor=axis
-               ;;
-       crx-*)
-               basic_os=${basic_os:-elf}
-               ;;
-       neo-tandem)
-               cpu=neo
-               vendor=tandem
-               ;;
-       nse-tandem)
-               cpu=nse
-               vendor=tandem
-               ;;
-       nsr-tandem)
-               cpu=nsr
-               vendor=tandem
-               ;;
-       nsv-tandem)
-               cpu=nsv
-               vendor=tandem
-               ;;
-       nsx-tandem)
-               cpu=nsx
-               vendor=tandem
-               ;;
-       mipsallegrexel-sony)
-               cpu=mipsallegrexel
-               vendor=sony
-               ;;
-       tile*-*)
-               basic_os=${basic_os:-linux-gnu}
-               ;;
-
-       *)
-               # Recognize the canonical CPU types that are allowed with any
-               # company name.
-               case $cpu in
-                       1750a | 580 \
-                       | a29k \
-                       | aarch64 | aarch64_be \
-                       | abacus \
-                       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
-                       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
-                       | alphapca5[67] | alpha64pca5[67] \
-                       | am33_2.0 \
-                       | amdgcn \
-                       | arc | arceb \
-                       | arm | arm[lb]e | arme[lb] | armv* \
-                       | avr | avr32 \
-                       | asmjs \
-                       | ba \
-                       | be32 | be64 \
-                       | bfin | bpf | bs2000 \
-                       | c[123]* | c30 | [cjt]90 | c4x \
-                       | c8051 | clipper | craynv | csky | cydra \
-                       | d10v | d30v | dlx | dsp16xx \
-                       | e2k | elxsi | epiphany \
-                       | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
-                       | h8300 | h8500 \
-                       | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-                       | hexagon \
-                       | i370 | i*86 | i860 | i960 | ia16 | ia64 \
-                       | ip2k | iq2000 \
-                       | k1om \
-                       | le32 | le64 \
-                       | lm32 \
-                       | m32c | m32r | m32rle \
-                       | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
-                       | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
-                       | m88110 | m88k | maxq | mb | mcore | mep | metag \
-                       | microblaze | microblazeel \
-                       | mips | mipsbe | mipseb | mipsel | mipsle \
-                       | mips16 \
-                       | mips64 | mips64eb | mips64el \
-                       | mips64octeon | mips64octeonel \
-                       | mips64orion | mips64orionel \
-                       | mips64r5900 | mips64r5900el \
-                       | mips64vr | mips64vrel \
-                       | mips64vr4100 | mips64vr4100el \
-                       | mips64vr4300 | mips64vr4300el \
-                       | mips64vr5000 | mips64vr5000el \
-                       | mips64vr5900 | mips64vr5900el \
-                       | mipsisa32 | mipsisa32el \
-                       | mipsisa32r2 | mipsisa32r2el \
-                       | mipsisa32r6 | mipsisa32r6el \
-                       | mipsisa64 | mipsisa64el \
-                       | mipsisa64r2 | mipsisa64r2el \
-                       | mipsisa64r6 | mipsisa64r6el \
-                       | mipsisa64sb1 | mipsisa64sb1el \
-                       | mipsisa64sr71k | mipsisa64sr71kel \
-                       | mipsr5900 | mipsr5900el \
-                       | mipstx39 | mipstx39el \
-                       | mmix \
-                       | mn10200 | mn10300 \
-                       | moxie \
-                       | mt \
-                       | msp430 \
-                       | nds32 | nds32le | nds32be \
-                       | nfp \
-                       | nios | nios2 | nios2eb | nios2el \
-                       | none | np1 | ns16k | ns32k | nvptx \
-                       | open8 \
-                       | or1k* \
-                       | or32 \
-                       | orion \
-                       | picochip \
-                       | pdp10 | pdp11 | pj | pjl | pn | power \
-                       | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
-                       | pru \
-                       | pyramid \
-                       | riscv | riscv32 | riscv64 \
-                       | rl78 | romp | rs6000 | rx \
-                       | s390 | s390x \
-                       | score \
-                       | sh | shl \
-                       | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
-                       | sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
-                       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
-                       | sparclite \
-                       | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
-                       | spu \
-                       | tahoe \
-                       | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
-                       | tron \
-                       | ubicom32 \
-                       | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
-                       | vax \
-                       | visium \
-                       | w65 \
-                       | wasm32 | wasm64 \
-                       | we32k \
-                       | x86 | x86_64 | xc16x | xgate | xps100 \
-                       | xstormy16 | xtensa* \
-                       | ymp \
-                       | z8k | z80)
-                               ;;
-
-                       *)
-                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
-                               exit 1
-                               ;;
-               esac
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $vendor in
-       digital*)
-               vendor=dec
-               ;;
-       commodore*)
-               vendor=cbm
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if test x$basic_os != x
-then
-
-# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
-# set os.
-case $basic_os in
-       gnu/linux*)
-               kernel=linux
-               os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|')
-               ;;
-       os2-emx)
-               kernel=os2
-               os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
-               ;;
-       nto-qnx*)
-               kernel=nto
-               os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
-               ;;
-       *-*)
-               # shellcheck disable=SC2162
-               IFS="-" read kernel os <<EOF
-$basic_os
-EOF
-               ;;
-       # Default OS when just kernel was specified
-       nto*)
-               kernel=nto
-               os=$(echo $basic_os | sed -e 's|nto|qnx|')
-               ;;
-       linux*)
-               kernel=linux
-               os=$(echo $basic_os | sed -e 's|linux|gnu|')
-               ;;
-       *)
-               kernel=
-               os=$basic_os
-               ;;
-esac
-
-# Now, normalize the OS (knowing we just have one component, it's not a kernel,
-# etc.)
-case $os in
-       # First match some system type aliases that might get confused
-       # with valid system types.
-       # solaris* is a basic system type, with this one exception.
-       auroraux)
-               os=auroraux
-               ;;
-       bluegene*)
-               os=cnk
-               ;;
-       solaris1 | solaris1.*)
-               os=$(echo $os | sed -e 's|solaris1|sunos4|')
-               ;;
-       solaris)
-               os=solaris2
-               ;;
-       unixware*)
-               os=sysv4.2uw
-               ;;
-       # es1800 is here to avoid being matched by es* (a different OS)
-       es1800*)
-               os=ose
-               ;;
-       # Some version numbers need modification
-       chorusos*)
-               os=chorusos
-               ;;
-       isc)
-               os=isc2.2
-               ;;
-       sco6)
-               os=sco5v6
-               ;;
-       sco5)
-               os=sco3.2v5
-               ;;
-       sco4)
-               os=sco3.2v4
-               ;;
-       sco3.2.[4-9]*)
-               os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
-               ;;
-       sco*v* | scout)
-               # Don't match below
-               ;;
-       sco*)
-               os=sco3.2v2
-               ;;
-       psos*)
-               os=psos
-               ;;
-       qnx*)
-               os=qnx
-               ;;
-       hiux*)
-               os=hiuxwe2
-               ;;
-       lynx*178)
-               os=lynxos178
-               ;;
-       lynx*5)
-               os=lynxos5
-               ;;
-       lynxos*)
-               # don't get caught up in next wildcard
-               ;;
-       lynx*)
-               os=lynxos
-               ;;
-       mac[0-9]*)
-               os=$(echo "$os" | sed -e 's|mac|macos|')
-               ;;
-       opened*)
-               os=openedition
-               ;;
-       os400*)
-               os=os400
-               ;;
-       sunos5*)
-               os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
-               ;;
-       sunos6*)
-               os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
-               ;;
-       wince*)
-               os=wince
-               ;;
-       utek*)
-               os=bsd
-               ;;
-       dynix*)
-               os=bsd
-               ;;
-       acis*)
-               os=aos
-               ;;
-       atheos*)
-               os=atheos
-               ;;
-       syllable*)
-               os=syllable
-               ;;
-       386bsd)
-               os=bsd
-               ;;
-       ctix* | uts*)
-               os=sysv
-               ;;
-       nova*)
-               os=rtmk-nova
-               ;;
-       ns2)
-               os=nextstep2
-               ;;
-       # Preserve the version number of sinix5.
-       sinix5.*)
-               os=$(echo $os | sed -e 's|sinix|sysv|')
-               ;;
-       sinix*)
-               os=sysv4
-               ;;
-       tpf*)
-               os=tpf
-               ;;
-       triton*)
-               os=sysv3
-               ;;
-       oss*)
-               os=sysv3
-               ;;
-       svr4*)
-               os=sysv4
-               ;;
-       svr3)
-               os=sysv3
-               ;;
-       sysvr4)
-               os=sysv4
-               ;;
-       ose*)
-               os=ose
-               ;;
-       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
-               os=mint
-               ;;
-       dicos*)
-               os=dicos
-               ;;
-       pikeos*)
-               # Until real need of OS specific support for
-               # particular features comes up, bare metal
-               # configurations are quite functional.
-               case $cpu in
-                   arm*)
-                       os=eabi
-                       ;;
-                   *)
-                       os=elf
-                       ;;
-               esac
-               ;;
-       *)
-               # No normalization, but not necessarily accepted, that comes below.
-               ;;
-esac
-
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-kernel=
-case $cpu-$vendor in
-       score-*)
-               os=elf
-               ;;
-       spu-*)
-               os=elf
-               ;;
-       *-acorn)
-               os=riscix1.2
-               ;;
-       arm*-rebel)
-               kernel=linux
-               os=gnu
-               ;;
-       arm*-semi)
-               os=aout
-               ;;
-       c4x-* | tic4x-*)
-               os=coff
-               ;;
-       c8051-*)
-               os=elf
-               ;;
-       clipper-intergraph)
-               os=clix
-               ;;
-       hexagon-*)
-               os=elf
-               ;;
-       tic54x-*)
-               os=coff
-               ;;
-       tic55x-*)
-               os=coff
-               ;;
-       tic6x-*)
-               os=coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=tops20
-               ;;
-       pdp11-*)
-               os=none
-               ;;
-       *-dec | vax-*)
-               os=ultrix4.2
-               ;;
-       m68*-apollo)
-               os=domain
-               ;;
-       i386-sun)
-               os=sunos4.0.2
-               ;;
-       m68000-sun)
-               os=sunos3
-               ;;
-       m68*-cisco)
-               os=aout
-               ;;
-       mep-*)
-               os=elf
-               ;;
-       mips*-cisco)
-               os=elf
-               ;;
-       mips*-*)
-               os=elf
-               ;;
-       or32-*)
-               os=coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=sysv3
-               ;;
-       sparc-* | *-sun)
-               os=sunos4.1.1
-               ;;
-       pru-*)
-               os=elf
-               ;;
-       *-be)
-               os=beos
-               ;;
-       *-ibm)
-               os=aix
-               ;;
-       *-knuth)
-               os=mmixware
-               ;;
-       *-wec)
-               os=proelf
-               ;;
-       *-winbond)
-               os=proelf
-               ;;
-       *-oki)
-               os=proelf
-               ;;
-       *-hp)
-               os=hpux
-               ;;
-       *-hitachi)
-               os=hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=sysv
-               ;;
-       *-cbm)
-               os=amigaos
-               ;;
-       *-dg)
-               os=dgux
-               ;;
-       *-dolphin)
-               os=sysv3
-               ;;
-       m68k-ccur)
-               os=rtu
-               ;;
-       m88k-omron*)
-               os=luna
-               ;;
-       *-next)
-               os=nextstep
-               ;;
-       *-sequent)
-               os=ptx
-               ;;
-       *-crds)
-               os=unos
-               ;;
-       *-ns)
-               os=genix
-               ;;
-       i370-*)
-               os=mvs
-               ;;
-       *-gould)
-               os=sysv
-               ;;
-       *-highlevel)
-               os=bsd
-               ;;
-       *-encore)
-               os=bsd
-               ;;
-       *-sgi)
-               os=irix
-               ;;
-       *-siemens)
-               os=sysv4
-               ;;
-       *-masscomp)
-               os=rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=uxpv
-               ;;
-       *-rom68k)
-               os=coff
-               ;;
-       *-*bug)
-               os=coff
-               ;;
-       *-apple)
-               os=macos
-               ;;
-       *-atari*)
-               os=mint
-               ;;
-       *-wrs)
-               os=vxworks
-               ;;
-       *)
-               os=none
-               ;;
-esac
-
-fi
-
-# Now, validate our (potentially fixed-up) OS.
-case $os in
-       # Sometimes we do "kernel-abi", so those need to count as OSes.
-       musl* | newlib* | uclibc*)
-               ;;
-       # Likewise for "kernel-libc"
-       eabi | eabihf | gnueabi | gnueabihf)
-               ;;
-       # Now accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST end in a * to match a version number.
-       gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
-            | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
-            | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
-            | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
-            | hiux* | abug | nacl* | netware* | windows* \
-            | os9* | macos* | osx* | ios* \
-            | mpw* | magic* | mmixware* | mon960* | lnews* \
-            | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
-            | aos* | aros* | cloudabi* | sortix* | twizzler* \
-            | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
-            | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
-            | mirbsd* | netbsd* | dicos* | openedition* | ose* \
-            | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
-            | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
-            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
-            | udi* | lites* | ieee* | go32* | aux* | hcos* \
-            | chorusrdb* | cegcc* | glidix* \
-            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
-            | midipix* | mingw32* | mingw64* | mint* \
-            | uxpv* | beos* | mpeix* | udk* | moxiebox* \
-            | interix* | uwin* | mks* | rhapsody* | darwin* \
-            | openstep* | oskit* | conix* | pw32* | nonstopux* \
-            | storm-chaos* | tops10* | tenex* | tops20* | its* \
-            | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
-            | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
-            | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
-            | skyos* | haiku* | rdos* | toppers* | drops* | es* \
-            | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
-            | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
-            | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
-               ;;
-       # This one is extra strict with allowed versions
-       sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               ;;
-       none)
-               ;;
-       *)
-               echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-
-# As a final step for OS-related things, validate the OS-kernel combination
-# (given a valid OS), if there is a kernel.
-case $kernel-$os in
-       linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
-               ;;
-       uclinux-uclibc* )
-               ;;
-       -dietlibc* | -newlib* | -musl* | -uclibc* )
-               # These are just libc implementations, not actual OSes, and thus
-               # require a kernel.
-               echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
-               exit 1
-               ;;
-       kfreebsd*-gnu* | kopensolaris*-gnu*)
-               ;;
-       nto-qnx*)
-               ;;
-       os2-emx)
-               ;;
-       *-eabi* | *-gnueabi*)
-               ;;
-       -*)
-               # Blank kernel with real OS is always fine.
-               ;;
-       *-*)
-               echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
-               exit 1
-               ;;
-esac
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-case $vendor in
-       unknown)
-               case $cpu-$os in
-                       *-riscix*)
-                               vendor=acorn
-                               ;;
-                       *-sunos*)
-                               vendor=sun
-                               ;;
-                       *-cnk* | *-aix*)
-                               vendor=ibm
-                               ;;
-                       *-beos*)
-                               vendor=be
-                               ;;
-                       *-hpux*)
-                               vendor=hp
-                               ;;
-                       *-mpeix*)
-                               vendor=hp
-                               ;;
-                       *-hiux*)
-                               vendor=hitachi
-                               ;;
-                       *-unos*)
-                               vendor=crds
-                               ;;
-                       *-dgux*)
-                               vendor=dg
-                               ;;
-                       *-luna*)
-                               vendor=omron
-                               ;;
-                       *-genix*)
-                               vendor=ns
-                               ;;
-                       *-clix*)
-                               vendor=intergraph
-                               ;;
-                       *-mvs* | *-opened*)
-                               vendor=ibm
-                               ;;
-                       *-os400*)
-                               vendor=ibm
-                               ;;
-                       s390-* | s390x-*)
-                               vendor=ibm
-                               ;;
-                       *-ptx*)
-                               vendor=sequent
-                               ;;
-                       *-tpf*)
-                               vendor=ibm
-                               ;;
-                       *-vxsim* | *-vxworks* | *-windiss*)
-                               vendor=wrs
-                               ;;
-                       *-aux*)
-                               vendor=apple
-                               ;;
-                       *-hms*)
-                               vendor=hitachi
-                               ;;
-                       *-mpw* | *-macos*)
-                               vendor=apple
-                               ;;
-                       *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       *-vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               ;;
-esac
-
-echo "$cpu-$vendor-${kernel:+$kernel-}$os"
-exit
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/polly/lib/External/isl/interface/configure b/polly/lib/External/isl/interface/configure
deleted file mode 100755 (executable)
index e63e13e..0000000
+++ /dev/null
@@ -1,22142 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for isl-interface 0.
-#
-# Report bugs to <isl-development@googlegroups.com>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1
-
-  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-        /*)
-          for as_base in sh bash ksh sh5; do
-            # Try only shells that exist, to save several forks.
-            as_shell=$as_dir/$as_base
-            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-          done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org and
-$0: isl-development@googlegroups.com about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='        ';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='isl-interface'
-PACKAGE_TARNAME='isl-interface'
-PACKAGE_VERSION='0'
-PACKAGE_STRING='isl-interface 0'
-PACKAGE_BUGREPORT='isl-development@googlegroups.com'
-PACKAGE_URL=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIBOBJS
-CONFIG_STATUS_DEPENDENCIES
-XCODE_SELECT
-LLVM_CONFIG
-CLANG_LIBS
-CLANG_RFLAG
-CLANG_LDFLAGS
-CLANG_CXXFLAGS
-LT_SYS_LIBRARY_PATH
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-RANLIB
-ac_ct_AR
-AR
-DLLTOOL
-OBJDUMP
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-EGREP
-SED
-LIBTOOL
-HAVE_CXX11
-GREP
-CXXCPPFLAGS_FOR_BUILD
-CXXFLAGS_FOR_BUILD
-CXXCPP_FOR_BUILD
-ac_ct_CXX_FOR_BUILD
-CXX_FOR_BUILD
-host_os
-host_vendor
-host_cpu
-host
-CXXCPP
-LDFLAGS_FOR_BUILD
-CPPFLAGS_FOR_BUILD
-CFLAGS_FOR_BUILD
-BUILD_OBJEXT
-BUILD_EXEEXT
-CPP_FOR_BUILD
-ac_ct_CC_FOR_BUILD
-CC_FOR_BUILD
-build_os
-build_vendor
-build_cpu
-build
-CPP
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-ac_ct_CC
-CFLAGS
-CC
-am__fastdepCXX_FALSE
-am__fastdepCXX_TRUE
-CXXDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CXX
-CPPFLAGS
-LDFLAGS
-CXXFLAGS
-CXX
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL
-am__quote'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_silent_rules
-enable_dependency_tracking
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_aix_soname
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CXX
-CXXFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CCC
-CC
-CFLAGS
-CPP
-CXXCPP
-LT_SYS_LIBRARY_PATH'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
-               datadir sysconfdir sharedstatedir localstatedir includedir \
-               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_myself" : 'X\(//\)[^/]' \| \
-        X"$as_myself" : 'X\(//\)$' \| \
-        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-       pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures isl-interface 0 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/isl-interface]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of isl-interface 0:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-silent-rules   less verbose build output (undo: "make V=1")
-  --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-dependency-tracking
-                          do not reject slow dependency extractors
-  --disable-dependency-tracking
-                          speeds up one-time build
-  --enable-shared[=PKGS]  build shared libraries [default=no]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-aix-soname=aix|svr4|both
-                          shared library versioning (aka "SONAME") variant to
-                          provide on AIX, [default=aix].
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
-                          compiler's sysroot if not specified).
-
-Some influential environment variables:
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  CPP         C preprocessor
-  CXXCPP      C++ preprocessor
-  LT_SYS_LIBRARY_PATH
-              User-defined run-time library search path.
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <isl-development@googlegroups.com>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-isl-interface configure 0
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_cxx_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_compile
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_cxx_try_cpp LINENO
-# ------------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_cpp
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_func
-
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_link
-
-# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
-# ---------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_cxx_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ----------------------------------------------- ##
-## Report this to isl-development@googlegroups.com ##
-## ----------------------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_cxx_check_header_mongrel
-
-# ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES
-# ---------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_cxx_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_cxx_check_header_compile
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by isl-interface $as_me 0, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-       ac_must_keep_next=false # Got value, back to normal.
-      else
-       case $ac_arg in
-         *=* | --config-cache | -C | -disable-* | --disable-* \
-         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-         | -with-* | --with-* | -without-* | --without-* | --x)
-           case "$ac_configure_args0 " in
-             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-           esac
-           ;;
-         -* ) ac_must_keep_next=true ;;
-       esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-       "s/'\''/'\''\\\\'\'''\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-       eval ac_val=\$$ac_var
-       case $ac_val in
-       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-       esac
-       $as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-       # differences in whitespace do not lead to failure.
-       ac_old_val_w=`echo x $ac_old_val`
-       ac_new_val_w=`echo x $ac_new_val`
-       if test "$ac_old_val_w" != "$ac_new_val_w"; then
-         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-         ac_cache_corrupted=:
-       else
-         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-         eval $ac_var=\$ac_old_val
-       fi
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_aux_dir=
-for ac_dir in . "$srcdir"/.; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in . \"$srcdir\"/." "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-
-am__api_version='1.16'
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-         if test $ac_prog = install &&
-           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         elif test $ac_prog = install &&
-           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # program-specific install script used by HP pwplus--don't use.
-           :
-         else
-           rm -rf conftest.one conftest.two conftest.dir
-           echo one > conftest.one
-           echo two > conftest.two
-           mkdir conftest.dir
-           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-             test -s conftest.one && test -s conftest.two &&
-             test -s conftest.dir/conftest.one &&
-             test -s conftest.dir/conftest.two
-           then
-             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-             break 3
-           fi
-         fi
-       fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
-    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$*" = "X"; then
-       # -L didn't work.
-       set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$*" != "X $srcdir/configure conftest.file" \
-       && test "$*" != "X conftest.file $srcdir/configure"; then
-
-       # If neither matched, then we have a broken ls.  This can happen
-       # if, for instance, CONFIG_SHELL is bash and it inherits a
-       # broken ls alias from the environment.  This has actually
-       # happened.  Such a system could not be considered "sane".
-       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment" "$LINENO" 5
-     fi
-     if test "$2" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   as_fn_error $? "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-
-rm -f conftest.file
-
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# Expand $ac_aux_dir to an absolute path.
-am_aux_dir=`cd "$ac_aux_dir" && pwd`
-
-if test x"${MISSING+set}" != xset; then
-  MISSING="\${SHELL} '$am_aux_dir/missing'"
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if ${ac_cv_path_mkdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in mkdir gmkdir; do
-        for ac_exec_ext in '' $ac_executable_extensions; do
-          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
-          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-            'mkdir (GNU coreutils) '* | \
-            'mkdir (coreutils) '* | \
-            'mkdir (fileutils) '4.1*)
-              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-              break 3;;
-          esac
-        done
-       done
-  done
-IFS=$as_save_IFS
-
-fi
-
-  test -d ./--version && rmdir ./--version
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-       @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='isl-interface'
- VERSION='0'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-mkdir_p='$(MKDIR_P)'
-
-# We need awk for the "check" target (and possibly the TAP driver).  The
-# system "awk" is bad on some platforms.
-# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
-
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar  pax cpio none'
-
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-
-
-
-
-
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <https://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
-  fi
-fi
-
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=0;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX=$ac_ct_CXX
-  fi
-fi
-
-  fi
-fi
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
-$as_echo_n "checking whether the C++ compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-       ;;
-    [ab].out )
-       # We found the default executable, but exeext='' is most
-       # certainly right.
-       break;;
-    *.* )
-       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-       then :; else
-          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-       fi
-       # We set ac_cv_exeext here because the later test for it is not
-       # safe: cross compilers may not add the suffix if given an `-o'
-       # argument, so we may need to know it at that point already.
-       # Even if this section looks crufty: it has the advantage of
-       # actually working.
-       break;;
-    * )
-       break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C++ compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
-$as_echo_n "checking for C++ compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-         break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-       cross_compiling=yes
-    else
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C++ compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if ${ac_cv_cxx_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if ${ac_cv_prog_cxx_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-        CXXFLAGS="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
-$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
-cat > confinc.mk << 'END'
-am__doit:
-       @echo this is the am__doit target >confinc.out
-.PHONY: am__doit
-END
-am__include="#"
-am__quote=
-# BSD make does it like this.
-echo '.include "confinc.mk" # ignored' > confmf.BSD
-# Other make implementations (GNU, Solaris 10, AIX) do it like this.
-echo 'include confinc.mk # ignored' > confmf.GNU
-_am_result=no
-for s in GNU BSD; do
-  { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
-   (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }
-  case $?:`cat confinc.out 2>/dev/null` in #(
-  '0:this is the am__doit target') :
-    case $s in #(
-  BSD) :
-    am__include='.include' am__quote='"' ;; #(
-  *) :
-    am__include='include' am__quote='' ;;
-esac ;; #(
-  *) :
-     ;;
-esac
-  if test "$am__include" != "#"; then
-    _am_result="yes ($s style)"
-    break
-  fi
-done
-rm -f confinc.* confmf.*
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
-$as_echo "${_am_result}" >&6; }
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-
-depcc="$CXX"  am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CXX_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CXX_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
-else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
-   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-
-
-cross_compiling_build=no
-
-ac_build_tool_prefix=
-if test -n "$build"; then :
-  ac_build_tool_prefix="$build-"
-elif test -n "$build_alias"; then :
-  ac_build_tool_prefix="$build_alias-"
-fi
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-if test -n "$ac_build_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_build_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC_FOR_BUILD="${ac_build_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC_FOR_BUILD"; then
-  ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC_FOR_BUILD"; then
-  ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC_FOR_BUILD="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD
-if test -n "$ac_ct_CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5
-$as_echo "$ac_ct_CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC_FOR_BUILD" = x; then
-    CC_FOR_BUILD=""
-  else
-    case $cross_compiling_build:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD
-  fi
-else
-  CC_FOR_BUILD="$ac_cv_prog_CC_FOR_BUILD"
-fi
-
-if test -z "$CC_FOR_BUILD"; then
-          if test -n "$ac_build_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_build_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC_FOR_BUILD="${ac_build_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC_FOR_BUILD"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC_FOR_BUILD="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC_FOR_BUILD
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC_FOR_BUILD to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC_FOR_BUILD="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC_FOR_BUILD"; then
-  if test -n "$ac_build_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_build_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC_FOR_BUILD="$ac_build_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC_FOR_BUILD" && break
-  done
-fi
-if test -z "$CC_FOR_BUILD"; then
-  ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC_FOR_BUILD"; then
-  ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD
-if test -n "$ac_ct_CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5
-$as_echo "$ac_ct_CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC_FOR_BUILD" && break
-done
-
-  if test "x$ac_ct_CC_FOR_BUILD" = x; then
-    CC_FOR_BUILD=""
-  else
-    case $cross_compiling_build:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD
-  fi
-fi
-
-fi
-
-
-test -z "$CC_FOR_BUILD" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC_FOR_BUILD=yes
-else
-  GCC_FOR_BUILD=
-fi
-ac_test_CFLAGS=${CFLAGS_FOR_BUILD+set}
-ac_save_CFLAGS=$CFLAGS_FOR_BUILD
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD accepts -g" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD accepts -g... " >&6; }
-if ${ac_cv_build_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_build_prog_cc_g=no
-   CFLAGS_FOR_BUILD="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_build_prog_cc_g=yes
-else
-  CFLAGS_FOR_BUILD=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS_FOR_BUILD="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_build_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_g" >&5
-$as_echo "$ac_cv_build_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS_FOR_BUILD=$ac_save_CFLAGS
-elif test $ac_cv_build_prog_cc_g = yes; then
-  if test "$GCC_FOR_BUILD" = yes; then
-    CFLAGS_FOR_BUILD="-g -O2"
-  else
-    CFLAGS_FOR_BUILD="-g"
-  fi
-else
-  if test "$GCC_FOR_BUILD" = yes; then
-    CFLAGS_FOR_BUILD="-O2"
-  else
-    CFLAGS_FOR_BUILD=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to accept ISO C89" >&5
-$as_echo_n "checking for $CC_FOR_BUILD option to accept ISO C89... " >&6; }
-if ${ac_cv_build_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_build_prog_cc_c89=no
-ac_save_CC=$CC_FOR_BUILD
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC_FOR_BUILD="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_build_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_build_objext
-  test "x$ac_cv_build_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC_FOR_BUILD=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_build_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c89" >&5
-$as_echo "$ac_cv_build_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_build_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD understands -c and -o together" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD understands -c and -o together... " >&6; }
-if ${am_cv_build_prog_cc_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_build_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if { echo "$as_me:$LINENO: $CC_FOR_BUILD -c conftest.$ac_ext -o conftest2.$ac_build_objext" >&5
-   ($CC_FOR_BUILD -c conftest.$ac_ext -o conftest2.$ac_build_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && test -f conftest2.$ac_build_objext; then
-      : OK
-    else
-      am_cv_build_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_build_prog_cc_c_o" >&5
-$as_echo "$am_cv_build_prog_cc_c_o" >&6; }
-if test "$am_cv_build_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC_FOR_BUILD="$am_aux_dir/compile $CC_FOR_BUILD"
-fi
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-
-
-depcc="$CC_FOR_BUILD"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_build_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_build_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${BUILD_OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${BUILD_OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_build_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_build_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_build_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_build_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE_FOR_BUILD=depmode=$am_cv_build_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_build_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_build_TRUE=
-  am__fastdepCC_build_FALSE='#'
-else
-  am__fastdepCC_build_TRUE='#'
-  am__fastdepCC_build_FALSE=
-fi
-
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-       ;;
-    [ab].out )
-       # We found the default executable, but exeext='' is most
-       # certainly right.
-       break;;
-    *.* )
-       if test "${ac_cv_build_exeext+set}" = set && test "$ac_cv_build_exeext" != no;
-       then :; else
-          ac_cv_build_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-       fi
-       # We set ac_cv_exeext here because the later test for it is not
-       # safe: cross compilers may not add the suffix if given an `-o'
-       # argument, so we may need to know it at that point already.
-       # Even if this section looks crufty: it has the advantage of
-       # actually working.
-       break;;
-    * )
-       break;;
-  esac
-done
-test "$ac_cv_build_exeext" = no && ac_cv_build_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_build_exeext=$ac_cv_build_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_build_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_build_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-         break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_build_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_exeext" >&5
-$as_echo "$ac_cv_build_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-BUILD_EXEEXT=$ac_cv_build_exeext
-ac_build_exeext=$BUILD_EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling_build" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_build_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling_build=no
-  else
-    if test "$cross_compiling_build" = maybe; then
-       cross_compiling_build=yes
-    else
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--build'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling_build" >&5
-$as_echo "$cross_compiling_build" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_build_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_build_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_build_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_build_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_objext" >&5
-$as_echo "$ac_cv_build_objext" >&6; }
-BUILD_OBJEXT=$ac_cv_build_objext
-ac_build_objext=$BUILD_OBJEXT
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP_FOR_BUILD" && test -d "$CPP_FOR_BUILD"; then
-  CPP_FOR_BUILD=
-fi
-if test -z "$CPP_FOR_BUILD"; then
-  if ${ac_cv_build_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP_FOR_BUILD in "$CC_FOR_BUILD -E" "$CC_FOR_BUILD -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_build_prog_CPP=$CPP_FOR_BUILD
-
-fi
-  CPP_FOR_BUILD=$ac_cv_build_prog_CPP
-else
-  ac_cv_build_prog_CPP=$CPP_FOR_BUILD
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP_FOR_BUILD" >&5
-$as_echo "$CPP_FOR_BUILD" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP_FOR_BUILD\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
-$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
-if test -z "$CXXCPP"; then
-  if ${ac_cv_prog_CXXCPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CXXCPP=$CXXCPP
-
-fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
-$as_echo "$CXXCPP" >&6; }
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-
-
-save_cross_compiling=$cross_compiling
-save_ac_tool_prefix=$ac_tool_prefix
-cross_compiling=no
-ac_tool_prefix=
-
-ac_ext=cpp
-ac_cpp='$CXXCPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_build_compile='$CXX_FOR_BUILD -c $CXXFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_build_link='$CXX_FOR_BUILD -o conftest$ac_exeext $CXXFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX_FOR_BUILD"; then
-  if test -n "$CCC"; then
-    CXX_FOR_BUILD=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CXX_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX_FOR_BUILD"; then
-  ac_cv_prog_CXX_FOR_BUILD="$CXX_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CXX_FOR_BUILD="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CXX_FOR_BUILD=$ac_cv_prog_CXX_FOR_BUILD
-if test -n "$CXX_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX_FOR_BUILD" >&5
-$as_echo "$CXX_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX_FOR_BUILD" && break
-  done
-fi
-if test -z "$CXX_FOR_BUILD"; then
-  ac_ct_CXX_FOR_BUILD=$CXX_FOR_BUILD
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CXX_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX_FOR_BUILD"; then
-  ac_cv_prog_ac_ct_CXX_FOR_BUILD="$ac_ct_CXX_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CXX_FOR_BUILD="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CXX_FOR_BUILD=$ac_cv_prog_ac_ct_CXX_FOR_BUILD
-if test -n "$ac_ct_CXX_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX_FOR_BUILD" >&5
-$as_echo "$ac_ct_CXX_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX_FOR_BUILD" && break
-done
-
-  if test "x$ac_ct_CXX_FOR_BUILD" = x; then
-    CXX_FOR_BUILD="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX_FOR_BUILD=$ac_ct_CXX_FOR_BUILD
-  fi
-fi
-
-  fi
-fi
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
-set X $ac_build_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if ${ac_cv_cxx_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS_FOR_BUILD+set}
-ac_save_CXXFLAGS=$CXXFLAGS_FOR_BUILD
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX_FOR_BUILD accepts -g" >&5
-$as_echo_n "checking whether $CXX_FOR_BUILD accepts -g... " >&6; }
-if ${ac_cv_build_prog_cxx_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_build_prog_cxx_g=no
-   CXXFLAGS_FOR_BUILD="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_build_prog_cxx_g=yes
-else
-  CXXFLAGS_FOR_BUILD=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-        CXXFLAGS_FOR_BUILD="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_build_prog_cxx_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cxx_g" >&5
-$as_echo "$ac_cv_build_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS_FOR_BUILD=$ac_save_CXXFLAGS
-elif test $ac_cv_build_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS_FOR_BUILD="-g -O2"
-  else
-    CXXFLAGS_FOR_BUILD="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS_FOR_BUILD="-O2"
-  else
-    CXXFLAGS_FOR_BUILD=
-  fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS_FOR_BUILD'
-ac_build_compile='$CC -c $CFLAGS $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_build_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS_FOR_BUILD $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-depcc="$CXX_FOR_BUILD"  am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CXX_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CXX_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
-else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
-fi
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_build_compile='$CXX_FOR_BUILD -c $CXXFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_build_link='$CXX_FOR_BUILD -o conftest$ac_exeext $CXXFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
-$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
-if test -z "$CXXCPP_FOR_BUILD"; then
-  if ${ac_cv_build_prog_CXXCPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP_FOR_BUILD in "$CXX_FOR_BUILD -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_build_prog_CXXCPP=$CXXCPP_FOR_BUILD
-
-fi
-  CXXCPP_FOR_BUILD=$ac_cv_build_prog_CXXCPP
-else
-  ac_cv_build_prog_CXXCPP=$CXXCPP_FOR_BUILD
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP_FOR_BUILD" >&5
-$as_echo "$CXXCPP_FOR_BUILD" >&6; }
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C++ preprocessor \"$CXXCPP_FOR_BUILD\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS_FOR_BUILD'
-ac_build_compile='$CC -c $CFLAGS $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_build_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS_FOR_BUILD $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_tool_prefix=$save_ac_tool_prefix
-cross_compiling=$save_cross_compiling
-
-
-
-
-# extract_interface needs to be run on the build system.
-# Since this is the only target that is being built,
-# simply use the build compiler throughout.
-# This ensures that the clang configure checks are
-# performed using the right compiler.
-CXX="$CXX_FOR_BUILD"
-CXXCPP="$CXXCPP_FOR_BUILD"
-EXEEXT="$BUILD_EXEEXT"
-OBJEXT="$BUILD_OBJEXT"
-
-
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-       echo $CXX | $GREP -e "-std=" > /dev/null 2> /dev/null
-       if test $? -eq 0; then
-                 ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-  ac_success=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
-$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
-if ${ax_cv_cxx_compile_cxx11+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201103L
-
-#error "This is not a C++11 compiler"
-
-#else
-
-namespace cxx11
-{
-
-  namespace test_static_assert
-  {
-
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-  }
-
-  namespace test_final_override
-  {
-
-    struct Base
-    {
-      virtual void f() {}
-    };
-
-    struct Derived : public Base
-    {
-      virtual void f() override {}
-    };
-
-  }
-
-  namespace test_double_right_angle_brackets
-  {
-
-    template < typename T >
-    struct check {};
-
-    typedef check<void> single_type;
-    typedef check<check<void>> double_type;
-    typedef check<check<check<void>>> triple_type;
-    typedef check<check<check<check<void>>>> quadruple_type;
-
-  }
-
-  namespace test_decltype
-  {
-
-    int
-    f()
-    {
-      int a = 1;
-      decltype(a) b = 2;
-      return a + b;
-    }
-
-  }
-
-  namespace test_type_deduction
-  {
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static const bool value = true;
-    };
-
-    template < typename T1, typename T2 >
-    auto
-    add(T1 a1, T2 a2) -> decltype(a1 + a2)
-    {
-      return a1 + a2;
-    }
-
-    int
-    test(const int c, volatile int v)
-    {
-      static_assert(is_same<int, decltype(0)>::value == true, "");
-      static_assert(is_same<int, decltype(c)>::value == false, "");
-      static_assert(is_same<int, decltype(v)>::value == false, "");
-      auto ac = c;
-      auto av = v;
-      auto sumi = ac + av + 'x';
-      auto sumf = ac + av + 1.0;
-      static_assert(is_same<int, decltype(ac)>::value == true, "");
-      static_assert(is_same<int, decltype(av)>::value == true, "");
-      static_assert(is_same<int, decltype(sumi)>::value == true, "");
-      static_assert(is_same<int, decltype(sumf)>::value == false, "");
-      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-      return (sumf > 0.0) ? sumi : add(c, v);
-    }
-
-  }
-
-  namespace test_noexcept
-  {
-
-    int f() { return 0; }
-    int g() noexcept { return 0; }
-
-    static_assert(noexcept(f()) == false, "");
-    static_assert(noexcept(g()) == true, "");
-
-  }
-
-  namespace test_constexpr
-  {
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-    {
-      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-    }
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
-
-  }
-
-  namespace test_rvalue_references
-  {
-
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
-
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
-
-    void
-    test()
-    {
-      int i = 0;
-      const int c = 0;
-      static_assert(decltype(f(i))::value == 1, "");
-      static_assert(decltype(f(c))::value == 2, "");
-      static_assert(decltype(f(0))::value == 3, "");
-    }
-
-  }
-
-  namespace test_uniform_initialization
-  {
-
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
-
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
-
-  }
-
-  namespace test_lambdas
-  {
-
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
-
-    int
-    test2()
-    {
-      auto a = [](int i, int j){ return i + j; }(1, 2);
-      auto b = []() -> int { return '0'; }();
-      auto c = [=](){ return a + b; }();
-      auto d = [&](){ return c; }();
-      auto e = [a, &b](int x) mutable {
-        const auto identity = [](int y){ return y; };
-        for (auto i = 0; i < a; ++i)
-          a += b--;
-        return x + identity(a + b);
-      }(0);
-      return a + b + c + d + e;
-    }
-
-    int
-    test3()
-    {
-      const auto nullary = [](){ return 0; };
-      const auto unary = [](int x){ return x; };
-      using nullary_t = decltype(nullary);
-      using unary_t = decltype(unary);
-      const auto higher1st = [](nullary_t f){ return f(); };
-      const auto higher2nd = [unary](nullary_t f1){
-        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-      };
-      return higher1st(nullary) + higher2nd(nullary)(unary);
-    }
-
-  }
-
-  namespace test_variadic_templates
-  {
-
-    template <int...>
-    struct sum;
-
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
-
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
-
-    static_assert(sum<>::value == 0, "");
-    static_assert(sum<1>::value == 1, "");
-    static_assert(sum<23>::value == 23, "");
-    static_assert(sum<1, 2>::value == 3, "");
-    static_assert(sum<5, 5, 11>::value == 21, "");
-    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-
-  }
-
-  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-  // because of this.
-  namespace test_template_alias_sfinae
-  {
-
-    struct foo {};
-
-    template<typename T>
-    using member = typename T::member_type;
-
-    template<typename T>
-    void func(...) {}
-
-    template<typename T>
-    void func(member<T>*) {}
-
-    void test();
-
-    void test() { func<foo>(0); }
-
-  }
-
-}  // namespace cxx11
-
-#endif  // __cplusplus >= 201103L
-
-
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ax_cv_cxx_compile_cxx11=yes
-else
-  ax_cv_cxx_compile_cxx11=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
-$as_echo "$ax_cv_cxx_compile_cxx11" >&6; }
-  if test x$ax_cv_cxx_compile_cxx11 = xyes; then
-    ac_success=yes
-  fi
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test x$ac_success = xno; then
-    HAVE_CXX11=0
-  else
-    HAVE_CXX11=1
-
-$as_echo "#define HAVE_CXX11 1" >>confdefs.h
-
-  fi
-
-
-       else
-                 ax_cxx_compile_alternatives="11 0x"    ax_cxx_compile_cxx11_required=false
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-  ac_success=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
-$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
-if ${ax_cv_cxx_compile_cxx11+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201103L
-
-#error "This is not a C++11 compiler"
-
-#else
-
-namespace cxx11
-{
-
-  namespace test_static_assert
-  {
-
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-  }
-
-  namespace test_final_override
-  {
-
-    struct Base
-    {
-      virtual void f() {}
-    };
-
-    struct Derived : public Base
-    {
-      virtual void f() override {}
-    };
-
-  }
-
-  namespace test_double_right_angle_brackets
-  {
-
-    template < typename T >
-    struct check {};
-
-    typedef check<void> single_type;
-    typedef check<check<void>> double_type;
-    typedef check<check<check<void>>> triple_type;
-    typedef check<check<check<check<void>>>> quadruple_type;
-
-  }
-
-  namespace test_decltype
-  {
-
-    int
-    f()
-    {
-      int a = 1;
-      decltype(a) b = 2;
-      return a + b;
-    }
-
-  }
-
-  namespace test_type_deduction
-  {
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static const bool value = true;
-    };
-
-    template < typename T1, typename T2 >
-    auto
-    add(T1 a1, T2 a2) -> decltype(a1 + a2)
-    {
-      return a1 + a2;
-    }
-
-    int
-    test(const int c, volatile int v)
-    {
-      static_assert(is_same<int, decltype(0)>::value == true, "");
-      static_assert(is_same<int, decltype(c)>::value == false, "");
-      static_assert(is_same<int, decltype(v)>::value == false, "");
-      auto ac = c;
-      auto av = v;
-      auto sumi = ac + av + 'x';
-      auto sumf = ac + av + 1.0;
-      static_assert(is_same<int, decltype(ac)>::value == true, "");
-      static_assert(is_same<int, decltype(av)>::value == true, "");
-      static_assert(is_same<int, decltype(sumi)>::value == true, "");
-      static_assert(is_same<int, decltype(sumf)>::value == false, "");
-      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-      return (sumf > 0.0) ? sumi : add(c, v);
-    }
-
-  }
-
-  namespace test_noexcept
-  {
-
-    int f() { return 0; }
-    int g() noexcept { return 0; }
-
-    static_assert(noexcept(f()) == false, "");
-    static_assert(noexcept(g()) == true, "");
-
-  }
-
-  namespace test_constexpr
-  {
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-    {
-      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-    }
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
-
-  }
-
-  namespace test_rvalue_references
-  {
-
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
-
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
-
-    void
-    test()
-    {
-      int i = 0;
-      const int c = 0;
-      static_assert(decltype(f(i))::value == 1, "");
-      static_assert(decltype(f(c))::value == 2, "");
-      static_assert(decltype(f(0))::value == 3, "");
-    }
-
-  }
-
-  namespace test_uniform_initialization
-  {
-
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
-
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
-
-  }
-
-  namespace test_lambdas
-  {
-
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
-
-    int
-    test2()
-    {
-      auto a = [](int i, int j){ return i + j; }(1, 2);
-      auto b = []() -> int { return '0'; }();
-      auto c = [=](){ return a + b; }();
-      auto d = [&](){ return c; }();
-      auto e = [a, &b](int x) mutable {
-        const auto identity = [](int y){ return y; };
-        for (auto i = 0; i < a; ++i)
-          a += b--;
-        return x + identity(a + b);
-      }(0);
-      return a + b + c + d + e;
-    }
-
-    int
-    test3()
-    {
-      const auto nullary = [](){ return 0; };
-      const auto unary = [](int x){ return x; };
-      using nullary_t = decltype(nullary);
-      using unary_t = decltype(unary);
-      const auto higher1st = [](nullary_t f){ return f(); };
-      const auto higher2nd = [unary](nullary_t f1){
-        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-      };
-      return higher1st(nullary) + higher2nd(nullary)(unary);
-    }
-
-  }
-
-  namespace test_variadic_templates
-  {
-
-    template <int...>
-    struct sum;
-
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
-
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
-
-    static_assert(sum<>::value == 0, "");
-    static_assert(sum<1>::value == 1, "");
-    static_assert(sum<23>::value == 23, "");
-    static_assert(sum<1, 2>::value == 3, "");
-    static_assert(sum<5, 5, 11>::value == 21, "");
-    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-
-  }
-
-  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-  // because of this.
-  namespace test_template_alias_sfinae
-  {
-
-    struct foo {};
-
-    template<typename T>
-    using member = typename T::member_type;
-
-    template<typename T>
-    void func(...) {}
-
-    template<typename T>
-    void func(member<T>*) {}
-
-    void test();
-
-    void test() { func<foo>(0); }
-
-  }
-
-}  // namespace cxx11
-
-#endif  // __cplusplus >= 201103L
-
-
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ax_cv_cxx_compile_cxx11=yes
-else
-  ax_cv_cxx_compile_cxx11=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
-$as_echo "$ax_cv_cxx_compile_cxx11" >&6; }
-  if test x$ax_cv_cxx_compile_cxx11 = xyes; then
-    ac_success=yes
-  fi
-
-
-
-    if test x$ac_success = xno; then
-                for alternative in ${ax_cxx_compile_alternatives}; do
-      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
-        cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
-$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
-if eval \${$cachevar+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_CXX="$CXX"
-           CXX="$CXX $switch"
-           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201103L
-
-#error "This is not a C++11 compiler"
-
-#else
-
-namespace cxx11
-{
-
-  namespace test_static_assert
-  {
-
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-  }
-
-  namespace test_final_override
-  {
-
-    struct Base
-    {
-      virtual void f() {}
-    };
-
-    struct Derived : public Base
-    {
-      virtual void f() override {}
-    };
-
-  }
-
-  namespace test_double_right_angle_brackets
-  {
-
-    template < typename T >
-    struct check {};
-
-    typedef check<void> single_type;
-    typedef check<check<void>> double_type;
-    typedef check<check<check<void>>> triple_type;
-    typedef check<check<check<check<void>>>> quadruple_type;
-
-  }
-
-  namespace test_decltype
-  {
-
-    int
-    f()
-    {
-      int a = 1;
-      decltype(a) b = 2;
-      return a + b;
-    }
-
-  }
-
-  namespace test_type_deduction
-  {
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static const bool value = true;
-    };
-
-    template < typename T1, typename T2 >
-    auto
-    add(T1 a1, T2 a2) -> decltype(a1 + a2)
-    {
-      return a1 + a2;
-    }
-
-    int
-    test(const int c, volatile int v)
-    {
-      static_assert(is_same<int, decltype(0)>::value == true, "");
-      static_assert(is_same<int, decltype(c)>::value == false, "");
-      static_assert(is_same<int, decltype(v)>::value == false, "");
-      auto ac = c;
-      auto av = v;
-      auto sumi = ac + av + 'x';
-      auto sumf = ac + av + 1.0;
-      static_assert(is_same<int, decltype(ac)>::value == true, "");
-      static_assert(is_same<int, decltype(av)>::value == true, "");
-      static_assert(is_same<int, decltype(sumi)>::value == true, "");
-      static_assert(is_same<int, decltype(sumf)>::value == false, "");
-      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-      return (sumf > 0.0) ? sumi : add(c, v);
-    }
-
-  }
-
-  namespace test_noexcept
-  {
-
-    int f() { return 0; }
-    int g() noexcept { return 0; }
-
-    static_assert(noexcept(f()) == false, "");
-    static_assert(noexcept(g()) == true, "");
-
-  }
-
-  namespace test_constexpr
-  {
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-    {
-      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-    }
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
-
-  }
-
-  namespace test_rvalue_references
-  {
-
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
-
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
-
-    void
-    test()
-    {
-      int i = 0;
-      const int c = 0;
-      static_assert(decltype(f(i))::value == 1, "");
-      static_assert(decltype(f(c))::value == 2, "");
-      static_assert(decltype(f(0))::value == 3, "");
-    }
-
-  }
-
-  namespace test_uniform_initialization
-  {
-
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
-
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
-
-  }
-
-  namespace test_lambdas
-  {
-
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
-
-    int
-    test2()
-    {
-      auto a = [](int i, int j){ return i + j; }(1, 2);
-      auto b = []() -> int { return '0'; }();
-      auto c = [=](){ return a + b; }();
-      auto d = [&](){ return c; }();
-      auto e = [a, &b](int x) mutable {
-        const auto identity = [](int y){ return y; };
-        for (auto i = 0; i < a; ++i)
-          a += b--;
-        return x + identity(a + b);
-      }(0);
-      return a + b + c + d + e;
-    }
-
-    int
-    test3()
-    {
-      const auto nullary = [](){ return 0; };
-      const auto unary = [](int x){ return x; };
-      using nullary_t = decltype(nullary);
-      using unary_t = decltype(unary);
-      const auto higher1st = [](nullary_t f){ return f(); };
-      const auto higher2nd = [unary](nullary_t f1){
-        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-      };
-      return higher1st(nullary) + higher2nd(nullary)(unary);
-    }
-
-  }
-
-  namespace test_variadic_templates
-  {
-
-    template <int...>
-    struct sum;
-
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
-
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
-
-    static_assert(sum<>::value == 0, "");
-    static_assert(sum<1>::value == 1, "");
-    static_assert(sum<23>::value == 23, "");
-    static_assert(sum<1, 2>::value == 3, "");
-    static_assert(sum<5, 5, 11>::value == 21, "");
-    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-
-  }
-
-  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-  // because of this.
-  namespace test_template_alias_sfinae
-  {
-
-    struct foo {};
-
-    template<typename T>
-    using member = typename T::member_type;
-
-    template<typename T>
-    void func(...) {}
-
-    template<typename T>
-    void func(member<T>*) {}
-
-    void test();
-
-    void test() { func<foo>(0); }
-
-  }
-
-}  // namespace cxx11
-
-#endif  // __cplusplus >= 201103L
-
-
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  eval $cachevar=yes
-else
-  eval $cachevar=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-           CXX="$ac_save_CXX"
-fi
-eval ac_res=\$$cachevar
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-        if eval test x\$$cachevar = xyes; then
-          CXX="$CXX $switch"
-          if test -n "$CXXCPP" ; then
-            CXXCPP="$CXXCPP $switch"
-          fi
-          ac_success=yes
-          break
-        fi
-      done
-      if test x$ac_success = xyes; then
-        break
-      fi
-    done
-  fi
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test x$ax_cxx_compile_cxx11_required = xtrue; then
-    if test x$ac_success = xno; then
-      as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5
-    fi
-  fi
-  if test x$ac_success = xno; then
-    HAVE_CXX11=0
-    { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
-$as_echo "$as_me: No compiler with C++11 support was found" >&6;}
-  else
-    HAVE_CXX11=1
-
-$as_echo "#define HAVE_CXX11 1" >>confdefs.h
-
-  fi
-
-
-
-       fi
-
-
-# Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_shared=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
-else
-  enable_shared=no
-fi
-
-
-
-
-
-
-
-
-
-case `pwd` in
-  *\ * | *\    *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4.6.42-b88ce-dirty'
-macro_revision='2.4.6.42'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain=$ac_aux_dir/ltmain.sh
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO ""
-}
-
-case $ECHO in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test yes = "$GCC"; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return, which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD=$ac_prog
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test yes = "$with_gnu_ld"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD=$ac_dir/$ac_prog
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-       test no != "$with_gnu_ld" && break
-       ;;
-      *)
-       test yes != "$with_gnu_ld" && break
-       ;;
-      esac
-    fi
-  done
-  IFS=$lt_save_ifs
-else
-  lt_cv_path_LD=$LD # Let the user override the test with a path.
-fi
-fi
-
-LD=$lt_cv_path_LD
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM=$NM
-else
-  lt_nm_to_check=${ac_tool_prefix}nm
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS=$lt_save_ifs
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm=$ac_dir/$lt_tmp_nm
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
-       # Check to see if the nm accepts a BSD-compat flag.
-       # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
-       #   nm: unknown option "B" ignored
-       # Tru64's nm complains that /dev/null is an invalid object file
-       # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
-       case $build_os in
-       mingw*) lt_bad_file=conftest.nm/nofile ;;
-       *) lt_bad_file=/dev/null ;;
-       esac
-       case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
-       *$lt_bad_file* | *'Invalid file or object type'*)
-         lt_cv_path_NM="$tmp_nm -B"
-         break 2
-         ;;
-       *)
-         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-         */dev/null*)
-           lt_cv_path_NM="$tmp_nm -p"
-           break 2
-           ;;
-         *)
-           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-           continue # so that we can try to find one that supports BSD flags
-           ;;
-         esac
-         ;;
-       esac
-      fi
-    done
-    IFS=$lt_save_ifs
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test no != "$lt_cv_path_NM"; then
-  NM=$lt_cv_path_NM
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols -headers"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-
-  if test : != "$DUMPBIN"; then
-    NM=$DUMPBIN
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring=ABCD
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len" && \
-       test undefined != "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
-                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-             test 17 != "$i" # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n "$lt_cv_sys_max_cmd_len"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-
-fi
-
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test yes != "$GCC"; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test yes = "$GCC"; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# 'unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# that responds to the $file_magic_cmd with a given extended regex.
-# If you have 'file' or equivalent on your system and you're not sure
-# whether 'pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd* | bitrig*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-os2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh;
-  # decide which one to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd=$ECHO
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$AR" && break
-  done
-fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_AR" && break
-done
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-fi
-
-: ${AR=ar}
-
-
-
-
-
-
-# Use ARFLAGS variable as AR's operation code to sync the variable naming with
-# Automake.  If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have
-# higher priority because thats what people were doing historically (setting
-# ARFLAGS for automake and AR_FLAGS for libtool).  FIXME: Make the AR_FLAGS
-# variable obsoleted/removed.
-
-test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr}
-lt_ar_flags=$AR_FLAGS
-
-
-
-
-
-
-# Make AR_FLAGS overridable by 'make ARFLAGS='.  Don't try to run-time override
-# by AR_FLAGS because that was never working and AR_FLAGS is about to die.
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test 0 -eq "$ac_status"; then
-       # Ensure the archiver fails upon bogus file names.
-       rm -f conftest.$ac_objext libconftest.a
-       { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-       if test 0 -ne "$ac_status"; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test no = "$lt_cv_ar_at_file"; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  bitrig* | openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test ia64 = "$host_cpu"; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  # Gets list of data symbols to import.
-  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
-  # Adjust the below global symbol transforms to fixup imported variables.
-  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
-  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
-  lt_c_name_lib_hook="\
-  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
-  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
-else
-  # Disable hooks by default.
-  lt_cv_sys_global_symbol_to_import=
-  lt_cdecl_hook=
-  lt_c_name_hook=
-  lt_c_name_lib_hook=
-fi
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n"\
-$lt_cdecl_hook\
-" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
-$lt_c_name_hook\
-" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
-
-# Transform an extracted symbol line into symbol name with lib prefix and
-# symbol address.
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
-$lt_c_name_lib_hook\
-" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
-" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function,
-    # D for any global variable and I for any imported variable.
-    # Also find C++ and __fastcall symbols from MSVC++ or ICC,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
-"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
-"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
-"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
-"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[     ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-       mv -f "$nlist"T "$nlist"
-      else
-       rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-         cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
-/* DATA imports from DLLs on WIN32 can't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined __osf__
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-         # Now generate the symbol file.
-         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-         cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-         $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-         cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-         # Now try linking the two files.
-         mv conftest.$ac_objext conftstm.$ac_objext
-         lt_globsym_save_LIBS=$LIBS
-         lt_globsym_save_CFLAGS=$CFLAGS
-         LIBS=conftstm.$ac_objext
-         CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest$ac_exeext; then
-           pipe_works=yes
-         fi
-         LIBS=$lt_globsym_save_LIBS
-         CFLAGS=$lt_globsym_save_CFLAGS
-       else
-         echo "cannot find nm_test_func in $nlist" >&5
-       fi
-      else
-       echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test yes = "$pipe_works"; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
-else
-  with_sysroot=no
-fi
-
-
-lt_sysroot=
-case $with_sysroot in #(
- yes)
-   if test yes = "$GCC"; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
-$as_echo "$with_sysroot" >&6; }
-   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-   ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
-$as_echo_n "checking for a working dd... " >&6; }
-if ${ac_cv_path_lt_DD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  printf 0123456789abcdef0123456789abcdef >conftest.i
-cat conftest.i conftest.i >conftest2.i
-: ${lt_DD:=$DD}
-if test -z "$lt_DD"; then
-  ac_path_lt_DD_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in dd; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_lt_DD" || continue
-if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
-  cmp -s conftest.i conftest.out \
-  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
-fi
-      $ac_path_lt_DD_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_lt_DD"; then
-    :
-  fi
-else
-  ac_cv_path_lt_DD=$lt_DD
-fi
-
-rm -f conftest.i conftest2.i conftest.out
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
-$as_echo "$ac_cv_path_lt_DD" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
-$as_echo_n "checking how to truncate binary pipes... " >&6; }
-if ${lt_cv_truncate_bin+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  printf 0123456789abcdef0123456789abcdef >conftest.i
-cat conftest.i conftest.i >conftest2.i
-lt_cv_truncate_bin=
-if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
-  cmp -s conftest.i conftest.out \
-  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
-fi
-rm -f conftest.i conftest2.i conftest.out
-test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
-$as_echo "$lt_cv_truncate_bin" >&6; }
-
-
-
-
-
-
-
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-func_cc_basename ()
-{
-    for cc_temp in $*""; do
-      case $cc_temp in
-        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-        \-*) ;;
-        *) break;;
-      esac
-    done
-    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-}
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
-fi
-
-test no = "$enable_libtool_lock" || enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out what ABI is being produced by ac_compile, and set mode
-  # options accordingly.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-       HPUX_IA64_MODE=32
-       ;;
-      *ELF-64*)
-       HPUX_IA64_MODE=64
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test yes = "$lt_cv_prog_gnu_ld"; then
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -melf32bsmip"
-         ;;
-       *N32*)
-         LD="${LD-ld} -melf32bmipn32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -melf64bmip"
-       ;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -32"
-         ;;
-       *N32*)
-         LD="${LD-ld} -n32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -64"
-         ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-mips64*-*linux*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    emul=elf
-    case `/usr/bin/file conftest.$ac_objext` in
-      *32-bit*)
-       emul="${emul}32"
-       ;;
-      *64-bit*)
-       emul="${emul}64"
-       ;;
-    esac
-    case `/usr/bin/file conftest.$ac_objext` in
-      *MSB*)
-       emul="${emul}btsmip"
-       ;;
-      *LSB*)
-       emul="${emul}ltsmip"
-       ;;
-    esac
-    case `/usr/bin/file conftest.$ac_objext` in
-      *N32*)
-       emul="${emul}n32"
-       ;;
-    esac
-    LD="${LD-ld} -m $emul"
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.  Note that the listed cases only cover the
-  # situations where additional linker options are needed (such as when
-  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
-  # vice versa); the common cases where no linker options are needed do
-  # not appear in the list.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_i386_fbsd"
-           ;;
-         x86_64-*linux*)
-           case `/usr/bin/file conftest.o` in
-             *x86-64*)
-               LD="${LD-ld} -m elf32_x86_64"
-               ;;
-             *)
-               LD="${LD-ld} -m elf_i386"
-               ;;
-           esac
-           ;;
-         powerpc64le-*linux*)
-           LD="${LD-ld} -m elf32lppclinux"
-           ;;
-         powerpc64-*linux*)
-           LD="${LD-ld} -m elf32ppclinux"
-           ;;
-         s390x-*linux*)
-           LD="${LD-ld} -m elf_s390"
-           ;;
-         sparc64-*linux*)
-           LD="${LD-ld} -m elf32_sparc"
-           ;;
-       esac
-       ;;
-      *64-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_x86_64_fbsd"
-           ;;
-         x86_64-*linux*)
-           LD="${LD-ld} -m elf_x86_64"
-           ;;
-         powerpcle-*linux*)
-           LD="${LD-ld} -m elf64lppc"
-           ;;
-         powerpc-*linux*)
-           LD="${LD-ld} -m elf64ppc"
-           ;;
-         s390*-*linux*|s390*-*tpf*)
-           LD="${LD-ld} -m elf64_s390"
-           ;;
-         sparc*-*linux*)
-           LD="${LD-ld} -m elf64_sparc"
-           ;;
-       esac
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS=$CFLAGS
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test yes != "$lt_cv_cc_needs_belf"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS=$SAVE_CFLAGS
-  fi
-  ;;
-*-*solaris*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*|x86_64-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD=${LD-ld}_sol2
-        fi
-        ;;
-      *)
-       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-         LD="${LD-ld} -64"
-       fi
-       ;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks=$enable_libtool_lock
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MANIFEST_TOOL"; then
-  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-  # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
-  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-    MANIFEST_TOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-  fi
-else
-  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-fi
-
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&5
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test yes != "$lt_cv_path_mainfest_tool"; then
-  MANIFEST_TOOL=:
-fi
-
-
-
-
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "$LT_MULTI_MODULE"; then
-       # By default we will add the -single_module flag. You can override
-       # by either setting the environment variable LT_MULTI_MODULE
-       # non-empty at configure time, or by adding -multi_module to the
-       # link flags.
-       rm -rf libconftest.dylib*
-       echo "int foo(void){return 1;}" > conftest.c
-       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-       # If there is a non-empty error log, and "single_module"
-       # appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-         cat conftest.err >&5
-       # Otherwise, if the output was created with a 0 exit code from
-       # the compiler, it worked.
-       elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
-         lt_cv_apple_cc_single_mod=yes
-       else
-         cat conftest.err >&5
-       fi
-       rm -rf libconftest.dylib*
-       rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-       LDFLAGS=$save_LDFLAGS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5
-      $AR $AR_FLAGS libconftest.a conftest.o 2>&5
-      echo "$RANLIB libconftest.a" >&5
-      $RANLIB libconftest.a 2>&5
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-       cat conftest.err >&5
-      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
-       lt_cv_ld_force_load=yes
-      else
-       cat conftest.err >&5
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-       10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-       10.[012][,.]*)
-         _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-       10.*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test yes = "$lt_cv_apple_cc_single_mod"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test yes = "$lt_cv_ld_exported_symbols_list"; then
-      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
-    fi
-    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-# func_munge_path_list VARIABLE PATH
-# -----------------------------------
-# VARIABLE is name of variable containing _space_ separated list of
-# directories to be munged by the contents of PATH, which is string
-# having a format:
-# "DIR[:DIR]:"
-#       string "DIR[ DIR]" will be prepended to VARIABLE
-# ":DIR[:DIR]"
-#       string "DIR[ DIR]" will be appended to VARIABLE
-# "DIRP[:DIRP]::[DIRA:]DIRA"
-#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
-#       "DIRA[ DIRA]" will be appended to VARIABLE
-# "DIR[:DIR]"
-#       VARIABLE will be replaced by "DIR[ DIR]"
-func_munge_path_list ()
-{
-    case x$2 in
-    x)
-        ;;
-    *:)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
-        ;;
-    x:*)
-        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    *::*)
-        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
-        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
-        ;;
-    *)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    esac
-}
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-func_stripname_cnf ()
-{
-  case $2 in
-  .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;;
-  *)  func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;;
-  esac
-} # func_stripname_cnf
-
-
-
-
-
-# Set options
-
-
-
-        enable_dlopen=no
-
-
-  enable_win32_dll=no
-
-
-
-  # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_static=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for lt_pkg in $withval; do
-       IFS=$lt_save_ifs
-       if test "X$lt_pkg" = "X$lt_p"; then
-         pic_mode=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
-else
-  pic_mode=default
-fi
-
-
-
-
-
-
-
-
-  # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_fast_install=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-
-
-
-
-
-  shared_archive_member_spec=
-case $host,$enable_shared in
-power*-*-aix[5-9]*,yes)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
-$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
-
-# Check whether --with-aix-soname was given.
-if test "${with_aix_soname+set}" = set; then :
-  withval=$with_aix_soname; case $withval in
-    aix|svr4|both)
-      ;;
-    *)
-      as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5
-      ;;
-    esac
-    lt_cv_with_aix_soname=$with_aix_soname
-else
-  if ${lt_cv_with_aix_soname+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_with_aix_soname=aix
-fi
-
-    with_aix_soname=$lt_cv_with_aix_soname
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
-$as_echo "$with_aix_soname" >&6; }
-  if test aix != "$with_aix_soname"; then
-    # For the AIX way of multilib, we name the shared archive member
-    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
-    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
-    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
-    # the AIX toolchain works better with OBJECT_MODE set (default 32).
-    if test 64 = "${OBJECT_MODE-32}"; then
-      shared_archive_member_spec=shr_64
-    else
-      shared_archive_member_spec=shr
-    fi
-  fi
-  ;;
-*)
-  with_aix_soname=aix
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS=$ltmain
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}"; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test set != "${COLLECT_NAMES+set}"; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a '.a' archive for static linking (except MSVC and
-# ICC, which need '.lib').
-libext=a
-
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-old_CC=$CC
-old_CFLAGS=$CFLAGS
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-func_cc_basename $compiler
-cc_basename=$func_cc_basename_result
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD=$MAGIC_CMD
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/${ac_tool_prefix}file"; then
-      lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
-  done
-  IFS=$lt_save_ifs
-  MAGIC_CMD=$lt_save_MAGIC_CMD
-  ;;
-esac
-fi
-
-MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD=$MAGIC_CMD
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/file"; then
-      lt_cv_path_MAGIC_CMD=$ac_dir/"file"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
-  done
-  IFS=$lt_save_ifs
-  MAGIC_CMD=$lt_save_MAGIC_CMD
-  ;;
-esac
-fi
-
-MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC=$CC
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-
-lt_prog_compiler_no_builtin_flag=
-
-if test yes = "$GCC"; then
-  case $cc_basename in
-  nvcc*)
-    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-  *)
-    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-  esac
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"  ## exclude from sc_useless_quotes_in_assignment
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-
-
-
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-
-  if test yes = "$GCC"; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test ia64 = "$host_cpu"; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static='-Bstatic'
-      fi
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the '-m68020' flag to GCC prevents building anything better,
-            # like '-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      case $host_os in
-      os2*)
-       lt_prog_compiler_static='$wl-static'
-       ;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-       # +Z the default
-       ;;
-      *)
-       lt_prog_compiler_pic='-fPIC'
-       ;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl='-Xlinker '
-      if test -n "$lt_prog_compiler_pic"; then
-        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test ia64 = "$host_cpu"; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static='-Bstatic'
-      else
-       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      case $cc_basename in
-      nagfor*)
-        # NAG Fortran compiler
-        lt_prog_compiler_wl='-Wl,-Wl,,'
-        lt_prog_compiler_pic='-PIC'
-        lt_prog_compiler_static='-Bstatic'
-        ;;
-      esac
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      case $host_os in
-      os2*)
-       lt_prog_compiler_static='$wl-static'
-       ;;
-      esac
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       # +Z the default
-       ;;
-      *)
-       lt_prog_compiler_pic='+Z'
-       ;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='$wl-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-      case $cc_basename in
-      # old Intel for x86_64, which still supported -KPIC.
-      ecc*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-KPIC'
-       lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fPIC'
-       lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='--shared'
-       lt_prog_compiler_static='--static'
-       ;;
-      nagfor*)
-       # NAG Fortran compiler
-       lt_prog_compiler_wl='-Wl,-Wl,,'
-       lt_prog_compiler_pic='-PIC'
-       lt_prog_compiler_static='-Bstatic'
-       ;;
-      tcc*)
-       # Fabrice Bellard et al's Tiny C Compiler
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fPIC'
-       lt_prog_compiler_static='-static'
-       ;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-       # which looks to be a dead project)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fpic'
-       lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-qpic'
-       lt_prog_compiler_static='-qstaticlink'
-       ;;
-      *)
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-         # Sun Fortran 8.3 passes all unrecognized flags to the linker
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl=''
-         ;;
-       *Sun\ F* | *Sun*Fortran*)
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl='-Qoption ld '
-         ;;
-       *Sun\ C*)
-         # Sun C 5.9
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl='-Wl,'
-         ;;
-        *Intel*\ [CF]*Compiler*)
-         lt_prog_compiler_wl='-Wl,'
-         lt_prog_compiler_pic='-fPIC'
-         lt_prog_compiler_static='-static'
-         ;;
-       *Portland\ Group*)
-         lt_prog_compiler_wl='-Wl,'
-         lt_prog_compiler_pic='-fpic'
-         lt_prog_compiler_static='-Bstatic'
-         ;;
-       esac
-       ;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-       lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-       lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       lt_prog_compiler_pic='-Kconform_pic'
-       lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms that do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"  ## exclude from sc_useless_quotes_in_assignment
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test yes = "$lt_cv_prog_compiler_pic_works"; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-
-
-
-
-
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS=$LDFLAGS
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS=$save_LDFLAGS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test yes = "$lt_cv_prog_compiler_static_works"; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links=nottested
-if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test no = "$hard_links"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ' (' and ')$', so one must not match beginning or
-  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
-  # as well as any symbol that contains 'd'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++ or Intel C++ Compiler.
-    if test yes != "$GCC"; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
-    with_gnu_ld=yes
-    ;;
-  openbsd* | bitrig*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test yes = "$with_gnu_ld"; then
-    case $host_os in
-      aix*)
-       # The AIX port of GNU ld has always aspired to compatibility
-       # with the native linker.  However, as the warning in the GNU ld
-       # block says, versions before 2.19.5* couldn't really create working
-       # shared libraries, regardless of the interface used.
-       case `$LD -v 2>&1` in
-         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-         *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-         *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-         *)
-           lt_use_gnu_ld_interface=yes
-           ;;
-       esac
-       ;;
-      *)
-       lt_use_gnu_ld_interface=yes
-       ;;
-    esac
-  fi
-
-  if test yes = "$lt_use_gnu_ld_interface"; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='$wl'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-    export_dynamic_flag_spec='$wl--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test ia64 != "$host_cpu"; then
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       allow_undefined_flag=unsupported
-       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-       # support --undefined.  This deserves some investigation.  FIXME
-       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='$wl--export-all-symbols'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-       # If the export-symbols file already is a .def file, use it as
-       # is; otherwise, prepend EXPORTS...
-       archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[   ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
-          cp $export_symbols $output_objdir/$soname.def;
-        else
-          echo EXPORTS > $output_objdir/$soname.def;
-          cat $export_symbols >> $output_objdir/$soname.def;
-        fi~
-        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-      link_all_deplibs=yes
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      shrext_cmds=.dll
-      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       prefix_cmds="$SED"~
-       if test EXPORTS = "`$SED 1q $export_symbols`"; then
-         prefix_cmds="$prefix_cmds -e 1d";
-       fi~
-       prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-       cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-      enable_shared_with_static_runtimes=yes
-      file_list_spec='@'
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='$wl-rpath,$libdir'
-      export_dynamic_flag_spec='$wl-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test linux-dietlibc = "$host_os"; then
-       case $cc_basename in
-         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
-       esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-        && test no = "$tmp_diet"
-      then
-       tmp_addflag=' $pic_flag'
-       tmp_sharedflag='-shared'
-       case $cc_basename,$host_cpu in
-        pgcc*)                         # Portland Group C compiler
-         whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         tmp_addflag=' $pic_flag'
-         ;;
-       pgf77* | pgf90* | pgf95* | pgfortran*)
-                                       # Portland Group f77 and f90 compilers
-         whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         tmp_addflag=' $pic_flag -Mnomain' ;;
-       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
-         tmp_addflag=' -i_dynamic' ;;
-       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
-         tmp_addflag=' -i_dynamic -nofor_main' ;;
-       ifc* | ifort*)                  # Intel Fortran compiler
-         tmp_addflag=' -nofor_main' ;;
-       lf95*)                          # Lahey Fortran 8.1
-         whole_archive_flag_spec=
-         tmp_sharedflag='--shared' ;;
-        nagfor*)                        # NAGFOR 5.3
-          tmp_sharedflag='-Wl,-shared' ;;
-       xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-         tmp_sharedflag='-qmkshrobj'
-         tmp_addflag= ;;
-       nvcc*)  # Cuda Compiler Driver 2.2
-         whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         compiler_needs_object=yes
-         ;;
-       esac
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ C*)                       # Sun C 5.9
-         whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         compiler_needs_object=yes
-         tmp_sharedflag='-G' ;;
-       *Sun\ F*)                       # Sun Fortran 8.3
-         tmp_sharedflag='-G' ;;
-       esac
-       archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-
-        if test yes = "$supports_anon_versioning"; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-            echo "local: *; };" >> $output_objdir/$libname.ver~
-            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
-        fi
-
-       case $cc_basename in
-       tcc*)
-         export_dynamic_flag_spec='-rdynamic'
-         ;;
-       xlf* | bgf* | bgxlf* | mpixlf*)
-         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-         whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-         hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-         archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-         if test yes = "$supports_anon_versioning"; then
-           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-              echo "local: *; };" >> $output_objdir/$libname.ver~
-              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-         fi
-         ;;
-       esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-       wlarc=
-      else
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-       ;;
-       *)
-         # For security reasons, it is highly recommended that you always
-         # use absolute paths for naming shared libraries, and exclude the
-         # DT_RUNPATH tag from executables and libraries.  But doing so
-         # requires that you compile everything twice, which is a pain.
-         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-           hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-           archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-           archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-         else
-           ld_shlibs=no
-         fi
-       ;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test no = "$ld_shlibs"; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
-       # Neither direct hardcoding nor static linking is supported with a
-       # broken collect2.
-       hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test ia64 = "$host_cpu"; then
-       # On IA64, the linker does run time linking by default, so we don't
-       # have to do anything special.
-       aix_use_runtimelinking=no
-       exp_sym_flag='-Bexport'
-       no_entry_flag=
-      else
-       # If we're using GNU nm, then we don't want the "-C" option.
-       # -C means demangle to GNU nm, but means don't demangle to AIX nm.
-       # Without the "-l" option, or with the "-B" option, AIX nm treats
-       # weak defined symbols like other global defined symbols, whereas
-       # GNU nm marks them as "W".
-       # While the 'weak' keyword is ignored in the Export File, we need
-       # it in the Import File for the 'aix-soname' feature, so we have
-       # to replace the "-B" option with "-P" for AIX nm.
-       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
-       else
-         export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
-       fi
-       aix_use_runtimelinking=no
-
-       # Test if we are trying to use run time linking or normal
-       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-       # have runtime linking enabled, and use it for executables.
-       # For shared libraries, we enable/disable runtime linking
-       # depending on the kind of the shared library created -
-       # when "with_aix_soname,aix_use_runtimelinking" is:
-       # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
-       # "aix,yes"  lib.so          shared, rtl:yes, for executables
-       #            lib.a           static archive
-       # "both,no"  lib.so.V(shr.o) shared, rtl:yes
-       #            lib.a(lib.so.V) shared, rtl:no,  for executables
-       # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
-       #            lib.a(lib.so.V) shared, rtl:no
-       # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
-       #            lib.a           static archive
-       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-         for ld_flag in $LDFLAGS; do
-         if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
-           aix_use_runtimelinking=yes
-           break
-         fi
-         done
-         if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
-           # With aix-soname=svr4, we create the lib.so.V shared archives only,
-           # so we don't have lib.a shared libs to link our executables.
-           # We have to force runtime linking in this case.
-           aix_use_runtimelinking=yes
-           LDFLAGS="$LDFLAGS -Wl,-brtl"
-         fi
-         ;;
-       esac
-
-       exp_sym_flag='-bexport'
-       no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='$wl-f,'
-      case $with_aix_soname,$aix_use_runtimelinking in
-      aix,*) ;; # traditional, no import file
-      svr4,* | *,yes) # use import file
-       # The Import File defines what to hardcode.
-       hardcode_direct=no
-       hardcode_direct_absolute=no
-       ;;
-      esac
-
-      if test yes = "$GCC"; then
-       case $host_os in aix4.[012]|aix4.[012].*)
-       # We only want to do this on AIX 4.2 and lower, the check
-       # below for broken collect2 doesn't work under 4.3+
-         collect2name=`$CC -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-         # We have reworked collect2
-         :
-         else
-         # We have old collect2
-         hardcode_direct=unsupported
-         # It fails to find uninstalled libraries when the uninstalled
-         # path is not listed in the libpath.  Setting hardcode_minus_L
-         # to unsupported forces relinking
-         hardcode_minus_L=yes
-         hardcode_libdir_flag_spec='-L$libdir'
-         hardcode_libdir_separator=
-         fi
-         ;;
-       esac
-       shared_flag='-shared'
-       if test yes = "$aix_use_runtimelinking"; then
-         shared_flag="$shared_flag "'$wl-G'
-       fi
-       # Need to ensure runtime linking is disabled for the traditional
-       # shared library, or the linker may eventually find shared libraries
-       # /with/ Import File - we do not want to mix them.
-       shared_flag_aix='-shared'
-       shared_flag_svr4='-shared $wl-G'
-      else
-       # not using gcc
-       if test ia64 = "$host_cpu"; then
-       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-       # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-       else
-         if test yes = "$aix_use_runtimelinking"; then
-           shared_flag='$wl-G'
-         else
-           shared_flag='$wl-bM:SRE'
-         fi
-         shared_flag_aix='$wl-bM:SRE'
-         shared_flag_svr4='$wl-G'
-       fi
-      fi
-
-      export_dynamic_flag_spec='$wl-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
-       # Warning - without using the other runtime loading flags (-brtl),
-       # -berok will link without error, but may produce a broken library.
-       allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test set = "${lt_cv_aix_libpath+set}"; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=/usr/lib:/lib
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
-      else
-       if test ia64 = "$host_cpu"; then
-         hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
-         allow_undefined_flag="-z nodefs"
-         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
-       else
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test set = "${lt_cv_aix_libpath+set}"; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=/usr/lib:/lib
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
-         # Warning - without using the other run time loading flags,
-         # -berok will link without error, but may produce a broken library.
-         no_undefined_flag=' $wl-bernotok'
-         allow_undefined_flag=' $wl-berok'
-         if test yes = "$with_gnu_ld"; then
-           # We only use this code for GNU lds that support --whole-archive.
-           whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
-         else
-           # Exported symbols can be pulled into shared objects from archives
-           whole_archive_flag_spec='$convenience'
-         fi
-         archive_cmds_need_lc=yes
-         archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
-         # -brtl affects multiple linker settings, -berok does not and is overridden later
-         compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
-         if test svr4 != "$with_aix_soname"; then
-           # This is similar to how AIX traditionally builds its shared libraries.
-           archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
-         fi
-         if test aix != "$with_aix_soname"; then
-           archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
-         else
-           # used by -dlpreopen to get the symbols
-           archive_expsym_cmds="$archive_expsym_cmds"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
-         fi
-         archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d'
-       fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++ or Intel C++ Compiler.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl* | icl*)
-       # Native MSVC or ICC
-       hardcode_libdir_flag_spec=' '
-       allow_undefined_flag=unsupported
-       always_export_symbols=yes
-       file_list_spec='@'
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=.dll
-       # FIXME: Setting linknames here is a bad hack.
-       archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
-       archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[   ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
-            cp "$export_symbols" "$output_objdir/$soname.def";
-            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
-          else
-            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
-          fi~
-          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-          linknames='
-       # The linker will not automatically build a static lib if we build a DLL.
-       # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-       enable_shared_with_static_runtimes=yes
-       exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-       export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-       # Don't use ranlib
-       old_postinstall_cmds='chmod 644 $oldlib'
-       postlink_cmds='lt_outputfile="@OUTPUT@"~
-          lt_tool_outputfile="@TOOL_OUTPUT@"~
-          case $lt_outputfile in
-            *.exe|*.EXE) ;;
-            *)
-              lt_outputfile=$lt_outputfile.exe
-              lt_tool_outputfile=$lt_tool_outputfile.exe
-              ;;
-          esac~
-          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
-            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-            $RM "$lt_outputfile.manifest";
-          fi'
-       ;;
-      *)
-       # Assume MSVC and ICC wrapper
-       hardcode_libdir_flag_spec=' '
-       allow_undefined_flag=unsupported
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=.dll
-       # FIXME: Setting linknames here is a bad hack.
-       archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-       # The linker will automatically build a .lib file if we build a DLL.
-       old_archive_from_new_cmds='true'
-       # FIXME: Should let the user specify the lib program.
-       old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-       enable_shared_with_static_runtimes=yes
-       ;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  if test yes = "$lt_cv_ld_force_load"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
-  else
-    whole_archive_flag_spec=''
-  fi
-  link_all_deplibs=yes
-  allow_undefined_flag=$_lt_dar_allow_undefined
-  case $cc_basename in
-     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test yes = "$_lt_dar_can_shared"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
-    archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
-    module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
-
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test yes = "$GCC"; then
-       archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-      else
-       archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='$wl+b $wl$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='$wl-E'
-      ;;
-
-    hpux10*)
-      if test yes,no = "$GCC,$with_gnu_ld"; then
-       archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test no = "$with_gnu_ld"; then
-       hardcode_libdir_flag_spec='$wl+b $wl$libdir'
-       hardcode_libdir_separator=:
-       hardcode_direct=yes
-       hardcode_direct_absolute=yes
-       export_dynamic_flag_spec='$wl-E'
-       # hardcode_minus_L: Not really in the search PATH,
-       # but as the default location of the library.
-       hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test yes,no = "$GCC,$with_gnu_ld"; then
-       case $host_cpu in
-       hppa*64*)
-         archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       esac
-      else
-       case $host_cpu in
-       hppa*64*)
-         archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-
-         # Older versions of the 11.00 compiler do not understand -b yet
-         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler__b=no
-   save_LDFLAGS=$LDFLAGS
-   LDFLAGS="$LDFLAGS -b"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler__b=yes
-       fi
-     else
-       lt_cv_prog_compiler__b=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS=$save_LDFLAGS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
-
-if test yes = "$lt_cv_prog_compiler__b"; then
-    archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-else
-    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-fi
-
-         ;;
-       esac
-      fi
-      if test no = "$with_gnu_ld"; then
-       hardcode_libdir_flag_spec='$wl+b $wl$libdir'
-       hardcode_libdir_separator=:
-
-       case $host_cpu in
-       hppa*64*|ia64*)
-         hardcode_direct=no
-         hardcode_shlibpath_var=no
-         ;;
-       *)
-         hardcode_direct=yes
-         hardcode_direct_absolute=yes
-         export_dynamic_flag_spec='$wl-E'
-
-         # hardcode_minus_L: Not really in the search PATH,
-         # but as the default location of the library.
-         hardcode_minus_L=yes
-         ;;
-       esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test yes = "$GCC"; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-       # Try to use the -exported_symbol ld option, if it does not
-       # work, assume that -exports_file does not work either and
-       # implicitly export all symbols.
-       # This should be the same for all languages, so no per-tag cache variable.
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS=$LDFLAGS
-          LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
-          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS=$save_LDFLAGS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-       if test yes = "$lt_cv_irix_exported_symbol"; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
-       fi
-      else
-       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    linux*)
-      case $cc_basename in
-      tcc*)
-       # Fabrice Bellard et al's Tiny C Compiler
-       ld_shlibs=yes
-       archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       ;;
-      esac
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd* | bitrig*)
-      if test -f /usr/libexec/ld.so; then
-       hardcode_direct=yes
-       hardcode_shlibpath_var=no
-       hardcode_direct_absolute=yes
-       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
-         hardcode_libdir_flag_spec='$wl-rpath,$libdir'
-         export_dynamic_flag_spec='$wl-E'
-       else
-         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         hardcode_libdir_flag_spec='$wl-rpath,$libdir'
-       fi
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      shrext_cmds=.dll
-      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       prefix_cmds="$SED"~
-       if test EXPORTS = "`$SED 1q $export_symbols`"; then
-         prefix_cmds="$prefix_cmds -e 1d";
-       fi~
-       prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-       cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-      enable_shared_with_static_runtimes=yes
-      file_list_spec='@'
-      ;;
-
-    osf3*)
-      if test yes = "$GCC"; then
-       allow_undefined_flag=' $wl-expect_unresolved $wl\*'
-       archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-      else
-       allow_undefined_flag=' -expect_unresolved \*'
-       archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)     # as osf3* with the addition of -msym flag
-      if test yes = "$GCC"; then
-       allow_undefined_flag=' $wl-expect_unresolved $wl\*'
-       archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-       hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      else
-       allow_undefined_flag=' -expect_unresolved \*'
-       archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
-
-       # Both c and cxx compiler support -rpath directly
-       hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test yes = "$GCC"; then
-       wlarc='$wl'
-       archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-       case `$CC -V 2>&1` in
-       *"Compilers 5.0"*)
-         wlarc=''
-         archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-         ;;
-       *)
-         wlarc='$wl'
-         archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-         ;;
-       esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-       # The compiler driver will combine and reorder linker options,
-       # but understands '-z linker_flag'.  GCC discards it without '$wl',
-       # but is careful enough not to reorder.
-       # Supported since Solaris 2.6 (maybe 2.5.1?)
-       if test yes = "$GCC"; then
-         whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
-       else
-         whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-       fi
-       ;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test sequent = "$host_vendor"; then
-       # Use $CC to link under sequent, because it throws in some extra .o
-       # files that make .init and .fini sections work.
-       archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-       sni)
-         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         hardcode_direct=yes # is this really true???
-       ;;
-       siemens)
-         ## LD is ld it makes a PLAMLIB
-         ## CC just makes a GrossModule.
-         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-         reload_cmds='$CC -r -o $output$reload_objs'
-         hardcode_direct=no
-        ;;
-       motorola)
-         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-       ;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-       hardcode_shlibpath_var=no
-       runpath_var=LD_RUN_PATH
-       hardcode_runpath_var=yes
-       ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='$wl-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test yes = "$GCC"; then
-       archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We CANNOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='$wl-z,text'
-      allow_undefined_flag='$wl-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='$wl-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='$wl-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test yes = "$GCC"; then
-       archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test sni = "$host_vendor"; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-       export_dynamic_flag_spec='$wl-Blargedynsym'
-       ;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test no = "$ld_shlibs" && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test yes,yes = "$GCC,$enable_shared"; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-         soname=conftest
-         lib=conftest
-         libobjs=conftest.$ac_objext
-         deplibs=
-         wl=$lt_prog_compiler_wl
-         pic_flag=$lt_prog_compiler_pic
-         compiler_flags=-v
-         linker_flags=-v
-         verstring=
-         output_objdir=.
-         libname=conftest
-         lt_save_allow_undefined_flag=$allow_undefined_flag
-         allow_undefined_flag=
-         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-         then
-           lt_cv_archive_cmds_need_lc=no
-         else
-           lt_cv_archive_cmds_need_lc=yes
-         fi
-         allow_undefined_flag=$lt_save_allow_undefined_flag
-       else
-         cat conftest.err 1>&5
-       fi
-       $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test yes = "$GCC"; then
-  case $host_os in
-    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
-    *) lt_awk_arg='/^libraries:/' ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
-    *) lt_sed_strip_eq='s|=/|/|g' ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary...
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  # ...but if some path component already ends with the multilib dir we assume
-  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
-  case "$lt_multi_os_dir; $lt_search_path_spec " in
-  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
-    lt_multi_os_dir=
-    ;;
-  esac
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
-    elif test -n "$lt_multi_os_dir"; then
-      test -d "$lt_sys_path" && \
-       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS = " "; FS = "/|\n";} {
-  lt_foo = "";
-  lt_count = 0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo = "/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's|/\([A-Za-z]:\)|\1|g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=.so
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='$libname$release$shared_ext$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test ia64 = "$host_cpu"; then
-    # AIX 5 supports IA64
-    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line '#! .'.  This would cause the generated library to
-    # depend on '.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-          echo ' yes '
-          echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
-       :
-      else
-       can_build_shared=no
-      fi
-      ;;
-    esac
-    # Using Import Files as archive members, it is possible to support
-    # filename-based versioning of shared library archives on AIX. While
-    # this would work for both with and without runtime linking, it will
-    # prevent static linking of such archives. So we do filename-based
-    # shared library versioning with .so extension only, which is used
-    # when both runtime linking and shared linking is enabled.
-    # Unfortunately, runtime linking may impact performance, so we do
-    # not want this to be the default eventually. Also, we use the
-    # versioned .so libs for executables only if there is the -brtl
-    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
-    # To allow for filename-based versioning support, we need to create
-    # libNAME.so.V as an archive file, containing:
-    # *) an Import File, referring to the versioned filename of the
-    #    archive as well as the shared archive member, telling the
-    #    bitwidth (32 or 64) of that shared object, and providing the
-    #    list of exported symbols of that shared object, eventually
-    #    decorated with the 'weak' keyword
-    # *) the shared object with the F_LOADONLY flag set, to really avoid
-    #    it being seen by the linker.
-    # At run time we better use the real file rather than another symlink,
-    # but for link time we create the symlink libNAME.so -> libNAME.so.V
-
-    case $with_aix_soname,$aix_use_runtimelinking in
-    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    aix,yes) # traditional libtool
-      dynamic_linker='AIX unversionable lib.so'
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      ;;
-    aix,no) # traditional AIX only
-      dynamic_linker='AIX lib.a(lib.so.V)'
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      ;;
-    svr4,*) # full svr4 only
-      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,yes) # both, prefer svr4
-      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # unpreferred sharedlib libNAME.a needs extra handling
-      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
-      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,no) # both, prefer aix
-      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
-      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
-      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
-      ;;
-    esac
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='$libname$shared_ext'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl* | *,icl*)
-    # Native MSVC or ICC
-    libname_spec='$name'
-    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-    library_names_spec='$libname.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec=$LIB
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC and ICC wrapper
-    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$major$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      soname_spec='$libname$release$shared_ext$major'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    if test 32 = "$HPUX_IA64_MODE"; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
-    fi
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-       if test yes = "$lt_cv_prog_gnu_ld"; then
-               version_type=linux # correct to gnu/linux during the next big refactor
-       else
-               version_type=irix
-       fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
-  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-linux*android*)
-  version_type=none # Android doesn't support versioned libraries.
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext'
-  soname_spec='$libname$release$shared_ext'
-  finish_cmds=
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  dynamic_linker='Android linker'
-  # Don't embed -rpath directories since the linker doesn't support them.
-  hardcode_libdir_flag_spec='-L$libdir'
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Ideally, we could use ldconfig to report *all* directores which are
-  # searched for libraries, however this is still not possible.  Aside from not
-  # being certain /sbin/ldconfig is available, command
-  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
-  # even though it is searched at run-time.  Try to do the best guess by
-  # appending ld.so.conf contents (and includes) to the search path.
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd* | bitrig*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec=/usr/lib
-  need_lib_prefix=no
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-    need_version=no
-  else
-    need_version=yes
-  fi
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-os2*)
-  libname_spec='$name'
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
-  # OS/2 can only load a DLL with a base name of 8 characters or less.
-  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
-    v=$($ECHO $release$versuffix | tr -d .-);
-    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
-    $ECHO $n$v`$shared_ext'
-  library_names_spec='${libname}_dll.$libext'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=BEGINLIBPATH
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  postinstall_cmds='base_file=`basename \$file`~
-    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
-    dldir=$destdir/`dirname \$dlpath`~
-    test -d \$dldir || mkdir -p \$dldir~
-    $install_prog $dir/$dlname \$dldir/$dlname~
-    chmod a+x \$dldir/$dlname~
-    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-    fi'
-  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
-    dlpath=$dir/\$dldll~
-    $RM \$dlpath'
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test yes = "$with_gnu_ld"; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec; then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
-    soname_spec='$libname$shared_ext.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=sco
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test yes = "$with_gnu_ld"; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-       ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test no = "$dynamic_linker" && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test yes = "$GCC"; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
-  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
-fi
-
-if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
-  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
-fi
-
-# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
-configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
-
-# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
-func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
-
-# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
-configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test yes = "$hardcode_automatic"; then
-
-  # We can hardcode non-existent directories.
-  if test no != "$hardcode_direct" &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" &&
-     test no != "$hardcode_minus_L"; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test relink = "$hardcode_action" ||
-   test yes = "$inherit_rpath"; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test yes = "$shlibpath_overrides_runpath" ||
-     test no = "$enable_shared"; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-  if test yes != "$enable_dlopen"; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen=load_add_on
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen=LoadLibrary
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen=dlopen
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-    # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
-
-    lt_cv_dlopen=dyld
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-    ;;
-
-  tpf*)
-    # Don't try to run any link tests for TPF.  We know it's impossible
-    # because TPF is a cross-compiler, and we know how we open DSOs.
-    lt_cv_dlopen=dlopen
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=no
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen=shl_load
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-    ;;
-  esac
-
-  if test no = "$lt_cv_dlopen"; then
-    enable_dlopen=no
-  else
-    enable_dlopen=yes
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS=$CPPFLAGS
-    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS=$LDFLAGS
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS=$LIBS
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-         if test yes = "$cross_compiling"; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisibility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test yes = "$lt_cv_dlopen_self"; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-         if test yes = "$cross_compiling"; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisibility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS=$save_CPPFLAGS
-    LDFLAGS=$save_LDFLAGS
-    LIBS=$save_LIBS
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -z "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-else
-  if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-    old_striplib="$STRIP --strip-debug"
-    striplib="$STRIP --strip-unneeded"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  else
-    case $host_os in
-    darwin*)
-      # FIXME - insert some real tests, host_os isn't really good enough
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-      ;;
-    freebsd*)
-      if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then
-        old_striplib="$STRIP --strip-debug"
-        striplib="$STRIP --strip-unneeded"
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-      fi
-      ;;
-    *)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-      ;;
-    esac
-  fi
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-  # Report what library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test no = "$can_build_shared" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test yes = "$enable_shared" && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test ia64 != "$host_cpu"; then
-      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
-      yes,aix,yes) ;;                  # shared object as lib.so file only
-      yes,svr4,*) ;;                   # shared object as lib.so archive member only
-      yes,*) enable_static=no ;;       # shared object in lib.a archive as well
-      esac
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test yes = "$enable_shared" || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC=$lt_save_CC
-
-      if test -n "$CXX" && ( test no != "$CXX" &&
-    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
-    (test g++ != "$CXX"))); then
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
-$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
-if test -z "$CXXCPP"; then
-  if ${ac_cv_prog_CXXCPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CXXCPP=$CXXCPP
-
-fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
-$as_echo "$CXXCPP" >&6; }
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-else
-  _lt_caught_CXX_error=yes
-fi
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-archive_cmds_need_lc_CXX=no
-allow_undefined_flag_CXX=
-always_export_symbols_CXX=no
-archive_expsym_cmds_CXX=
-compiler_needs_object_CXX=no
-export_dynamic_flag_spec_CXX=
-hardcode_direct_CXX=no
-hardcode_direct_absolute_CXX=no
-hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_separator_CXX=
-hardcode_minus_L_CXX=no
-hardcode_shlibpath_var_CXX=unsupported
-hardcode_automatic_CXX=no
-inherit_rpath_CXX=no
-module_cmds_CXX=
-module_expsym_cmds_CXX=
-link_all_deplibs_CXX=unknown
-old_archive_cmds_CXX=$old_archive_cmds
-reload_flag_CXX=$reload_flag
-reload_cmds_CXX=$reload_cmds
-no_undefined_flag_CXX=
-whole_archive_flag_spec_CXX=
-enable_shared_with_static_runtimes_CXX=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-objext_CXX=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test yes != "$_lt_caught_CXX_error"; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_CFLAGS=$CFLAGS
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  CFLAGS=$CXXFLAGS
-  compiler=$CC
-  compiler_CXX=$CC
-  func_cc_basename $compiler
-cc_basename=$func_cc_basename_result
-
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test yes = "$GXX"; then
-      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
-    else
-      lt_prog_compiler_no_builtin_flag_CXX=
-    fi
-
-    if test yes = "$GXX"; then
-      # Set up default GNU C++ configuration
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test yes = "$GCC"; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return, which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD=$ac_prog
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test yes = "$with_gnu_ld"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD=$ac_dir/$ac_prog
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-       test no != "$with_gnu_ld" && break
-       ;;
-      *)
-       test yes != "$with_gnu_ld" && break
-       ;;
-      esac
-    fi
-  done
-  IFS=$lt_save_ifs
-else
-  lt_cv_path_LD=$LD # Let the user override the test with a path.
-fi
-fi
-
-LD=$lt_cv_path_LD
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test yes = "$with_gnu_ld"; then
-        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-
-        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
-        export_dynamic_flag_spec_CXX='$wl--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='$wl'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-         $GREP 'no-whole-archive' > /dev/null; then
-          whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
-        else
-          whole_archive_flag_spec_CXX=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-    ld_shlibs_CXX=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-      aix[4-9]*)
-        if test ia64 = "$host_cpu"; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # have runtime linking enabled, and use it for executables.
-          # For shared libraries, we enable/disable runtime linking
-          # depending on the kind of the shared library created -
-          # when "with_aix_soname,aix_use_runtimelinking" is:
-          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
-          # "aix,yes"  lib.so          shared, rtl:yes, for executables
-          #            lib.a           static archive
-          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
-          #            lib.a(lib.so.V) shared, rtl:no,  for executables
-          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
-          #            lib.a(lib.so.V) shared, rtl:no
-          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
-          #            lib.a           static archive
-          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-           for ld_flag in $LDFLAGS; do
-             case $ld_flag in
-             *-brtl*)
-               aix_use_runtimelinking=yes
-               break
-               ;;
-             esac
-           done
-           if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
-             # With aix-soname=svr4, we create the lib.so.V shared archives only,
-             # so we don't have lib.a shared libs to link our executables.
-             # We have to force runtime linking in this case.
-             aix_use_runtimelinking=yes
-             LDFLAGS="$LDFLAGS -Wl,-brtl"
-           fi
-           ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        archive_cmds_CXX=''
-        hardcode_direct_CXX=yes
-        hardcode_direct_absolute_CXX=yes
-        hardcode_libdir_separator_CXX=':'
-        link_all_deplibs_CXX=yes
-        file_list_spec_CXX='$wl-f,'
-        case $with_aix_soname,$aix_use_runtimelinking in
-        aix,*) ;;      # no import file
-        svr4,* | *,yes) # use import file
-          # The Import File defines what to hardcode.
-          hardcode_direct_CXX=no
-          hardcode_direct_absolute_CXX=no
-          ;;
-        esac
-
-        if test yes = "$GXX"; then
-          case $host_os in aix4.[012]|aix4.[012].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-         collect2name=`$CC -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-            strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-           # We have reworked collect2
-           :
-         else
-           # We have old collect2
-           hardcode_direct_CXX=unsupported
-           # It fails to find uninstalled libraries when the uninstalled
-           # path is not listed in the libpath.  Setting hardcode_minus_L
-           # to unsupported forces relinking
-           hardcode_minus_L_CXX=yes
-           hardcode_libdir_flag_spec_CXX='-L$libdir'
-           hardcode_libdir_separator_CXX=
-         fi
-          esac
-          shared_flag='-shared'
-         if test yes = "$aix_use_runtimelinking"; then
-           shared_flag=$shared_flag' $wl-G'
-         fi
-         # Need to ensure runtime linking is disabled for the traditional
-         # shared library, or the linker may eventually find shared libraries
-         # /with/ Import File - we do not want to mix them.
-         shared_flag_aix='-shared'
-         shared_flag_svr4='-shared $wl-G'
-        else
-          # not using gcc
-          if test ia64 = "$host_cpu"; then
-         # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-         # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-          else
-           if test yes = "$aix_use_runtimelinking"; then
-             shared_flag='$wl-G'
-           else
-             shared_flag='$wl-bM:SRE'
-           fi
-           shared_flag_aix='$wl-bM:SRE'
-           shared_flag_svr4='$wl-G'
-          fi
-        fi
-
-        export_dynamic_flag_spec_CXX='$wl-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-       # export.
-        always_export_symbols_CXX=yes
-       if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          # The "-G" linker flag allows undefined symbols.
-          no_undefined_flag_CXX='-bernotok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          if test set = "${lt_cv_aix_libpath+set}"; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=/usr/lib:/lib
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
-
-          hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
-
-          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
-        else
-          if test ia64 = "$host_cpu"; then
-           hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib'
-           allow_undefined_flag_CXX="-z nodefs"
-           archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
-          else
-           # Determine the default libpath from the value encoded in an
-           # empty executable.
-           if test set = "${lt_cv_aix_libpath+set}"; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=/usr/lib:/lib
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
-
-           hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
-           # Warning - without using the other run time loading flags,
-           # -berok will link without error, but may produce a broken library.
-           no_undefined_flag_CXX=' $wl-bernotok'
-           allow_undefined_flag_CXX=' $wl-berok'
-           if test yes = "$with_gnu_ld"; then
-             # We only use this code for GNU lds that support --whole-archive.
-             whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
-           else
-             # Exported symbols can be pulled into shared objects from archives
-             whole_archive_flag_spec_CXX='$convenience'
-           fi
-           archive_cmds_need_lc_CXX=yes
-           archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
-           # -brtl affects multiple linker settings, -berok does not and is overridden later
-           compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
-           if test svr4 != "$with_aix_soname"; then
-             # This is similar to how AIX traditionally builds its shared
-             # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
-             archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
-           fi
-           if test aix != "$with_aix_soname"; then
-             archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
-           else
-             # used by -dlpreopen to get the symbols
-             archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
-           fi
-           archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d'
-          fi
-        fi
-        ;;
-
-      beos*)
-       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-         allow_undefined_flag_CXX=unsupported
-         # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-         # support --undefined.  This deserves some investigation.  FIXME
-         archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       else
-         ld_shlibs_CXX=no
-       fi
-       ;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-         # FIXME: insert proper C++ library support
-         ld_shlibs_CXX=no
-         ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-       case $GXX,$cc_basename in
-       ,cl* | no,cl* | ,icl* | no,icl*)
-         # Native MSVC or ICC
-         # hardcode_libdir_flag_spec is actually meaningless, as there is
-         # no search path for DLLs.
-         hardcode_libdir_flag_spec_CXX=' '
-         allow_undefined_flag_CXX=unsupported
-         always_export_symbols_CXX=yes
-         file_list_spec_CXX='@'
-         # Tell ltmain to make .lib files, not .a files.
-         libext=lib
-         # Tell ltmain to make .dll files, not .so files.
-         shrext_cmds=.dll
-         # FIXME: Setting linknames here is a bad hack.
-         archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
-         archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[     ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
-              cp "$export_symbols" "$output_objdir/$soname.def";
-              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
-            else
-              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
-            fi~
-            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-            linknames='
-         # The linker will not automatically build a static lib if we build a DLL.
-         # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
-         enable_shared_with_static_runtimes_CXX=yes
-         # Don't use ranlib
-         old_postinstall_cmds_CXX='chmod 644 $oldlib'
-         postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
-            lt_tool_outputfile="@TOOL_OUTPUT@"~
-            case $lt_outputfile in
-              *.exe|*.EXE) ;;
-              *)
-                lt_outputfile=$lt_outputfile.exe
-                lt_tool_outputfile=$lt_tool_outputfile.exe
-                ;;
-            esac~
-            func_to_tool_file "$lt_outputfile"~
-            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
-              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-              $RM "$lt_outputfile.manifest";
-            fi'
-         ;;
-       *)
-         # g++
-         # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-         # as there is no search path for DLLs.
-         hardcode_libdir_flag_spec_CXX='-L$libdir'
-         export_dynamic_flag_spec_CXX='$wl--export-all-symbols'
-         allow_undefined_flag_CXX=unsupported
-         always_export_symbols_CXX=no
-         enable_shared_with_static_runtimes_CXX=yes
-
-         if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-           archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-           # If the export-symbols file already is a .def file, use it as
-           # is; otherwise, prepend EXPORTS...
-           archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[   ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
-              cp $export_symbols $output_objdir/$soname.def;
-            else
-              echo EXPORTS > $output_objdir/$soname.def;
-              cat $export_symbols >> $output_objdir/$soname.def;
-            fi~
-            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-         else
-           ld_shlibs_CXX=no
-         fi
-         ;;
-       esac
-       ;;
-      darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc_CXX=no
-  hardcode_direct_CXX=no
-  hardcode_automatic_CXX=yes
-  hardcode_shlibpath_var_CXX=unsupported
-  if test yes = "$lt_cv_ld_force_load"; then
-    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
-  else
-    whole_archive_flag_spec_CXX=''
-  fi
-  link_all_deplibs_CXX=yes
-  allow_undefined_flag_CXX=$_lt_dar_allow_undefined
-  case $cc_basename in
-     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test yes = "$_lt_dar_can_shared"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
-    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
-    archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
-    module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
-       if test yes != "$lt_cv_apple_cc_single_mod"; then
-      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
-      archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
-    fi
-
-  else
-  ld_shlibs_CXX=no
-  fi
-
-       ;;
-
-      os2*)
-       hardcode_libdir_flag_spec_CXX='-L$libdir'
-       hardcode_minus_L_CXX=yes
-       allow_undefined_flag_CXX=unsupported
-       shrext_cmds=.dll
-       archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-         $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-         $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-         $ECHO EXPORTS >> $output_objdir/$libname.def~
-         emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-         $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-         emximp -o $lib $output_objdir/$libname.def'
-       archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-         $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-         $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-         $ECHO EXPORTS >> $output_objdir/$libname.def~
-         prefix_cmds="$SED"~
-         if test EXPORTS = "`$SED 1q $export_symbols`"; then
-           prefix_cmds="$prefix_cmds -e 1d";
-         fi~
-         prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-         cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-         $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-         emximp -o $lib $output_objdir/$libname.def'
-       old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-       enable_shared_with_static_runtimes_CXX=yes
-       file_list_spec_CXX='@'
-       ;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          ghcx*)
-           # Green Hills C++ Compiler
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-        esac
-        ;;
-
-      freebsd2.*)
-        # C++ shared libraries reported to be fairly broken before
-       # switch to ELF
-        ld_shlibs_CXX=no
-        ;;
-
-      freebsd-elf*)
-        archive_cmds_need_lc_CXX=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        ld_shlibs_CXX=yes
-        ;;
-
-      haiku*)
-        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-        link_all_deplibs_CXX=yes
-        ;;
-
-      hpux9*)
-        hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
-        hardcode_libdir_separator_CXX=:
-        export_dynamic_flag_spec_CXX='$wl-E'
-        hardcode_direct_CXX=yes
-        hardcode_minus_L_CXX=yes # Not in the search PATH,
-                                            # but as the default
-                                            # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            ld_shlibs_CXX=no
-            ;;
-          aCC*)
-            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-            ;;
-          *)
-            if test yes = "$GXX"; then
-              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              ld_shlibs_CXX=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test no = "$with_gnu_ld"; then
-         hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
-         hardcode_libdir_separator_CXX=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-             export_dynamic_flag_spec_CXX='$wl-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            hardcode_direct_CXX=no
-            hardcode_shlibpath_var_CXX=no
-            ;;
-          *)
-            hardcode_direct_CXX=yes
-            hardcode_direct_absolute_CXX=yes
-            hardcode_minus_L_CXX=yes # Not in the search PATH,
-                                                # but as the default
-                                                # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          aCC*)
-           case $host_cpu in
-             hppa*64*)
-               archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             ia64*)
-               archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             *)
-               archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-           esac
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-           ;;
-          *)
-           if test yes = "$GXX"; then
-             if test no = "$with_gnu_ld"; then
-               case $host_cpu in
-                 hppa*64*)
-                   archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 ia64*)
-                   archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 *)
-                   archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-               esac
-             fi
-           else
-             # FIXME: insert proper C++ library support
-             ld_shlibs_CXX=no
-           fi
-           ;;
-        esac
-        ;;
-
-      interix[3-9]*)
-       hardcode_direct_CXX=no
-       hardcode_shlibpath_var_CXX=no
-       hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
-       export_dynamic_flag_spec_CXX='$wl-E'
-       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-       # Instead, shared libraries are loaded at an image base (0x10000000 by
-       # default) and relocated if they conflict, which is a slow very memory
-       # consuming and fragmenting process.  To avoid this, we pick a random,
-       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-       archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       ;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-           # SGI C++
-           archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-
-           # Archives containing C++ object files must be created using
-           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
-           ;;
-          *)
-           if test yes = "$GXX"; then
-             if test no = "$with_gnu_ld"; then
-               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-             else
-               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
-             fi
-           fi
-           link_all_deplibs_CXX=yes
-           ;;
-        esac
-        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
-        hardcode_libdir_separator_CXX=:
-        inherit_rpath_CXX=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-        case $cc_basename in
-          KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-           # KCC will only create a shared library if the output file
-           # ends with ".so" (or ".sl" for HP-UX), so rename the library
-           # to its proper name (with version) after linking.
-           archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-           archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
-           hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
-           export_dynamic_flag_spec_CXX='$wl--export-dynamic'
-
-           # Archives containing C++ object files must be created using
-           # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-           old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-           ;;
-         icpc* | ecpc* )
-           # Intel C++
-           with_gnu_ld=yes
-           # version 8.0 and above of icpc choke on multiply defined symbols
-           # if we add $predep_objects and $postdep_objects, however 7.1 and
-           # earlier do not add the objects themselves.
-           case `$CC -V 2>&1` in
-             *"Version 7."*)
-               archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-               ;;
-             *)  # Version 8.0 or newer
-               tmp_idyn=
-               case $host_cpu in
-                 ia64*) tmp_idyn=' -i_dynamic';;
-               esac
-               archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-               ;;
-           esac
-           archive_cmds_need_lc_CXX=no
-           hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
-           export_dynamic_flag_spec_CXX='$wl--export-dynamic'
-           whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
-           ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-           case `$CC -V` in
-           *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
-             prelink_cmds_CXX='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
-             old_archive_cmds_CXX='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-                $RANLIB $oldlib'
-             archive_cmds_CXX='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-             archive_expsym_cmds_CXX='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-             ;;
-           *) # Version 6 and above use weak symbols
-             archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-             archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-             ;;
-           esac
-
-           hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir'
-           export_dynamic_flag_spec_CXX='$wl--export-dynamic'
-           whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-            ;;
-         cxx*)
-           # Compaq C++
-           archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-           archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
-
-           runpath_var=LD_RUN_PATH
-           hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-           hardcode_libdir_separator_CXX=:
-
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
-           ;;
-         xl* | mpixl* | bgxl*)
-           # IBM XL 8.0 on PPC, with GNU ld
-           hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
-           export_dynamic_flag_spec_CXX='$wl--export-dynamic'
-           archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-           if test yes = "$supports_anon_versioning"; then
-             archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
-                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-                echo "local: *; };" >> $output_objdir/$libname.ver~
-                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
-           fi
-           ;;
-         *)
-           case `$CC -V 2>&1 | sed 5q` in
-           *Sun\ C*)
-             # Sun C++ 5.9
-             no_undefined_flag_CXX=' -zdefs'
-             archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-             archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
-             hardcode_libdir_flag_spec_CXX='-R$libdir'
-             whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-             compiler_needs_object_CXX=yes
-
-             # Not sure whether something based on
-             # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-             # would be better.
-             output_verbose_link_cmd='func_echo_all'
-
-             # Archives containing C++ object files must be created using
-             # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-             # necessary to make sure instantiated templates are included
-             # in the archive.
-             old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-             ;;
-           esac
-           ;;
-       esac
-       ;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-       ld_shlibs_CXX=no
-       ;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-       ;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-         *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-       esac
-       ;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-         archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-         wlarc=
-         hardcode_libdir_flag_spec_CXX='-R$libdir'
-         hardcode_direct_CXX=yes
-         hardcode_shlibpath_var_CXX=no
-       fi
-       # Workaround some broken pre-1.5 toolchains
-       output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-       ;;
-
-      *nto* | *qnx*)
-        ld_shlibs_CXX=yes
-       ;;
-
-      openbsd* | bitrig*)
-       if test -f /usr/libexec/ld.so; then
-         hardcode_direct_CXX=yes
-         hardcode_shlibpath_var_CXX=no
-         hardcode_direct_absolute_CXX=yes
-         archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-         hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
-         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
-           archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
-           export_dynamic_flag_spec_CXX='$wl-E'
-           whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
-         fi
-         output_verbose_link_cmd=func_echo_all
-       else
-         ld_shlibs_CXX=no
-       fi
-       ;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-           # KCC will only create a shared library if the output file
-           # ends with ".so" (or ".sl" for HP-UX), so rename the library
-           # to its proper name (with version) after linking.
-           archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-           hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
-           hardcode_libdir_separator_CXX=:
-
-           # Archives containing C++ object files must be created using
-           # the KAI C++ compiler.
-           case $host in
-             osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
-             *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
-           esac
-           ;;
-          RCC*)
-           # Rational C++ 2.4.1
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          cxx*)
-           case $host in
-             osf3*)
-               allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
-               archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-               hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
-               ;;
-             *)
-               allow_undefined_flag_CXX=' -expect_unresolved \*'
-               archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-               archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-                  echo "-hidden">> $lib.exp~
-                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
-                  $RM $lib.exp'
-               hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-               ;;
-           esac
-
-           hardcode_libdir_separator_CXX=:
-
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-           ;;
-         *)
-           if test yes,no = "$GXX,$with_gnu_ld"; then
-             allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
-             case $host in
-               osf3*)
-                 archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-                 ;;
-               *)
-                 archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-                 ;;
-             esac
-
-             hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
-             hardcode_libdir_separator_CXX=:
-
-             # Commands to make compiler produce verbose output that lists
-             # what "hidden" libraries, object files and flags are used when
-             # linking a shared library.
-             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-           else
-             # FIXME: insert proper C++ library support
-             ld_shlibs_CXX=no
-           fi
-           ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-           # Sun C++ 4.x
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          lcc*)
-           # Lucid
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-           # Sun C++ 4.2, 5.x and Centerline C++
-            archive_cmds_need_lc_CXX=yes
-           no_undefined_flag_CXX=' -zdefs'
-           archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-           archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-           hardcode_libdir_flag_spec_CXX='-R$libdir'
-           hardcode_shlibpath_var_CXX=no
-           case $host_os in
-             solaris2.[0-5] | solaris2.[0-5].*) ;;
-             *)
-               # The compiler driver will combine and reorder linker options,
-               # but understands '-z linker_flag'.
-               # Supported since Solaris 2.6 (maybe 2.5.1?)
-               whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
-               ;;
-           esac
-           link_all_deplibs_CXX=yes
-
-           output_verbose_link_cmd='func_echo_all'
-
-           # Archives containing C++ object files must be created using
-           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-           ;;
-          gcx*)
-           # Green Hills C++ Compiler
-           archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
-
-           # The C++ compiler must be used to create the archive.
-           old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-           ;;
-          *)
-           # GNU C++ compiler with Solaris linker
-           if test yes,no = "$GXX,$with_gnu_ld"; then
-             no_undefined_flag_CXX=' $wl-z ${wl}defs'
-             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-             else
-               # g++ 2.7 appears to require '-G' NOT '-shared' on this
-               # platform.
-               archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-             fi
-
-             hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
-             case $host_os in
-               solaris2.[0-5] | solaris2.[0-5].*) ;;
-               *)
-                 whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
-                 ;;
-             esac
-           fi
-           ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_CXX='$wl-z,text'
-      archive_cmds_need_lc_CXX=no
-      hardcode_shlibpath_var_CXX=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-         archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-       # Note: We CANNOT use -z defs as we might desire, because we do not
-       # link with -lc, and that would cause any symbols used from libc to
-       # always be unresolved, which means just about no library would
-       # ever link correctly.  If we're not using GNU ld we use -z text
-       # though, which does catch some bad symbols but isn't as heavy-handed
-       # as -z defs.
-       no_undefined_flag_CXX='$wl-z,text'
-       allow_undefined_flag_CXX='$wl-z,nodefs'
-       archive_cmds_need_lc_CXX=no
-       hardcode_shlibpath_var_CXX=no
-       hardcode_libdir_flag_spec_CXX='$wl-R,$libdir'
-       hardcode_libdir_separator_CXX=':'
-       link_all_deplibs_CXX=yes
-       export_dynamic_flag_spec_CXX='$wl-Bexport'
-       runpath_var='LD_RUN_PATH'
-
-       case $cc_basename in
-          CC*)
-           archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
-              '"$old_archive_cmds_CXX"
-           reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
-              '"$reload_cmds_CXX"
-           ;;
-         *)
-           archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           ;;
-       esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-           # NonStop-UX NCC 3.20
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-    esac
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-    test no = "$ld_shlibs_CXX" && can_build_shared=no
-
-    GCC_CXX=$GXX
-    LD_CXX=$LD
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    # Dependencies to place before and after the object being linked:
-predep_objects_CXX=
-postdep_objects_CXX=
-predeps_CXX=
-postdeps_CXX=
-compiler_lib_search_path_CXX=
-
-cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case $prev$p in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test x-L = "$p" ||
-          test x-R = "$p"; then
-        prev=$p
-        continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test no = "$pre_test_object_deps_done"; then
-        case $prev in
-        -L | -R)
-          # Internal compiler library paths should come after those
-          # provided the user.  The postdeps already come after the
-          # user supplied libs so there is no need to process them.
-          if test -z "$compiler_lib_search_path_CXX"; then
-            compiler_lib_search_path_CXX=$prev$p
-          else
-            compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p"
-          fi
-          ;;
-        # The "-l" case would never come before the object being
-        # linked, so don't bother handling this case.
-        esac
-       else
-        if test -z "$postdeps_CXX"; then
-          postdeps_CXX=$prev$p
-        else
-          postdeps_CXX="${postdeps_CXX} $prev$p"
-        fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-        pre_test_object_deps_done=yes
-        continue
-       fi
-
-       if test no = "$pre_test_object_deps_done"; then
-        if test -z "$predep_objects_CXX"; then
-          predep_objects_CXX=$p
-        else
-          predep_objects_CXX="$predep_objects_CXX $p"
-        fi
-       else
-        if test -z "$postdep_objects_CXX"; then
-          postdep_objects_CXX=$p
-        else
-          postdep_objects_CXX="$postdep_objects_CXX $p"
-        fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling CXX test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-case $host_os in
-interix[3-9]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  predep_objects_CXX=
-  postdep_objects_CXX=
-  postdeps_CXX=
-  ;;
-esac
-
-
-case " $postdeps_CXX " in
-*" -lc "*) archive_cmds_need_lc_CXX=no ;;
-esac
- compiler_lib_search_dirs_CXX=
-if test -n "${compiler_lib_search_path_CXX}"; then
- compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    lt_prog_compiler_wl_CXX=
-lt_prog_compiler_pic_CXX=
-lt_prog_compiler_static_CXX=
-
-
-  # C++ specific cases for pic, static, wl, etc.
-  if test yes = "$GXX"; then
-    lt_prog_compiler_wl_CXX='-Wl,'
-    lt_prog_compiler_static_CXX='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test ia64 = "$host_cpu"; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static_CXX='-Bstatic'
-      fi
-      lt_prog_compiler_pic_CXX='-fPIC'
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_CXX='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the '-m68020' flag to GCC prevents building anything better,
-            # like '-m68040'.
-            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-      case $host_os in
-      os2*)
-       lt_prog_compiler_static_CXX='$wl-static'
-       ;;
-      esac
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_CXX='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      lt_prog_compiler_pic_CXX=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_CXX=
-      ;;
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       lt_prog_compiler_pic_CXX=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-       ;;
-      *)
-       lt_prog_compiler_pic_CXX='-fPIC'
-       ;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_CXX='-fPIC -shared'
-      ;;
-    *)
-      lt_prog_compiler_pic_CXX='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[4-9]*)
-       # All AIX code is PIC.
-       if test ia64 = "$host_cpu"; then
-         # AIX 5 now supports IA64 processor
-         lt_prog_compiler_static_CXX='-Bstatic'
-       else
-         lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
-       fi
-       ;;
-      chorus*)
-       case $cc_basename in
-       cxch68*)
-         # Green Hills C++ Compiler
-         # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-         ;;
-       esac
-       ;;
-      mingw* | cygwin* | os2* | pw32* | cegcc*)
-       # This hack is so that the source file can tell whether it is being
-       # built for inclusion in a dll (and should export symbols for example).
-       lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-       ;;
-      dgux*)
-       case $cc_basename in
-         ec++*)
-           lt_prog_compiler_pic_CXX='-KPIC'
-           ;;
-         ghcx*)
-           # Green Hills C++ Compiler
-           lt_prog_compiler_pic_CXX='-pic'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      freebsd* | dragonfly*)
-       # FreeBSD uses GNU C++
-       ;;
-      hpux9* | hpux10* | hpux11*)
-       case $cc_basename in
-         CC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
-           if test ia64 != "$host_cpu"; then
-             lt_prog_compiler_pic_CXX='+Z'
-           fi
-           ;;
-         aCC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
-           case $host_cpu in
-           hppa*64*|ia64*)
-             # +Z the default
-             ;;
-           *)
-             lt_prog_compiler_pic_CXX='+Z'
-             ;;
-           esac
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      interix*)
-       # This is c89, which is MS Visual C++ (no shared libs)
-       # Anyone wants to do a port?
-       ;;
-      irix5* | irix6* | nonstopux*)
-       case $cc_basename in
-         CC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_static_CXX='-non_shared'
-           # CC pic flag -KPIC is the default.
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-       case $cc_basename in
-         KCC*)
-           # KAI C++ Compiler
-           lt_prog_compiler_wl_CXX='--backend -Wl,'
-           lt_prog_compiler_pic_CXX='-fPIC'
-           ;;
-         ecpc* )
-           # old Intel C++ for x86_64, which still supported -KPIC.
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-KPIC'
-           lt_prog_compiler_static_CXX='-static'
-           ;;
-         icpc* )
-           # Intel C++, used to be incompatible with GCC.
-           # ICC 10 doesn't accept -KPIC any more.
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-fPIC'
-           lt_prog_compiler_static_CXX='-static'
-           ;;
-         pgCC* | pgcpp*)
-           # Portland Group C++ compiler
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-fpic'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           ;;
-         cxx*)
-           # Compaq C++
-           # Make sure the PIC flag is empty.  It appears that all Alpha
-           # Linux and Compaq Tru64 Unix objects are PIC.
-           lt_prog_compiler_pic_CXX=
-           lt_prog_compiler_static_CXX='-non_shared'
-           ;;
-         xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
-           # IBM XL 8.0, 9.0 on PPC and BlueGene
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-qpic'
-           lt_prog_compiler_static_CXX='-qstaticlink'
-           ;;
-         *)
-           case `$CC -V 2>&1 | sed 5q` in
-           *Sun\ C*)
-             # Sun C++ 5.9
-             lt_prog_compiler_pic_CXX='-KPIC'
-             lt_prog_compiler_static_CXX='-Bstatic'
-             lt_prog_compiler_wl_CXX='-Qoption ld '
-             ;;
-           esac
-           ;;
-       esac
-       ;;
-      lynxos*)
-       ;;
-      m88k*)
-       ;;
-      mvs*)
-       case $cc_basename in
-         cxx*)
-           lt_prog_compiler_pic_CXX='-W c,exportall'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      netbsd*)
-       ;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        lt_prog_compiler_pic_CXX='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-       case $cc_basename in
-         KCC*)
-           lt_prog_compiler_wl_CXX='--backend -Wl,'
-           ;;
-         RCC*)
-           # Rational C++ 2.4.1
-           lt_prog_compiler_pic_CXX='-pic'
-           ;;
-         cxx*)
-           # Digital/Compaq C++
-           lt_prog_compiler_wl_CXX='-Wl,'
-           # Make sure the PIC flag is empty.  It appears that all Alpha
-           # Linux and Compaq Tru64 Unix objects are PIC.
-           lt_prog_compiler_pic_CXX=
-           lt_prog_compiler_static_CXX='-non_shared'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      psos*)
-       ;;
-      solaris*)
-       case $cc_basename in
-         CC* | sunCC*)
-           # Sun C++ 4.2, 5.x and Centerline C++
-           lt_prog_compiler_pic_CXX='-KPIC'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           lt_prog_compiler_wl_CXX='-Qoption ld '
-           ;;
-         gcx*)
-           # Green Hills C++ Compiler
-           lt_prog_compiler_pic_CXX='-PIC'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      sunos4*)
-       case $cc_basename in
-         CC*)
-           # Sun C++ 4.x
-           lt_prog_compiler_pic_CXX='-pic'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           ;;
-         lcc*)
-           # Lucid
-           lt_prog_compiler_pic_CXX='-pic'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-       case $cc_basename in
-         CC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-KPIC'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           ;;
-       esac
-       ;;
-      tandem*)
-       case $cc_basename in
-         NCC*)
-           # NonStop-UX NCC 3.20
-           lt_prog_compiler_pic_CXX='-KPIC'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      vxworks*)
-       ;;
-      *)
-       lt_prog_compiler_can_build_shared_CXX=no
-       ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms that do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_CXX=
-    ;;
-  *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
-lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_CXX=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"  ## exclude from sc_useless_quotes_in_assignment
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_CXX=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
-
-if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then
-    case $lt_prog_compiler_pic_CXX in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
-     esac
-else
-    lt_prog_compiler_pic_CXX=
-     lt_prog_compiler_can_build_shared_CXX=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_CXX=no
-   save_LDFLAGS=$LDFLAGS
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_CXX=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_CXX=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS=$save_LDFLAGS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
-
-if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then
-    :
-else
-    lt_prog_compiler_static_CXX=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
-
-
-
-
-hard_links=nottested
-if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test no = "$hard_links"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  case $host_os in
-  aix[4-9]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
-    # Without the "-l" option, or with the "-B" option, AIX nm treats
-    # weak defined symbols like other global defined symbols, whereas
-    # GNU nm marks them as "W".
-    # While the 'weak' keyword is ignored in the Export File, we need
-    # it in the Import File for the 'aix-soname' feature, so we have
-    # to replace the "-B" option with "-P" for AIX nm.
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
-    else
-      export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    export_symbols_cmds_CXX=$ltdll_cmds
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl* | icl*)
-      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-      ;;
-    *)
-      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-      ;;
-    esac
-    ;;
-  *)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-test no = "$ld_shlibs_CXX" && can_build_shared=no
-
-with_gnu_ld_CXX=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_CXX" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_CXX=yes
-
-  if test yes,yes = "$GCC,$enable_shared"; then
-    case $archive_cmds_CXX in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-         soname=conftest
-         lib=conftest
-         libobjs=conftest.$ac_objext
-         deplibs=
-         wl=$lt_prog_compiler_wl_CXX
-         pic_flag=$lt_prog_compiler_pic_CXX
-         compiler_flags=-v
-         linker_flags=-v
-         verstring=
-         output_objdir=.
-         libname=conftest
-         lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-         allow_undefined_flag_CXX=
-         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-         then
-           lt_cv_archive_cmds_need_lc_CXX=no
-         else
-           lt_cv_archive_cmds_need_lc_CXX=yes
-         fi
-         allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-       else
-         cat conftest.err 1>&5
-       fi
-       $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
-      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=.so
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='$libname$release$shared_ext$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test ia64 = "$host_cpu"; then
-    # AIX 5 supports IA64
-    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line '#! .'.  This would cause the generated library to
-    # depend on '.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-          echo ' yes '
-          echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
-       :
-      else
-       can_build_shared=no
-      fi
-      ;;
-    esac
-    # Using Import Files as archive members, it is possible to support
-    # filename-based versioning of shared library archives on AIX. While
-    # this would work for both with and without runtime linking, it will
-    # prevent static linking of such archives. So we do filename-based
-    # shared library versioning with .so extension only, which is used
-    # when both runtime linking and shared linking is enabled.
-    # Unfortunately, runtime linking may impact performance, so we do
-    # not want this to be the default eventually. Also, we use the
-    # versioned .so libs for executables only if there is the -brtl
-    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
-    # To allow for filename-based versioning support, we need to create
-    # libNAME.so.V as an archive file, containing:
-    # *) an Import File, referring to the versioned filename of the
-    #    archive as well as the shared archive member, telling the
-    #    bitwidth (32 or 64) of that shared object, and providing the
-    #    list of exported symbols of that shared object, eventually
-    #    decorated with the 'weak' keyword
-    # *) the shared object with the F_LOADONLY flag set, to really avoid
-    #    it being seen by the linker.
-    # At run time we better use the real file rather than another symlink,
-    # but for link time we create the symlink libNAME.so -> libNAME.so.V
-
-    case $with_aix_soname,$aix_use_runtimelinking in
-    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    aix,yes) # traditional libtool
-      dynamic_linker='AIX unversionable lib.so'
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      ;;
-    aix,no) # traditional AIX only
-      dynamic_linker='AIX lib.a(lib.so.V)'
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      ;;
-    svr4,*) # full svr4 only
-      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,yes) # both, prefer svr4
-      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # unpreferred sharedlib libNAME.a needs extra handling
-      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
-      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,no) # both, prefer aix
-      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
-      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
-      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
-      ;;
-    esac
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='$libname$shared_ext'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl* | *,icl*)
-    # Native MSVC or ICC
-    libname_spec='$name'
-    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-    library_names_spec='$libname.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec=$LIB
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC and ICC wrapper
-    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$major$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      soname_spec='$libname$release$shared_ext$major'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    if test 32 = "$HPUX_IA64_MODE"; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
-    fi
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-       if test yes = "$lt_cv_prog_gnu_ld"; then
-               version_type=linux # correct to gnu/linux during the next big refactor
-       else
-               version_type=irix
-       fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
-  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-linux*android*)
-  version_type=none # Android doesn't support versioned libraries.
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext'
-  soname_spec='$libname$release$shared_ext'
-  finish_cmds=
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  dynamic_linker='Android linker'
-  # Don't embed -rpath directories since the linker doesn't support them.
-  hardcode_libdir_flag_spec_CXX='-L$libdir'
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
-        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Ideally, we could use ldconfig to report *all* directores which are
-  # searched for libraries, however this is still not possible.  Aside from not
-  # being certain /sbin/ldconfig is available, command
-  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
-  # even though it is searched at run-time.  Try to do the best guess by
-  # appending ld.so.conf contents (and includes) to the search path.
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd* | bitrig*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec=/usr/lib
-  need_lib_prefix=no
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-    need_version=no
-  else
-    need_version=yes
-  fi
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-os2*)
-  libname_spec='$name'
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
-  # OS/2 can only load a DLL with a base name of 8 characters or less.
-  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
-    v=$($ECHO $release$versuffix | tr -d .-);
-    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
-    $ECHO $n$v`$shared_ext'
-  library_names_spec='${libname}_dll.$libext'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=BEGINLIBPATH
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  postinstall_cmds='base_file=`basename \$file`~
-    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
-    dldir=$destdir/`dirname \$dlpath`~
-    test -d \$dldir || mkdir -p \$dldir~
-    $install_prog $dir/$dlname \$dldir/$dlname~
-    chmod a+x \$dldir/$dlname~
-    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-    fi'
-  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
-    dlpath=$dir/\$dldll~
-    $RM \$dlpath'
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test yes = "$with_gnu_ld"; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec; then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
-    soname_spec='$libname$shared_ext.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=sco
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test yes = "$with_gnu_ld"; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-       ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test no = "$dynamic_linker" && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test yes = "$GCC"; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
-  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
-fi
-
-if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
-  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
-fi
-
-# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
-configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
-
-# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
-func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
-
-# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
-configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_CXX=
-if test -n "$hardcode_libdir_flag_spec_CXX" ||
-   test -n "$runpath_var_CXX" ||
-   test yes = "$hardcode_automatic_CXX"; then
-
-  # We can hardcode non-existent directories.
-  if test no != "$hardcode_direct_CXX" &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" &&
-     test no != "$hardcode_minus_L_CXX"; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_CXX=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_CXX=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_CXX=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
-$as_echo "$hardcode_action_CXX" >&6; }
-
-if test relink = "$hardcode_action_CXX" ||
-   test yes = "$inherit_rpath_CXX"; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test yes = "$shlibpath_overrides_runpath" ||
-     test no = "$enable_shared"; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test yes != "$_lt_caught_CXX_error"
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-if test "x$with_clang_prefix" != "x"; then
-       LLVM_CONFIG="$with_clang_prefix/bin/llvm-config"
-fi
-# Extract the first word of ""llvm-config"", so it can be a program name with args.
-set dummy "llvm-config"; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_LLVM_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $LLVM_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_LLVM_CONFIG="$LLVM_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_LLVM_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-LLVM_CONFIG=$ac_cv_path_LLVM_CONFIG
-if test -n "$LLVM_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LLVM_CONFIG" >&5
-$as_echo "$LLVM_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-if test -z "$LLVM_CONFIG" || test ! -x "$LLVM_CONFIG"; then
-       as_fn_error $? "llvm-config not found" "$LINENO" 5
-fi
-CLANG_CXXFLAGS=`$LLVM_CONFIG --cxxflags | \
-       $SED -e 's/-Wcovered-switch-default//;s/-gsplit-dwarf//'`
-CLANG_LDFLAGS=`$LLVM_CONFIG --ldflags`
-# Construct a -R argument for libtool.
-# This is needed in case some of the clang libraries are shared libraries.
-CLANG_RFLAG=`echo "$CLANG_LDFLAGS" | $SED -e 's/-L/-R/g'`
-targets=`$LLVM_CONFIG --targets-built`
-components="$targets asmparser bitreader support mc"
-# Link in option and frontendopenmp components when available
-# since they may be used by the clang libraries.
-for c in option frontendopenmp; do
-       $LLVM_CONFIG --components | $GREP $c > /dev/null 2> /dev/null
-       if test $? -eq 0; then
-               components="$components $c"
-       fi
-done
-CLANG_LIBS=`$LLVM_CONFIG --libs $components`
-systemlibs=`$LLVM_CONFIG --system-libs 2> /dev/null | tail -1`
-if test $? -eq 0; then
-       CLANG_LIBS="$CLANG_LIBS $systemlibs"
-fi
-CLANG_PREFIX=`$LLVM_CONFIG --prefix`
-
-cat >>confdefs.h <<_ACEOF
-#define CLANG_PREFIX "$CLANG_PREFIX"
-_ACEOF
-
-
-# If $CLANG_PREFIX/bin/clang cannot find the standard include files,
-# then see if setting sysroot to `xcode-select -p`/SDKs/MacOSX.sdk helps.
-# This may be required on some versions of OS X since they lack /usr/include.
-# If so, set CLANG_SYSROOT accordingly.
-SAVE_CC="$CC"
-CC="$CLANG_PREFIX/bin/clang"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CLANG_PREFIX/bin/clang can find standard include files" >&5
-$as_echo_n "checking whether $CLANG_PREFIX/bin/clang can find standard include files... " >&6; }
-found_header=no
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  found_header=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_header" >&5
-$as_echo "$found_header" >&6; }
-if test "x$found_header" != "xyes"; then
-       # Extract the first word of "xcode-select", so it can be a program name with args.
-set dummy xcode-select; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_XCODE_SELECT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$XCODE_SELECT"; then
-  ac_cv_prog_XCODE_SELECT="$XCODE_SELECT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_XCODE_SELECT="xcode-select"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-XCODE_SELECT=$ac_cv_prog_XCODE_SELECT
-if test -n "$XCODE_SELECT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XCODE_SELECT" >&5
-$as_echo "$XCODE_SELECT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-       if test -z "$XCODE_SELECT"; then
-               as_fn_error $? "Cannot find xcode-select" "$LINENO" 5
-       fi
-       sysroot=`$XCODE_SELECT -p`/SDKs/MacOSX.sdk
-       SAVE_CPPFLAGS="$CPPFLAGS"
-       CPPFLAGS="$CPPFLAGS -isysroot $sysroot"
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether standard include files can be found with sysroot set" >&5
-$as_echo_n "checking whether standard include files can be found with sysroot set... " >&6; }
-       found_header=no
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  found_header=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_header" >&5
-$as_echo "$found_header" >&6; }
-       CPPFLAGS="$SAVE_CPPFLAGS"
-       if test "x$found_header" != "xyes"; then
-               as_fn_error $? "Cannot find standard include files" "$LINENO" 5
-       else
-
-cat >>confdefs.h <<_ACEOF
-#define CLANG_SYSROOT "$sysroot"
-_ACEOF
-
-       fi
-fi
-CC="$SAVE_CC"
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-SAVE_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CLANG_CXXFLAGS -I$srcdir $CPPFLAGS"
-ac_fn_cxx_check_header_mongrel "$LINENO" "clang/Basic/SourceLocation.h" "ac_cv_header_clang_Basic_SourceLocation_h" "$ac_includes_default"
-if test "x$ac_cv_header_clang_Basic_SourceLocation_h" = xyes; then :
-
-else
-  as_fn_error $? "clang header file not found" "$LINENO" 5
-fi
-
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <llvm/Support/Host.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "getDefaultTargetTriple" >/dev/null 2>&1; then :
-
-else
-
-$as_echo "#define getDefaultTargetTriple getHostTriple" >>confdefs.h
-
-fi
-rm -f conftest*
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Basic/SourceLocation.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "getExpansionLineNumber" >/dev/null 2>&1; then :
-
-else
-
-$as_echo "#define getExpansionLineNumber getInstantiationLineNumber" >>confdefs.h
-
-fi
-rm -f conftest*
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Basic/SourceManager.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "getImmediateExpansionRange" >/dev/null 2>&1; then :
-
-else
-
-$as_echo "#define getImmediateExpansionRange getImmediateInstantiationRange" >>confdefs.h
-
-
-fi
-rm -f conftest*
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Basic/Diagnostic.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "DiagnosticsEngine" >/dev/null 2>&1; then :
-
-else
-
-$as_echo "#define DiagnosticsEngine Diagnostic" >>confdefs.h
-
-fi
-rm -f conftest*
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Driver/Driver.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "ArrayRef" >/dev/null 2>&1; then :
-
-$as_echo "#define USE_ARRAYREF /**/" >>confdefs.h
-
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Frontend/CompilerInvocation.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "ArrayRef.*CommandLineArgs" >/dev/null 2>&1; then :
-
-$as_echo "#define CREATE_FROM_ARGS_TAKES_ARRAYREF /**/" >>confdefs.h
-
-
-fi
-rm -f conftest*
-
-
-fi
-rm -f conftest*
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Driver/Driver.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "CXXIsProduction" >/dev/null 2>&1; then :
-
-$as_echo "#define HAVE_CXXISPRODUCTION /**/" >>confdefs.h
-
-fi
-rm -f conftest*
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Driver/Driver.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP " IsProduction" >/dev/null 2>&1; then :
-
-$as_echo "#define HAVE_ISPRODUCTION /**/" >>confdefs.h
-
-fi
-rm -f conftest*
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Driver/Driver.h>
-int
-main ()
-{
-
-       using namespace clang;
-       DiagnosticsEngine *Diags;
-       new driver::Driver("", "", "", *Diags);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-$as_echo "#define DRIVER_CTOR_TAKES_DEFAULTIMAGENAME /**/" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/AST/ASTConsumer.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "void HandleTopLevelDecl\(" >/dev/null 2>&1; then :
-
-$as_echo "#define HandleTopLevelDeclReturn void" >>confdefs.h
-
-
-$as_echo "#define HandleTopLevelDeclContinue /**/" >>confdefs.h
-
-else
-
-$as_echo "#define HandleTopLevelDeclReturn bool" >>confdefs.h
-
-
-$as_echo "#define HandleTopLevelDeclContinue true" >>confdefs.h
-
-fi
-rm -f conftest*
-
-ac_fn_cxx_check_header_mongrel "$LINENO" "clang/Basic/DiagnosticOptions.h" "ac_cv_header_clang_Basic_DiagnosticOptions_h" "$ac_includes_default"
-if test "x$ac_cv_header_clang_Basic_DiagnosticOptions_h" = xyes; then :
-
-$as_echo "#define HAVE_BASIC_DIAGNOSTICOPTIONS_H /**/" >>confdefs.h
-
-fi
-
-
-ac_fn_cxx_check_header_compile "$LINENO" "clang/Lex/PreprocessorOptions.h" "ac_cv_header_clang_Lex_PreprocessorOptions_h" "#include <clang/Basic/LLVM.h>
-"
-if test "x$ac_cv_header_clang_Lex_PreprocessorOptions_h" = xyes; then :
-
-$as_echo "#define HAVE_LEX_PREPROCESSOROPTIONS_H /**/" >>confdefs.h
-
-fi
-
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Basic/TargetInfo.h>
-int
-main ()
-{
-
-       using namespace clang;
-       std::shared_ptr<TargetOptions> TO;
-       DiagnosticsEngine *Diags;
-       TargetInfo::CreateTargetInfo(*Diags, TO);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-$as_echo "#define CREATETARGETINFO_TAKES_SHARED_PTR /**/" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Basic/TargetInfo.h>
-int
-main ()
-{
-
-       using namespace clang;
-       TargetOptions *TO;
-       DiagnosticsEngine *Diags;
-       TargetInfo::CreateTargetInfo(*Diags, TO);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-$as_echo "#define CREATETARGETINFO_TAKES_POINTER /**/" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Frontend/CompilerInstance.h>
-int
-main ()
-{
-
-       using namespace clang;
-       DiagnosticConsumer *client;
-       CompilerInstance *Clang;
-       Clang->createDiagnostics(client);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-
-$as_echo "#define CREATEDIAGNOSTICS_TAKES_ARG /**/" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Lex/HeaderSearchOptions.h>
-int
-main ()
-{
-
-       using namespace clang;
-       HeaderSearchOptions HSO;
-       HSO.AddPath("", frontend::Angled, false, false);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-$as_echo "#define ADDPATH_TAKES_4_ARGUMENTS /**/" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/AST/CanonicalType.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "getNumParams" >/dev/null 2>&1; then :
-
-$as_echo "#define getNumArgs getNumParams" >>confdefs.h
-
-
-$as_echo "#define getArgType getParamType" >>confdefs.h
-
-fi
-rm -f conftest*
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/AST/CanonicalType.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "getReturnType" >/dev/null 2>&1; then :
-
-else
-
-$as_echo "#define getReturnType getResultType" >>confdefs.h
-
-fi
-rm -f conftest*
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Frontend/CompilerInstance.h>
-int
-main ()
-{
-
-       using namespace clang;
-       CompilerInstance *Clang;
-       Clang->createPreprocessor(TU_Complete);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-$as_echo "#define CREATEPREPROCESSOR_TAKES_TUKIND /**/" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Basic/SourceManager.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "setMainFileID" >/dev/null 2>&1; then :
-
-$as_echo "#define HAVE_SETMAINFILEID /**/" >>confdefs.h
-
-fi
-rm -f conftest*
-
-ac_fn_cxx_check_header_mongrel "$LINENO" "llvm/ADT/OwningPtr.h" "ac_cv_header_llvm_ADT_OwningPtr_h" "$ac_includes_default"
-if test "x$ac_cv_header_llvm_ADT_OwningPtr_h" = xyes; then :
-
-$as_echo "#define HAVE_ADT_OWNINGPTR_H /**/" >>confdefs.h
-
-fi
-
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Basic/Builtins.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "initializeBuiltins" >/dev/null 2>&1; then :
-
-else
-
-$as_echo "#define initializeBuiltins InitializeBuiltins" >>confdefs.h
-
-fi
-rm -f conftest*
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <clang/Frontend/FrontendOptions.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "IK_C" >/dev/null 2>&1; then :
-
-else
-  ac_fn_cxx_check_header_mongrel "$LINENO" "clang/Basic/LangStandard.h" "ac_cv_header_clang_Basic_LangStandard_h" "$ac_includes_default"
-if test "x$ac_cv_header_clang_Basic_LangStandard_h" = xyes; then :
-  IK_C=Language::C
-else
-  IK_C=InputKind::C
-fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define IK_C $IK_C
-_ACEOF
-
-
-fi
-rm -f conftest*
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-       #include <clang/Basic/TargetOptions.h>
-       #include <clang/Lex/PreprocessorOptions.h>
-       #include <clang/Frontend/CompilerInstance.h>
-
-       #include "set_lang_defaults_arg4.h"
-
-int
-main ()
-{
-
-       using namespace clang;
-       CompilerInstance *Clang;
-       TargetOptions TO;
-       llvm::Triple T(TO.Triple);
-       PreprocessorOptions PO;
-       CompilerInvocation::setLangDefaults(Clang->getLangOpts(), IK_C,
-                       T, setLangDefaultsArg4(PO),
-                       LangStandard::lang_unspecified);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-$as_echo "#define SETLANGDEFAULTS_TAKES_5_ARGUMENTS /**/" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-       #include <clang/Frontend/CompilerInstance.h>
-       #include <clang/Frontend/CompilerInvocation.h>
-
-int
-main ()
-{
-
-       using namespace clang;
-       CompilerInvocation *invocation;
-       CompilerInstance *Clang;
-       Clang->setInvocation(std::make_shared<CompilerInvocation>(*invocation));
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-$as_echo "#define SETINVOCATION_TAKES_SHARED_PTR /**/" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_fn_cxx_check_header_mongrel "$LINENO" "llvm/Option/Arg.h" "ac_cv_header_llvm_Option_Arg_h" "$ac_includes_default"
-if test "x$ac_cv_header_llvm_Option_Arg_h" = xyes; then :
-
-$as_echo "#define HAVE_LLVM_OPTION_ARG_H /**/" >>confdefs.h
-
-fi
-
-
-CPPFLAGS="$SAVE_CPPFLAGS"
-
-SAVE_LDFLAGS="$LDFLAGS"
-LDFLAGS="$CLANG_LDFLAGS $LDFLAGS"
-
-# Use single libclang-cpp shared library when available.
-# Otherwise, use a selection of clang libraries that appears to work.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lclang-cpp" >&5
-$as_echo_n "checking for main in -lclang-cpp... " >&6; }
-if ${ac_cv_lib_clang_cpp_main+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lclang-cpp  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-return main ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_clang_cpp_main=yes
-else
-  ac_cv_lib_clang_cpp_main=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_clang_cpp_main" >&5
-$as_echo "$ac_cv_lib_clang_cpp_main" >&6; }
-if test "x$ac_cv_lib_clang_cpp_main" = xyes; then :
-  have_lib_clang=yes
-else
-  have_lib_clang=no
-fi
-
-if test "$have_lib_clang" = yes; then
-       CLANG_LIBS="-lclang-cpp $CLANG_LIBS"
-else
-       CLANG_LIBS="-lclangBasic -lclangDriver $CLANG_LIBS"
-       CLANG_LIBS="-lclangAnalysis -lclangAST -lclangLex $CLANG_LIBS"
-       LDFLAGS="$CLANG_LDFLAGS $CLANG_LIBS $SAVE_LDFLAGS"
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lclangEdit" >&5
-$as_echo_n "checking for main in -lclangEdit... " >&6; }
-if ${ac_cv_lib_clangEdit_main+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lclangEdit  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-return main ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_clangEdit_main=yes
-else
-  ac_cv_lib_clangEdit_main=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_clangEdit_main" >&5
-$as_echo "$ac_cv_lib_clangEdit_main" >&6; }
-if test "x$ac_cv_lib_clangEdit_main" = xyes; then :
-  LIB_CLANG_EDIT=-lclangEdit
-fi
-
-       CLANG_LIBS="$LIB_CLANG_EDIT $CLANG_LIBS"
-       CLANG_LIBS="-lclangParse -lclangSema $CLANG_LIBS"
-       CLANG_LIBS="-lclangFrontend -lclangSerialization $CLANG_LIBS"
-fi
-
-LDFLAGS="$SAVE_LDFLAGS"
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-CONFIG_STATUS_DEPENDENCIES=$LLVM_CONFIG
-
-ac_config_headers="$ac_config_headers isl_config.h"
-
-ac_config_files="$ac_config_files Makefile"
-
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-       "s/'/'\\\\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-       cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-         mv -f confcache "$cache_file"$$ &&
-         mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-         mv -f confcache "$cache_file" ;;
-       esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='        ';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by isl-interface $as_me 0, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <isl-development@googlegroups.com>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-isl-interface config.status 0
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`'
-SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
-host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`'
-configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
-predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
-postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
-LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
-reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
-reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
-GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
-include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
-predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
-postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
-predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
-postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-OBJDUMP \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-DLLTOOL \
-sharedlib_from_linklib_cmd \
-AR \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_import \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-lt_cv_nm_interface \
-nm_file_list_spec \
-lt_cv_truncate_bin \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib \
-compiler_lib_search_dirs \
-predep_objects \
-postdep_objects \
-predeps \
-postdeps \
-compiler_lib_search_path \
-LD_CXX \
-reload_flag_CXX \
-compiler_CXX \
-lt_prog_compiler_no_builtin_flag_CXX \
-lt_prog_compiler_pic_CXX \
-lt_prog_compiler_wl_CXX \
-lt_prog_compiler_static_CXX \
-lt_cv_prog_compiler_c_o_CXX \
-export_dynamic_flag_spec_CXX \
-whole_archive_flag_spec_CXX \
-compiler_needs_object_CXX \
-with_gnu_ld_CXX \
-allow_undefined_flag_CXX \
-no_undefined_flag_CXX \
-hardcode_libdir_flag_spec_CXX \
-hardcode_libdir_separator_CXX \
-exclude_expsyms_CXX \
-include_expsyms_CXX \
-file_list_spec_CXX \
-compiler_lib_search_dirs_CXX \
-predep_objects_CXX \
-postdep_objects_CXX \
-predeps_CXX \
-postdeps_CXX \
-compiler_lib_search_path_CXX; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-configure_time_dlsearch_path \
-configure_time_lt_sys_library_path \
-reload_cmds_CXX \
-old_archive_cmds_CXX \
-old_archive_from_new_cmds_CXX \
-old_archive_from_expsyms_cmds_CXX \
-archive_cmds_CXX \
-archive_expsym_cmds_CXX \
-module_cmds_CXX \
-module_expsym_cmds_CXX \
-export_symbols_cmds_CXX \
-prelink_cmds_CXX \
-postlink_cmds_CXX; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-ac_aux_dir='$ac_aux_dir'
-
-# See if we are running on zsh, and set the options that allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}"; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "isl_config.h") CONFIG_HEADERS="$CONFIG_HEADERS isl_config.h" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = "\a"
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
-h
-s///
-s/^/:/
-s/[     ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[  ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[      ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[    ]*#[    ]*define[       ][      ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = "\a"
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-        # (if the path is not absolute).  The absolute path cannot be DOS-style,
-        # because $ac_f cannot contain `:'.
-        test -f "$ac_f" ||
-          case $ac_f in
-          [\\/$]*) false;;
-          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-          esac ||
-          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-       `' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$ac_file" : 'X\(//\)[^/]' \| \
-        X"$ac_file" : 'X\(//\)$' \| \
-        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$_am_arg" : 'X\(//\)[^/]' \| \
-        X"$_am_arg" : 'X\(//\)$' \| \
-        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  # TODO: see whether this extra hack can be removed once we start
-  # requiring Autoconf 2.70 or later.
-  case $CONFIG_FILES in #(
-  *\'*) :
-    eval set x "$CONFIG_FILES" ;; #(
-  *) :
-    set x $CONFIG_FILES ;; #(
-  *) :
-     ;;
-esac
-  shift
-  # Used to flag and report bootstrapping failures.
-  am_rc=0
-  for am_mf
-  do
-    # Strip MF so we end up with the name of the file.
-    am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile which includes
-    # dependency-tracking related rules and includes.
-    # Grep'ing the whole file directly is not great: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
-      || continue
-    am_dirpart=`$as_dirname -- "$am_mf" ||
-$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$am_mf" : 'X\(//\)[^/]' \| \
-        X"$am_mf" : 'X\(//\)$' \| \
-        X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$am_mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-    am_filepart=`$as_basename -- "$am_mf" ||
-$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$am_mf" : 'X\(//\)$' \| \
-        X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$am_mf" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-    { echo "$as_me:$LINENO: cd "$am_dirpart" \
-      && sed -e '/# am--include-marker/d' "$am_filepart" \
-        | $MAKE -f - am--depfiles" >&5
-   (cd "$am_dirpart" \
-      && sed -e '/# am--include-marker/d' "$am_filepart" \
-        | $MAKE -f - am--depfiles) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } || am_rc=$?
-  done
-  if test $am_rc -ne 0; then
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "Something went wrong bootstrapping makefile fragments
-    for automatic dependency tracking.  If GNU make was not used, consider
-    re-running the configure script with MAKE=\"gmake\" (or whatever is
-    necessary).  You can also try re-running configure with the
-    '--disable-dependency-tracking' option to at least be able to build
-    the package (albeit without support for automatic dependency tracking).
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-  { am_dirpart=; unset am_dirpart;}
-  { am_filepart=; unset am_filepart;}
-  { am_mf=; unset am_mf;}
-  { am_rc=; unset am_rc;}
-  rm -f conftest-deps.mk
-}
- ;;
-    "libtool":C)
-
-    # See if we are running on zsh, and set the options that allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}"; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile=${ofile}T
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-# Generated automatically by $as_me ($PACKAGE) $VERSION
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-
-# Provide generalized library-building support services.
-# Written by Gordon Matzigkeit, 1996
-
-# Copyright (C) 2014 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program or library that is built
-# using GNU Libtool, you may include this file under the  same
-# distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags='CXX '
-
-# Configured defaults for sys_lib_dlsearch_path munging.
-: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shared archive member basename,for filename based shared library versioning on AIX.
-shared_archive_member_spec=$shared_archive_member_spec
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# An object symbol dumper.
-OBJDUMP=$lt_OBJDUMP
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive (by configure).
-lt_ar_flags=$lt_ar_flags
-
-# Flags to create an archive.
-AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"}
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm into a list of symbols to manually relocate.
-global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# The name lister interface.
-nm_interface=$lt_lt_cv_nm_interface
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and where our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# Command to truncate a binary pipe.
-lt_truncate_bin=$lt_lt_cv_truncate_bin
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Detected run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path
-
-# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
-configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \$shlibpath_var if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects
-postdep_objects=$lt_postdep_objects
-predeps=$lt_predeps
-postdeps=$lt_postdeps
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-    cat <<'_LT_EOF' >> "$cfgfile"
-
-# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
-
-# func_munge_path_list VARIABLE PATH
-# -----------------------------------
-# VARIABLE is name of variable containing _space_ separated list of
-# directories to be munged by the contents of PATH, which is string
-# having a format:
-# "DIR[:DIR]:"
-#       string "DIR[ DIR]" will be prepended to VARIABLE
-# ":DIR[:DIR]"
-#       string "DIR[ DIR]" will be appended to VARIABLE
-# "DIRP[:DIRP]::[DIRA:]DIRA"
-#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
-#       "DIRA[ DIRA]" will be appended to VARIABLE
-# "DIR[:DIR]"
-#       VARIABLE will be replaced by "DIR[ DIR]"
-func_munge_path_list ()
-{
-    case x$2 in
-    x)
-        ;;
-    *:)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
-        ;;
-    x:*)
-        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    *::*)
-        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
-        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
-        ;;
-    *)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    esac
-}
-
-
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-func_cc_basename ()
-{
-    for cc_temp in $*""; do
-      case $cc_temp in
-        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-        \-*) ;;
-        *) break;;
-      esac
-    done
-    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-}
-
-
-# ### END FUNCTIONS SHARED WITH CONFIGURE
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test set != "${COLLECT_NAMES+set}"; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-
-ltmain=$ac_aux_dir/ltmain.sh
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: CXX
-
-# The linker used to build libraries.
-LD=$lt_LD_CXX
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_CXX
-reload_cmds=$lt_reload_cmds_CXX
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_CXX
-
-# A language specific compiler.
-CC=$lt_compiler_CXX
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_CXX
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_CXX
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_CXX
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_CXX
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_CXX
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_CXX
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_CXX
-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_CXX
-module_expsym_cmds=$lt_module_expsym_cmds_CXX
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_CXX
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_CXX
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_CXX
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
-
-# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_CXX
-
-# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \$shlibpath_var if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_CXX
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_CXX
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_CXX
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_CXX
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_CXX
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_CXX
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_CXX
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_CXX
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_CXX
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_CXX
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_CXX
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_CXX
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_CXX
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_CXX
-postdep_objects=$lt_postdep_objects_CXX
-predeps=$lt_predeps_CXX
-postdeps=$lt_postdeps_CXX
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
-
-# ### END LIBTOOL TAG CONFIG: CXX
-_LT_EOF
-
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/polly/lib/External/isl/interface/depcomp b/polly/lib/External/isl/interface/depcomp
deleted file mode 100755 (executable)
index 6b39162..0000000
+++ /dev/null
@@ -1,791 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2018-03-07.03; # UTC
-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
-  '')
-    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-    exit 1;
-    ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by 'PROGRAMS ARGS'.
-  object      Object file output by 'PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputting dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-# Get the directory component of the given path, and save it in the
-# global variables '$dir'.  Note that this directory component will
-# be either empty or ending with a '/' character.  This is deliberate.
-set_dir_from ()
-{
-  case $1 in
-    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
-      *) dir=;;
-  esac
-}
-
-# Get the suffix-stripped basename of the given path, and save it the
-# global variable '$base'.
-set_base_from ()
-{
-  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
-}
-
-# If no dependency file was actually created by the compiler invocation,
-# we still have to create a dummy depfile, to avoid errors with the
-# Makefile "include basename.Plo" scheme.
-make_dummy_depfile ()
-{
-  echo "#dummy" > "$depfile"
-}
-
-# Factor out some common post-processing of the generated depfile.
-# Requires the auxiliary global variable '$tmpdepfile' to be set.
-aix_post_process_depfile ()
-{
-  # If the compiler actually managed to produce a dependency file,
-  # post-process it.
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form 'foo.o: dependency.h'.
-    # Do two passes, one to just change these to
-    #   $object: dependency.h
-    # and one to simply output
-    #   dependency.h:
-    # which is needed to avoid the deleted-header problem.
-    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
-      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
-    } > "$depfile"
-    rm -f "$tmpdepfile"
-  else
-    make_dummy_depfile
-  fi
-}
-
-# A tabulation character.
-tab='  '
-# A newline character.
-nl='
-'
-# Character ranges might be problematic outside the C locale.
-# These definitions help.
-upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
-lower=abcdefghijklmnopqrstuvwxyz
-digits=0123456789
-alpha=${upper}${lower}
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-  echo "depcomp: Variables source, object and depmode must be set" 1>&2
-  exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Avoid interferences from the environment.
-gccflag= dashmflag=
-
-# Some modes work just like other modes, but use different flags.  We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write.  Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
-  # HP compiler uses -M and no extra arg.
-  gccflag=-M
-  depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
-  # This is just like dashmstdout with a different argument.
-  dashmflag=-xM
-  depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
-  # This is just like msvisualcpp but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvisualcpp
-fi
-
-if test "$depmode" = msvc7msys; then
-  # This is just like msvc7 but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvc7
-fi
-
-if test "$depmode" = xlc; then
-  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
-  gccflag=-qmakedep=gcc,-MF
-  depmode=gcc
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff.  Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am.  Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
-  for arg
-  do
-    case $arg in
-    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
-    *)  set fnord "$@" "$arg" ;;
-    esac
-    shift # fnord
-    shift # $arg
-  done
-  "$@"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
-## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
-## (see the conditional assignment to $gccflag above).
-## There are various ways to get dependency output from gcc.  Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-##   up in a subdir.  Having to rename by hand is ugly.
-##   (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).  Also, it might not be
-##   supported by the other compilers which use the 'gcc' depmode.
-## - Using -M directly means running the compiler twice (even worse
-##   than renaming).
-  if test -z "$gccflag"; then
-    gccflag=-MD,
-  fi
-  "$@" -Wp,"$gccflag$tmpdepfile"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  # The second -e expression handles DOS-style file names with drive
-  # letters.
-  sed -e 's/^[^:]*: / /' \
-      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the "deleted header file" problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header).  We avoid this by adding
-## dummy dependencies for each header file.  Too bad gcc doesn't do
-## this for us directly.
-## Some versions of gcc put a space before the ':'.  On the theory
-## that the space means something, we add a space to the output as
-## well.  hp depmode also adds that space, but also prefixes the VPATH
-## to the object.  Take care to not repeat it in the output.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like '#:fec' to the end of the
-    # dependency line.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
-      | tr "$nl" ' ' >> "$depfile"
-    echo >> "$depfile"
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-      >> "$depfile"
-  else
-    make_dummy_depfile
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-xlc)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-aix)
-  # The C for AIX Compiler uses -M and outputs the dependencies
-  # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts '$object:' at the
-  # start of each line; $object doesn't have directory information.
-  # Version 6 uses the directory in both cases.
-  set_dir_from "$object"
-  set_base_from "$object"
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$base.u
-    tmpdepfile3=$dir.libs/$base.u
-    "$@" -Wc,-M
-  else
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$dir$base.u
-    tmpdepfile3=$dir$base.u
-    "$@" -M
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  aix_post_process_depfile
-  ;;
-
-tcc)
-  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
-  # FIXME: That version still under development at the moment of writing.
-  #        Make that this statement remains true also for stable, released
-  #        versions.
-  # It will wrap lines (doesn't matter whether long or short) with a
-  # trailing '\', as in:
-  #
-  #   foo.o : \
-  #    foo.c \
-  #    foo.h \
-  #
-  # It will put a trailing '\' even on the last line, and will use leading
-  # spaces rather than leading tabs (at least since its commit 0394caf7
-  # "Emit spaces for -MD").
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
-  # We have to change lines of the first kind to '$object: \'.
-  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
-  # And for each line of the second kind, we have to emit a 'dep.h:'
-  # dummy dependency, to avoid the deleted-header problem.
-  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-## The order of this option in the case statement is important, since the
-## shell code in configure will try each of these formats in the order
-## listed in this file.  A plain '-MD' option would be understood by many
-## compilers, so we must ensure this comes after the gcc and icc options.
-pgcc)
-  # Portland's C compiler understands '-MD'.
-  # Will always output deps to 'file.d' where file is the root name of the
-  # source file under compilation, even if file resides in a subdirectory.
-  # The object file name does not affect the name of the '.d' file.
-  # pgcc 10.2 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using '\' :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-  set_dir_from "$object"
-  # Use the source, not the object, to determine the base name, since
-  # that's sadly what pgcc will do too.
-  set_base_from "$source"
-  tmpdepfile=$base.d
-
-  # For projects that build the same source file twice into different object
-  # files, the pgcc approach of using the *source* file root name can cause
-  # problems in parallel builds.  Use a locking strategy to avoid stomping on
-  # the same $tmpdepfile.
-  lockdir=$base.d-lock
-  trap "
-    echo '$0: caught signal, cleaning up...' >&2
-    rmdir '$lockdir'
-    exit 1
-  " 1 2 13 15
-  numtries=100
-  i=$numtries
-  while test $i -gt 0; do
-    # mkdir is a portable test-and-set.
-    if mkdir "$lockdir" 2>/dev/null; then
-      # This process acquired the lock.
-      "$@" -MD
-      stat=$?
-      # Release the lock.
-      rmdir "$lockdir"
-      break
-    else
-      # If the lock is being held by a different process, wait
-      # until the winning process is done or we timeout.
-      while test -d "$lockdir" && test $i -gt 0; do
-        sleep 1
-        i=`expr $i - 1`
-      done
-    fi
-    i=`expr $i - 1`
-  done
-  trap - 1 2 13 15
-  if test $i -le 0; then
-    echo "$0: failed to acquire lock after $numtries attempts" >&2
-    echo "$0: check lockdir '$lockdir'" >&2
-    exit 1
-  fi
-
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-  # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp2)
-  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-  # compilers, which have integrated preprocessors.  The correct option
-  # to use with these is +Maked; it writes dependencies to a file named
-  # 'foo.d', which lands next to the object file, wherever that
-  # happens to be.
-  # Much of this is similar to the tru64 case; see comments there.
-  set_dir_from  "$object"
-  set_base_from "$object"
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir.libs/$base.d
-    "$@" -Wc,+Maked
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    "$@" +Maked
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-     rm -f "$tmpdepfile1" "$tmpdepfile2"
-     exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add 'dependent.h:' lines.
-    sed -ne '2,${
-               s/^ *//
-               s/ \\*$//
-               s/$/:/
-               p
-             }' "$tmpdepfile" >> "$depfile"
-  else
-    make_dummy_depfile
-  fi
-  rm -f "$tmpdepfile" "$tmpdepfile2"
-  ;;
-
-tru64)
-  # The Tru64 compiler uses -MD to generate dependencies as a side
-  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
-  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-  # dependencies in 'foo.d' instead, so we check for that too.
-  # Subdirectories are respected.
-  set_dir_from  "$object"
-  set_base_from "$object"
-
-  if test "$libtool" = yes; then
-    # Libtool generates 2 separate objects for the 2 libraries.  These
-    # two compilations output dependencies in $dir.libs/$base.o.d and
-    # in $dir$base.o.d.  We have to check for both files, because
-    # one of the two compilations can be disabled.  We should prefer
-    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-    # automatically cleaned when .libs/ is deleted, while ignoring
-    # the former would cause a distcleancheck panic.
-    tmpdepfile1=$dir$base.o.d          # libtool 1.5
-    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
-    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
-    "$@" -Wc,-MD
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    tmpdepfile3=$dir$base.d
-    "$@" -MD
-  fi
-
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  # Same post-processing that is required for AIX mode.
-  aix_post_process_depfile
-  ;;
-
-msvc7)
-  if test "$libtool" = yes; then
-    showIncludes=-Wc,-showIncludes
-  else
-    showIncludes=-showIncludes
-  fi
-  "$@" $showIncludes > "$tmpdepfile"
-  stat=$?
-  grep -v '^Note: including file: ' "$tmpdepfile"
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  # The first sed program below extracts the file names and escapes
-  # backslashes for cygpath.  The second sed program outputs the file
-  # name when reading, but also accumulates all include files in the
-  # hold buffer in order to output them again at the end.  This only
-  # works with sed implementations that can handle large buffers.
-  sed < "$tmpdepfile" -n '
-/^Note: including file:  *\(.*\)/ {
-  s//\1/
-  s/\\/\\\\/g
-  p
-}' | $cygpath_u | sort -u | sed -n '
-s/ /\\ /g
-s/\(.*\)/'"$tab"'\1 \\/p
-s/.\(.*\) \\/\1:/
-H
-$ {
-  s/.*/'"$tab"'/
-  G
-  p
-}' >> "$depfile"
-  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
-  rm -f "$tmpdepfile"
-  ;;
-
-msvc7msys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-#nosideeffect)
-  # This comment above is used by automake to tell side-effect
-  # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove '-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for ':'
-  # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
-  "$@" $dashmflag |
-    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this sed invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-dashXmstdout)
-  # This case only exists to satisfy depend.m4.  It is never actually
-  # run, as this mode is specially recognized in the preamble.
-  exit 1
-  ;;
-
-makedepend)
-  "$@" || exit $?
-  # Remove any Libtool call
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no eat=no
-  for arg
-  do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    if test $eat = yes; then
-      eat=no
-      continue
-    fi
-    case "$arg" in
-    -D*|-I*)
-      set fnord "$@" "$arg"; shift ;;
-    # Strip any option that makedepend may not understand.  Remove
-    # the object too, otherwise makedepend will parse it as a source file.
-    -arch)
-      eat=yes ;;
-    -*|$object)
-      ;;
-    *)
-      set fnord "$@" "$arg"; shift ;;
-    esac
-  done
-  obj_suffix=`echo "$object" | sed 's/^.*\././'`
-  touch "$tmpdepfile"
-  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-  rm -f "$depfile"
-  # makedepend may prepend the VPATH from the source file name to the object.
-  # No need to regex-escape $object, excess matching of '.' is harmless.
-  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process the last invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed '1,2d' "$tmpdepfile" \
-    | tr ' ' "$nl" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile" "$tmpdepfile".bak
-  ;;
-
-cpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove '-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  "$@" -E \
-    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-    | sed '$ s: \\$::' > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  cat < "$tmpdepfile" >> "$depfile"
-  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvisualcpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-        set fnord "$@"
-        shift
-        shift
-        ;;
-    *)
-        set fnord "$@" "$arg"
-        shift
-        shift
-        ;;
-    esac
-  done
-  "$@" -E 2>/dev/null |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
-  echo "$tab" >> "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvcmsys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-none)
-  exec "$@"
-  ;;
-
-*)
-  echo "Unknown depmode $depmode" 1>&2
-  exit 1
-  ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/isl/interface/install-sh b/polly/lib/External/isl/interface/install-sh
deleted file mode 100755 (executable)
index ec298b5..0000000
+++ /dev/null
@@ -1,541 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2020-11-14.01; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# 'make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-tab='  '
-nl='
-'
-IFS=" $tab$nl"
-
-# Set DOITPROG to "echo" to test this script.
-
-doit=${DOITPROG-}
-doit_exec=${doit:-exec}
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-# Create dirs (including intermediate dirs) using mode 755.
-# This is like GNU 'install' as of coreutils 8.32 (2020).
-mkdir_umask=22
-
-backupsuffix=
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-is_target_a_directory=possibly
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -p            pass -p to $cpprog.
-  -s            $stripprog installed files.
-  -S SUFFIX     attempt to back up existing files, with suffix SUFFIX.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-
-By default, rm is invoked with -f; when overridden with RMPROG,
-it's up to you to specify -f if you want it.
-
-If -S is not specified, no backups are attempted.
-
-Email bug reports to bug-automake@gnu.org.
-Automake home page: https://www.gnu.org/software/automake/
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-        shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-        case $mode in
-          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
-            echo "$0: invalid mode: $mode" >&2
-            exit 1;;
-        esac
-        shift;;
-
-    -o) chowncmd="$chownprog $2"
-        shift;;
-
-    -p) cpprog="$cpprog -p";;
-
-    -s) stripcmd=$stripprog;;
-
-    -S) backupsuffix="$2"
-        shift;;
-
-    -t)
-        is_target_a_directory=always
-        dst_arg=$2
-        # Protect names problematic for 'test' and other utilities.
-        case $dst_arg in
-          -* | [=\(\)!]) dst_arg=./$dst_arg;;
-        esac
-        shift;;
-
-    -T) is_target_a_directory=never;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --) shift
-        break;;
-
-    -*) echo "$0: invalid option: $1" >&2
-        exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-# We allow the use of options -d and -T together, by making -d
-# take the precedence; this is for compatibility with GNU install.
-
-if test -n "$dir_arg"; then
-  if test -n "$dst_arg"; then
-    echo "$0: target directory not allowed when installing a directory." >&2
-    exit 1
-  fi
-fi
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-    # Protect names problematic for 'test' and other utilities.
-    case $dst_arg in
-      -* | [=\(\)!]) dst_arg=./$dst_arg;;
-    esac
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call 'install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  if test $# -gt 1 || test "$is_target_a_directory" = always; then
-    if test ! -d "$dst_arg"; then
-      echo "$0: $dst_arg: Is not a directory." >&2
-      exit 1
-    fi
-  fi
-fi
-
-if test -z "$dir_arg"; then
-  do_exit='(exit $ret); exit $ret'
-  trap "ret=129; $do_exit" 1
-  trap "ret=130; $do_exit" 2
-  trap "ret=141; $do_exit" 13
-  trap "ret=143; $do_exit" 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-        u_plus_rw=
-      else
-        u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-        u_plus_rw=
-      else
-        u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names problematic for 'test' and other utilities.
-  case $src in
-    -* | [=\(\)!]) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-    # Don't chown directories that already exist.
-    if test $dstdir_status = 0; then
-      chowncmd=""
-    fi
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-    dst=$dst_arg
-
-    # If destination is a directory, append the input filename.
-    if test -d "$dst"; then
-      if test "$is_target_a_directory" = never; then
-        echo "$0: $dst_arg: Is a directory" >&2
-        exit 1
-      fi
-      dstdir=$dst
-      dstbase=`basename "$src"`
-      case $dst in
-       */) dst=$dst$dstbase;;
-       *)  dst=$dst/$dstbase;;
-      esac
-      dstdir_status=0
-    else
-      dstdir=`dirname "$dst"`
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  case $dstdir in
-    */) dstdirslash=$dstdir;;
-    *)  dstdirslash=$dstdir/;;
-  esac
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-        # With -d, create the new directory with the user-specified mode.
-        # Otherwise, rely on $mkdir_umask.
-        if test -n "$dir_arg"; then
-          mkdir_mode=-m$mode
-        else
-          mkdir_mode=
-        fi
-
-        posix_mkdir=false
-       # The $RANDOM variable is not portable (e.g., dash).  Use it
-       # here however when possible just to lower collision chance.
-       tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-
-       trap '
-         ret=$?
-         rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
-         exit $ret
-       ' 0
-
-       # Because "mkdir -p" follows existing symlinks and we likely work
-       # directly in world-writeable /tmp, make sure that the '$tmpdir'
-       # directory is successfully created first before we actually test
-       # 'mkdir -p'.
-       if (umask $mkdir_umask &&
-           $mkdirprog $mkdir_mode "$tmpdir" &&
-           exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
-       then
-         if test -z "$dir_arg" || {
-              # Check for POSIX incompatibilities with -m.
-              # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-              # other-writable bit of parent directory when it shouldn't.
-              # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-              test_tmpdir="$tmpdir/a"
-              ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
-              case $ls_ld_tmpdir in
-                d????-?r-*) different_mode=700;;
-                d????-?--*) different_mode=755;;
-                *) false;;
-              esac &&
-              $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
-                ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
-                test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-              }
-            }
-         then posix_mkdir=:
-         fi
-         rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
-       else
-         # Remove any dirs left behind by ancient mkdir implementations.
-         rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
-       fi
-       trap '' 0;;
-    esac
-
-    if
-      $posix_mkdir && (
-        umask $mkdir_umask &&
-        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-        /*) prefix='/';;
-        [-=\(\)!]*) prefix='./';;
-        *)  prefix='';;
-      esac
-
-      oIFS=$IFS
-      IFS=/
-      set -f
-      set fnord $dstdir
-      shift
-      set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-        test X"$d" = X && continue
-
-        prefix=$prefix$d
-        if test -d "$prefix"; then
-          prefixes=
-        else
-          if $posix_mkdir; then
-            (umask $mkdir_umask &&
-             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-            # Don't fail if two instances are running concurrently.
-            test -d "$prefix" || exit 1
-          else
-            case $prefix in
-              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-              *) qprefix=$prefix;;
-            esac
-            prefixes="$prefixes '$qprefix'"
-          fi
-        fi
-        prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-        # Don't fail if two instances are running concurrently.
-        (umask $mkdir_umask &&
-         eval "\$doit_exec \$mkdirprog $prefixes") ||
-          test -d "$dstdir" || exit 1
-        obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=${dstdirslash}_inst.$$_
-    rmtmp=${dstdirslash}_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask &&
-     { test -z "$stripcmd" || {
-        # Create $dsttmp read-write so that cp doesn't create it read-only,
-        # which would cause strip to fail.
-        if test -z "$doit"; then
-          : >"$dsttmp" # No need to fork-exec 'touch'.
-        else
-          $doit touch "$dsttmp"
-        fi
-       }
-     } &&
-     $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
-       set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       set +f &&
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # If $backupsuffix is set, and the file being installed
-      # already exists, attempt a backup.  Don't worry if it fails,
-      # e.g., if mv doesn't support -f.
-      if test -n "$backupsuffix" && test -f "$dst"; then
-        $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
-      fi
-
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-        # Now remove or move aside any old file at destination location.
-        # We try this two ways since rm can't unlink itself on some
-        # systems and the destination file might be busy for other
-        # reasons.  In this case, the final cleanup might fail but the new
-        # file should still install successfully.
-        {
-          test ! -f "$dst" ||
-          $doit $rmcmd "$dst" 2>/dev/null ||
-          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-            { $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
-          } ||
-          { echo "$0: cannot unlink or rename $dst" >&2
-            (exit 1); exit 1
-          }
-        } &&
-
-        # Now rename the file to the real destination.
-        $doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/isl/interface/isl.py b/polly/lib/External/isl/interface/isl.py
deleted file mode 100644 (file)
index f2249cb..0000000
+++ /dev/null
@@ -1,16882 +0,0 @@
-isl_dlname='libisl.so.23'
-import os
-from ctypes import *
-from ctypes.util import find_library
-
-isl_dyld_library_path = os.environ.get('ISL_DYLD_LIBRARY_PATH')
-if isl_dyld_library_path != None:
-    os.environ['DYLD_LIBRARY_PATH'] =  isl_dyld_library_path
-try:
-    isl = cdll.LoadLibrary(isl_dlname)
-except:
-    isl = cdll.LoadLibrary(find_library("isl"))
-libc = cdll.LoadLibrary(find_library("c"))
-
-class Error(Exception):
-    pass
-
-class Context:
-    defaultInstance = None
-
-    def __init__(self):
-        ptr = isl.isl_ctx_alloc()
-        self.ptr = ptr
-
-    def __del__(self):
-        isl.isl_ctx_free(self)
-
-    def from_param(self):
-        return c_void_p(self.ptr)
-
-    @staticmethod
-    def getDefaultInstance():
-        if Context.defaultInstance == None:
-            Context.defaultInstance = Context()
-        return Context.defaultInstance
-
-isl.isl_ctx_alloc.restype = c_void_p
-isl.isl_ctx_free.argtypes = [Context]
-
-class union_pw_multi_aff(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is multi_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_pw_multi_aff_from_multi_aff(isl.isl_multi_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is pw_multi_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_pw_multi_aff_from_pw_multi_aff(isl.isl_pw_multi_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is union_pw_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_pw_multi_aff_from_union_pw_aff(isl.isl_union_pw_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_pw_multi_aff_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_union_pw_multi_aff_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ptr = isl.isl_union_pw_multi_aff_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.union_pw_multi_aff("""%s""")' % s
-        else:
-            return 'isl.union_pw_multi_aff("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_pw_multi_aff:
-                arg1 = union_pw_multi_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_add(isl.isl_union_pw_multi_aff_copy(arg0.ptr), isl.isl_union_pw_multi_aff_copy(arg1.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def apply(*args):
-        if len(args) == 2 and args[1].__class__ is union_pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_multi_aff_apply_union_pw_multi_aff(isl.isl_union_pw_multi_aff_copy(args[0].ptr), isl.isl_union_pw_multi_aff_copy(args[1].ptr))
-            obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def as_multi_union_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_as_multi_union_pw_aff(isl.isl_union_pw_multi_aff_copy(arg0.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def as_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_as_pw_multi_aff(isl.isl_union_pw_multi_aff_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def as_union_map(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_as_union_map(isl.isl_union_pw_multi_aff_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def coalesce(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_coalesce(isl.isl_union_pw_multi_aff_copy(arg0.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_domain(isl.isl_union_pw_multi_aff_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def empty(*args):
-        if len(args) == 0:
-            ctx = Context.getDefaultInstance()
-            res = isl.isl_union_pw_multi_aff_empty_ctx(ctx)
-            obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def extract_pw_multi_aff(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is space:
-                arg1 = space(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_extract_pw_multi_aff(arg0.ptr, isl.isl_space_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def flat_range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_pw_multi_aff:
-                arg1 = union_pw_multi_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_flat_range_product(isl.isl_union_pw_multi_aff_copy(arg0.ptr), isl.isl_union_pw_multi_aff_copy(arg1.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_gist(isl.isl_union_pw_multi_aff_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain(*args):
-        if len(args) == 2 and args[1].__class__ is space:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_multi_aff_intersect_domain_space(isl.isl_union_pw_multi_aff_copy(args[0].ptr), isl.isl_space_copy(args[1].ptr))
-            obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is union_set:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_multi_aff_intersect_domain_union_set(isl.isl_union_pw_multi_aff_copy(args[0].ptr), isl.isl_union_set_copy(args[1].ptr))
-            obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def intersect_domain_wrapped_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_intersect_domain_wrapped_domain(isl.isl_union_pw_multi_aff_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain_wrapped_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_intersect_domain_wrapped_range(isl.isl_union_pw_multi_aff_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_intersect_params(isl.isl_union_pw_multi_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def involves_locals(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_involves_locals(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def isa_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_isa_pw_multi_aff(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def plain_is_empty(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_plain_is_empty(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def preimage_domain_wrapped_domain(*args):
-        if len(args) == 2 and args[1].__class__ is union_pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff(isl.isl_union_pw_multi_aff_copy(args[0].ptr), isl.isl_union_pw_multi_aff_copy(args[1].ptr))
-            obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def pullback(*args):
-        if len(args) == 2 and args[1].__class__ is union_pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_multi_aff_pullback_union_pw_multi_aff(isl.isl_union_pw_multi_aff_copy(args[0].ptr), isl.isl_union_pw_multi_aff_copy(args[1].ptr))
-            obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def pw_multi_aff_list(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_get_pw_multi_aff_list(arg0.ptr)
-        obj = pw_multi_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def get_pw_multi_aff_list(arg0):
-        return arg0.pw_multi_aff_list()
-    def range_factor_domain(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_range_factor_domain(isl.isl_union_pw_multi_aff_copy(arg0.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def range_factor_range(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_range_factor_range(isl.isl_union_pw_multi_aff_copy(arg0.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_pw_multi_aff:
-                arg1 = union_pw_multi_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_range_product(isl.isl_union_pw_multi_aff_copy(arg0.ptr), isl.isl_union_pw_multi_aff_copy(arg1.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def space(arg0):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def sub(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_pw_multi_aff:
-                arg1 = union_pw_multi_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_sub(isl.isl_union_pw_multi_aff_copy(arg0.ptr), isl.isl_union_pw_multi_aff_copy(arg1.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def subtract_domain(*args):
-        if len(args) == 2 and args[1].__class__ is space:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_multi_aff_subtract_domain_space(isl.isl_union_pw_multi_aff_copy(args[0].ptr), isl.isl_space_copy(args[1].ptr))
-            obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is union_set:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_multi_aff_subtract_domain_union_set(isl.isl_union_pw_multi_aff_copy(args[0].ptr), isl.isl_union_set_copy(args[1].ptr))
-            obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def union_add(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_multi_aff:
-                arg0 = union_pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_pw_multi_aff:
-                arg1 = union_pw_multi_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_multi_aff_union_add(isl.isl_union_pw_multi_aff_copy(arg0.ptr), isl.isl_union_pw_multi_aff_copy(arg1.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_union_pw_multi_aff_from_multi_aff.restype = c_void_p
-isl.isl_union_pw_multi_aff_from_multi_aff.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_from_pw_multi_aff.restype = c_void_p
-isl.isl_union_pw_multi_aff_from_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_from_union_pw_aff.restype = c_void_p
-isl.isl_union_pw_multi_aff_from_union_pw_aff.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_read_from_str.restype = c_void_p
-isl.isl_union_pw_multi_aff_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_union_pw_multi_aff_add.restype = c_void_p
-isl.isl_union_pw_multi_aff_add.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_apply_union_pw_multi_aff.restype = c_void_p
-isl.isl_union_pw_multi_aff_apply_union_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_as_multi_union_pw_aff.restype = c_void_p
-isl.isl_union_pw_multi_aff_as_multi_union_pw_aff.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_as_pw_multi_aff.restype = c_void_p
-isl.isl_union_pw_multi_aff_as_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_as_union_map.restype = c_void_p
-isl.isl_union_pw_multi_aff_as_union_map.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_coalesce.restype = c_void_p
-isl.isl_union_pw_multi_aff_coalesce.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_domain.restype = c_void_p
-isl.isl_union_pw_multi_aff_domain.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_empty_ctx.restype = c_void_p
-isl.isl_union_pw_multi_aff_empty_ctx.argtypes = [Context]
-isl.isl_union_pw_multi_aff_extract_pw_multi_aff.restype = c_void_p
-isl.isl_union_pw_multi_aff_extract_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_flat_range_product.restype = c_void_p
-isl.isl_union_pw_multi_aff_flat_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_gist.restype = c_void_p
-isl.isl_union_pw_multi_aff_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_intersect_domain_space.restype = c_void_p
-isl.isl_union_pw_multi_aff_intersect_domain_space.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_intersect_domain_union_set.restype = c_void_p
-isl.isl_union_pw_multi_aff_intersect_domain_union_set.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_intersect_domain_wrapped_domain.restype = c_void_p
-isl.isl_union_pw_multi_aff_intersect_domain_wrapped_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_intersect_domain_wrapped_range.restype = c_void_p
-isl.isl_union_pw_multi_aff_intersect_domain_wrapped_range.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_intersect_params.restype = c_void_p
-isl.isl_union_pw_multi_aff_intersect_params.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_involves_locals.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_isa_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_plain_is_empty.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff.restype = c_void_p
-isl.isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_pullback_union_pw_multi_aff.restype = c_void_p
-isl.isl_union_pw_multi_aff_pullback_union_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_get_pw_multi_aff_list.restype = c_void_p
-isl.isl_union_pw_multi_aff_get_pw_multi_aff_list.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_range_factor_domain.restype = c_void_p
-isl.isl_union_pw_multi_aff_range_factor_domain.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_range_factor_range.restype = c_void_p
-isl.isl_union_pw_multi_aff_range_factor_range.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_range_product.restype = c_void_p
-isl.isl_union_pw_multi_aff_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_get_space.restype = c_void_p
-isl.isl_union_pw_multi_aff_get_space.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_sub.restype = c_void_p
-isl.isl_union_pw_multi_aff_sub.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_subtract_domain_space.restype = c_void_p
-isl.isl_union_pw_multi_aff_subtract_domain_space.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_subtract_domain_union_set.restype = c_void_p
-isl.isl_union_pw_multi_aff_subtract_domain_union_set.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_union_add.restype = c_void_p
-isl.isl_union_pw_multi_aff_union_add.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_multi_aff_copy.restype = c_void_p
-isl.isl_union_pw_multi_aff_copy.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_free.restype = c_void_p
-isl.isl_union_pw_multi_aff_free.argtypes = [c_void_p]
-isl.isl_union_pw_multi_aff_to_str.restype = POINTER(c_char)
-isl.isl_union_pw_multi_aff_to_str.argtypes = [c_void_p]
-
-class multi_union_pw_aff(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is multi_pw_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_union_pw_aff_from_multi_pw_aff(isl.isl_multi_pw_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is union_pw_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_union_pw_aff_from_union_pw_aff(isl.isl_union_pw_aff_copy(args[0].ptr))
-            return
-        if len(args) == 2 and args[0].__class__ is space and args[1].__class__ is union_pw_aff_list:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_union_pw_aff_from_union_pw_aff_list(isl.isl_space_copy(args[0].ptr), isl.isl_union_pw_aff_list_copy(args[1].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_union_pw_aff_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_multi_union_pw_aff_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ptr = isl.isl_multi_union_pw_aff_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.multi_union_pw_aff("""%s""")' % s
-        else:
-            return 'isl.multi_union_pw_aff("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_union_pw_aff:
-                arg1 = multi_union_pw_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_add(isl.isl_multi_union_pw_aff_copy(arg0.ptr), isl.isl_multi_union_pw_aff_copy(arg1.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_get_at(arg0.ptr, arg1)
-        obj = union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def bind(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_bind(isl.isl_multi_union_pw_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def coalesce(arg0):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_coalesce(isl.isl_multi_union_pw_aff_copy(arg0.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_domain(isl.isl_multi_union_pw_aff_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def flat_range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_union_pw_aff:
-                arg1 = multi_union_pw_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_flat_range_product(isl.isl_multi_union_pw_aff_copy(arg0.ptr), isl.isl_multi_union_pw_aff_copy(arg1.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_gist(isl.isl_multi_union_pw_aff_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def has_range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_has_range_tuple_id(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def intersect_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_intersect_domain(isl.isl_multi_union_pw_aff_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_intersect_params(isl.isl_multi_union_pw_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def involves_nan(arg0):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_involves_nan(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def list(arg0):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_get_list(arg0.ptr)
-        obj = union_pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def get_list(arg0):
-        return arg0.list()
-    def neg(arg0):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_neg(isl.isl_multi_union_pw_aff_copy(arg0.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def plain_is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_union_pw_aff:
-                arg1 = multi_union_pw_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_plain_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def pullback(*args):
-        if len(args) == 2 and args[1].__class__ is union_pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_multi_union_pw_aff_pullback_union_pw_multi_aff(isl.isl_multi_union_pw_aff_copy(args[0].ptr), isl.isl_union_pw_multi_aff_copy(args[1].ptr))
-            obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_union_pw_aff:
-                arg1 = multi_union_pw_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_range_product(isl.isl_multi_union_pw_aff_copy(arg0.ptr), isl.isl_multi_union_pw_aff_copy(arg1.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_get_range_tuple_id(arg0.ptr)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_range_tuple_id(arg0):
-        return arg0.range_tuple_id()
-    def reset_range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_reset_range_tuple_id(isl.isl_multi_union_pw_aff_copy(arg0.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def scale(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_union_pw_aff_scale_multi_val(isl.isl_multi_union_pw_aff_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_union_pw_aff_scale_val(isl.isl_multi_union_pw_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def scale_down(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_union_pw_aff_scale_down_multi_val(isl.isl_multi_union_pw_aff_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_union_pw_aff_scale_down_val(isl.isl_multi_union_pw_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def set_at(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is union_pw_aff:
-                arg2 = union_pw_aff(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_set_at(isl.isl_multi_union_pw_aff_copy(arg0.ptr), arg1, isl.isl_union_pw_aff_copy(arg2.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def set_range_tuple(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_union_pw_aff_set_range_tuple_id(isl.isl_multi_union_pw_aff_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def size(arg0):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def space(arg0):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def sub(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_union_pw_aff:
-                arg1 = multi_union_pw_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_sub(isl.isl_multi_union_pw_aff_copy(arg0.ptr), isl.isl_multi_union_pw_aff_copy(arg1.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def union_add(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_union_pw_aff:
-                arg0 = multi_union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_union_pw_aff:
-                arg1 = multi_union_pw_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_union_add(isl.isl_multi_union_pw_aff_copy(arg0.ptr), isl.isl_multi_union_pw_aff_copy(arg1.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def zero(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_union_pw_aff_zero(isl.isl_space_copy(arg0.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_multi_union_pw_aff_from_multi_pw_aff.restype = c_void_p
-isl.isl_multi_union_pw_aff_from_multi_pw_aff.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_from_union_pw_aff.restype = c_void_p
-isl.isl_multi_union_pw_aff_from_union_pw_aff.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_from_union_pw_aff_list.restype = c_void_p
-isl.isl_multi_union_pw_aff_from_union_pw_aff_list.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_read_from_str.restype = c_void_p
-isl.isl_multi_union_pw_aff_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_multi_union_pw_aff_add.restype = c_void_p
-isl.isl_multi_union_pw_aff_add.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_get_at.restype = c_void_p
-isl.isl_multi_union_pw_aff_get_at.argtypes = [c_void_p, c_int]
-isl.isl_multi_union_pw_aff_bind.restype = c_void_p
-isl.isl_multi_union_pw_aff_bind.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_coalesce.restype = c_void_p
-isl.isl_multi_union_pw_aff_coalesce.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_domain.restype = c_void_p
-isl.isl_multi_union_pw_aff_domain.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_flat_range_product.restype = c_void_p
-isl.isl_multi_union_pw_aff_flat_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_gist.restype = c_void_p
-isl.isl_multi_union_pw_aff_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_has_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_intersect_domain.restype = c_void_p
-isl.isl_multi_union_pw_aff_intersect_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_intersect_params.restype = c_void_p
-isl.isl_multi_union_pw_aff_intersect_params.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_involves_nan.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_get_list.restype = c_void_p
-isl.isl_multi_union_pw_aff_get_list.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_neg.restype = c_void_p
-isl.isl_multi_union_pw_aff_neg.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_plain_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_pullback_union_pw_multi_aff.restype = c_void_p
-isl.isl_multi_union_pw_aff_pullback_union_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_range_product.restype = c_void_p
-isl.isl_multi_union_pw_aff_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_get_range_tuple_id.restype = c_void_p
-isl.isl_multi_union_pw_aff_get_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_reset_range_tuple_id.restype = c_void_p
-isl.isl_multi_union_pw_aff_reset_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_scale_multi_val.restype = c_void_p
-isl.isl_multi_union_pw_aff_scale_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_scale_val.restype = c_void_p
-isl.isl_multi_union_pw_aff_scale_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_scale_down_multi_val.restype = c_void_p
-isl.isl_multi_union_pw_aff_scale_down_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_scale_down_val.restype = c_void_p
-isl.isl_multi_union_pw_aff_scale_down_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_set_at.restype = c_void_p
-isl.isl_multi_union_pw_aff_set_at.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_multi_union_pw_aff_set_range_tuple_id.restype = c_void_p
-isl.isl_multi_union_pw_aff_set_range_tuple_id.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_size.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_get_space.restype = c_void_p
-isl.isl_multi_union_pw_aff_get_space.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_sub.restype = c_void_p
-isl.isl_multi_union_pw_aff_sub.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_union_add.restype = c_void_p
-isl.isl_multi_union_pw_aff_union_add.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_union_pw_aff_zero.restype = c_void_p
-isl.isl_multi_union_pw_aff_zero.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_copy.restype = c_void_p
-isl.isl_multi_union_pw_aff_copy.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_free.restype = c_void_p
-isl.isl_multi_union_pw_aff_free.argtypes = [c_void_p]
-isl.isl_multi_union_pw_aff_to_str.restype = POINTER(c_char)
-isl.isl_multi_union_pw_aff_to_str.argtypes = [c_void_p]
-
-class union_pw_aff(union_pw_multi_aff, multi_union_pw_aff):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_pw_aff_from_aff(isl.isl_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is pw_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_pw_aff_from_pw_aff(isl.isl_pw_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_pw_aff_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_union_pw_aff_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        ptr = isl.isl_union_pw_aff_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.union_pw_aff("""%s""")' % s
-        else:
-            return 'isl.union_pw_aff("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_pw_aff:
-                arg1 = union_pw_aff(arg1)
-        except:
-            return union_pw_multi_aff(arg0).add(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_add(isl.isl_union_pw_aff_copy(arg0.ptr), isl.isl_union_pw_aff_copy(arg1.ptr))
-        obj = union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def bind(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_aff_bind_id(isl.isl_union_pw_aff_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = union_set(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def coalesce(arg0):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_coalesce(isl.isl_union_pw_aff_copy(arg0.ptr))
-        obj = union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_domain(isl.isl_union_pw_aff_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            return union_pw_multi_aff(arg0).gist(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_gist(isl.isl_union_pw_aff_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain(*args):
-        if len(args) == 2 and args[1].__class__ is space:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_aff_intersect_domain_space(isl.isl_union_pw_aff_copy(args[0].ptr), isl.isl_space_copy(args[1].ptr))
-            obj = union_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is union_set:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_aff_intersect_domain_union_set(isl.isl_union_pw_aff_copy(args[0].ptr), isl.isl_union_set_copy(args[1].ptr))
-            obj = union_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def intersect_domain_wrapped_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            return union_pw_multi_aff(arg0).intersect_domain_wrapped_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_intersect_domain_wrapped_domain(isl.isl_union_pw_aff_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain_wrapped_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            return union_pw_multi_aff(arg0).intersect_domain_wrapped_range(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_intersect_domain_wrapped_range(isl.isl_union_pw_aff_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_pw_multi_aff(arg0).intersect_params(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_intersect_params(isl.isl_union_pw_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def pullback(*args):
-        if len(args) == 2 and args[1].__class__ is union_pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_aff_pullback_union_pw_multi_aff(isl.isl_union_pw_aff_copy(args[0].ptr), isl.isl_union_pw_multi_aff_copy(args[1].ptr))
-            obj = union_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def space(arg0):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def sub(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_pw_aff:
-                arg1 = union_pw_aff(arg1)
-        except:
-            return union_pw_multi_aff(arg0).sub(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_sub(isl.isl_union_pw_aff_copy(arg0.ptr), isl.isl_union_pw_aff_copy(arg1.ptr))
-        obj = union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def subtract_domain(*args):
-        if len(args) == 2 and args[1].__class__ is space:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_aff_subtract_domain_space(isl.isl_union_pw_aff_copy(args[0].ptr), isl.isl_space_copy(args[1].ptr))
-            obj = union_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is union_set:
-            ctx = args[0].ctx
-            res = isl.isl_union_pw_aff_subtract_domain_union_set(isl.isl_union_pw_aff_copy(args[0].ptr), isl.isl_union_set_copy(args[1].ptr))
-            obj = union_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def to_list(arg0):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_to_list(isl.isl_union_pw_aff_copy(arg0.ptr))
-        obj = union_pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def union_add(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_aff:
-                arg0 = union_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_pw_aff:
-                arg1 = union_pw_aff(arg1)
-        except:
-            return union_pw_multi_aff(arg0).union_add(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_union_add(isl.isl_union_pw_aff_copy(arg0.ptr), isl.isl_union_pw_aff_copy(arg1.ptr))
-        obj = union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_union_pw_aff_from_aff.restype = c_void_p
-isl.isl_union_pw_aff_from_aff.argtypes = [c_void_p]
-isl.isl_union_pw_aff_from_pw_aff.restype = c_void_p
-isl.isl_union_pw_aff_from_pw_aff.argtypes = [c_void_p]
-isl.isl_union_pw_aff_read_from_str.restype = c_void_p
-isl.isl_union_pw_aff_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_union_pw_aff_add.restype = c_void_p
-isl.isl_union_pw_aff_add.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_bind_id.restype = c_void_p
-isl.isl_union_pw_aff_bind_id.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_coalesce.restype = c_void_p
-isl.isl_union_pw_aff_coalesce.argtypes = [c_void_p]
-isl.isl_union_pw_aff_domain.restype = c_void_p
-isl.isl_union_pw_aff_domain.argtypes = [c_void_p]
-isl.isl_union_pw_aff_gist.restype = c_void_p
-isl.isl_union_pw_aff_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_intersect_domain_space.restype = c_void_p
-isl.isl_union_pw_aff_intersect_domain_space.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_intersect_domain_union_set.restype = c_void_p
-isl.isl_union_pw_aff_intersect_domain_union_set.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_intersect_domain_wrapped_domain.restype = c_void_p
-isl.isl_union_pw_aff_intersect_domain_wrapped_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_intersect_domain_wrapped_range.restype = c_void_p
-isl.isl_union_pw_aff_intersect_domain_wrapped_range.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_intersect_params.restype = c_void_p
-isl.isl_union_pw_aff_intersect_params.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_pullback_union_pw_multi_aff.restype = c_void_p
-isl.isl_union_pw_aff_pullback_union_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_get_space.restype = c_void_p
-isl.isl_union_pw_aff_get_space.argtypes = [c_void_p]
-isl.isl_union_pw_aff_sub.restype = c_void_p
-isl.isl_union_pw_aff_sub.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_subtract_domain_space.restype = c_void_p
-isl.isl_union_pw_aff_subtract_domain_space.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_subtract_domain_union_set.restype = c_void_p
-isl.isl_union_pw_aff_subtract_domain_union_set.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_to_list.restype = c_void_p
-isl.isl_union_pw_aff_to_list.argtypes = [c_void_p]
-isl.isl_union_pw_aff_union_add.restype = c_void_p
-isl.isl_union_pw_aff_union_add.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_copy.restype = c_void_p
-isl.isl_union_pw_aff_copy.argtypes = [c_void_p]
-isl.isl_union_pw_aff_free.restype = c_void_p
-isl.isl_union_pw_aff_free.argtypes = [c_void_p]
-isl.isl_union_pw_aff_to_str.restype = POINTER(c_char)
-isl.isl_union_pw_aff_to_str.argtypes = [c_void_p]
-
-class multi_pw_aff(multi_union_pw_aff):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_pw_aff_from_aff(isl.isl_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is multi_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_pw_aff_from_multi_aff(isl.isl_multi_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is pw_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_pw_aff_from_pw_aff(isl.isl_pw_aff_copy(args[0].ptr))
-            return
-        if len(args) == 2 and args[0].__class__ is space and args[1].__class__ is pw_aff_list:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_pw_aff_from_pw_aff_list(isl.isl_space_copy(args[0].ptr), isl.isl_pw_aff_list_copy(args[1].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is pw_multi_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_pw_aff_from_pw_multi_aff(isl.isl_pw_multi_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_pw_aff_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_multi_pw_aff_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ptr = isl.isl_multi_pw_aff_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.multi_pw_aff("""%s""")' % s
-        else:
-            return 'isl.multi_pw_aff("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_pw_aff:
-                arg1 = multi_pw_aff(arg1)
-        except:
-            return multi_union_pw_aff(arg0).add(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_add(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_pw_aff_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def add_constant(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_add_constant_multi_val(isl.isl_multi_pw_aff_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_add_constant_val(isl.isl_multi_pw_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def as_map(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_as_map(isl.isl_multi_pw_aff_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def as_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_as_multi_aff(isl.isl_multi_pw_aff_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def as_set(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_as_set(isl.isl_multi_pw_aff_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_get_at(arg0.ptr, arg1)
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def bind(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return multi_union_pw_aff(arg0).bind(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_bind(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def bind_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return multi_union_pw_aff(arg0).bind_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_bind_domain(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def bind_domain_wrapped_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return multi_union_pw_aff(arg0).bind_domain_wrapped_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_bind_domain_wrapped_domain(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def coalesce(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_coalesce(isl.isl_multi_pw_aff_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_domain(isl.isl_multi_pw_aff_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def flat_range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_pw_aff:
-                arg1 = multi_pw_aff(arg1)
-        except:
-            return multi_union_pw_aff(arg0).flat_range_product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_flat_range_product(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_pw_aff_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return multi_union_pw_aff(arg0).gist(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_gist(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def has_range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_has_range_tuple_id(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def identity(*args):
-        if len(args) == 1:
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_identity_multi_pw_aff(isl.isl_multi_pw_aff_copy(args[0].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    @staticmethod
-    def identity_on_domain(*args):
-        if len(args) == 1 and args[0].__class__ is space:
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_identity_on_domain_space(isl.isl_space_copy(args[0].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def insert_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is space:
-                arg1 = space(arg1)
-        except:
-            return multi_union_pw_aff(arg0).insert_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_insert_domain(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_space_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return multi_union_pw_aff(arg0).intersect_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_intersect_domain(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return multi_union_pw_aff(arg0).intersect_params(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_intersect_params(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def involves_nan(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_involves_nan(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def involves_param(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_involves_param_id(args[0].ptr, args[1].ptr)
-            if res < 0:
-                raise
-            return bool(res)
-        if len(args) == 2 and args[1].__class__ is id_list:
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_involves_param_id_list(args[0].ptr, args[1].ptr)
-            if res < 0:
-                raise
-            return bool(res)
-        raise Error
-    def isa_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_isa_multi_aff(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def list(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_get_list(arg0.ptr)
-        obj = pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def get_list(arg0):
-        return arg0.list()
-    def max(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_pw_aff:
-                arg1 = multi_pw_aff(arg1)
-        except:
-            return multi_union_pw_aff(arg0).max(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_max(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_pw_aff_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def max_multi_val(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_max_multi_val(isl.isl_multi_pw_aff_copy(arg0.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def min(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_pw_aff:
-                arg1 = multi_pw_aff(arg1)
-        except:
-            return multi_union_pw_aff(arg0).min(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_min(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_pw_aff_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def min_multi_val(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_min_multi_val(isl.isl_multi_pw_aff_copy(arg0.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def neg(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_neg(isl.isl_multi_pw_aff_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def plain_is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_pw_aff:
-                arg1 = multi_pw_aff(arg1)
-        except:
-            return multi_union_pw_aff(arg0).plain_is_equal(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_plain_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_pw_aff:
-                arg1 = multi_pw_aff(arg1)
-        except:
-            return multi_union_pw_aff(arg0).product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_product(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_pw_aff_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def pullback(*args):
-        if len(args) == 2 and args[1].__class__ is multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_pullback_multi_aff(isl.isl_multi_pw_aff_copy(args[0].ptr), isl.isl_multi_aff_copy(args[1].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_pullback_multi_pw_aff(isl.isl_multi_pw_aff_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_pullback_pw_multi_aff(isl.isl_multi_pw_aff_copy(args[0].ptr), isl.isl_pw_multi_aff_copy(args[1].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_pw_aff:
-                arg1 = multi_pw_aff(arg1)
-        except:
-            return multi_union_pw_aff(arg0).range_product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_range_product(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_pw_aff_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_get_range_tuple_id(arg0.ptr)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_range_tuple_id(arg0):
-        return arg0.range_tuple_id()
-    def reset_range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_reset_range_tuple_id(isl.isl_multi_pw_aff_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def scale(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_scale_multi_val(isl.isl_multi_pw_aff_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_scale_val(isl.isl_multi_pw_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def scale_down(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_scale_down_multi_val(isl.isl_multi_pw_aff_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_scale_down_val(isl.isl_multi_pw_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def set_at(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is pw_aff:
-                arg2 = pw_aff(arg2)
-        except:
-            return multi_union_pw_aff(arg0).set_at(arg1, arg2)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_set_at(isl.isl_multi_pw_aff_copy(arg0.ptr), arg1, isl.isl_pw_aff_copy(arg2.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def set_range_tuple(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_pw_aff_set_range_tuple_id(isl.isl_multi_pw_aff_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = multi_pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def size(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def space(arg0):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def sub(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_pw_aff:
-                arg1 = multi_pw_aff(arg1)
-        except:
-            return multi_union_pw_aff(arg0).sub(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_sub(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_pw_aff_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def unbind_params_insert_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return multi_union_pw_aff(arg0).unbind_params_insert_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_unbind_params_insert_domain(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def union_add(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_pw_aff:
-                arg0 = multi_pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_pw_aff:
-                arg1 = multi_pw_aff(arg1)
-        except:
-            return multi_union_pw_aff(arg0).union_add(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_union_add(isl.isl_multi_pw_aff_copy(arg0.ptr), isl.isl_multi_pw_aff_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def zero(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_pw_aff_zero(isl.isl_space_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_multi_pw_aff_from_aff.restype = c_void_p
-isl.isl_multi_pw_aff_from_aff.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_from_multi_aff.restype = c_void_p
-isl.isl_multi_pw_aff_from_multi_aff.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_from_pw_aff.restype = c_void_p
-isl.isl_multi_pw_aff_from_pw_aff.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_from_pw_aff_list.restype = c_void_p
-isl.isl_multi_pw_aff_from_pw_aff_list.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_from_pw_multi_aff.restype = c_void_p
-isl.isl_multi_pw_aff_from_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_read_from_str.restype = c_void_p
-isl.isl_multi_pw_aff_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_multi_pw_aff_add.restype = c_void_p
-isl.isl_multi_pw_aff_add.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_add_constant_multi_val.restype = c_void_p
-isl.isl_multi_pw_aff_add_constant_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_add_constant_val.restype = c_void_p
-isl.isl_multi_pw_aff_add_constant_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_as_map.restype = c_void_p
-isl.isl_multi_pw_aff_as_map.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_as_multi_aff.restype = c_void_p
-isl.isl_multi_pw_aff_as_multi_aff.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_as_set.restype = c_void_p
-isl.isl_multi_pw_aff_as_set.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_get_at.restype = c_void_p
-isl.isl_multi_pw_aff_get_at.argtypes = [c_void_p, c_int]
-isl.isl_multi_pw_aff_bind.restype = c_void_p
-isl.isl_multi_pw_aff_bind.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_bind_domain.restype = c_void_p
-isl.isl_multi_pw_aff_bind_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_bind_domain_wrapped_domain.restype = c_void_p
-isl.isl_multi_pw_aff_bind_domain_wrapped_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_coalesce.restype = c_void_p
-isl.isl_multi_pw_aff_coalesce.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_domain.restype = c_void_p
-isl.isl_multi_pw_aff_domain.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_flat_range_product.restype = c_void_p
-isl.isl_multi_pw_aff_flat_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_gist.restype = c_void_p
-isl.isl_multi_pw_aff_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_has_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_identity_multi_pw_aff.restype = c_void_p
-isl.isl_multi_pw_aff_identity_multi_pw_aff.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_identity_on_domain_space.restype = c_void_p
-isl.isl_multi_pw_aff_identity_on_domain_space.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_insert_domain.restype = c_void_p
-isl.isl_multi_pw_aff_insert_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_intersect_domain.restype = c_void_p
-isl.isl_multi_pw_aff_intersect_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_intersect_params.restype = c_void_p
-isl.isl_multi_pw_aff_intersect_params.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_involves_nan.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_involves_param_id.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_involves_param_id_list.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_isa_multi_aff.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_get_list.restype = c_void_p
-isl.isl_multi_pw_aff_get_list.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_max.restype = c_void_p
-isl.isl_multi_pw_aff_max.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_max_multi_val.restype = c_void_p
-isl.isl_multi_pw_aff_max_multi_val.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_min.restype = c_void_p
-isl.isl_multi_pw_aff_min.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_min_multi_val.restype = c_void_p
-isl.isl_multi_pw_aff_min_multi_val.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_neg.restype = c_void_p
-isl.isl_multi_pw_aff_neg.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_plain_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_product.restype = c_void_p
-isl.isl_multi_pw_aff_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_pullback_multi_aff.restype = c_void_p
-isl.isl_multi_pw_aff_pullback_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_pullback_multi_pw_aff.restype = c_void_p
-isl.isl_multi_pw_aff_pullback_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_pullback_pw_multi_aff.restype = c_void_p
-isl.isl_multi_pw_aff_pullback_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_range_product.restype = c_void_p
-isl.isl_multi_pw_aff_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_get_range_tuple_id.restype = c_void_p
-isl.isl_multi_pw_aff_get_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_reset_range_tuple_id.restype = c_void_p
-isl.isl_multi_pw_aff_reset_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_scale_multi_val.restype = c_void_p
-isl.isl_multi_pw_aff_scale_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_scale_val.restype = c_void_p
-isl.isl_multi_pw_aff_scale_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_scale_down_multi_val.restype = c_void_p
-isl.isl_multi_pw_aff_scale_down_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_scale_down_val.restype = c_void_p
-isl.isl_multi_pw_aff_scale_down_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_set_at.restype = c_void_p
-isl.isl_multi_pw_aff_set_at.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_multi_pw_aff_set_range_tuple_id.restype = c_void_p
-isl.isl_multi_pw_aff_set_range_tuple_id.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_size.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_get_space.restype = c_void_p
-isl.isl_multi_pw_aff_get_space.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_sub.restype = c_void_p
-isl.isl_multi_pw_aff_sub.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_unbind_params_insert_domain.restype = c_void_p
-isl.isl_multi_pw_aff_unbind_params_insert_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_union_add.restype = c_void_p
-isl.isl_multi_pw_aff_union_add.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_pw_aff_zero.restype = c_void_p
-isl.isl_multi_pw_aff_zero.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_copy.restype = c_void_p
-isl.isl_multi_pw_aff_copy.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_free.restype = c_void_p
-isl.isl_multi_pw_aff_free.argtypes = [c_void_p]
-isl.isl_multi_pw_aff_to_str.restype = POINTER(c_char)
-isl.isl_multi_pw_aff_to_str.argtypes = [c_void_p]
-
-class pw_multi_aff(union_pw_multi_aff, multi_pw_aff):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is multi_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_pw_multi_aff_from_multi_aff(isl.isl_multi_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is pw_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_pw_multi_aff_from_pw_aff(isl.isl_pw_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_pw_multi_aff_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_pw_multi_aff_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ptr = isl.isl_pw_multi_aff_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.pw_multi_aff("""%s""")' % s
-        else:
-            return 'isl.pw_multi_aff("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_multi_aff:
-                arg1 = pw_multi_aff(arg1)
-        except:
-            return union_pw_multi_aff(arg0).add(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_add(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_pw_multi_aff_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def add_constant(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_pw_multi_aff_add_constant_multi_val(isl.isl_pw_multi_aff_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_pw_multi_aff_add_constant_val(isl.isl_pw_multi_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def as_map(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_as_map(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def as_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_as_multi_aff(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def as_set(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_as_set(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_get_at(arg0.ptr, arg1)
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def bind_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return union_pw_multi_aff(arg0).bind_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_bind_domain(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def bind_domain_wrapped_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return union_pw_multi_aff(arg0).bind_domain_wrapped_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_bind_domain_wrapped_domain(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def coalesce(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_coalesce(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_domain(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def domain_map(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_domain_map(isl.isl_space_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def flat_range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_multi_aff:
-                arg1 = pw_multi_aff(arg1)
-        except:
-            return union_pw_multi_aff(arg0).flat_range_product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_flat_range_product(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_pw_multi_aff_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def foreach_piece(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1, cb_arg2):
-            cb_arg0 = set(ctx=arg0.ctx, ptr=(cb_arg0))
-            cb_arg1 = multi_aff(ctx=arg0.ctx, ptr=(cb_arg1))
-            try:
-                arg1(cb_arg0, cb_arg1)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_foreach_piece(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_pw_multi_aff(arg0).gist(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_gist(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def has_range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_has_range_tuple_id(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    @staticmethod
-    def identity_on_domain(*args):
-        if len(args) == 1 and args[0].__class__ is space:
-            ctx = args[0].ctx
-            res = isl.isl_pw_multi_aff_identity_on_domain_space(isl.isl_space_copy(args[0].ptr))
-            obj = pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def insert_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is space:
-                arg1 = space(arg1)
-        except:
-            return union_pw_multi_aff(arg0).insert_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_insert_domain(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_space_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_pw_multi_aff(arg0).intersect_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_intersect_domain(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_pw_multi_aff(arg0).intersect_params(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_intersect_params(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def involves_locals(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_involves_locals(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def isa_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_isa_multi_aff(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def max_multi_val(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_max_multi_val(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def min_multi_val(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_min_multi_val(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def multi_val_on_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            return union_pw_multi_aff(arg0).multi_val_on_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_multi_val_on_domain(isl.isl_set_copy(arg0.ptr), isl.isl_multi_val_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def n_piece(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_n_piece(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def preimage_domain_wrapped_domain(*args):
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff(isl.isl_pw_multi_aff_copy(args[0].ptr), isl.isl_pw_multi_aff_copy(args[1].ptr))
-            obj = pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def product(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_multi_aff:
-                arg1 = pw_multi_aff(arg1)
-        except:
-            return union_pw_multi_aff(arg0).product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_product(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_pw_multi_aff_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def pullback(*args):
-        if len(args) == 2 and args[1].__class__ is multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_pw_multi_aff_pullback_multi_aff(isl.isl_pw_multi_aff_copy(args[0].ptr), isl.isl_multi_aff_copy(args[1].ptr))
-            obj = pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_pw_multi_aff_pullback_pw_multi_aff(isl.isl_pw_multi_aff_copy(args[0].ptr), isl.isl_pw_multi_aff_copy(args[1].ptr))
-            obj = pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def range_factor_domain(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_range_factor_domain(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def range_factor_range(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_range_factor_range(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def range_map(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_range_map(isl.isl_space_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_multi_aff:
-                arg1 = pw_multi_aff(arg1)
-        except:
-            return union_pw_multi_aff(arg0).range_product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_range_product(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_pw_multi_aff_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_get_range_tuple_id(arg0.ptr)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_range_tuple_id(arg0):
-        return arg0.range_tuple_id()
-    def scale(*args):
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_pw_multi_aff_scale_val(isl.isl_pw_multi_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def scale_down(*args):
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_pw_multi_aff_scale_down_val(isl.isl_pw_multi_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def set_range_tuple(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_pw_multi_aff_set_range_tuple_id(isl.isl_pw_multi_aff_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def space(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def sub(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_multi_aff:
-                arg1 = pw_multi_aff(arg1)
-        except:
-            return union_pw_multi_aff(arg0).sub(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_sub(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_pw_multi_aff_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def subtract_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_pw_multi_aff(arg0).subtract_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_subtract_domain(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def to_list(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_to_list(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = pw_multi_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def to_multi_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_to_multi_pw_aff(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def to_union_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_to_union_pw_multi_aff(isl.isl_pw_multi_aff_copy(arg0.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def union_add(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff:
-                arg0 = pw_multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_multi_aff:
-                arg1 = pw_multi_aff(arg1)
-        except:
-            return union_pw_multi_aff(arg0).union_add(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_union_add(isl.isl_pw_multi_aff_copy(arg0.ptr), isl.isl_pw_multi_aff_copy(arg1.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def zero(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_zero(isl.isl_space_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_pw_multi_aff_from_multi_aff.restype = c_void_p
-isl.isl_pw_multi_aff_from_multi_aff.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_from_pw_aff.restype = c_void_p
-isl.isl_pw_multi_aff_from_pw_aff.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_read_from_str.restype = c_void_p
-isl.isl_pw_multi_aff_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_pw_multi_aff_add.restype = c_void_p
-isl.isl_pw_multi_aff_add.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_add_constant_multi_val.restype = c_void_p
-isl.isl_pw_multi_aff_add_constant_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_add_constant_val.restype = c_void_p
-isl.isl_pw_multi_aff_add_constant_val.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_as_map.restype = c_void_p
-isl.isl_pw_multi_aff_as_map.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_as_multi_aff.restype = c_void_p
-isl.isl_pw_multi_aff_as_multi_aff.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_as_set.restype = c_void_p
-isl.isl_pw_multi_aff_as_set.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_get_at.restype = c_void_p
-isl.isl_pw_multi_aff_get_at.argtypes = [c_void_p, c_int]
-isl.isl_pw_multi_aff_bind_domain.restype = c_void_p
-isl.isl_pw_multi_aff_bind_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_bind_domain_wrapped_domain.restype = c_void_p
-isl.isl_pw_multi_aff_bind_domain_wrapped_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_coalesce.restype = c_void_p
-isl.isl_pw_multi_aff_coalesce.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_domain.restype = c_void_p
-isl.isl_pw_multi_aff_domain.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_domain_map.restype = c_void_p
-isl.isl_pw_multi_aff_domain_map.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_flat_range_product.restype = c_void_p
-isl.isl_pw_multi_aff_flat_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_foreach_piece.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_pw_multi_aff_gist.restype = c_void_p
-isl.isl_pw_multi_aff_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_has_range_tuple_id.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_identity_on_domain_space.restype = c_void_p
-isl.isl_pw_multi_aff_identity_on_domain_space.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_insert_domain.restype = c_void_p
-isl.isl_pw_multi_aff_insert_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_intersect_domain.restype = c_void_p
-isl.isl_pw_multi_aff_intersect_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_intersect_params.restype = c_void_p
-isl.isl_pw_multi_aff_intersect_params.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_involves_locals.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_isa_multi_aff.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_max_multi_val.restype = c_void_p
-isl.isl_pw_multi_aff_max_multi_val.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_min_multi_val.restype = c_void_p
-isl.isl_pw_multi_aff_min_multi_val.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_multi_val_on_domain.restype = c_void_p
-isl.isl_pw_multi_aff_multi_val_on_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_n_piece.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff.restype = c_void_p
-isl.isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_product.restype = c_void_p
-isl.isl_pw_multi_aff_product.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_pullback_multi_aff.restype = c_void_p
-isl.isl_pw_multi_aff_pullback_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_pullback_pw_multi_aff.restype = c_void_p
-isl.isl_pw_multi_aff_pullback_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_range_factor_domain.restype = c_void_p
-isl.isl_pw_multi_aff_range_factor_domain.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_range_factor_range.restype = c_void_p
-isl.isl_pw_multi_aff_range_factor_range.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_range_map.restype = c_void_p
-isl.isl_pw_multi_aff_range_map.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_range_product.restype = c_void_p
-isl.isl_pw_multi_aff_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_get_range_tuple_id.restype = c_void_p
-isl.isl_pw_multi_aff_get_range_tuple_id.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_scale_val.restype = c_void_p
-isl.isl_pw_multi_aff_scale_val.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_scale_down_val.restype = c_void_p
-isl.isl_pw_multi_aff_scale_down_val.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_set_range_tuple_id.restype = c_void_p
-isl.isl_pw_multi_aff_set_range_tuple_id.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_get_space.restype = c_void_p
-isl.isl_pw_multi_aff_get_space.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_sub.restype = c_void_p
-isl.isl_pw_multi_aff_sub.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_subtract_domain.restype = c_void_p
-isl.isl_pw_multi_aff_subtract_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_to_list.restype = c_void_p
-isl.isl_pw_multi_aff_to_list.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_to_multi_pw_aff.restype = c_void_p
-isl.isl_pw_multi_aff_to_multi_pw_aff.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_to_union_pw_multi_aff.restype = c_void_p
-isl.isl_pw_multi_aff_to_union_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_union_add.restype = c_void_p
-isl.isl_pw_multi_aff_union_add.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_zero.restype = c_void_p
-isl.isl_pw_multi_aff_zero.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_copy.restype = c_void_p
-isl.isl_pw_multi_aff_copy.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_free.restype = c_void_p
-isl.isl_pw_multi_aff_free.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_to_str.restype = POINTER(c_char)
-isl.isl_pw_multi_aff_to_str.argtypes = [c_void_p]
-
-class pw_aff(union_pw_aff, pw_multi_aff, multi_pw_aff):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_pw_aff_from_aff(isl.isl_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_pw_aff_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_pw_aff_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ptr = isl.isl_pw_aff_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.pw_aff("""%s""")' % s
-        else:
-            return 'isl.pw_aff("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).add(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_add(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def add_constant(*args):
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_pw_aff_add_constant_val(isl.isl_pw_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def as_aff(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_as_aff(isl.isl_pw_aff_copy(arg0.ptr))
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def as_map(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_as_map(isl.isl_pw_aff_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def bind(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_pw_aff_bind_id(isl.isl_pw_aff_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = set(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def bind_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return union_pw_aff(arg0).bind_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_bind_domain(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def bind_domain_wrapped_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return union_pw_aff(arg0).bind_domain_wrapped_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_bind_domain_wrapped_domain(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def ceil(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_ceil(isl.isl_pw_aff_copy(arg0.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def coalesce(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_coalesce(isl.isl_pw_aff_copy(arg0.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def cond(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).cond(arg1, arg2)
-        try:
-            if not arg2.__class__ is pw_aff:
-                arg2 = pw_aff(arg2)
-        except:
-            return union_pw_aff(arg0).cond(arg1, arg2)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_cond(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr), isl.isl_pw_aff_copy(arg2.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def div(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).div(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_div(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_domain(isl.isl_pw_aff_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def eq_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).eq_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_eq_set(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def eval(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is point:
-                arg1 = point(arg1)
-        except:
-            return union_pw_aff(arg0).eval(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_eval(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_point_copy(arg1.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def floor(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_floor(isl.isl_pw_aff_copy(arg0.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def ge_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).ge_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_ge_set(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_pw_aff(arg0).gist(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_gist(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def gt_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).gt_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_gt_set(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def insert_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is space:
-                arg1 = space(arg1)
-        except:
-            return union_pw_aff(arg0).insert_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_insert_domain(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_space_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_pw_aff(arg0).intersect_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_intersect_domain(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def intersect_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_pw_aff(arg0).intersect_params(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_intersect_params(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def isa_aff(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_isa_aff(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def le_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).le_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_le_set(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def lt_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).lt_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_lt_set(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def max(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).max(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_max(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def min(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).min(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_min(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def mod(*args):
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_pw_aff_mod_val(isl.isl_pw_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def mul(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).mul(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_mul(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def ne_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).ne_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_ne_set(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def neg(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_neg(isl.isl_pw_aff_copy(arg0.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def param_on_domain(*args):
-        if len(args) == 2 and args[0].__class__ is set and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_pw_aff_param_on_domain_id(isl.isl_set_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def pullback(*args):
-        if len(args) == 2 and args[1].__class__ is multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_pw_aff_pullback_multi_aff(isl.isl_pw_aff_copy(args[0].ptr), isl.isl_multi_aff_copy(args[1].ptr))
-            obj = pw_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_pw_aff_pullback_multi_pw_aff(isl.isl_pw_aff_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = pw_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_pw_aff_pullback_pw_multi_aff(isl.isl_pw_aff_copy(args[0].ptr), isl.isl_pw_multi_aff_copy(args[1].ptr))
-            obj = pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def scale(*args):
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_pw_aff_scale_val(isl.isl_pw_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def scale_down(*args):
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_pw_aff_scale_down_val(isl.isl_pw_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = pw_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def space(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def sub(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).sub(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_sub(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def subtract_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_pw_aff(arg0).subtract_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_subtract_domain(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def tdiv_q(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).tdiv_q(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_tdiv_q(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def tdiv_r(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).tdiv_r(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_tdiv_r(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def to_list(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_to_list(isl.isl_pw_aff_copy(arg0.ptr))
-        obj = pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def to_union_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_to_union_pw_aff(isl.isl_pw_aff_copy(arg0.ptr))
-        obj = union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def union_add(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff:
-                arg0 = pw_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            return union_pw_aff(arg0).union_add(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_union_add(isl.isl_pw_aff_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_pw_aff_from_aff.restype = c_void_p
-isl.isl_pw_aff_from_aff.argtypes = [c_void_p]
-isl.isl_pw_aff_read_from_str.restype = c_void_p
-isl.isl_pw_aff_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_pw_aff_add.restype = c_void_p
-isl.isl_pw_aff_add.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_add_constant_val.restype = c_void_p
-isl.isl_pw_aff_add_constant_val.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_as_aff.restype = c_void_p
-isl.isl_pw_aff_as_aff.argtypes = [c_void_p]
-isl.isl_pw_aff_as_map.restype = c_void_p
-isl.isl_pw_aff_as_map.argtypes = [c_void_p]
-isl.isl_pw_aff_bind_id.restype = c_void_p
-isl.isl_pw_aff_bind_id.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_bind_domain.restype = c_void_p
-isl.isl_pw_aff_bind_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_bind_domain_wrapped_domain.restype = c_void_p
-isl.isl_pw_aff_bind_domain_wrapped_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_ceil.restype = c_void_p
-isl.isl_pw_aff_ceil.argtypes = [c_void_p]
-isl.isl_pw_aff_coalesce.restype = c_void_p
-isl.isl_pw_aff_coalesce.argtypes = [c_void_p]
-isl.isl_pw_aff_cond.restype = c_void_p
-isl.isl_pw_aff_cond.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_pw_aff_div.restype = c_void_p
-isl.isl_pw_aff_div.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_domain.restype = c_void_p
-isl.isl_pw_aff_domain.argtypes = [c_void_p]
-isl.isl_pw_aff_eq_set.restype = c_void_p
-isl.isl_pw_aff_eq_set.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_eval.restype = c_void_p
-isl.isl_pw_aff_eval.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_floor.restype = c_void_p
-isl.isl_pw_aff_floor.argtypes = [c_void_p]
-isl.isl_pw_aff_ge_set.restype = c_void_p
-isl.isl_pw_aff_ge_set.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_gist.restype = c_void_p
-isl.isl_pw_aff_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_gt_set.restype = c_void_p
-isl.isl_pw_aff_gt_set.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_insert_domain.restype = c_void_p
-isl.isl_pw_aff_insert_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_intersect_domain.restype = c_void_p
-isl.isl_pw_aff_intersect_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_intersect_params.restype = c_void_p
-isl.isl_pw_aff_intersect_params.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_isa_aff.argtypes = [c_void_p]
-isl.isl_pw_aff_le_set.restype = c_void_p
-isl.isl_pw_aff_le_set.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_lt_set.restype = c_void_p
-isl.isl_pw_aff_lt_set.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_max.restype = c_void_p
-isl.isl_pw_aff_max.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_min.restype = c_void_p
-isl.isl_pw_aff_min.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_mod_val.restype = c_void_p
-isl.isl_pw_aff_mod_val.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_mul.restype = c_void_p
-isl.isl_pw_aff_mul.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_ne_set.restype = c_void_p
-isl.isl_pw_aff_ne_set.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_neg.restype = c_void_p
-isl.isl_pw_aff_neg.argtypes = [c_void_p]
-isl.isl_pw_aff_param_on_domain_id.restype = c_void_p
-isl.isl_pw_aff_param_on_domain_id.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_pullback_multi_aff.restype = c_void_p
-isl.isl_pw_aff_pullback_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_pullback_multi_pw_aff.restype = c_void_p
-isl.isl_pw_aff_pullback_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_pullback_pw_multi_aff.restype = c_void_p
-isl.isl_pw_aff_pullback_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_scale_val.restype = c_void_p
-isl.isl_pw_aff_scale_val.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_scale_down_val.restype = c_void_p
-isl.isl_pw_aff_scale_down_val.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_get_space.restype = c_void_p
-isl.isl_pw_aff_get_space.argtypes = [c_void_p]
-isl.isl_pw_aff_sub.restype = c_void_p
-isl.isl_pw_aff_sub.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_subtract_domain.restype = c_void_p
-isl.isl_pw_aff_subtract_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_tdiv_q.restype = c_void_p
-isl.isl_pw_aff_tdiv_q.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_tdiv_r.restype = c_void_p
-isl.isl_pw_aff_tdiv_r.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_to_list.restype = c_void_p
-isl.isl_pw_aff_to_list.argtypes = [c_void_p]
-isl.isl_pw_aff_to_union_pw_aff.restype = c_void_p
-isl.isl_pw_aff_to_union_pw_aff.argtypes = [c_void_p]
-isl.isl_pw_aff_union_add.restype = c_void_p
-isl.isl_pw_aff_union_add.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_copy.restype = c_void_p
-isl.isl_pw_aff_copy.argtypes = [c_void_p]
-isl.isl_pw_aff_free.restype = c_void_p
-isl.isl_pw_aff_free.argtypes = [c_void_p]
-isl.isl_pw_aff_to_str.restype = POINTER(c_char)
-isl.isl_pw_aff_to_str.argtypes = [c_void_p]
-
-class multi_aff(pw_multi_aff, multi_pw_aff):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_aff_from_aff(isl.isl_aff_copy(args[0].ptr))
-            return
-        if len(args) == 2 and args[0].__class__ is space and args[1].__class__ is aff_list:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_aff_from_aff_list(isl.isl_space_copy(args[0].ptr), isl.isl_aff_list_copy(args[1].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_aff_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_multi_aff_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ptr = isl.isl_multi_aff_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.multi_aff("""%s""")' % s
-        else:
-            return 'isl.multi_aff("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_aff:
-                arg1 = multi_aff(arg1)
-        except:
-            return pw_multi_aff(arg0).add(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_add(isl.isl_multi_aff_copy(arg0.ptr), isl.isl_multi_aff_copy(arg1.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def add_constant(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_aff_add_constant_multi_val(isl.isl_multi_aff_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_aff_add_constant_val(isl.isl_multi_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def as_map(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_as_map(isl.isl_multi_aff_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def as_set(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_as_set(isl.isl_multi_aff_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_get_at(arg0.ptr, arg1)
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def bind(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return pw_multi_aff(arg0).bind(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_bind(isl.isl_multi_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def bind_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return pw_multi_aff(arg0).bind_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_bind_domain(isl.isl_multi_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def bind_domain_wrapped_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return pw_multi_aff(arg0).bind_domain_wrapped_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_bind_domain_wrapped_domain(isl.isl_multi_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def constant_multi_val(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_get_constant_multi_val(arg0.ptr)
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def get_constant_multi_val(arg0):
-        return arg0.constant_multi_val()
-    @staticmethod
-    def domain_map(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_domain_map(isl.isl_space_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def flat_range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_aff:
-                arg1 = multi_aff(arg1)
-        except:
-            return pw_multi_aff(arg0).flat_range_product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_flat_range_product(isl.isl_multi_aff_copy(arg0.ptr), isl.isl_multi_aff_copy(arg1.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def floor(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_floor(isl.isl_multi_aff_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return pw_multi_aff(arg0).gist(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_gist(isl.isl_multi_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def has_range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_has_range_tuple_id(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def identity(*args):
-        if len(args) == 1:
-            ctx = args[0].ctx
-            res = isl.isl_multi_aff_identity_multi_aff(isl.isl_multi_aff_copy(args[0].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    @staticmethod
-    def identity_on_domain(*args):
-        if len(args) == 1 and args[0].__class__ is space:
-            ctx = args[0].ctx
-            res = isl.isl_multi_aff_identity_on_domain_space(isl.isl_space_copy(args[0].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def insert_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is space:
-                arg1 = space(arg1)
-        except:
-            return pw_multi_aff(arg0).insert_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_insert_domain(isl.isl_multi_aff_copy(arg0.ptr), isl.isl_space_copy(arg1.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def involves_locals(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_involves_locals(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def involves_nan(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_involves_nan(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def list(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_get_list(arg0.ptr)
-        obj = aff_list(ctx=ctx, ptr=res)
-        return obj
-    def get_list(arg0):
-        return arg0.list()
-    @staticmethod
-    def multi_val_on_domain(*args):
-        if len(args) == 2 and args[0].__class__ is space and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_aff_multi_val_on_domain_space(isl.isl_space_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def neg(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_neg(isl.isl_multi_aff_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def plain_is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_aff:
-                arg1 = multi_aff(arg1)
-        except:
-            return pw_multi_aff(arg0).plain_is_equal(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_plain_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_aff:
-                arg1 = multi_aff(arg1)
-        except:
-            return pw_multi_aff(arg0).product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_product(isl.isl_multi_aff_copy(arg0.ptr), isl.isl_multi_aff_copy(arg1.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def pullback(*args):
-        if len(args) == 2 and args[1].__class__ is multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_multi_aff_pullback_multi_aff(isl.isl_multi_aff_copy(args[0].ptr), isl.isl_multi_aff_copy(args[1].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    @staticmethod
-    def range_map(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_range_map(isl.isl_space_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_aff:
-                arg1 = multi_aff(arg1)
-        except:
-            return pw_multi_aff(arg0).range_product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_range_product(isl.isl_multi_aff_copy(arg0.ptr), isl.isl_multi_aff_copy(arg1.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_get_range_tuple_id(arg0.ptr)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_range_tuple_id(arg0):
-        return arg0.range_tuple_id()
-    def reset_range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_reset_range_tuple_id(isl.isl_multi_aff_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def scale(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_aff_scale_multi_val(isl.isl_multi_aff_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_aff_scale_val(isl.isl_multi_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def scale_down(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_aff_scale_down_multi_val(isl.isl_multi_aff_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_aff_scale_down_val(isl.isl_multi_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def set_at(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is aff:
-                arg2 = aff(arg2)
-        except:
-            return pw_multi_aff(arg0).set_at(arg1, arg2)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_set_at(isl.isl_multi_aff_copy(arg0.ptr), arg1, isl.isl_aff_copy(arg2.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def set_range_tuple(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_aff_set_range_tuple_id(isl.isl_multi_aff_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def size(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def space(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def sub(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_aff:
-                arg1 = multi_aff(arg1)
-        except:
-            return pw_multi_aff(arg0).sub(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_sub(isl.isl_multi_aff_copy(arg0.ptr), isl.isl_multi_aff_copy(arg1.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def to_multi_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_to_multi_pw_aff(isl.isl_multi_aff_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def to_multi_union_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_to_multi_union_pw_aff(isl.isl_multi_aff_copy(arg0.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def to_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_to_pw_multi_aff(isl.isl_multi_aff_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def unbind_params_insert_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_aff:
-                arg0 = multi_aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return pw_multi_aff(arg0).unbind_params_insert_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_unbind_params_insert_domain(isl.isl_multi_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def zero(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_aff_zero(isl.isl_space_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_multi_aff_from_aff.restype = c_void_p
-isl.isl_multi_aff_from_aff.argtypes = [c_void_p]
-isl.isl_multi_aff_from_aff_list.restype = c_void_p
-isl.isl_multi_aff_from_aff_list.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_read_from_str.restype = c_void_p
-isl.isl_multi_aff_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_multi_aff_add.restype = c_void_p
-isl.isl_multi_aff_add.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_add_constant_multi_val.restype = c_void_p
-isl.isl_multi_aff_add_constant_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_add_constant_val.restype = c_void_p
-isl.isl_multi_aff_add_constant_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_as_map.restype = c_void_p
-isl.isl_multi_aff_as_map.argtypes = [c_void_p]
-isl.isl_multi_aff_as_set.restype = c_void_p
-isl.isl_multi_aff_as_set.argtypes = [c_void_p]
-isl.isl_multi_aff_get_at.restype = c_void_p
-isl.isl_multi_aff_get_at.argtypes = [c_void_p, c_int]
-isl.isl_multi_aff_bind.restype = c_void_p
-isl.isl_multi_aff_bind.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_bind_domain.restype = c_void_p
-isl.isl_multi_aff_bind_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_bind_domain_wrapped_domain.restype = c_void_p
-isl.isl_multi_aff_bind_domain_wrapped_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_get_constant_multi_val.restype = c_void_p
-isl.isl_multi_aff_get_constant_multi_val.argtypes = [c_void_p]
-isl.isl_multi_aff_domain_map.restype = c_void_p
-isl.isl_multi_aff_domain_map.argtypes = [c_void_p]
-isl.isl_multi_aff_flat_range_product.restype = c_void_p
-isl.isl_multi_aff_flat_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_floor.restype = c_void_p
-isl.isl_multi_aff_floor.argtypes = [c_void_p]
-isl.isl_multi_aff_gist.restype = c_void_p
-isl.isl_multi_aff_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_has_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_aff_identity_multi_aff.restype = c_void_p
-isl.isl_multi_aff_identity_multi_aff.argtypes = [c_void_p]
-isl.isl_multi_aff_identity_on_domain_space.restype = c_void_p
-isl.isl_multi_aff_identity_on_domain_space.argtypes = [c_void_p]
-isl.isl_multi_aff_insert_domain.restype = c_void_p
-isl.isl_multi_aff_insert_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_involves_locals.argtypes = [c_void_p]
-isl.isl_multi_aff_involves_nan.argtypes = [c_void_p]
-isl.isl_multi_aff_get_list.restype = c_void_p
-isl.isl_multi_aff_get_list.argtypes = [c_void_p]
-isl.isl_multi_aff_multi_val_on_domain_space.restype = c_void_p
-isl.isl_multi_aff_multi_val_on_domain_space.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_neg.restype = c_void_p
-isl.isl_multi_aff_neg.argtypes = [c_void_p]
-isl.isl_multi_aff_plain_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_product.restype = c_void_p
-isl.isl_multi_aff_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_pullback_multi_aff.restype = c_void_p
-isl.isl_multi_aff_pullback_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_range_map.restype = c_void_p
-isl.isl_multi_aff_range_map.argtypes = [c_void_p]
-isl.isl_multi_aff_range_product.restype = c_void_p
-isl.isl_multi_aff_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_get_range_tuple_id.restype = c_void_p
-isl.isl_multi_aff_get_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_aff_reset_range_tuple_id.restype = c_void_p
-isl.isl_multi_aff_reset_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_aff_scale_multi_val.restype = c_void_p
-isl.isl_multi_aff_scale_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_scale_val.restype = c_void_p
-isl.isl_multi_aff_scale_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_scale_down_multi_val.restype = c_void_p
-isl.isl_multi_aff_scale_down_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_scale_down_val.restype = c_void_p
-isl.isl_multi_aff_scale_down_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_set_at.restype = c_void_p
-isl.isl_multi_aff_set_at.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_multi_aff_set_range_tuple_id.restype = c_void_p
-isl.isl_multi_aff_set_range_tuple_id.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_size.argtypes = [c_void_p]
-isl.isl_multi_aff_get_space.restype = c_void_p
-isl.isl_multi_aff_get_space.argtypes = [c_void_p]
-isl.isl_multi_aff_sub.restype = c_void_p
-isl.isl_multi_aff_sub.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_to_multi_pw_aff.restype = c_void_p
-isl.isl_multi_aff_to_multi_pw_aff.argtypes = [c_void_p]
-isl.isl_multi_aff_to_multi_union_pw_aff.restype = c_void_p
-isl.isl_multi_aff_to_multi_union_pw_aff.argtypes = [c_void_p]
-isl.isl_multi_aff_to_pw_multi_aff.restype = c_void_p
-isl.isl_multi_aff_to_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_multi_aff_unbind_params_insert_domain.restype = c_void_p
-isl.isl_multi_aff_unbind_params_insert_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_aff_zero.restype = c_void_p
-isl.isl_multi_aff_zero.argtypes = [c_void_p]
-isl.isl_multi_aff_copy.restype = c_void_p
-isl.isl_multi_aff_copy.argtypes = [c_void_p]
-isl.isl_multi_aff_free.restype = c_void_p
-isl.isl_multi_aff_free.argtypes = [c_void_p]
-isl.isl_multi_aff_to_str.restype = POINTER(c_char)
-isl.isl_multi_aff_to_str.argtypes = [c_void_p]
-
-class aff(pw_aff, multi_aff):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_aff_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_aff_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        ptr = isl.isl_aff_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.aff("""%s""")' % s
-        else:
-            return 'isl.aff("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return pw_aff(arg0).add(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_add(isl.isl_aff_copy(arg0.ptr), isl.isl_aff_copy(arg1.ptr))
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def add_constant(*args):
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_aff_add_constant_val(isl.isl_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def bind(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_aff_bind_id(isl.isl_aff_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = basic_set(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def ceil(arg0):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_ceil(isl.isl_aff_copy(arg0.ptr))
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def constant_val(arg0):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_get_constant_val(arg0.ptr)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def get_constant_val(arg0):
-        return arg0.constant_val()
-    def div(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return pw_aff(arg0).div(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_div(isl.isl_aff_copy(arg0.ptr), isl.isl_aff_copy(arg1.ptr))
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def eq_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return pw_aff(arg0).eq_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_eq_set(isl.isl_aff_copy(arg0.ptr), isl.isl_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def eval(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is point:
-                arg1 = point(arg1)
-        except:
-            return pw_aff(arg0).eval(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_eval(isl.isl_aff_copy(arg0.ptr), isl.isl_point_copy(arg1.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def floor(arg0):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_floor(isl.isl_aff_copy(arg0.ptr))
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def ge_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return pw_aff(arg0).ge_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_ge_set(isl.isl_aff_copy(arg0.ptr), isl.isl_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return pw_aff(arg0).gist(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_gist(isl.isl_aff_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def gt_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return pw_aff(arg0).gt_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_gt_set(isl.isl_aff_copy(arg0.ptr), isl.isl_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def is_cst(arg0):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_is_cst(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def le_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return pw_aff(arg0).le_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_le_set(isl.isl_aff_copy(arg0.ptr), isl.isl_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def lt_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return pw_aff(arg0).lt_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_lt_set(isl.isl_aff_copy(arg0.ptr), isl.isl_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def mod(*args):
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_aff_mod_val(isl.isl_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def mul(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return pw_aff(arg0).mul(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_mul(isl.isl_aff_copy(arg0.ptr), isl.isl_aff_copy(arg1.ptr))
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def ne_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return pw_aff(arg0).ne_set(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_ne_set(isl.isl_aff_copy(arg0.ptr), isl.isl_aff_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def neg(arg0):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_neg(isl.isl_aff_copy(arg0.ptr))
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def pullback(*args):
-        if len(args) == 2 and args[1].__class__ is multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_aff_pullback_multi_aff(isl.isl_aff_copy(args[0].ptr), isl.isl_multi_aff_copy(args[1].ptr))
-            obj = aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def scale(*args):
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_aff_scale_val(isl.isl_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def scale_down(*args):
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_aff_scale_down_val(isl.isl_aff_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def sub(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return pw_aff(arg0).sub(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_sub(isl.isl_aff_copy(arg0.ptr), isl.isl_aff_copy(arg1.ptr))
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def to_list(arg0):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_to_list(isl.isl_aff_copy(arg0.ptr))
-        obj = aff_list(ctx=ctx, ptr=res)
-        return obj
-    def unbind_params_insert_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff:
-                arg0 = aff(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return pw_aff(arg0).unbind_params_insert_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_aff_unbind_params_insert_domain(isl.isl_aff_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def zero_on_domain(*args):
-        if len(args) == 1 and args[0].__class__ is space:
-            ctx = args[0].ctx
-            res = isl.isl_aff_zero_on_domain_space(isl.isl_space_copy(args[0].ptr))
-            obj = aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-
-isl.isl_aff_read_from_str.restype = c_void_p
-isl.isl_aff_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_aff_add.restype = c_void_p
-isl.isl_aff_add.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_add_constant_val.restype = c_void_p
-isl.isl_aff_add_constant_val.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_bind_id.restype = c_void_p
-isl.isl_aff_bind_id.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_ceil.restype = c_void_p
-isl.isl_aff_ceil.argtypes = [c_void_p]
-isl.isl_aff_get_constant_val.restype = c_void_p
-isl.isl_aff_get_constant_val.argtypes = [c_void_p]
-isl.isl_aff_div.restype = c_void_p
-isl.isl_aff_div.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_eq_set.restype = c_void_p
-isl.isl_aff_eq_set.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_eval.restype = c_void_p
-isl.isl_aff_eval.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_floor.restype = c_void_p
-isl.isl_aff_floor.argtypes = [c_void_p]
-isl.isl_aff_ge_set.restype = c_void_p
-isl.isl_aff_ge_set.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_gist.restype = c_void_p
-isl.isl_aff_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_gt_set.restype = c_void_p
-isl.isl_aff_gt_set.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_is_cst.argtypes = [c_void_p]
-isl.isl_aff_le_set.restype = c_void_p
-isl.isl_aff_le_set.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_lt_set.restype = c_void_p
-isl.isl_aff_lt_set.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_mod_val.restype = c_void_p
-isl.isl_aff_mod_val.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_mul.restype = c_void_p
-isl.isl_aff_mul.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_ne_set.restype = c_void_p
-isl.isl_aff_ne_set.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_neg.restype = c_void_p
-isl.isl_aff_neg.argtypes = [c_void_p]
-isl.isl_aff_pullback_multi_aff.restype = c_void_p
-isl.isl_aff_pullback_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_scale_val.restype = c_void_p
-isl.isl_aff_scale_val.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_scale_down_val.restype = c_void_p
-isl.isl_aff_scale_down_val.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_sub.restype = c_void_p
-isl.isl_aff_sub.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_to_list.restype = c_void_p
-isl.isl_aff_to_list.argtypes = [c_void_p]
-isl.isl_aff_unbind_params_insert_domain.restype = c_void_p
-isl.isl_aff_unbind_params_insert_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_zero_on_domain_space.restype = c_void_p
-isl.isl_aff_zero_on_domain_space.argtypes = [c_void_p]
-isl.isl_aff_copy.restype = c_void_p
-isl.isl_aff_copy.argtypes = [c_void_p]
-isl.isl_aff_free.restype = c_void_p
-isl.isl_aff_free.argtypes = [c_void_p]
-isl.isl_aff_to_str.restype = POINTER(c_char)
-isl.isl_aff_to_str.argtypes = [c_void_p]
-
-class aff_list(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == int:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_aff_list_alloc(self.ctx, args[0])
-            return
-        if len(args) == 1 and args[0].__class__ is aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_aff_list_from_aff(isl.isl_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_aff_list_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_aff_list_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is aff_list:
-                arg0 = aff_list(arg0)
-        except:
-            raise
-        ptr = isl.isl_aff_list_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.aff_list("""%s""")' % s
-        else:
-            return 'isl.aff_list("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff_list:
-                arg0 = aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_list_add(isl.isl_aff_list_copy(arg0.ptr), isl.isl_aff_copy(arg1.ptr))
-        obj = aff_list(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff_list:
-                arg0 = aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_list_get_at(arg0.ptr, arg1)
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def clear(arg0):
-        try:
-            if not arg0.__class__ is aff_list:
-                arg0 = aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_list_clear(isl.isl_aff_list_copy(arg0.ptr))
-        obj = aff_list(ctx=ctx, ptr=res)
-        return obj
-    def concat(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff_list:
-                arg0 = aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff_list:
-                arg1 = aff_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_list_concat(isl.isl_aff_list_copy(arg0.ptr), isl.isl_aff_list_copy(arg1.ptr))
-        obj = aff_list(ctx=ctx, ptr=res)
-        return obj
-    def drop(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is aff_list:
-                arg0 = aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_list_drop(isl.isl_aff_list_copy(arg0.ptr), arg1, arg2)
-        obj = aff_list(ctx=ctx, ptr=res)
-        return obj
-    def foreach(arg0, arg1):
-        try:
-            if not arg0.__class__ is aff_list:
-                arg0 = aff_list(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = aff(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_aff_list_foreach(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def insert(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is aff_list:
-                arg0 = aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is aff:
-                arg2 = aff(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_list_insert(isl.isl_aff_list_copy(arg0.ptr), arg1, isl.isl_aff_copy(arg2.ptr))
-        obj = aff_list(ctx=ctx, ptr=res)
-        return obj
-    def size(arg0):
-        try:
-            if not arg0.__class__ is aff_list:
-                arg0 = aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_aff_list_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-
-isl.isl_aff_list_alloc.restype = c_void_p
-isl.isl_aff_list_alloc.argtypes = [Context, c_int]
-isl.isl_aff_list_from_aff.restype = c_void_p
-isl.isl_aff_list_from_aff.argtypes = [c_void_p]
-isl.isl_aff_list_read_from_str.restype = c_void_p
-isl.isl_aff_list_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_aff_list_add.restype = c_void_p
-isl.isl_aff_list_add.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_list_get_at.restype = c_void_p
-isl.isl_aff_list_get_at.argtypes = [c_void_p, c_int]
-isl.isl_aff_list_clear.restype = c_void_p
-isl.isl_aff_list_clear.argtypes = [c_void_p]
-isl.isl_aff_list_concat.restype = c_void_p
-isl.isl_aff_list_concat.argtypes = [c_void_p, c_void_p]
-isl.isl_aff_list_drop.restype = c_void_p
-isl.isl_aff_list_drop.argtypes = [c_void_p, c_int, c_int]
-isl.isl_aff_list_foreach.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_aff_list_insert.restype = c_void_p
-isl.isl_aff_list_insert.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_aff_list_size.argtypes = [c_void_p]
-isl.isl_aff_list_copy.restype = c_void_p
-isl.isl_aff_list_copy.argtypes = [c_void_p]
-isl.isl_aff_list_free.restype = c_void_p
-isl.isl_aff_list_free.argtypes = [c_void_p]
-isl.isl_aff_list_to_str.restype = POINTER(c_char)
-isl.isl_aff_list_to_str.argtypes = [c_void_p]
-
-class ast_build(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 0:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_ast_build_alloc(self.ctx)
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_build_free(self.ptr)
-    def copy_callbacks(self, obj):
-        if hasattr(obj, 'at_each_domain'):
-            self.at_each_domain = obj.at_each_domain
-    def set_at_each_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is ast_build:
-                arg0 = ast_build(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_void_p, c_void_p, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1, cb_arg2):
-            cb_arg0 = ast_node(ctx=arg0.ctx, ptr=(cb_arg0))
-            cb_arg1 = ast_build(ctx=arg0.ctx, ptr=isl.isl_ast_build_copy(cb_arg1))
-            try:
-                res = arg1(cb_arg0, cb_arg1)
-            except BaseException as e:
-                exc_info[0] = e
-                return None
-            return isl.isl_ast_node_copy(res.ptr)
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_ast_build_set_at_each_domain(isl.isl_ast_build_copy(arg0.ptr), cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if hasattr(arg0, 'at_each_domain') and arg0.at_each_domain['exc_info'] != None:
-            exc_info = arg0.at_each_domain['exc_info'][0]
-            arg0.at_each_domain['exc_info'][0] = None
-            if exc_info is not None:
-                raise exc_info
-        obj = ast_build(ctx=ctx, ptr=res)
-        obj.copy_callbacks(arg0)
-        obj.at_each_domain = { 'func': cb, 'exc_info': exc_info }
-        return obj
-    def access_from(*args):
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_ast_build_access_from_multi_pw_aff(args[0].ptr, isl.isl_multi_pw_aff_copy(args[1].ptr))
-            if hasattr(args[0], 'at_each_domain') and args[0].at_each_domain['exc_info'] != None:
-                exc_info = args[0].at_each_domain['exc_info'][0]
-                args[0].at_each_domain['exc_info'][0] = None
-                if exc_info is not None:
-                    raise exc_info
-            obj = ast_expr(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_ast_build_access_from_pw_multi_aff(args[0].ptr, isl.isl_pw_multi_aff_copy(args[1].ptr))
-            if hasattr(args[0], 'at_each_domain') and args[0].at_each_domain['exc_info'] != None:
-                exc_info = args[0].at_each_domain['exc_info'][0]
-                args[0].at_each_domain['exc_info'][0] = None
-                if exc_info is not None:
-                    raise exc_info
-            obj = ast_expr(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def call_from(*args):
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_ast_build_call_from_multi_pw_aff(args[0].ptr, isl.isl_multi_pw_aff_copy(args[1].ptr))
-            if hasattr(args[0], 'at_each_domain') and args[0].at_each_domain['exc_info'] != None:
-                exc_info = args[0].at_each_domain['exc_info'][0]
-                args[0].at_each_domain['exc_info'][0] = None
-                if exc_info is not None:
-                    raise exc_info
-            obj = ast_expr(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_ast_build_call_from_pw_multi_aff(args[0].ptr, isl.isl_pw_multi_aff_copy(args[1].ptr))
-            if hasattr(args[0], 'at_each_domain') and args[0].at_each_domain['exc_info'] != None:
-                exc_info = args[0].at_each_domain['exc_info'][0]
-                args[0].at_each_domain['exc_info'][0] = None
-                if exc_info is not None:
-                    raise exc_info
-            obj = ast_expr(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def expr_from(*args):
-        if len(args) == 2 and args[1].__class__ is pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_ast_build_expr_from_pw_aff(args[0].ptr, isl.isl_pw_aff_copy(args[1].ptr))
-            if hasattr(args[0], 'at_each_domain') and args[0].at_each_domain['exc_info'] != None:
-                exc_info = args[0].at_each_domain['exc_info'][0]
-                args[0].at_each_domain['exc_info'][0] = None
-                if exc_info is not None:
-                    raise exc_info
-            obj = ast_expr(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is set:
-            ctx = args[0].ctx
-            res = isl.isl_ast_build_expr_from_set(args[0].ptr, isl.isl_set_copy(args[1].ptr))
-            if hasattr(args[0], 'at_each_domain') and args[0].at_each_domain['exc_info'] != None:
-                exc_info = args[0].at_each_domain['exc_info'][0]
-                args[0].at_each_domain['exc_info'][0] = None
-                if exc_info is not None:
-                    raise exc_info
-            obj = ast_expr(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    @staticmethod
-    def from_context(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_build_from_context(isl.isl_set_copy(arg0.ptr))
-        obj = ast_build(ctx=ctx, ptr=res)
-        return obj
-    def node_from(*args):
-        if len(args) == 2 and args[1].__class__ is schedule:
-            ctx = args[0].ctx
-            res = isl.isl_ast_build_node_from_schedule(args[0].ptr, isl.isl_schedule_copy(args[1].ptr))
-            if hasattr(args[0], 'at_each_domain') and args[0].at_each_domain['exc_info'] != None:
-                exc_info = args[0].at_each_domain['exc_info'][0]
-                args[0].at_each_domain['exc_info'][0] = None
-                if exc_info is not None:
-                    raise exc_info
-            obj = ast_node(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def node_from_schedule_map(arg0, arg1):
-        try:
-            if not arg0.__class__ is ast_build:
-                arg0 = ast_build(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_build_node_from_schedule_map(arg0.ptr, isl.isl_union_map_copy(arg1.ptr))
-        if hasattr(arg0, 'at_each_domain') and arg0.at_each_domain['exc_info'] != None:
-            exc_info = arg0.at_each_domain['exc_info'][0]
-            arg0.at_each_domain['exc_info'][0] = None
-            if exc_info is not None:
-                raise exc_info
-        obj = ast_node(ctx=ctx, ptr=res)
-        return obj
-    def schedule(arg0):
-        try:
-            if not arg0.__class__ is ast_build:
-                arg0 = ast_build(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_build_get_schedule(arg0.ptr)
-        if hasattr(arg0, 'at_each_domain') and arg0.at_each_domain['exc_info'] != None:
-            exc_info = arg0.at_each_domain['exc_info'][0]
-            arg0.at_each_domain['exc_info'][0] = None
-            if exc_info is not None:
-                raise exc_info
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_schedule(arg0):
-        return arg0.schedule()
-
-isl.isl_ast_build_alloc.restype = c_void_p
-isl.isl_ast_build_alloc.argtypes = [Context]
-isl.isl_ast_build_set_at_each_domain.restype = c_void_p
-isl.isl_ast_build_set_at_each_domain.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_ast_build_access_from_multi_pw_aff.restype = c_void_p
-isl.isl_ast_build_access_from_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_ast_build_access_from_pw_multi_aff.restype = c_void_p
-isl.isl_ast_build_access_from_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_ast_build_call_from_multi_pw_aff.restype = c_void_p
-isl.isl_ast_build_call_from_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_ast_build_call_from_pw_multi_aff.restype = c_void_p
-isl.isl_ast_build_call_from_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_ast_build_expr_from_pw_aff.restype = c_void_p
-isl.isl_ast_build_expr_from_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_ast_build_expr_from_set.restype = c_void_p
-isl.isl_ast_build_expr_from_set.argtypes = [c_void_p, c_void_p]
-isl.isl_ast_build_from_context.restype = c_void_p
-isl.isl_ast_build_from_context.argtypes = [c_void_p]
-isl.isl_ast_build_node_from_schedule.restype = c_void_p
-isl.isl_ast_build_node_from_schedule.argtypes = [c_void_p, c_void_p]
-isl.isl_ast_build_node_from_schedule_map.restype = c_void_p
-isl.isl_ast_build_node_from_schedule_map.argtypes = [c_void_p, c_void_p]
-isl.isl_ast_build_get_schedule.restype = c_void_p
-isl.isl_ast_build_get_schedule.argtypes = [c_void_p]
-isl.isl_ast_build_copy.restype = c_void_p
-isl.isl_ast_build_copy.argtypes = [c_void_p]
-isl.isl_ast_build_free.restype = c_void_p
-isl.isl_ast_build_free.argtypes = [c_void_p]
-
-class ast_expr(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_id):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_int):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        if "ptr" in keywords:
-            type = isl.isl_ast_expr_get_type(keywords["ptr"])
-            if type == 0:
-                return ast_expr_op(**keywords)
-            if type == 1:
-                return ast_expr_id(**keywords)
-            if type == 2:
-                return ast_expr_int(**keywords)
-            raise
-        return super(ast_expr, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr:
-                arg0 = ast_expr(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr("""%s""")' % s
-        else:
-            return 'isl.ast_expr("%s")' % s
-    def to_C_str(arg0):
-        try:
-            if not arg0.__class__ is ast_expr:
-                arg0 = ast_expr(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_expr_to_C_str(arg0.ptr)
-        if res == 0:
-            raise
-        string = cast(res, c_char_p).value.decode('ascii')
-        libc.free(res)
-        return string
-
-isl.isl_ast_expr_to_C_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_C_str.argtypes = [c_void_p]
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-isl.isl_ast_expr_get_type.argtypes = [c_void_p]
-
-class ast_expr_id(ast_expr):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_id, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_id:
-                arg0 = ast_expr_id(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_id("""%s""")' % s
-        else:
-            return 'isl.ast_expr_id("%s")' % s
-    def id(arg0):
-        try:
-            if not arg0.__class__ is ast_expr:
-                arg0 = ast_expr(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_expr_id_get_id(arg0.ptr)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_id(arg0):
-        return arg0.id()
-
-isl.isl_ast_expr_id_get_id.restype = c_void_p
-isl.isl_ast_expr_id_get_id.argtypes = [c_void_p]
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_int(ast_expr):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_int, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_int:
-                arg0 = ast_expr_int(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_int("""%s""")' % s
-        else:
-            return 'isl.ast_expr_int("%s")' % s
-    def val(arg0):
-        try:
-            if not arg0.__class__ is ast_expr:
-                arg0 = ast_expr(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_expr_int_get_val(arg0.ptr)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def get_val(arg0):
-        return arg0.val()
-
-isl.isl_ast_expr_int_get_val.restype = c_void_p
-isl.isl_ast_expr_int_get_val.argtypes = [c_void_p]
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op(ast_expr):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_and):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_and_then):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_or):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_or_else):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_max):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_min):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_minus):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_add):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_sub):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_mul):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_div):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_fdiv_q):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_pdiv_q):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_pdiv_r):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_zdiv_r):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_cond):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_select):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_eq):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_le):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_lt):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_ge):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_gt):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_call):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_access):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_member):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_expr_op_address_of):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_expr_copy(args[0].ptr)
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        if "ptr" in keywords:
-            type = isl.isl_ast_expr_op_get_type(keywords["ptr"])
-            if type == 0:
-                return ast_expr_op_and(**keywords)
-            if type == 1:
-                return ast_expr_op_and_then(**keywords)
-            if type == 2:
-                return ast_expr_op_or(**keywords)
-            if type == 3:
-                return ast_expr_op_or_else(**keywords)
-            if type == 4:
-                return ast_expr_op_max(**keywords)
-            if type == 5:
-                return ast_expr_op_min(**keywords)
-            if type == 6:
-                return ast_expr_op_minus(**keywords)
-            if type == 7:
-                return ast_expr_op_add(**keywords)
-            if type == 8:
-                return ast_expr_op_sub(**keywords)
-            if type == 9:
-                return ast_expr_op_mul(**keywords)
-            if type == 10:
-                return ast_expr_op_div(**keywords)
-            if type == 11:
-                return ast_expr_op_fdiv_q(**keywords)
-            if type == 12:
-                return ast_expr_op_pdiv_q(**keywords)
-            if type == 13:
-                return ast_expr_op_pdiv_r(**keywords)
-            if type == 14:
-                return ast_expr_op_zdiv_r(**keywords)
-            if type == 15:
-                return ast_expr_op_cond(**keywords)
-            if type == 16:
-                return ast_expr_op_select(**keywords)
-            if type == 17:
-                return ast_expr_op_eq(**keywords)
-            if type == 18:
-                return ast_expr_op_le(**keywords)
-            if type == 19:
-                return ast_expr_op_lt(**keywords)
-            if type == 20:
-                return ast_expr_op_ge(**keywords)
-            if type == 21:
-                return ast_expr_op_gt(**keywords)
-            if type == 22:
-                return ast_expr_op_call(**keywords)
-            if type == 23:
-                return ast_expr_op_access(**keywords)
-            if type == 24:
-                return ast_expr_op_member(**keywords)
-            if type == 25:
-                return ast_expr_op_address_of(**keywords)
-            raise
-        return super(ast_expr_op, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op:
-                arg0 = ast_expr_op(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op("%s")' % s
-    def arg(arg0, arg1):
-        try:
-            if not arg0.__class__ is ast_expr:
-                arg0 = ast_expr(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_expr_op_get_arg(arg0.ptr, arg1)
-        obj = ast_expr(ctx=ctx, ptr=res)
-        return obj
-    def get_arg(arg0, arg1):
-        return arg0.arg(arg1)
-    def n_arg(arg0):
-        try:
-            if not arg0.__class__ is ast_expr:
-                arg0 = ast_expr(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_expr_op_get_n_arg(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def get_n_arg(arg0):
-        return arg0.n_arg()
-
-isl.isl_ast_expr_op_get_arg.restype = c_void_p
-isl.isl_ast_expr_op_get_arg.argtypes = [c_void_p, c_int]
-isl.isl_ast_expr_op_get_n_arg.argtypes = [c_void_p]
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-isl.isl_ast_expr_op_get_type.argtypes = [c_void_p]
-
-class ast_expr_op_access(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_access, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_access:
-                arg0 = ast_expr_op_access(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_access("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_access("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_add(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_add, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_add:
-                arg0 = ast_expr_op_add(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_add("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_add("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_address_of(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_address_of, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_address_of:
-                arg0 = ast_expr_op_address_of(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_address_of("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_address_of("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_and(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_and, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_and:
-                arg0 = ast_expr_op_and(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_and("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_and("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_and_then(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_and_then, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_and_then:
-                arg0 = ast_expr_op_and_then(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_and_then("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_and_then("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_call(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_call, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_call:
-                arg0 = ast_expr_op_call(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_call("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_call("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_cond(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_cond, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_cond:
-                arg0 = ast_expr_op_cond(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_cond("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_cond("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_div(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_div, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_div:
-                arg0 = ast_expr_op_div(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_div("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_div("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_eq(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_eq, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_eq:
-                arg0 = ast_expr_op_eq(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_eq("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_eq("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_fdiv_q(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_fdiv_q, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_fdiv_q:
-                arg0 = ast_expr_op_fdiv_q(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_fdiv_q("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_fdiv_q("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_ge(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_ge, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_ge:
-                arg0 = ast_expr_op_ge(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_ge("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_ge("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_gt(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_gt, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_gt:
-                arg0 = ast_expr_op_gt(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_gt("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_gt("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_le(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_le, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_le:
-                arg0 = ast_expr_op_le(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_le("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_le("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_lt(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_lt, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_lt:
-                arg0 = ast_expr_op_lt(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_lt("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_lt("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_max(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_max, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_max:
-                arg0 = ast_expr_op_max(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_max("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_max("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_member(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_member, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_member:
-                arg0 = ast_expr_op_member(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_member("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_member("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_min(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_min, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_min:
-                arg0 = ast_expr_op_min(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_min("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_min("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_minus(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_minus, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_minus:
-                arg0 = ast_expr_op_minus(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_minus("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_minus("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_mul(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_mul, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_mul:
-                arg0 = ast_expr_op_mul(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_mul("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_mul("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_or(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_or, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_or:
-                arg0 = ast_expr_op_or(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_or("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_or("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_or_else(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_or_else, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_or_else:
-                arg0 = ast_expr_op_or_else(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_or_else("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_or_else("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_pdiv_q(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_pdiv_q, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_pdiv_q:
-                arg0 = ast_expr_op_pdiv_q(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_pdiv_q("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_pdiv_q("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_pdiv_r(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_pdiv_r, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_pdiv_r:
-                arg0 = ast_expr_op_pdiv_r(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_pdiv_r("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_pdiv_r("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_select(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_select, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_select:
-                arg0 = ast_expr_op_select(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_select("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_select("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_sub(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_sub, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_sub:
-                arg0 = ast_expr_op_sub(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_sub("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_sub("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_expr_op_zdiv_r(ast_expr_op):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_expr_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_expr_op_zdiv_r, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_expr_op_zdiv_r:
-                arg0 = ast_expr_op_zdiv_r(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_expr_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_expr_op_zdiv_r("""%s""")' % s
-        else:
-            return 'isl.ast_expr_op_zdiv_r("%s")' % s
-
-isl.isl_ast_expr_copy.restype = c_void_p
-isl.isl_ast_expr_copy.argtypes = [c_void_p]
-isl.isl_ast_expr_free.restype = c_void_p
-isl.isl_ast_expr_free.argtypes = [c_void_p]
-isl.isl_ast_expr_to_str.restype = POINTER(c_char)
-isl.isl_ast_expr_to_str.argtypes = [c_void_p]
-
-class ast_node(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and isinstance(args[0], ast_node_for):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_node_if):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_node_block):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_node_mark):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], ast_node_user):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_ast_node_copy(args[0].ptr)
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        if "ptr" in keywords:
-            type = isl.isl_ast_node_get_type(keywords["ptr"])
-            if type == 1:
-                return ast_node_for(**keywords)
-            if type == 2:
-                return ast_node_if(**keywords)
-            if type == 3:
-                return ast_node_block(**keywords)
-            if type == 4:
-                return ast_node_mark(**keywords)
-            if type == 5:
-                return ast_node_user(**keywords)
-            raise
-        return super(ast_node, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_node("""%s""")' % s
-        else:
-            return 'isl.ast_node("%s")' % s
-    def to_C_str(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_to_C_str(arg0.ptr)
-        if res == 0:
-            raise
-        string = cast(res, c_char_p).value.decode('ascii')
-        libc.free(res)
-        return string
-    def to_list(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_to_list(isl.isl_ast_node_copy(arg0.ptr))
-        obj = ast_node_list(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_ast_node_to_C_str.restype = POINTER(c_char)
-isl.isl_ast_node_to_C_str.argtypes = [c_void_p]
-isl.isl_ast_node_to_list.restype = c_void_p
-isl.isl_ast_node_to_list.argtypes = [c_void_p]
-isl.isl_ast_node_copy.restype = c_void_p
-isl.isl_ast_node_copy.argtypes = [c_void_p]
-isl.isl_ast_node_free.restype = c_void_p
-isl.isl_ast_node_free.argtypes = [c_void_p]
-isl.isl_ast_node_to_str.restype = POINTER(c_char)
-isl.isl_ast_node_to_str.argtypes = [c_void_p]
-isl.isl_ast_node_get_type.argtypes = [c_void_p]
-
-class ast_node_block(ast_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_node_block, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_node_block:
-                arg0 = ast_node_block(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_node_block("""%s""")' % s
-        else:
-            return 'isl.ast_node_block("%s")' % s
-    def children(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_block_get_children(arg0.ptr)
-        obj = ast_node_list(ctx=ctx, ptr=res)
-        return obj
-    def get_children(arg0):
-        return arg0.children()
-
-isl.isl_ast_node_block_get_children.restype = c_void_p
-isl.isl_ast_node_block_get_children.argtypes = [c_void_p]
-isl.isl_ast_node_copy.restype = c_void_p
-isl.isl_ast_node_copy.argtypes = [c_void_p]
-isl.isl_ast_node_free.restype = c_void_p
-isl.isl_ast_node_free.argtypes = [c_void_p]
-isl.isl_ast_node_to_str.restype = POINTER(c_char)
-isl.isl_ast_node_to_str.argtypes = [c_void_p]
-
-class ast_node_for(ast_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_node_for, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_node_for:
-                arg0 = ast_node_for(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_node_for("""%s""")' % s
-        else:
-            return 'isl.ast_node_for("%s")' % s
-    def body(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_for_get_body(arg0.ptr)
-        obj = ast_node(ctx=ctx, ptr=res)
-        return obj
-    def get_body(arg0):
-        return arg0.body()
-    def cond(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_for_get_cond(arg0.ptr)
-        obj = ast_expr(ctx=ctx, ptr=res)
-        return obj
-    def get_cond(arg0):
-        return arg0.cond()
-    def inc(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_for_get_inc(arg0.ptr)
-        obj = ast_expr(ctx=ctx, ptr=res)
-        return obj
-    def get_inc(arg0):
-        return arg0.inc()
-    def init(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_for_get_init(arg0.ptr)
-        obj = ast_expr(ctx=ctx, ptr=res)
-        return obj
-    def get_init(arg0):
-        return arg0.init()
-    def is_degenerate(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_for_is_degenerate(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def iterator(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_for_get_iterator(arg0.ptr)
-        obj = ast_expr(ctx=ctx, ptr=res)
-        return obj
-    def get_iterator(arg0):
-        return arg0.iterator()
-
-isl.isl_ast_node_for_get_body.restype = c_void_p
-isl.isl_ast_node_for_get_body.argtypes = [c_void_p]
-isl.isl_ast_node_for_get_cond.restype = c_void_p
-isl.isl_ast_node_for_get_cond.argtypes = [c_void_p]
-isl.isl_ast_node_for_get_inc.restype = c_void_p
-isl.isl_ast_node_for_get_inc.argtypes = [c_void_p]
-isl.isl_ast_node_for_get_init.restype = c_void_p
-isl.isl_ast_node_for_get_init.argtypes = [c_void_p]
-isl.isl_ast_node_for_is_degenerate.argtypes = [c_void_p]
-isl.isl_ast_node_for_get_iterator.restype = c_void_p
-isl.isl_ast_node_for_get_iterator.argtypes = [c_void_p]
-isl.isl_ast_node_copy.restype = c_void_p
-isl.isl_ast_node_copy.argtypes = [c_void_p]
-isl.isl_ast_node_free.restype = c_void_p
-isl.isl_ast_node_free.argtypes = [c_void_p]
-isl.isl_ast_node_to_str.restype = POINTER(c_char)
-isl.isl_ast_node_to_str.argtypes = [c_void_p]
-
-class ast_node_if(ast_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_node_if, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_node_if:
-                arg0 = ast_node_if(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_node_if("""%s""")' % s
-        else:
-            return 'isl.ast_node_if("%s")' % s
-    def cond(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_if_get_cond(arg0.ptr)
-        obj = ast_expr(ctx=ctx, ptr=res)
-        return obj
-    def get_cond(arg0):
-        return arg0.cond()
-    def else_node(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_if_get_else_node(arg0.ptr)
-        obj = ast_node(ctx=ctx, ptr=res)
-        return obj
-    def get_else_node(arg0):
-        return arg0.else_node()
-    def has_else_node(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_if_has_else_node(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def then_node(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_if_get_then_node(arg0.ptr)
-        obj = ast_node(ctx=ctx, ptr=res)
-        return obj
-    def get_then_node(arg0):
-        return arg0.then_node()
-
-isl.isl_ast_node_if_get_cond.restype = c_void_p
-isl.isl_ast_node_if_get_cond.argtypes = [c_void_p]
-isl.isl_ast_node_if_get_else_node.restype = c_void_p
-isl.isl_ast_node_if_get_else_node.argtypes = [c_void_p]
-isl.isl_ast_node_if_has_else_node.argtypes = [c_void_p]
-isl.isl_ast_node_if_get_then_node.restype = c_void_p
-isl.isl_ast_node_if_get_then_node.argtypes = [c_void_p]
-isl.isl_ast_node_copy.restype = c_void_p
-isl.isl_ast_node_copy.argtypes = [c_void_p]
-isl.isl_ast_node_free.restype = c_void_p
-isl.isl_ast_node_free.argtypes = [c_void_p]
-isl.isl_ast_node_to_str.restype = POINTER(c_char)
-isl.isl_ast_node_to_str.argtypes = [c_void_p]
-
-class ast_node_list(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == int:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_ast_node_list_alloc(self.ctx, args[0])
-            return
-        if len(args) == 1 and args[0].__class__ is ast_node:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_ast_node_list_from_ast_node(isl.isl_ast_node_copy(args[0].ptr))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_node_list_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_node_list:
-                arg0 = ast_node_list(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_node_list_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_node_list("""%s""")' % s
-        else:
-            return 'isl.ast_node_list("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is ast_node_list:
-                arg0 = ast_node_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is ast_node:
-                arg1 = ast_node(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_list_add(isl.isl_ast_node_list_copy(arg0.ptr), isl.isl_ast_node_copy(arg1.ptr))
-        obj = ast_node_list(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is ast_node_list:
-                arg0 = ast_node_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_list_get_at(arg0.ptr, arg1)
-        obj = ast_node(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def clear(arg0):
-        try:
-            if not arg0.__class__ is ast_node_list:
-                arg0 = ast_node_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_list_clear(isl.isl_ast_node_list_copy(arg0.ptr))
-        obj = ast_node_list(ctx=ctx, ptr=res)
-        return obj
-    def concat(arg0, arg1):
-        try:
-            if not arg0.__class__ is ast_node_list:
-                arg0 = ast_node_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is ast_node_list:
-                arg1 = ast_node_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_list_concat(isl.isl_ast_node_list_copy(arg0.ptr), isl.isl_ast_node_list_copy(arg1.ptr))
-        obj = ast_node_list(ctx=ctx, ptr=res)
-        return obj
-    def drop(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is ast_node_list:
-                arg0 = ast_node_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_list_drop(isl.isl_ast_node_list_copy(arg0.ptr), arg1, arg2)
-        obj = ast_node_list(ctx=ctx, ptr=res)
-        return obj
-    def foreach(arg0, arg1):
-        try:
-            if not arg0.__class__ is ast_node_list:
-                arg0 = ast_node_list(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = ast_node(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_list_foreach(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def insert(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is ast_node_list:
-                arg0 = ast_node_list(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is ast_node:
-                arg2 = ast_node(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_list_insert(isl.isl_ast_node_list_copy(arg0.ptr), arg1, isl.isl_ast_node_copy(arg2.ptr))
-        obj = ast_node_list(ctx=ctx, ptr=res)
-        return obj
-    def size(arg0):
-        try:
-            if not arg0.__class__ is ast_node_list:
-                arg0 = ast_node_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_list_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-
-isl.isl_ast_node_list_alloc.restype = c_void_p
-isl.isl_ast_node_list_alloc.argtypes = [Context, c_int]
-isl.isl_ast_node_list_from_ast_node.restype = c_void_p
-isl.isl_ast_node_list_from_ast_node.argtypes = [c_void_p]
-isl.isl_ast_node_list_add.restype = c_void_p
-isl.isl_ast_node_list_add.argtypes = [c_void_p, c_void_p]
-isl.isl_ast_node_list_get_at.restype = c_void_p
-isl.isl_ast_node_list_get_at.argtypes = [c_void_p, c_int]
-isl.isl_ast_node_list_clear.restype = c_void_p
-isl.isl_ast_node_list_clear.argtypes = [c_void_p]
-isl.isl_ast_node_list_concat.restype = c_void_p
-isl.isl_ast_node_list_concat.argtypes = [c_void_p, c_void_p]
-isl.isl_ast_node_list_drop.restype = c_void_p
-isl.isl_ast_node_list_drop.argtypes = [c_void_p, c_int, c_int]
-isl.isl_ast_node_list_foreach.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_ast_node_list_insert.restype = c_void_p
-isl.isl_ast_node_list_insert.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_ast_node_list_size.argtypes = [c_void_p]
-isl.isl_ast_node_list_copy.restype = c_void_p
-isl.isl_ast_node_list_copy.argtypes = [c_void_p]
-isl.isl_ast_node_list_free.restype = c_void_p
-isl.isl_ast_node_list_free.argtypes = [c_void_p]
-isl.isl_ast_node_list_to_str.restype = POINTER(c_char)
-isl.isl_ast_node_list_to_str.argtypes = [c_void_p]
-
-class ast_node_mark(ast_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_node_mark, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_node_mark:
-                arg0 = ast_node_mark(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_node_mark("""%s""")' % s
-        else:
-            return 'isl.ast_node_mark("%s")' % s
-    def id(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_mark_get_id(arg0.ptr)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_id(arg0):
-        return arg0.id()
-    def node(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_mark_get_node(arg0.ptr)
-        obj = ast_node(ctx=ctx, ptr=res)
-        return obj
-    def get_node(arg0):
-        return arg0.node()
-
-isl.isl_ast_node_mark_get_id.restype = c_void_p
-isl.isl_ast_node_mark_get_id.argtypes = [c_void_p]
-isl.isl_ast_node_mark_get_node.restype = c_void_p
-isl.isl_ast_node_mark_get_node.argtypes = [c_void_p]
-isl.isl_ast_node_copy.restype = c_void_p
-isl.isl_ast_node_copy.argtypes = [c_void_p]
-isl.isl_ast_node_free.restype = c_void_p
-isl.isl_ast_node_free.argtypes = [c_void_p]
-isl.isl_ast_node_to_str.restype = POINTER(c_char)
-isl.isl_ast_node_to_str.argtypes = [c_void_p]
-
-class ast_node_user(ast_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_ast_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(ast_node_user, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is ast_node_user:
-                arg0 = ast_node_user(arg0)
-        except:
-            raise
-        ptr = isl.isl_ast_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.ast_node_user("""%s""")' % s
-        else:
-            return 'isl.ast_node_user("%s")' % s
-    def expr(arg0):
-        try:
-            if not arg0.__class__ is ast_node:
-                arg0 = ast_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_ast_node_user_get_expr(arg0.ptr)
-        obj = ast_expr(ctx=ctx, ptr=res)
-        return obj
-    def get_expr(arg0):
-        return arg0.expr()
-
-isl.isl_ast_node_user_get_expr.restype = c_void_p
-isl.isl_ast_node_user_get_expr.argtypes = [c_void_p]
-isl.isl_ast_node_copy.restype = c_void_p
-isl.isl_ast_node_copy.argtypes = [c_void_p]
-isl.isl_ast_node_free.restype = c_void_p
-isl.isl_ast_node_free.argtypes = [c_void_p]
-isl.isl_ast_node_to_str.restype = POINTER(c_char)
-isl.isl_ast_node_to_str.argtypes = [c_void_p]
-
-class union_map(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is basic_map:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_map_from_basic_map(isl.isl_basic_map_copy(args[0].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is map:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_map_from_map(isl.isl_map_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_map_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_union_map_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ptr = isl.isl_union_map_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.union_map("""%s""")' % s
-        else:
-            return 'isl.union_map("%s")' % s
-    def affine_hull(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_affine_hull(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def apply_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_apply_domain(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def apply_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_apply_range(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def as_map(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_as_map(isl.isl_union_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def as_multi_union_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_as_multi_union_pw_aff(isl.isl_union_map_copy(arg0.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def as_union_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_as_union_pw_multi_aff(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def bind_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_bind_range(isl.isl_union_map_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def coalesce(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_coalesce(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def compute_divs(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_compute_divs(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def curry(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_curry(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def deltas(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_deltas(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def detect_equalities(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_detect_equalities(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_domain(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def domain_factor_domain(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_domain_factor_domain(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def domain_factor_range(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_domain_factor_range(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def domain_map(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_domain_map(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def domain_map_union_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_domain_map_union_pw_multi_aff(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def domain_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_domain_product(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def empty(*args):
-        if len(args) == 0:
-            ctx = Context.getDefaultInstance()
-            res = isl.isl_union_map_empty_ctx(ctx)
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def eq_at(*args):
-        if len(args) == 2 and args[1].__class__ is multi_union_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_eq_at_multi_union_pw_aff(isl.isl_union_map_copy(args[0].ptr), isl.isl_multi_union_pw_aff_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def every_map(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = map(ctx=arg0.ctx, ptr=isl.isl_map_copy(cb_arg0))
-            try:
-                res = arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 1 if res else 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_union_map_every_map(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-        return bool(res)
-    def extract_map(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is space:
-                arg1 = space(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_extract_map(arg0.ptr, isl.isl_space_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def factor_domain(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_factor_domain(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def factor_range(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_factor_range(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def fixed_power(*args):
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_union_map_fixed_power_val(isl.isl_union_map_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def foreach_map(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = map(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_union_map_foreach_map(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    @staticmethod
-    def convert_from(*args):
-        if len(args) == 1 and args[0].__class__ is multi_union_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_from_multi_union_pw_aff(isl.isl_multi_union_pw_aff_copy(args[0].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 1 and args[0].__class__ is union_pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_from_union_pw_multi_aff(isl.isl_union_pw_multi_aff_copy(args[0].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    @staticmethod
-    def from_domain(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_from_domain(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def from_domain_and_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_from_domain_and_range(isl.isl_union_set_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def from_range(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_from_range(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_gist(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def gist_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_gist_domain(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def gist_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_gist_params(isl.isl_union_map_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def gist_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_gist_range(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def intersect(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_intersect(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain(*args):
-        if len(args) == 2 and args[1].__class__ is space:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_intersect_domain_space(isl.isl_union_map_copy(args[0].ptr), isl.isl_space_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is union_set:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_intersect_domain_union_set(isl.isl_union_map_copy(args[0].ptr), isl.isl_union_set_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def intersect_domain_factor_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_intersect_domain_factor_domain(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain_factor_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_intersect_domain_factor_range(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_intersect_params(isl.isl_union_map_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_range(*args):
-        if len(args) == 2 and args[1].__class__ is space:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_intersect_range_space(isl.isl_union_map_copy(args[0].ptr), isl.isl_space_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is union_set:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_intersect_range_union_set(isl.isl_union_map_copy(args[0].ptr), isl.isl_union_set_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def intersect_range_factor_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_intersect_range_factor_domain(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_range_factor_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_intersect_range_factor_range(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def is_bijective(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_is_bijective(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_disjoint(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_is_disjoint(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_empty(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_is_empty(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_injective(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_is_injective(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_single_valued(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_is_single_valued(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_strict_subset(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_is_strict_subset(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_subset(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_is_subset(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def isa_map(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_isa_map(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def lexmax(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_lexmax(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def lexmin(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_lexmin(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def map_list(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_get_map_list(arg0.ptr)
-        obj = map_list(ctx=ctx, ptr=res)
-        return obj
-    def get_map_list(arg0):
-        return arg0.map_list()
-    def polyhedral_hull(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_polyhedral_hull(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def preimage_domain(*args):
-        if len(args) == 2 and args[1].__class__ is multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_preimage_domain_multi_aff(isl.isl_union_map_copy(args[0].ptr), isl.isl_multi_aff_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_preimage_domain_multi_pw_aff(isl.isl_union_map_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_preimage_domain_pw_multi_aff(isl.isl_union_map_copy(args[0].ptr), isl.isl_pw_multi_aff_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is union_pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_preimage_domain_union_pw_multi_aff(isl.isl_union_map_copy(args[0].ptr), isl.isl_union_pw_multi_aff_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def preimage_range(*args):
-        if len(args) == 2 and args[1].__class__ is multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_preimage_range_multi_aff(isl.isl_union_map_copy(args[0].ptr), isl.isl_multi_aff_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_preimage_range_pw_multi_aff(isl.isl_union_map_copy(args[0].ptr), isl.isl_pw_multi_aff_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is union_pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_map_preimage_range_union_pw_multi_aff(isl.isl_union_map_copy(args[0].ptr), isl.isl_union_pw_multi_aff_copy(args[1].ptr))
-            obj = union_map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def product(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_product(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def project_out_all_params(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_project_out_all_params(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def range(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_range(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def range_factor_domain(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_range_factor_domain(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def range_factor_range(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_range_factor_range(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def range_map(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_range_map(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_range_product(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def range_reverse(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_range_reverse(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def reverse(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_reverse(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def space(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def subtract(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_subtract(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def subtract_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_subtract_domain(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def subtract_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_subtract_range(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def uncurry(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_uncurry(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def union(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_union(isl.isl_union_map_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def universe(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_universe(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def wrap(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_wrap(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def zip(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_map_zip(isl.isl_union_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_union_map_from_basic_map.restype = c_void_p
-isl.isl_union_map_from_basic_map.argtypes = [c_void_p]
-isl.isl_union_map_from_map.restype = c_void_p
-isl.isl_union_map_from_map.argtypes = [c_void_p]
-isl.isl_union_map_read_from_str.restype = c_void_p
-isl.isl_union_map_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_union_map_affine_hull.restype = c_void_p
-isl.isl_union_map_affine_hull.argtypes = [c_void_p]
-isl.isl_union_map_apply_domain.restype = c_void_p
-isl.isl_union_map_apply_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_apply_range.restype = c_void_p
-isl.isl_union_map_apply_range.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_as_map.restype = c_void_p
-isl.isl_union_map_as_map.argtypes = [c_void_p]
-isl.isl_union_map_as_multi_union_pw_aff.restype = c_void_p
-isl.isl_union_map_as_multi_union_pw_aff.argtypes = [c_void_p]
-isl.isl_union_map_as_union_pw_multi_aff.restype = c_void_p
-isl.isl_union_map_as_union_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_union_map_bind_range.restype = c_void_p
-isl.isl_union_map_bind_range.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_coalesce.restype = c_void_p
-isl.isl_union_map_coalesce.argtypes = [c_void_p]
-isl.isl_union_map_compute_divs.restype = c_void_p
-isl.isl_union_map_compute_divs.argtypes = [c_void_p]
-isl.isl_union_map_curry.restype = c_void_p
-isl.isl_union_map_curry.argtypes = [c_void_p]
-isl.isl_union_map_deltas.restype = c_void_p
-isl.isl_union_map_deltas.argtypes = [c_void_p]
-isl.isl_union_map_detect_equalities.restype = c_void_p
-isl.isl_union_map_detect_equalities.argtypes = [c_void_p]
-isl.isl_union_map_domain.restype = c_void_p
-isl.isl_union_map_domain.argtypes = [c_void_p]
-isl.isl_union_map_domain_factor_domain.restype = c_void_p
-isl.isl_union_map_domain_factor_domain.argtypes = [c_void_p]
-isl.isl_union_map_domain_factor_range.restype = c_void_p
-isl.isl_union_map_domain_factor_range.argtypes = [c_void_p]
-isl.isl_union_map_domain_map.restype = c_void_p
-isl.isl_union_map_domain_map.argtypes = [c_void_p]
-isl.isl_union_map_domain_map_union_pw_multi_aff.restype = c_void_p
-isl.isl_union_map_domain_map_union_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_union_map_domain_product.restype = c_void_p
-isl.isl_union_map_domain_product.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_empty_ctx.restype = c_void_p
-isl.isl_union_map_empty_ctx.argtypes = [Context]
-isl.isl_union_map_eq_at_multi_union_pw_aff.restype = c_void_p
-isl.isl_union_map_eq_at_multi_union_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_every_map.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_union_map_extract_map.restype = c_void_p
-isl.isl_union_map_extract_map.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_factor_domain.restype = c_void_p
-isl.isl_union_map_factor_domain.argtypes = [c_void_p]
-isl.isl_union_map_factor_range.restype = c_void_p
-isl.isl_union_map_factor_range.argtypes = [c_void_p]
-isl.isl_union_map_fixed_power_val.restype = c_void_p
-isl.isl_union_map_fixed_power_val.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_foreach_map.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_union_map_from_multi_union_pw_aff.restype = c_void_p
-isl.isl_union_map_from_multi_union_pw_aff.argtypes = [c_void_p]
-isl.isl_union_map_from_union_pw_multi_aff.restype = c_void_p
-isl.isl_union_map_from_union_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_union_map_from_domain.restype = c_void_p
-isl.isl_union_map_from_domain.argtypes = [c_void_p]
-isl.isl_union_map_from_domain_and_range.restype = c_void_p
-isl.isl_union_map_from_domain_and_range.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_from_range.restype = c_void_p
-isl.isl_union_map_from_range.argtypes = [c_void_p]
-isl.isl_union_map_gist.restype = c_void_p
-isl.isl_union_map_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_gist_domain.restype = c_void_p
-isl.isl_union_map_gist_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_gist_params.restype = c_void_p
-isl.isl_union_map_gist_params.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_gist_range.restype = c_void_p
-isl.isl_union_map_gist_range.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_intersect.restype = c_void_p
-isl.isl_union_map_intersect.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_intersect_domain_space.restype = c_void_p
-isl.isl_union_map_intersect_domain_space.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_intersect_domain_union_set.restype = c_void_p
-isl.isl_union_map_intersect_domain_union_set.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_intersect_domain_factor_domain.restype = c_void_p
-isl.isl_union_map_intersect_domain_factor_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_intersect_domain_factor_range.restype = c_void_p
-isl.isl_union_map_intersect_domain_factor_range.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_intersect_params.restype = c_void_p
-isl.isl_union_map_intersect_params.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_intersect_range_space.restype = c_void_p
-isl.isl_union_map_intersect_range_space.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_intersect_range_union_set.restype = c_void_p
-isl.isl_union_map_intersect_range_union_set.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_intersect_range_factor_domain.restype = c_void_p
-isl.isl_union_map_intersect_range_factor_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_intersect_range_factor_range.restype = c_void_p
-isl.isl_union_map_intersect_range_factor_range.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_is_bijective.argtypes = [c_void_p]
-isl.isl_union_map_is_disjoint.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_is_empty.argtypes = [c_void_p]
-isl.isl_union_map_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_is_injective.argtypes = [c_void_p]
-isl.isl_union_map_is_single_valued.argtypes = [c_void_p]
-isl.isl_union_map_is_strict_subset.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_is_subset.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_isa_map.argtypes = [c_void_p]
-isl.isl_union_map_lexmax.restype = c_void_p
-isl.isl_union_map_lexmax.argtypes = [c_void_p]
-isl.isl_union_map_lexmin.restype = c_void_p
-isl.isl_union_map_lexmin.argtypes = [c_void_p]
-isl.isl_union_map_get_map_list.restype = c_void_p
-isl.isl_union_map_get_map_list.argtypes = [c_void_p]
-isl.isl_union_map_polyhedral_hull.restype = c_void_p
-isl.isl_union_map_polyhedral_hull.argtypes = [c_void_p]
-isl.isl_union_map_preimage_domain_multi_aff.restype = c_void_p
-isl.isl_union_map_preimage_domain_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_preimage_domain_multi_pw_aff.restype = c_void_p
-isl.isl_union_map_preimage_domain_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_preimage_domain_pw_multi_aff.restype = c_void_p
-isl.isl_union_map_preimage_domain_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_preimage_domain_union_pw_multi_aff.restype = c_void_p
-isl.isl_union_map_preimage_domain_union_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_preimage_range_multi_aff.restype = c_void_p
-isl.isl_union_map_preimage_range_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_preimage_range_pw_multi_aff.restype = c_void_p
-isl.isl_union_map_preimage_range_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_preimage_range_union_pw_multi_aff.restype = c_void_p
-isl.isl_union_map_preimage_range_union_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_product.restype = c_void_p
-isl.isl_union_map_product.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_project_out_all_params.restype = c_void_p
-isl.isl_union_map_project_out_all_params.argtypes = [c_void_p]
-isl.isl_union_map_range.restype = c_void_p
-isl.isl_union_map_range.argtypes = [c_void_p]
-isl.isl_union_map_range_factor_domain.restype = c_void_p
-isl.isl_union_map_range_factor_domain.argtypes = [c_void_p]
-isl.isl_union_map_range_factor_range.restype = c_void_p
-isl.isl_union_map_range_factor_range.argtypes = [c_void_p]
-isl.isl_union_map_range_map.restype = c_void_p
-isl.isl_union_map_range_map.argtypes = [c_void_p]
-isl.isl_union_map_range_product.restype = c_void_p
-isl.isl_union_map_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_range_reverse.restype = c_void_p
-isl.isl_union_map_range_reverse.argtypes = [c_void_p]
-isl.isl_union_map_reverse.restype = c_void_p
-isl.isl_union_map_reverse.argtypes = [c_void_p]
-isl.isl_union_map_get_space.restype = c_void_p
-isl.isl_union_map_get_space.argtypes = [c_void_p]
-isl.isl_union_map_subtract.restype = c_void_p
-isl.isl_union_map_subtract.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_subtract_domain.restype = c_void_p
-isl.isl_union_map_subtract_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_subtract_range.restype = c_void_p
-isl.isl_union_map_subtract_range.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_uncurry.restype = c_void_p
-isl.isl_union_map_uncurry.argtypes = [c_void_p]
-isl.isl_union_map_union.restype = c_void_p
-isl.isl_union_map_union.argtypes = [c_void_p, c_void_p]
-isl.isl_union_map_universe.restype = c_void_p
-isl.isl_union_map_universe.argtypes = [c_void_p]
-isl.isl_union_map_wrap.restype = c_void_p
-isl.isl_union_map_wrap.argtypes = [c_void_p]
-isl.isl_union_map_zip.restype = c_void_p
-isl.isl_union_map_zip.argtypes = [c_void_p]
-isl.isl_union_map_copy.restype = c_void_p
-isl.isl_union_map_copy.argtypes = [c_void_p]
-isl.isl_union_map_free.restype = c_void_p
-isl.isl_union_map_free.argtypes = [c_void_p]
-isl.isl_union_map_to_str.restype = POINTER(c_char)
-isl.isl_union_map_to_str.argtypes = [c_void_p]
-
-class map(union_map):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is basic_map:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_map_from_basic_map(isl.isl_basic_map_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_map_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_map_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ptr = isl.isl_map_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.map("""%s""")' % s
-        else:
-            return 'isl.map("%s")' % s
-    def affine_hull(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_affine_hull(isl.isl_map_copy(arg0.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def apply_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).apply_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_apply_domain(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def apply_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).apply_range(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_apply_range(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def as_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_as_pw_multi_aff(isl.isl_map_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def bind_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return union_map(arg0).bind_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_bind_domain(isl.isl_map_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def bind_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return union_map(arg0).bind_range(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_bind_range(isl.isl_map_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def coalesce(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_coalesce(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def complement(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_complement(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def curry(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_curry(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def deltas(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_deltas(isl.isl_map_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def detect_equalities(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_detect_equalities(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_domain(isl.isl_map_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def domain_factor_domain(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_domain_factor_domain(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def domain_factor_range(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_domain_factor_range(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def domain_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).domain_product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_domain_product(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def domain_tuple_dim(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_domain_tuple_dim(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def domain_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_get_domain_tuple_id(arg0.ptr)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_domain_tuple_id(arg0):
-        return arg0.domain_tuple_id()
-    @staticmethod
-    def empty(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_empty(isl.isl_space_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def eq_at(*args):
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_eq_at_multi_pw_aff(isl.isl_map_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def factor_domain(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_factor_domain(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def factor_range(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_factor_range(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def flatten(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_flatten(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def flatten_domain(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_flatten_domain(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def flatten_range(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_flatten_range(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def foreach_basic_map(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = basic_map(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_map_foreach_basic_map(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).gist(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_gist(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def gist_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_map(arg0).gist_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_gist_domain(isl.isl_map_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def has_domain_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_has_domain_tuple_id(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def has_range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_has_range_tuple_id(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def intersect(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).intersect(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_intersect(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_map(arg0).intersect_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_intersect_domain(isl.isl_map_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain_factor_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).intersect_domain_factor_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_intersect_domain_factor_domain(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain_factor_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).intersect_domain_factor_range(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_intersect_domain_factor_range(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_map(arg0).intersect_params(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_intersect_params(isl.isl_map_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_map(arg0).intersect_range(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_intersect_range(isl.isl_map_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_range_factor_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).intersect_range_factor_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_intersect_range_factor_domain(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_range_factor_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).intersect_range_factor_range(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_intersect_range_factor_range(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def is_bijective(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_is_bijective(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_disjoint(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).is_disjoint(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_is_disjoint(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_empty(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_is_empty(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).is_equal(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_injective(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_is_injective(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_single_valued(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_is_single_valued(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_strict_subset(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).is_strict_subset(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_is_strict_subset(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_subset(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).is_subset(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_is_subset(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def lex_ge_at(*args):
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_lex_ge_at_multi_pw_aff(isl.isl_map_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def lex_gt_at(*args):
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_lex_gt_at_multi_pw_aff(isl.isl_map_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def lex_le_at(*args):
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_lex_le_at_multi_pw_aff(isl.isl_map_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def lex_lt_at(*args):
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_lex_lt_at_multi_pw_aff(isl.isl_map_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def lexmax(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_lexmax(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def lexmax_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_lexmax_pw_multi_aff(isl.isl_map_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def lexmin(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_lexmin(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def lexmin_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_lexmin_pw_multi_aff(isl.isl_map_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def lower_bound(*args):
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_lower_bound_multi_pw_aff(isl.isl_map_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def max_multi_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_max_multi_pw_aff(isl.isl_map_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def min_multi_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_min_multi_pw_aff(isl.isl_map_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def n_basic_map(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_n_basic_map(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def polyhedral_hull(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_polyhedral_hull(isl.isl_map_copy(arg0.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def preimage_domain(*args):
-        if len(args) == 2 and args[1].__class__ is multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_preimage_domain_multi_aff(isl.isl_map_copy(args[0].ptr), isl.isl_multi_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_preimage_domain_multi_pw_aff(isl.isl_map_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_preimage_domain_pw_multi_aff(isl.isl_map_copy(args[0].ptr), isl.isl_pw_multi_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def preimage_range(*args):
-        if len(args) == 2 and args[1].__class__ is multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_preimage_range_multi_aff(isl.isl_map_copy(args[0].ptr), isl.isl_multi_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_preimage_range_pw_multi_aff(isl.isl_map_copy(args[0].ptr), isl.isl_pw_multi_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def product(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_product(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def project_out_all_params(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_project_out_all_params(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def range(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_range(isl.isl_map_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def range_factor_domain(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_range_factor_domain(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def range_factor_range(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_range_factor_range(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def range_lattice_tile(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_get_range_lattice_tile(arg0.ptr)
-        obj = fixed_box(ctx=ctx, ptr=res)
-        return obj
-    def get_range_lattice_tile(arg0):
-        return arg0.range_lattice_tile()
-    def range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).range_product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_range_product(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def range_reverse(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_range_reverse(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def range_simple_fixed_box_hull(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_get_range_simple_fixed_box_hull(arg0.ptr)
-        obj = fixed_box(ctx=ctx, ptr=res)
-        return obj
-    def get_range_simple_fixed_box_hull(arg0):
-        return arg0.range_simple_fixed_box_hull()
-    def range_tuple_dim(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_range_tuple_dim(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_get_range_tuple_id(arg0.ptr)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_range_tuple_id(arg0):
-        return arg0.range_tuple_id()
-    def reverse(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_reverse(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def sample(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_sample(isl.isl_map_copy(arg0.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def set_domain_tuple(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_map_set_domain_tuple_id(isl.isl_map_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def set_range_tuple(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_map_set_range_tuple_id(isl.isl_map_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def space(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def subtract(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).subtract(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_subtract(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def to_list(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_to_list(isl.isl_map_copy(arg0.ptr))
-        obj = map_list(ctx=ctx, ptr=res)
-        return obj
-    def to_union_map(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_to_union_map(isl.isl_map_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def uncurry(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_uncurry(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def union(arg0, arg1):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_map(arg0).union(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_map_union(isl.isl_map_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def universe(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_universe(isl.isl_space_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def unshifted_simple_hull(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_unshifted_simple_hull(isl.isl_map_copy(arg0.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def upper_bound(*args):
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_map_upper_bound_multi_pw_aff(isl.isl_map_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = map(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def wrap(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_wrap(isl.isl_map_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def zip(arg0):
-        try:
-            if not arg0.__class__ is map:
-                arg0 = map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_zip(isl.isl_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_map_from_basic_map.restype = c_void_p
-isl.isl_map_from_basic_map.argtypes = [c_void_p]
-isl.isl_map_read_from_str.restype = c_void_p
-isl.isl_map_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_map_affine_hull.restype = c_void_p
-isl.isl_map_affine_hull.argtypes = [c_void_p]
-isl.isl_map_apply_domain.restype = c_void_p
-isl.isl_map_apply_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_map_apply_range.restype = c_void_p
-isl.isl_map_apply_range.argtypes = [c_void_p, c_void_p]
-isl.isl_map_as_pw_multi_aff.restype = c_void_p
-isl.isl_map_as_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_map_bind_domain.restype = c_void_p
-isl.isl_map_bind_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_map_bind_range.restype = c_void_p
-isl.isl_map_bind_range.argtypes = [c_void_p, c_void_p]
-isl.isl_map_coalesce.restype = c_void_p
-isl.isl_map_coalesce.argtypes = [c_void_p]
-isl.isl_map_complement.restype = c_void_p
-isl.isl_map_complement.argtypes = [c_void_p]
-isl.isl_map_curry.restype = c_void_p
-isl.isl_map_curry.argtypes = [c_void_p]
-isl.isl_map_deltas.restype = c_void_p
-isl.isl_map_deltas.argtypes = [c_void_p]
-isl.isl_map_detect_equalities.restype = c_void_p
-isl.isl_map_detect_equalities.argtypes = [c_void_p]
-isl.isl_map_domain.restype = c_void_p
-isl.isl_map_domain.argtypes = [c_void_p]
-isl.isl_map_domain_factor_domain.restype = c_void_p
-isl.isl_map_domain_factor_domain.argtypes = [c_void_p]
-isl.isl_map_domain_factor_range.restype = c_void_p
-isl.isl_map_domain_factor_range.argtypes = [c_void_p]
-isl.isl_map_domain_product.restype = c_void_p
-isl.isl_map_domain_product.argtypes = [c_void_p, c_void_p]
-isl.isl_map_domain_tuple_dim.argtypes = [c_void_p]
-isl.isl_map_get_domain_tuple_id.restype = c_void_p
-isl.isl_map_get_domain_tuple_id.argtypes = [c_void_p]
-isl.isl_map_empty.restype = c_void_p
-isl.isl_map_empty.argtypes = [c_void_p]
-isl.isl_map_eq_at_multi_pw_aff.restype = c_void_p
-isl.isl_map_eq_at_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_factor_domain.restype = c_void_p
-isl.isl_map_factor_domain.argtypes = [c_void_p]
-isl.isl_map_factor_range.restype = c_void_p
-isl.isl_map_factor_range.argtypes = [c_void_p]
-isl.isl_map_flatten.restype = c_void_p
-isl.isl_map_flatten.argtypes = [c_void_p]
-isl.isl_map_flatten_domain.restype = c_void_p
-isl.isl_map_flatten_domain.argtypes = [c_void_p]
-isl.isl_map_flatten_range.restype = c_void_p
-isl.isl_map_flatten_range.argtypes = [c_void_p]
-isl.isl_map_foreach_basic_map.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_map_gist.restype = c_void_p
-isl.isl_map_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_map_gist_domain.restype = c_void_p
-isl.isl_map_gist_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_map_has_domain_tuple_id.argtypes = [c_void_p]
-isl.isl_map_has_range_tuple_id.argtypes = [c_void_p]
-isl.isl_map_intersect.restype = c_void_p
-isl.isl_map_intersect.argtypes = [c_void_p, c_void_p]
-isl.isl_map_intersect_domain.restype = c_void_p
-isl.isl_map_intersect_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_map_intersect_domain_factor_domain.restype = c_void_p
-isl.isl_map_intersect_domain_factor_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_map_intersect_domain_factor_range.restype = c_void_p
-isl.isl_map_intersect_domain_factor_range.argtypes = [c_void_p, c_void_p]
-isl.isl_map_intersect_params.restype = c_void_p
-isl.isl_map_intersect_params.argtypes = [c_void_p, c_void_p]
-isl.isl_map_intersect_range.restype = c_void_p
-isl.isl_map_intersect_range.argtypes = [c_void_p, c_void_p]
-isl.isl_map_intersect_range_factor_domain.restype = c_void_p
-isl.isl_map_intersect_range_factor_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_map_intersect_range_factor_range.restype = c_void_p
-isl.isl_map_intersect_range_factor_range.argtypes = [c_void_p, c_void_p]
-isl.isl_map_is_bijective.argtypes = [c_void_p]
-isl.isl_map_is_disjoint.argtypes = [c_void_p, c_void_p]
-isl.isl_map_is_empty.argtypes = [c_void_p]
-isl.isl_map_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_map_is_injective.argtypes = [c_void_p]
-isl.isl_map_is_single_valued.argtypes = [c_void_p]
-isl.isl_map_is_strict_subset.argtypes = [c_void_p, c_void_p]
-isl.isl_map_is_subset.argtypes = [c_void_p, c_void_p]
-isl.isl_map_lex_ge_at_multi_pw_aff.restype = c_void_p
-isl.isl_map_lex_ge_at_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_lex_gt_at_multi_pw_aff.restype = c_void_p
-isl.isl_map_lex_gt_at_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_lex_le_at_multi_pw_aff.restype = c_void_p
-isl.isl_map_lex_le_at_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_lex_lt_at_multi_pw_aff.restype = c_void_p
-isl.isl_map_lex_lt_at_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_lexmax.restype = c_void_p
-isl.isl_map_lexmax.argtypes = [c_void_p]
-isl.isl_map_lexmax_pw_multi_aff.restype = c_void_p
-isl.isl_map_lexmax_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_map_lexmin.restype = c_void_p
-isl.isl_map_lexmin.argtypes = [c_void_p]
-isl.isl_map_lexmin_pw_multi_aff.restype = c_void_p
-isl.isl_map_lexmin_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_map_lower_bound_multi_pw_aff.restype = c_void_p
-isl.isl_map_lower_bound_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_max_multi_pw_aff.restype = c_void_p
-isl.isl_map_max_multi_pw_aff.argtypes = [c_void_p]
-isl.isl_map_min_multi_pw_aff.restype = c_void_p
-isl.isl_map_min_multi_pw_aff.argtypes = [c_void_p]
-isl.isl_map_n_basic_map.argtypes = [c_void_p]
-isl.isl_map_polyhedral_hull.restype = c_void_p
-isl.isl_map_polyhedral_hull.argtypes = [c_void_p]
-isl.isl_map_preimage_domain_multi_aff.restype = c_void_p
-isl.isl_map_preimage_domain_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_preimage_domain_multi_pw_aff.restype = c_void_p
-isl.isl_map_preimage_domain_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_preimage_domain_pw_multi_aff.restype = c_void_p
-isl.isl_map_preimage_domain_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_preimage_range_multi_aff.restype = c_void_p
-isl.isl_map_preimage_range_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_preimage_range_pw_multi_aff.restype = c_void_p
-isl.isl_map_preimage_range_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_product.restype = c_void_p
-isl.isl_map_product.argtypes = [c_void_p, c_void_p]
-isl.isl_map_project_out_all_params.restype = c_void_p
-isl.isl_map_project_out_all_params.argtypes = [c_void_p]
-isl.isl_map_range.restype = c_void_p
-isl.isl_map_range.argtypes = [c_void_p]
-isl.isl_map_range_factor_domain.restype = c_void_p
-isl.isl_map_range_factor_domain.argtypes = [c_void_p]
-isl.isl_map_range_factor_range.restype = c_void_p
-isl.isl_map_range_factor_range.argtypes = [c_void_p]
-isl.isl_map_get_range_lattice_tile.restype = c_void_p
-isl.isl_map_get_range_lattice_tile.argtypes = [c_void_p]
-isl.isl_map_range_product.restype = c_void_p
-isl.isl_map_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_map_range_reverse.restype = c_void_p
-isl.isl_map_range_reverse.argtypes = [c_void_p]
-isl.isl_map_get_range_simple_fixed_box_hull.restype = c_void_p
-isl.isl_map_get_range_simple_fixed_box_hull.argtypes = [c_void_p]
-isl.isl_map_range_tuple_dim.argtypes = [c_void_p]
-isl.isl_map_get_range_tuple_id.restype = c_void_p
-isl.isl_map_get_range_tuple_id.argtypes = [c_void_p]
-isl.isl_map_reverse.restype = c_void_p
-isl.isl_map_reverse.argtypes = [c_void_p]
-isl.isl_map_sample.restype = c_void_p
-isl.isl_map_sample.argtypes = [c_void_p]
-isl.isl_map_set_domain_tuple_id.restype = c_void_p
-isl.isl_map_set_domain_tuple_id.argtypes = [c_void_p, c_void_p]
-isl.isl_map_set_range_tuple_id.restype = c_void_p
-isl.isl_map_set_range_tuple_id.argtypes = [c_void_p, c_void_p]
-isl.isl_map_get_space.restype = c_void_p
-isl.isl_map_get_space.argtypes = [c_void_p]
-isl.isl_map_subtract.restype = c_void_p
-isl.isl_map_subtract.argtypes = [c_void_p, c_void_p]
-isl.isl_map_to_list.restype = c_void_p
-isl.isl_map_to_list.argtypes = [c_void_p]
-isl.isl_map_to_union_map.restype = c_void_p
-isl.isl_map_to_union_map.argtypes = [c_void_p]
-isl.isl_map_uncurry.restype = c_void_p
-isl.isl_map_uncurry.argtypes = [c_void_p]
-isl.isl_map_union.restype = c_void_p
-isl.isl_map_union.argtypes = [c_void_p, c_void_p]
-isl.isl_map_universe.restype = c_void_p
-isl.isl_map_universe.argtypes = [c_void_p]
-isl.isl_map_unshifted_simple_hull.restype = c_void_p
-isl.isl_map_unshifted_simple_hull.argtypes = [c_void_p]
-isl.isl_map_upper_bound_multi_pw_aff.restype = c_void_p
-isl.isl_map_upper_bound_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_map_wrap.restype = c_void_p
-isl.isl_map_wrap.argtypes = [c_void_p]
-isl.isl_map_zip.restype = c_void_p
-isl.isl_map_zip.argtypes = [c_void_p]
-isl.isl_map_copy.restype = c_void_p
-isl.isl_map_copy.argtypes = [c_void_p]
-isl.isl_map_free.restype = c_void_p
-isl.isl_map_free.argtypes = [c_void_p]
-isl.isl_map_to_str.restype = POINTER(c_char)
-isl.isl_map_to_str.argtypes = [c_void_p]
-
-class basic_map(map):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_basic_map_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_basic_map_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ptr = isl.isl_basic_map_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.basic_map("""%s""")' % s
-        else:
-            return 'isl.basic_map("%s")' % s
-    def affine_hull(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_affine_hull(isl.isl_basic_map_copy(arg0.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def apply_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_map:
-                arg1 = basic_map(arg1)
-        except:
-            return map(arg0).apply_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_apply_domain(isl.isl_basic_map_copy(arg0.ptr), isl.isl_basic_map_copy(arg1.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def apply_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_map:
-                arg1 = basic_map(arg1)
-        except:
-            return map(arg0).apply_range(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_apply_range(isl.isl_basic_map_copy(arg0.ptr), isl.isl_basic_map_copy(arg1.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def deltas(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_deltas(isl.isl_basic_map_copy(arg0.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def detect_equalities(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_detect_equalities(isl.isl_basic_map_copy(arg0.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def flatten(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_flatten(isl.isl_basic_map_copy(arg0.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def flatten_domain(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_flatten_domain(isl.isl_basic_map_copy(arg0.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def flatten_range(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_flatten_range(isl.isl_basic_map_copy(arg0.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_map:
-                arg1 = basic_map(arg1)
-        except:
-            return map(arg0).gist(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_gist(isl.isl_basic_map_copy(arg0.ptr), isl.isl_basic_map_copy(arg1.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def intersect(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_map:
-                arg1 = basic_map(arg1)
-        except:
-            return map(arg0).intersect(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_intersect(isl.isl_basic_map_copy(arg0.ptr), isl.isl_basic_map_copy(arg1.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_set:
-                arg1 = basic_set(arg1)
-        except:
-            return map(arg0).intersect_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_intersect_domain(isl.isl_basic_map_copy(arg0.ptr), isl.isl_basic_set_copy(arg1.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def intersect_range(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_set:
-                arg1 = basic_set(arg1)
-        except:
-            return map(arg0).intersect_range(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_intersect_range(isl.isl_basic_map_copy(arg0.ptr), isl.isl_basic_set_copy(arg1.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def is_empty(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_is_empty(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_map:
-                arg1 = basic_map(arg1)
-        except:
-            return map(arg0).is_equal(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_subset(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_map:
-                arg1 = basic_map(arg1)
-        except:
-            return map(arg0).is_subset(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_is_subset(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def lexmax(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_lexmax(isl.isl_basic_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def lexmin(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_lexmin(isl.isl_basic_map_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def reverse(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_reverse(isl.isl_basic_map_copy(arg0.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def sample(arg0):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_sample(isl.isl_basic_map_copy(arg0.ptr))
-        obj = basic_map(ctx=ctx, ptr=res)
-        return obj
-    def union(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_map:
-                arg0 = basic_map(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_map:
-                arg1 = basic_map(arg1)
-        except:
-            return map(arg0).union(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_map_union(isl.isl_basic_map_copy(arg0.ptr), isl.isl_basic_map_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_basic_map_read_from_str.restype = c_void_p
-isl.isl_basic_map_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_basic_map_affine_hull.restype = c_void_p
-isl.isl_basic_map_affine_hull.argtypes = [c_void_p]
-isl.isl_basic_map_apply_domain.restype = c_void_p
-isl.isl_basic_map_apply_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_map_apply_range.restype = c_void_p
-isl.isl_basic_map_apply_range.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_map_deltas.restype = c_void_p
-isl.isl_basic_map_deltas.argtypes = [c_void_p]
-isl.isl_basic_map_detect_equalities.restype = c_void_p
-isl.isl_basic_map_detect_equalities.argtypes = [c_void_p]
-isl.isl_basic_map_flatten.restype = c_void_p
-isl.isl_basic_map_flatten.argtypes = [c_void_p]
-isl.isl_basic_map_flatten_domain.restype = c_void_p
-isl.isl_basic_map_flatten_domain.argtypes = [c_void_p]
-isl.isl_basic_map_flatten_range.restype = c_void_p
-isl.isl_basic_map_flatten_range.argtypes = [c_void_p]
-isl.isl_basic_map_gist.restype = c_void_p
-isl.isl_basic_map_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_map_intersect.restype = c_void_p
-isl.isl_basic_map_intersect.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_map_intersect_domain.restype = c_void_p
-isl.isl_basic_map_intersect_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_map_intersect_range.restype = c_void_p
-isl.isl_basic_map_intersect_range.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_map_is_empty.argtypes = [c_void_p]
-isl.isl_basic_map_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_map_is_subset.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_map_lexmax.restype = c_void_p
-isl.isl_basic_map_lexmax.argtypes = [c_void_p]
-isl.isl_basic_map_lexmin.restype = c_void_p
-isl.isl_basic_map_lexmin.argtypes = [c_void_p]
-isl.isl_basic_map_reverse.restype = c_void_p
-isl.isl_basic_map_reverse.argtypes = [c_void_p]
-isl.isl_basic_map_sample.restype = c_void_p
-isl.isl_basic_map_sample.argtypes = [c_void_p]
-isl.isl_basic_map_union.restype = c_void_p
-isl.isl_basic_map_union.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_map_copy.restype = c_void_p
-isl.isl_basic_map_copy.argtypes = [c_void_p]
-isl.isl_basic_map_free.restype = c_void_p
-isl.isl_basic_map_free.argtypes = [c_void_p]
-isl.isl_basic_map_to_str.restype = POINTER(c_char)
-isl.isl_basic_map_to_str.argtypes = [c_void_p]
-
-class union_set(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is basic_set:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_set_from_basic_set(isl.isl_basic_set_copy(args[0].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is point:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_set_from_point(isl.isl_point_copy(args[0].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is set:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_set_from_set(isl.isl_set_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_set_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_union_set_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ptr = isl.isl_union_set_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.union_set("""%s""")' % s
-        else:
-            return 'isl.union_set("%s")' % s
-    def affine_hull(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_affine_hull(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def apply(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_apply(isl.isl_union_set_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def as_set(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_as_set(isl.isl_union_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def coalesce(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_coalesce(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def compute_divs(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_compute_divs(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def detect_equalities(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_detect_equalities(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def empty(*args):
-        if len(args) == 0:
-            ctx = Context.getDefaultInstance()
-            res = isl.isl_union_set_empty_ctx(ctx)
-            obj = union_set(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def every_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = set(ctx=arg0.ctx, ptr=isl.isl_set_copy(cb_arg0))
-            try:
-                res = arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 1 if res else 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_union_set_every_set(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-        return bool(res)
-    def extract_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is space:
-                arg1 = space(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_extract_set(arg0.ptr, isl.isl_space_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def foreach_point(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = point(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_union_set_foreach_point(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def foreach_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = set(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_union_set_foreach_set(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_gist(isl.isl_union_set_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def gist_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_gist_params(isl.isl_union_set_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def identity(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_identity(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def intersect(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_intersect(isl.isl_union_set_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def intersect_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_intersect_params(isl.isl_union_set_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def is_disjoint(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_is_disjoint(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_empty(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_is_empty(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_strict_subset(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_is_strict_subset(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_subset(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_is_subset(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def isa_set(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_isa_set(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def lexmax(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_lexmax(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def lexmin(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_lexmin(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def polyhedral_hull(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_polyhedral_hull(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def preimage(*args):
-        if len(args) == 2 and args[1].__class__ is multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_set_preimage_multi_aff(isl.isl_union_set_copy(args[0].ptr), isl.isl_multi_aff_copy(args[1].ptr))
-            obj = union_set(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_set_preimage_pw_multi_aff(isl.isl_union_set_copy(args[0].ptr), isl.isl_pw_multi_aff_copy(args[1].ptr))
-            obj = union_set(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is union_pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_union_set_preimage_union_pw_multi_aff(isl.isl_union_set_copy(args[0].ptr), isl.isl_union_pw_multi_aff_copy(args[1].ptr))
-            obj = union_set(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def sample_point(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_sample_point(isl.isl_union_set_copy(arg0.ptr))
-        obj = point(ctx=ctx, ptr=res)
-        return obj
-    def set_list(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_get_set_list(arg0.ptr)
-        obj = set_list(ctx=ctx, ptr=res)
-        return obj
-    def get_set_list(arg0):
-        return arg0.set_list()
-    def space(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def subtract(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_subtract(isl.isl_union_set_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def to_list(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_to_list(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_set_list(ctx=ctx, ptr=res)
-        return obj
-    def union(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_union(isl.isl_union_set_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def universe(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_universe(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def unwrap(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_unwrap(isl.isl_union_set_copy(arg0.ptr))
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_union_set_from_basic_set.restype = c_void_p
-isl.isl_union_set_from_basic_set.argtypes = [c_void_p]
-isl.isl_union_set_from_point.restype = c_void_p
-isl.isl_union_set_from_point.argtypes = [c_void_p]
-isl.isl_union_set_from_set.restype = c_void_p
-isl.isl_union_set_from_set.argtypes = [c_void_p]
-isl.isl_union_set_read_from_str.restype = c_void_p
-isl.isl_union_set_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_union_set_affine_hull.restype = c_void_p
-isl.isl_union_set_affine_hull.argtypes = [c_void_p]
-isl.isl_union_set_apply.restype = c_void_p
-isl.isl_union_set_apply.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_as_set.restype = c_void_p
-isl.isl_union_set_as_set.argtypes = [c_void_p]
-isl.isl_union_set_coalesce.restype = c_void_p
-isl.isl_union_set_coalesce.argtypes = [c_void_p]
-isl.isl_union_set_compute_divs.restype = c_void_p
-isl.isl_union_set_compute_divs.argtypes = [c_void_p]
-isl.isl_union_set_detect_equalities.restype = c_void_p
-isl.isl_union_set_detect_equalities.argtypes = [c_void_p]
-isl.isl_union_set_empty_ctx.restype = c_void_p
-isl.isl_union_set_empty_ctx.argtypes = [Context]
-isl.isl_union_set_every_set.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_union_set_extract_set.restype = c_void_p
-isl.isl_union_set_extract_set.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_foreach_point.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_union_set_foreach_set.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_union_set_gist.restype = c_void_p
-isl.isl_union_set_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_gist_params.restype = c_void_p
-isl.isl_union_set_gist_params.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_identity.restype = c_void_p
-isl.isl_union_set_identity.argtypes = [c_void_p]
-isl.isl_union_set_intersect.restype = c_void_p
-isl.isl_union_set_intersect.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_intersect_params.restype = c_void_p
-isl.isl_union_set_intersect_params.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_is_disjoint.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_is_empty.argtypes = [c_void_p]
-isl.isl_union_set_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_is_strict_subset.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_is_subset.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_isa_set.argtypes = [c_void_p]
-isl.isl_union_set_lexmax.restype = c_void_p
-isl.isl_union_set_lexmax.argtypes = [c_void_p]
-isl.isl_union_set_lexmin.restype = c_void_p
-isl.isl_union_set_lexmin.argtypes = [c_void_p]
-isl.isl_union_set_polyhedral_hull.restype = c_void_p
-isl.isl_union_set_polyhedral_hull.argtypes = [c_void_p]
-isl.isl_union_set_preimage_multi_aff.restype = c_void_p
-isl.isl_union_set_preimage_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_preimage_pw_multi_aff.restype = c_void_p
-isl.isl_union_set_preimage_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_preimage_union_pw_multi_aff.restype = c_void_p
-isl.isl_union_set_preimage_union_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_sample_point.restype = c_void_p
-isl.isl_union_set_sample_point.argtypes = [c_void_p]
-isl.isl_union_set_get_set_list.restype = c_void_p
-isl.isl_union_set_get_set_list.argtypes = [c_void_p]
-isl.isl_union_set_get_space.restype = c_void_p
-isl.isl_union_set_get_space.argtypes = [c_void_p]
-isl.isl_union_set_subtract.restype = c_void_p
-isl.isl_union_set_subtract.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_to_list.restype = c_void_p
-isl.isl_union_set_to_list.argtypes = [c_void_p]
-isl.isl_union_set_union.restype = c_void_p
-isl.isl_union_set_union.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_universe.restype = c_void_p
-isl.isl_union_set_universe.argtypes = [c_void_p]
-isl.isl_union_set_unwrap.restype = c_void_p
-isl.isl_union_set_unwrap.argtypes = [c_void_p]
-isl.isl_union_set_copy.restype = c_void_p
-isl.isl_union_set_copy.argtypes = [c_void_p]
-isl.isl_union_set_free.restype = c_void_p
-isl.isl_union_set_free.argtypes = [c_void_p]
-isl.isl_union_set_to_str.restype = POINTER(c_char)
-isl.isl_union_set_to_str.argtypes = [c_void_p]
-
-class set(union_set):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is basic_set:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_set_from_basic_set(isl.isl_basic_set_copy(args[0].ptr))
-            return
-        if len(args) == 1 and args[0].__class__ is point:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_set_from_point(isl.isl_point_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_set_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_set_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ptr = isl.isl_set_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.set("""%s""")' % s
-        else:
-            return 'isl.set("%s")' % s
-    def affine_hull(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_affine_hull(isl.isl_set_copy(arg0.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def apply(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            return union_set(arg0).apply(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_apply(isl.isl_set_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def as_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_as_pw_multi_aff(isl.isl_set_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def bind(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return union_set(arg0).bind(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_bind(isl.isl_set_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def coalesce(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_coalesce(isl.isl_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def complement(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_complement(isl.isl_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def detect_equalities(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_detect_equalities(isl.isl_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def dim_max_val(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_dim_max_val(isl.isl_set_copy(arg0.ptr), arg1)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def dim_min_val(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_dim_min_val(isl.isl_set_copy(arg0.ptr), arg1)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def empty(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_empty(isl.isl_space_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def flatten(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_flatten(isl.isl_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def foreach_basic_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = basic_set(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_set_foreach_basic_set(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def foreach_point(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = point(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_set_foreach_point(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_set(arg0).gist(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_gist(isl.isl_set_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def identity(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_identity(isl.isl_set_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def indicator_function(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_indicator_function(isl.isl_set_copy(arg0.ptr))
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def insert_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is space:
-                arg1 = space(arg1)
-        except:
-            return union_set(arg0).insert_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_insert_domain(isl.isl_set_copy(arg0.ptr), isl.isl_space_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def intersect(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_set(arg0).intersect(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_intersect(isl.isl_set_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def intersect_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_set(arg0).intersect_params(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_intersect_params(isl.isl_set_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def involves_locals(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_involves_locals(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_disjoint(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_set(arg0).is_disjoint(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_is_disjoint(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_empty(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_is_empty(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_set(arg0).is_equal(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_singleton(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_is_singleton(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_strict_subset(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_set(arg0).is_strict_subset(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_is_strict_subset(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_subset(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_set(arg0).is_subset(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_is_subset(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_wrapping(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_is_wrapping(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def lexmax(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_lexmax(isl.isl_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def lexmax_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_lexmax_pw_multi_aff(isl.isl_set_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def lexmin(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_lexmin(isl.isl_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def lexmin_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_lexmin_pw_multi_aff(isl.isl_set_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def lower_bound(*args):
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_set_lower_bound_multi_pw_aff(isl.isl_set_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = set(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_set_lower_bound_multi_val(isl.isl_set_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = set(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def max_multi_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_max_multi_pw_aff(isl.isl_set_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def max_val(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return union_set(arg0).max_val(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_max_val(arg0.ptr, arg1.ptr)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def min_multi_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_min_multi_pw_aff(isl.isl_set_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def min_val(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff:
-                arg1 = aff(arg1)
-        except:
-            return union_set(arg0).min_val(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_min_val(arg0.ptr, arg1.ptr)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def n_basic_set(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_n_basic_set(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def params(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_params(isl.isl_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def plain_multi_val_if_fixed(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_get_plain_multi_val_if_fixed(arg0.ptr)
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def get_plain_multi_val_if_fixed(arg0):
-        return arg0.plain_multi_val_if_fixed()
-    def polyhedral_hull(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_polyhedral_hull(isl.isl_set_copy(arg0.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def preimage(*args):
-        if len(args) == 2 and args[1].__class__ is multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_set_preimage_multi_aff(isl.isl_set_copy(args[0].ptr), isl.isl_multi_aff_copy(args[1].ptr))
-            obj = set(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_set_preimage_multi_pw_aff(isl.isl_set_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = set(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_set_preimage_pw_multi_aff(isl.isl_set_copy(args[0].ptr), isl.isl_pw_multi_aff_copy(args[1].ptr))
-            obj = set(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def product(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_set(arg0).product(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_product(isl.isl_set_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def project_out_all_params(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_project_out_all_params(isl.isl_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def project_out_param(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_set_project_out_param_id(isl.isl_set_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = set(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is id_list:
-            ctx = args[0].ctx
-            res = isl.isl_set_project_out_param_id_list(isl.isl_set_copy(args[0].ptr), isl.isl_id_list_copy(args[1].ptr))
-            obj = set(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def pw_multi_aff_on_domain(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_set_pw_multi_aff_on_domain_multi_val(isl.isl_set_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = pw_multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def sample(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_sample(isl.isl_set_copy(arg0.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def sample_point(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_sample_point(isl.isl_set_copy(arg0.ptr))
-        obj = point(ctx=ctx, ptr=res)
-        return obj
-    def simple_fixed_box_hull(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_get_simple_fixed_box_hull(arg0.ptr)
-        obj = fixed_box(ctx=ctx, ptr=res)
-        return obj
-    def get_simple_fixed_box_hull(arg0):
-        return arg0.simple_fixed_box_hull()
-    def space(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def stride(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_get_stride(arg0.ptr, arg1)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def get_stride(arg0, arg1):
-        return arg0.stride(arg1)
-    def subtract(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_set(arg0).subtract(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_subtract(isl.isl_set_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def to_list(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_to_list(isl.isl_set_copy(arg0.ptr))
-        obj = set_list(ctx=ctx, ptr=res)
-        return obj
-    def to_union_set(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_to_union_set(isl.isl_set_copy(arg0.ptr))
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def translation(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_translation(isl.isl_set_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def tuple_dim(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_tuple_dim(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def unbind_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return union_set(arg0).unbind_params(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_unbind_params(isl.isl_set_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def unbind_params_insert_domain(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            return union_set(arg0).unbind_params_insert_domain(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_unbind_params_insert_domain(isl.isl_set_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def union(arg0, arg1):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            return union_set(arg0).union(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_set_union(isl.isl_set_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def universe(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_universe(isl.isl_space_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def unshifted_simple_hull(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_unshifted_simple_hull(isl.isl_set_copy(arg0.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def unwrap(arg0):
-        try:
-            if not arg0.__class__ is set:
-                arg0 = set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_unwrap(isl.isl_set_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def upper_bound(*args):
-        if len(args) == 2 and args[1].__class__ is multi_pw_aff:
-            ctx = args[0].ctx
-            res = isl.isl_set_upper_bound_multi_pw_aff(isl.isl_set_copy(args[0].ptr), isl.isl_multi_pw_aff_copy(args[1].ptr))
-            obj = set(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_set_upper_bound_multi_val(isl.isl_set_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = set(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-
-isl.isl_set_from_basic_set.restype = c_void_p
-isl.isl_set_from_basic_set.argtypes = [c_void_p]
-isl.isl_set_from_point.restype = c_void_p
-isl.isl_set_from_point.argtypes = [c_void_p]
-isl.isl_set_read_from_str.restype = c_void_p
-isl.isl_set_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_set_affine_hull.restype = c_void_p
-isl.isl_set_affine_hull.argtypes = [c_void_p]
-isl.isl_set_apply.restype = c_void_p
-isl.isl_set_apply.argtypes = [c_void_p, c_void_p]
-isl.isl_set_as_pw_multi_aff.restype = c_void_p
-isl.isl_set_as_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_set_bind.restype = c_void_p
-isl.isl_set_bind.argtypes = [c_void_p, c_void_p]
-isl.isl_set_coalesce.restype = c_void_p
-isl.isl_set_coalesce.argtypes = [c_void_p]
-isl.isl_set_complement.restype = c_void_p
-isl.isl_set_complement.argtypes = [c_void_p]
-isl.isl_set_detect_equalities.restype = c_void_p
-isl.isl_set_detect_equalities.argtypes = [c_void_p]
-isl.isl_set_dim_max_val.restype = c_void_p
-isl.isl_set_dim_max_val.argtypes = [c_void_p, c_int]
-isl.isl_set_dim_min_val.restype = c_void_p
-isl.isl_set_dim_min_val.argtypes = [c_void_p, c_int]
-isl.isl_set_empty.restype = c_void_p
-isl.isl_set_empty.argtypes = [c_void_p]
-isl.isl_set_flatten.restype = c_void_p
-isl.isl_set_flatten.argtypes = [c_void_p]
-isl.isl_set_foreach_basic_set.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_set_foreach_point.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_set_gist.restype = c_void_p
-isl.isl_set_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_set_identity.restype = c_void_p
-isl.isl_set_identity.argtypes = [c_void_p]
-isl.isl_set_indicator_function.restype = c_void_p
-isl.isl_set_indicator_function.argtypes = [c_void_p]
-isl.isl_set_insert_domain.restype = c_void_p
-isl.isl_set_insert_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_set_intersect.restype = c_void_p
-isl.isl_set_intersect.argtypes = [c_void_p, c_void_p]
-isl.isl_set_intersect_params.restype = c_void_p
-isl.isl_set_intersect_params.argtypes = [c_void_p, c_void_p]
-isl.isl_set_involves_locals.argtypes = [c_void_p]
-isl.isl_set_is_disjoint.argtypes = [c_void_p, c_void_p]
-isl.isl_set_is_empty.argtypes = [c_void_p]
-isl.isl_set_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_set_is_singleton.argtypes = [c_void_p]
-isl.isl_set_is_strict_subset.argtypes = [c_void_p, c_void_p]
-isl.isl_set_is_subset.argtypes = [c_void_p, c_void_p]
-isl.isl_set_is_wrapping.argtypes = [c_void_p]
-isl.isl_set_lexmax.restype = c_void_p
-isl.isl_set_lexmax.argtypes = [c_void_p]
-isl.isl_set_lexmax_pw_multi_aff.restype = c_void_p
-isl.isl_set_lexmax_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_set_lexmin.restype = c_void_p
-isl.isl_set_lexmin.argtypes = [c_void_p]
-isl.isl_set_lexmin_pw_multi_aff.restype = c_void_p
-isl.isl_set_lexmin_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_set_lower_bound_multi_pw_aff.restype = c_void_p
-isl.isl_set_lower_bound_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_set_lower_bound_multi_val.restype = c_void_p
-isl.isl_set_lower_bound_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_set_max_multi_pw_aff.restype = c_void_p
-isl.isl_set_max_multi_pw_aff.argtypes = [c_void_p]
-isl.isl_set_max_val.restype = c_void_p
-isl.isl_set_max_val.argtypes = [c_void_p, c_void_p]
-isl.isl_set_min_multi_pw_aff.restype = c_void_p
-isl.isl_set_min_multi_pw_aff.argtypes = [c_void_p]
-isl.isl_set_min_val.restype = c_void_p
-isl.isl_set_min_val.argtypes = [c_void_p, c_void_p]
-isl.isl_set_n_basic_set.argtypes = [c_void_p]
-isl.isl_set_params.restype = c_void_p
-isl.isl_set_params.argtypes = [c_void_p]
-isl.isl_set_get_plain_multi_val_if_fixed.restype = c_void_p
-isl.isl_set_get_plain_multi_val_if_fixed.argtypes = [c_void_p]
-isl.isl_set_polyhedral_hull.restype = c_void_p
-isl.isl_set_polyhedral_hull.argtypes = [c_void_p]
-isl.isl_set_preimage_multi_aff.restype = c_void_p
-isl.isl_set_preimage_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_set_preimage_multi_pw_aff.restype = c_void_p
-isl.isl_set_preimage_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_set_preimage_pw_multi_aff.restype = c_void_p
-isl.isl_set_preimage_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_set_product.restype = c_void_p
-isl.isl_set_product.argtypes = [c_void_p, c_void_p]
-isl.isl_set_project_out_all_params.restype = c_void_p
-isl.isl_set_project_out_all_params.argtypes = [c_void_p]
-isl.isl_set_project_out_param_id.restype = c_void_p
-isl.isl_set_project_out_param_id.argtypes = [c_void_p, c_void_p]
-isl.isl_set_project_out_param_id_list.restype = c_void_p
-isl.isl_set_project_out_param_id_list.argtypes = [c_void_p, c_void_p]
-isl.isl_set_pw_multi_aff_on_domain_multi_val.restype = c_void_p
-isl.isl_set_pw_multi_aff_on_domain_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_set_sample.restype = c_void_p
-isl.isl_set_sample.argtypes = [c_void_p]
-isl.isl_set_sample_point.restype = c_void_p
-isl.isl_set_sample_point.argtypes = [c_void_p]
-isl.isl_set_get_simple_fixed_box_hull.restype = c_void_p
-isl.isl_set_get_simple_fixed_box_hull.argtypes = [c_void_p]
-isl.isl_set_get_space.restype = c_void_p
-isl.isl_set_get_space.argtypes = [c_void_p]
-isl.isl_set_get_stride.restype = c_void_p
-isl.isl_set_get_stride.argtypes = [c_void_p, c_int]
-isl.isl_set_subtract.restype = c_void_p
-isl.isl_set_subtract.argtypes = [c_void_p, c_void_p]
-isl.isl_set_to_list.restype = c_void_p
-isl.isl_set_to_list.argtypes = [c_void_p]
-isl.isl_set_to_union_set.restype = c_void_p
-isl.isl_set_to_union_set.argtypes = [c_void_p]
-isl.isl_set_translation.restype = c_void_p
-isl.isl_set_translation.argtypes = [c_void_p]
-isl.isl_set_tuple_dim.argtypes = [c_void_p]
-isl.isl_set_unbind_params.restype = c_void_p
-isl.isl_set_unbind_params.argtypes = [c_void_p, c_void_p]
-isl.isl_set_unbind_params_insert_domain.restype = c_void_p
-isl.isl_set_unbind_params_insert_domain.argtypes = [c_void_p, c_void_p]
-isl.isl_set_union.restype = c_void_p
-isl.isl_set_union.argtypes = [c_void_p, c_void_p]
-isl.isl_set_universe.restype = c_void_p
-isl.isl_set_universe.argtypes = [c_void_p]
-isl.isl_set_unshifted_simple_hull.restype = c_void_p
-isl.isl_set_unshifted_simple_hull.argtypes = [c_void_p]
-isl.isl_set_unwrap.restype = c_void_p
-isl.isl_set_unwrap.argtypes = [c_void_p]
-isl.isl_set_upper_bound_multi_pw_aff.restype = c_void_p
-isl.isl_set_upper_bound_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_set_upper_bound_multi_val.restype = c_void_p
-isl.isl_set_upper_bound_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_set_copy.restype = c_void_p
-isl.isl_set_copy.argtypes = [c_void_p]
-isl.isl_set_free.restype = c_void_p
-isl.isl_set_free.argtypes = [c_void_p]
-isl.isl_set_to_str.restype = POINTER(c_char)
-isl.isl_set_to_str.argtypes = [c_void_p]
-
-class basic_set(set):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is point:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_basic_set_from_point(isl.isl_point_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_basic_set_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_basic_set_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ptr = isl.isl_basic_set_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.basic_set("""%s""")' % s
-        else:
-            return 'isl.basic_set("%s")' % s
-    def affine_hull(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_affine_hull(isl.isl_basic_set_copy(arg0.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def apply(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_map:
-                arg1 = basic_map(arg1)
-        except:
-            return set(arg0).apply(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_apply(isl.isl_basic_set_copy(arg0.ptr), isl.isl_basic_map_copy(arg1.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def detect_equalities(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_detect_equalities(isl.isl_basic_set_copy(arg0.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def dim_max_val(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_dim_max_val(isl.isl_basic_set_copy(arg0.ptr), arg1)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def flatten(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_flatten(isl.isl_basic_set_copy(arg0.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def gist(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_set:
-                arg1 = basic_set(arg1)
-        except:
-            return set(arg0).gist(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_gist(isl.isl_basic_set_copy(arg0.ptr), isl.isl_basic_set_copy(arg1.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def intersect(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_set:
-                arg1 = basic_set(arg1)
-        except:
-            return set(arg0).intersect(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_intersect(isl.isl_basic_set_copy(arg0.ptr), isl.isl_basic_set_copy(arg1.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def intersect_params(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_set:
-                arg1 = basic_set(arg1)
-        except:
-            return set(arg0).intersect_params(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_intersect_params(isl.isl_basic_set_copy(arg0.ptr), isl.isl_basic_set_copy(arg1.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def is_empty(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_is_empty(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_set:
-                arg1 = basic_set(arg1)
-        except:
-            return set(arg0).is_equal(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_subset(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_set:
-                arg1 = basic_set(arg1)
-        except:
-            return set(arg0).is_subset(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_is_subset(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_wrapping(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_is_wrapping(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def lexmax(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_lexmax(isl.isl_basic_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def lexmin(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_lexmin(isl.isl_basic_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def params(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_params(isl.isl_basic_set_copy(arg0.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def sample(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_sample(isl.isl_basic_set_copy(arg0.ptr))
-        obj = basic_set(ctx=ctx, ptr=res)
-        return obj
-    def sample_point(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_sample_point(isl.isl_basic_set_copy(arg0.ptr))
-        obj = point(ctx=ctx, ptr=res)
-        return obj
-    def to_set(arg0):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_to_set(isl.isl_basic_set_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def union(arg0, arg1):
-        try:
-            if not arg0.__class__ is basic_set:
-                arg0 = basic_set(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is basic_set:
-                arg1 = basic_set(arg1)
-        except:
-            return set(arg0).union(arg1)
-        ctx = arg0.ctx
-        res = isl.isl_basic_set_union(isl.isl_basic_set_copy(arg0.ptr), isl.isl_basic_set_copy(arg1.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_basic_set_from_point.restype = c_void_p
-isl.isl_basic_set_from_point.argtypes = [c_void_p]
-isl.isl_basic_set_read_from_str.restype = c_void_p
-isl.isl_basic_set_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_basic_set_affine_hull.restype = c_void_p
-isl.isl_basic_set_affine_hull.argtypes = [c_void_p]
-isl.isl_basic_set_apply.restype = c_void_p
-isl.isl_basic_set_apply.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_set_detect_equalities.restype = c_void_p
-isl.isl_basic_set_detect_equalities.argtypes = [c_void_p]
-isl.isl_basic_set_dim_max_val.restype = c_void_p
-isl.isl_basic_set_dim_max_val.argtypes = [c_void_p, c_int]
-isl.isl_basic_set_flatten.restype = c_void_p
-isl.isl_basic_set_flatten.argtypes = [c_void_p]
-isl.isl_basic_set_gist.restype = c_void_p
-isl.isl_basic_set_gist.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_set_intersect.restype = c_void_p
-isl.isl_basic_set_intersect.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_set_intersect_params.restype = c_void_p
-isl.isl_basic_set_intersect_params.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_set_is_empty.argtypes = [c_void_p]
-isl.isl_basic_set_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_set_is_subset.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_set_is_wrapping.argtypes = [c_void_p]
-isl.isl_basic_set_lexmax.restype = c_void_p
-isl.isl_basic_set_lexmax.argtypes = [c_void_p]
-isl.isl_basic_set_lexmin.restype = c_void_p
-isl.isl_basic_set_lexmin.argtypes = [c_void_p]
-isl.isl_basic_set_params.restype = c_void_p
-isl.isl_basic_set_params.argtypes = [c_void_p]
-isl.isl_basic_set_sample.restype = c_void_p
-isl.isl_basic_set_sample.argtypes = [c_void_p]
-isl.isl_basic_set_sample_point.restype = c_void_p
-isl.isl_basic_set_sample_point.argtypes = [c_void_p]
-isl.isl_basic_set_to_set.restype = c_void_p
-isl.isl_basic_set_to_set.argtypes = [c_void_p]
-isl.isl_basic_set_union.restype = c_void_p
-isl.isl_basic_set_union.argtypes = [c_void_p, c_void_p]
-isl.isl_basic_set_copy.restype = c_void_p
-isl.isl_basic_set_copy.argtypes = [c_void_p]
-isl.isl_basic_set_free.restype = c_void_p
-isl.isl_basic_set_free.argtypes = [c_void_p]
-isl.isl_basic_set_to_str.restype = POINTER(c_char)
-isl.isl_basic_set_to_str.argtypes = [c_void_p]
-
-class fixed_box(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_fixed_box_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is fixed_box:
-                arg0 = fixed_box(arg0)
-        except:
-            raise
-        ptr = isl.isl_fixed_box_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.fixed_box("""%s""")' % s
-        else:
-            return 'isl.fixed_box("%s")' % s
-    def is_valid(arg0):
-        try:
-            if not arg0.__class__ is fixed_box:
-                arg0 = fixed_box(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_fixed_box_is_valid(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def offset(arg0):
-        try:
-            if not arg0.__class__ is fixed_box:
-                arg0 = fixed_box(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_fixed_box_get_offset(arg0.ptr)
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def get_offset(arg0):
-        return arg0.offset()
-    def size(arg0):
-        try:
-            if not arg0.__class__ is fixed_box:
-                arg0 = fixed_box(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_fixed_box_get_size(arg0.ptr)
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def get_size(arg0):
-        return arg0.size()
-    def space(arg0):
-        try:
-            if not arg0.__class__ is fixed_box:
-                arg0 = fixed_box(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_fixed_box_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-
-isl.isl_fixed_box_is_valid.argtypes = [c_void_p]
-isl.isl_fixed_box_get_offset.restype = c_void_p
-isl.isl_fixed_box_get_offset.argtypes = [c_void_p]
-isl.isl_fixed_box_get_size.restype = c_void_p
-isl.isl_fixed_box_get_size.argtypes = [c_void_p]
-isl.isl_fixed_box_get_space.restype = c_void_p
-isl.isl_fixed_box_get_space.argtypes = [c_void_p]
-isl.isl_fixed_box_copy.restype = c_void_p
-isl.isl_fixed_box_copy.argtypes = [c_void_p]
-isl.isl_fixed_box_free.restype = c_void_p
-isl.isl_fixed_box_free.argtypes = [c_void_p]
-isl.isl_fixed_box_to_str.restype = POINTER(c_char)
-isl.isl_fixed_box_to_str.argtypes = [c_void_p]
-
-class id(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_id_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_id_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is id:
-                arg0 = id(arg0)
-        except:
-            raise
-        ptr = isl.isl_id_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.id("""%s""")' % s
-        else:
-            return 'isl.id("%s")' % s
-    def name(arg0):
-        try:
-            if not arg0.__class__ is id:
-                arg0 = id(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_id_get_name(arg0.ptr)
-        if res == 0:
-            raise
-        string = cast(res, c_char_p).value.decode('ascii')
-        return string
-    def get_name(arg0):
-        return arg0.name()
-    def to_list(arg0):
-        try:
-            if not arg0.__class__ is id:
-                arg0 = id(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_id_to_list(isl.isl_id_copy(arg0.ptr))
-        obj = id_list(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_id_read_from_str.restype = c_void_p
-isl.isl_id_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_id_get_name.restype = POINTER(c_char)
-isl.isl_id_get_name.argtypes = [c_void_p]
-isl.isl_id_to_list.restype = c_void_p
-isl.isl_id_to_list.argtypes = [c_void_p]
-isl.isl_id_copy.restype = c_void_p
-isl.isl_id_copy.argtypes = [c_void_p]
-isl.isl_id_free.restype = c_void_p
-isl.isl_id_free.argtypes = [c_void_p]
-isl.isl_id_to_str.restype = POINTER(c_char)
-isl.isl_id_to_str.argtypes = [c_void_p]
-
-class id_list(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == int:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_id_list_alloc(self.ctx, args[0])
-            return
-        if len(args) == 1 and (args[0].__class__ is id or type(args[0]) == str):
-            args = list(args)
-            try:
-                if not args[0].__class__ is id:
-                    args[0] = id(args[0])
-            except:
-                raise
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_id_list_from_id(isl.isl_id_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_id_list_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_id_list_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is id_list:
-                arg0 = id_list(arg0)
-        except:
-            raise
-        ptr = isl.isl_id_list_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.id_list("""%s""")' % s
-        else:
-            return 'isl.id_list("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is id_list:
-                arg0 = id_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is id:
-                arg1 = id(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_id_list_add(isl.isl_id_list_copy(arg0.ptr), isl.isl_id_copy(arg1.ptr))
-        obj = id_list(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is id_list:
-                arg0 = id_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_id_list_get_at(arg0.ptr, arg1)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def clear(arg0):
-        try:
-            if not arg0.__class__ is id_list:
-                arg0 = id_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_id_list_clear(isl.isl_id_list_copy(arg0.ptr))
-        obj = id_list(ctx=ctx, ptr=res)
-        return obj
-    def concat(arg0, arg1):
-        try:
-            if not arg0.__class__ is id_list:
-                arg0 = id_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is id_list:
-                arg1 = id_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_id_list_concat(isl.isl_id_list_copy(arg0.ptr), isl.isl_id_list_copy(arg1.ptr))
-        obj = id_list(ctx=ctx, ptr=res)
-        return obj
-    def drop(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is id_list:
-                arg0 = id_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_id_list_drop(isl.isl_id_list_copy(arg0.ptr), arg1, arg2)
-        obj = id_list(ctx=ctx, ptr=res)
-        return obj
-    def foreach(arg0, arg1):
-        try:
-            if not arg0.__class__ is id_list:
-                arg0 = id_list(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = id(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_id_list_foreach(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def insert(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is id_list:
-                arg0 = id_list(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is id:
-                arg2 = id(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_id_list_insert(isl.isl_id_list_copy(arg0.ptr), arg1, isl.isl_id_copy(arg2.ptr))
-        obj = id_list(ctx=ctx, ptr=res)
-        return obj
-    def size(arg0):
-        try:
-            if not arg0.__class__ is id_list:
-                arg0 = id_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_id_list_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-
-isl.isl_id_list_alloc.restype = c_void_p
-isl.isl_id_list_alloc.argtypes = [Context, c_int]
-isl.isl_id_list_from_id.restype = c_void_p
-isl.isl_id_list_from_id.argtypes = [c_void_p]
-isl.isl_id_list_read_from_str.restype = c_void_p
-isl.isl_id_list_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_id_list_add.restype = c_void_p
-isl.isl_id_list_add.argtypes = [c_void_p, c_void_p]
-isl.isl_id_list_get_at.restype = c_void_p
-isl.isl_id_list_get_at.argtypes = [c_void_p, c_int]
-isl.isl_id_list_clear.restype = c_void_p
-isl.isl_id_list_clear.argtypes = [c_void_p]
-isl.isl_id_list_concat.restype = c_void_p
-isl.isl_id_list_concat.argtypes = [c_void_p, c_void_p]
-isl.isl_id_list_drop.restype = c_void_p
-isl.isl_id_list_drop.argtypes = [c_void_p, c_int, c_int]
-isl.isl_id_list_foreach.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_id_list_insert.restype = c_void_p
-isl.isl_id_list_insert.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_id_list_size.argtypes = [c_void_p]
-isl.isl_id_list_copy.restype = c_void_p
-isl.isl_id_list_copy.argtypes = [c_void_p]
-isl.isl_id_list_free.restype = c_void_p
-isl.isl_id_list_free.argtypes = [c_void_p]
-isl.isl_id_list_to_str.restype = POINTER(c_char)
-isl.isl_id_list_to_str.argtypes = [c_void_p]
-
-class map_list(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == int:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_map_list_alloc(self.ctx, args[0])
-            return
-        if len(args) == 1 and args[0].__class__ is map:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_map_list_from_map(isl.isl_map_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_map_list_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_map_list_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is map_list:
-                arg0 = map_list(arg0)
-        except:
-            raise
-        ptr = isl.isl_map_list_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.map_list("""%s""")' % s
-        else:
-            return 'isl.map_list("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is map_list:
-                arg0 = map_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map:
-                arg1 = map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_list_add(isl.isl_map_list_copy(arg0.ptr), isl.isl_map_copy(arg1.ptr))
-        obj = map_list(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is map_list:
-                arg0 = map_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_list_get_at(arg0.ptr, arg1)
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def clear(arg0):
-        try:
-            if not arg0.__class__ is map_list:
-                arg0 = map_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_list_clear(isl.isl_map_list_copy(arg0.ptr))
-        obj = map_list(ctx=ctx, ptr=res)
-        return obj
-    def concat(arg0, arg1):
-        try:
-            if not arg0.__class__ is map_list:
-                arg0 = map_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is map_list:
-                arg1 = map_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_list_concat(isl.isl_map_list_copy(arg0.ptr), isl.isl_map_list_copy(arg1.ptr))
-        obj = map_list(ctx=ctx, ptr=res)
-        return obj
-    def drop(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is map_list:
-                arg0 = map_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_list_drop(isl.isl_map_list_copy(arg0.ptr), arg1, arg2)
-        obj = map_list(ctx=ctx, ptr=res)
-        return obj
-    def foreach(arg0, arg1):
-        try:
-            if not arg0.__class__ is map_list:
-                arg0 = map_list(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = map(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_map_list_foreach(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def insert(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is map_list:
-                arg0 = map_list(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is map:
-                arg2 = map(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_list_insert(isl.isl_map_list_copy(arg0.ptr), arg1, isl.isl_map_copy(arg2.ptr))
-        obj = map_list(ctx=ctx, ptr=res)
-        return obj
-    def size(arg0):
-        try:
-            if not arg0.__class__ is map_list:
-                arg0 = map_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_map_list_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-
-isl.isl_map_list_alloc.restype = c_void_p
-isl.isl_map_list_alloc.argtypes = [Context, c_int]
-isl.isl_map_list_from_map.restype = c_void_p
-isl.isl_map_list_from_map.argtypes = [c_void_p]
-isl.isl_map_list_read_from_str.restype = c_void_p
-isl.isl_map_list_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_map_list_add.restype = c_void_p
-isl.isl_map_list_add.argtypes = [c_void_p, c_void_p]
-isl.isl_map_list_get_at.restype = c_void_p
-isl.isl_map_list_get_at.argtypes = [c_void_p, c_int]
-isl.isl_map_list_clear.restype = c_void_p
-isl.isl_map_list_clear.argtypes = [c_void_p]
-isl.isl_map_list_concat.restype = c_void_p
-isl.isl_map_list_concat.argtypes = [c_void_p, c_void_p]
-isl.isl_map_list_drop.restype = c_void_p
-isl.isl_map_list_drop.argtypes = [c_void_p, c_int, c_int]
-isl.isl_map_list_foreach.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_map_list_insert.restype = c_void_p
-isl.isl_map_list_insert.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_map_list_size.argtypes = [c_void_p]
-isl.isl_map_list_copy.restype = c_void_p
-isl.isl_map_list_copy.argtypes = [c_void_p]
-isl.isl_map_list_free.restype = c_void_p
-isl.isl_map_list_free.argtypes = [c_void_p]
-isl.isl_map_list_to_str.restype = POINTER(c_char)
-isl.isl_map_list_to_str.argtypes = [c_void_p]
-
-class multi_id(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 2 and args[0].__class__ is space and args[1].__class__ is id_list:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_id_from_id_list(isl.isl_space_copy(args[0].ptr), isl.isl_id_list_copy(args[1].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_id_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_multi_id_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is multi_id:
-                arg0 = multi_id(arg0)
-        except:
-            raise
-        ptr = isl.isl_multi_id_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.multi_id("""%s""")' % s
-        else:
-            return 'isl.multi_id("%s")' % s
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_id:
-                arg0 = multi_id(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_id_get_at(arg0.ptr, arg1)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def flat_range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_id:
-                arg0 = multi_id(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_id_flat_range_product(isl.isl_multi_id_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = multi_id(ctx=ctx, ptr=res)
-        return obj
-    def list(arg0):
-        try:
-            if not arg0.__class__ is multi_id:
-                arg0 = multi_id(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_id_get_list(arg0.ptr)
-        obj = id_list(ctx=ctx, ptr=res)
-        return obj
-    def get_list(arg0):
-        return arg0.list()
-    def plain_is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_id:
-                arg0 = multi_id(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_id_plain_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_id:
-                arg0 = multi_id(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_id:
-                arg1 = multi_id(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_id_range_product(isl.isl_multi_id_copy(arg0.ptr), isl.isl_multi_id_copy(arg1.ptr))
-        obj = multi_id(ctx=ctx, ptr=res)
-        return obj
-    def set_at(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is multi_id:
-                arg0 = multi_id(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is id:
-                arg2 = id(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_id_set_at(isl.isl_multi_id_copy(arg0.ptr), arg1, isl.isl_id_copy(arg2.ptr))
-        obj = multi_id(ctx=ctx, ptr=res)
-        return obj
-    def size(arg0):
-        try:
-            if not arg0.__class__ is multi_id:
-                arg0 = multi_id(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_id_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def space(arg0):
-        try:
-            if not arg0.__class__ is multi_id:
-                arg0 = multi_id(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_id_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-
-isl.isl_multi_id_from_id_list.restype = c_void_p
-isl.isl_multi_id_from_id_list.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_id_read_from_str.restype = c_void_p
-isl.isl_multi_id_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_multi_id_get_at.restype = c_void_p
-isl.isl_multi_id_get_at.argtypes = [c_void_p, c_int]
-isl.isl_multi_id_flat_range_product.restype = c_void_p
-isl.isl_multi_id_flat_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_id_get_list.restype = c_void_p
-isl.isl_multi_id_get_list.argtypes = [c_void_p]
-isl.isl_multi_id_plain_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_id_range_product.restype = c_void_p
-isl.isl_multi_id_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_id_set_at.restype = c_void_p
-isl.isl_multi_id_set_at.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_multi_id_size.argtypes = [c_void_p]
-isl.isl_multi_id_get_space.restype = c_void_p
-isl.isl_multi_id_get_space.argtypes = [c_void_p]
-isl.isl_multi_id_copy.restype = c_void_p
-isl.isl_multi_id_copy.argtypes = [c_void_p]
-isl.isl_multi_id_free.restype = c_void_p
-isl.isl_multi_id_free.argtypes = [c_void_p]
-isl.isl_multi_id_to_str.restype = POINTER(c_char)
-isl.isl_multi_id_to_str.argtypes = [c_void_p]
-
-class multi_val(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 2 and args[0].__class__ is space and args[1].__class__ is val_list:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_val_from_val_list(isl.isl_space_copy(args[0].ptr), isl.isl_val_list_copy(args[1].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_multi_val_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_multi_val_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        ptr = isl.isl_multi_val_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.multi_val("""%s""")' % s
-        else:
-            return 'isl.multi_val("%s")' % s
-    def add(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_val_add(isl.isl_multi_val_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_val(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_val_add_val(isl.isl_multi_val_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = multi_val(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_get_at(arg0.ptr, arg1)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def flat_range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_flat_range_product(isl.isl_multi_val_copy(arg0.ptr), isl.isl_multi_val_copy(arg1.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def has_range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_has_range_tuple_id(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def involves_nan(arg0):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_involves_nan(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def list(arg0):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_get_list(arg0.ptr)
-        obj = val_list(ctx=ctx, ptr=res)
-        return obj
-    def get_list(arg0):
-        return arg0.list()
-    def max(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_max(isl.isl_multi_val_copy(arg0.ptr), isl.isl_multi_val_copy(arg1.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def min(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_min(isl.isl_multi_val_copy(arg0.ptr), isl.isl_multi_val_copy(arg1.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def neg(arg0):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_neg(isl.isl_multi_val_copy(arg0.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def plain_is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_plain_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_product(isl.isl_multi_val_copy(arg0.ptr), isl.isl_multi_val_copy(arg1.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def range_product(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_range_product(isl.isl_multi_val_copy(arg0.ptr), isl.isl_multi_val_copy(arg1.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_get_range_tuple_id(arg0.ptr)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_range_tuple_id(arg0):
-        return arg0.range_tuple_id()
-    def reset_range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_reset_range_tuple_id(isl.isl_multi_val_copy(arg0.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def scale(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_val_scale_multi_val(isl.isl_multi_val_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_val(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_val_scale_val(isl.isl_multi_val_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = multi_val(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def scale_down(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_multi_val_scale_down_multi_val(isl.isl_multi_val_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_val(ctx=ctx, ptr=res)
-            return obj
-        if len(args) == 2 and (args[1].__class__ is val or type(args[1]) == int):
-            args = list(args)
-            try:
-                if not args[1].__class__ is val:
-                    args[1] = val(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_val_scale_down_val(isl.isl_multi_val_copy(args[0].ptr), isl.isl_val_copy(args[1].ptr))
-            obj = multi_val(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def set_at(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is val:
-                arg2 = val(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_set_at(isl.isl_multi_val_copy(arg0.ptr), arg1, isl.isl_val_copy(arg2.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def set_range_tuple(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_multi_val_set_range_tuple_id(isl.isl_multi_val_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = multi_val(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def size(arg0):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def space(arg0):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_get_space(arg0.ptr)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def get_space(arg0):
-        return arg0.space()
-    def sub(arg0, arg1):
-        try:
-            if not arg0.__class__ is multi_val:
-                arg0 = multi_val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_sub(isl.isl_multi_val_copy(arg0.ptr), isl.isl_multi_val_copy(arg1.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def zero(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_multi_val_zero(isl.isl_space_copy(arg0.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_multi_val_from_val_list.restype = c_void_p
-isl.isl_multi_val_from_val_list.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_read_from_str.restype = c_void_p
-isl.isl_multi_val_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_multi_val_add.restype = c_void_p
-isl.isl_multi_val_add.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_add_val.restype = c_void_p
-isl.isl_multi_val_add_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_get_at.restype = c_void_p
-isl.isl_multi_val_get_at.argtypes = [c_void_p, c_int]
-isl.isl_multi_val_flat_range_product.restype = c_void_p
-isl.isl_multi_val_flat_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_has_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_val_involves_nan.argtypes = [c_void_p]
-isl.isl_multi_val_get_list.restype = c_void_p
-isl.isl_multi_val_get_list.argtypes = [c_void_p]
-isl.isl_multi_val_max.restype = c_void_p
-isl.isl_multi_val_max.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_min.restype = c_void_p
-isl.isl_multi_val_min.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_neg.restype = c_void_p
-isl.isl_multi_val_neg.argtypes = [c_void_p]
-isl.isl_multi_val_plain_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_product.restype = c_void_p
-isl.isl_multi_val_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_range_product.restype = c_void_p
-isl.isl_multi_val_range_product.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_get_range_tuple_id.restype = c_void_p
-isl.isl_multi_val_get_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_val_reset_range_tuple_id.restype = c_void_p
-isl.isl_multi_val_reset_range_tuple_id.argtypes = [c_void_p]
-isl.isl_multi_val_scale_multi_val.restype = c_void_p
-isl.isl_multi_val_scale_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_scale_val.restype = c_void_p
-isl.isl_multi_val_scale_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_scale_down_multi_val.restype = c_void_p
-isl.isl_multi_val_scale_down_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_scale_down_val.restype = c_void_p
-isl.isl_multi_val_scale_down_val.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_set_at.restype = c_void_p
-isl.isl_multi_val_set_at.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_multi_val_set_range_tuple_id.restype = c_void_p
-isl.isl_multi_val_set_range_tuple_id.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_size.argtypes = [c_void_p]
-isl.isl_multi_val_get_space.restype = c_void_p
-isl.isl_multi_val_get_space.argtypes = [c_void_p]
-isl.isl_multi_val_sub.restype = c_void_p
-isl.isl_multi_val_sub.argtypes = [c_void_p, c_void_p]
-isl.isl_multi_val_zero.restype = c_void_p
-isl.isl_multi_val_zero.argtypes = [c_void_p]
-isl.isl_multi_val_copy.restype = c_void_p
-isl.isl_multi_val_copy.argtypes = [c_void_p]
-isl.isl_multi_val_free.restype = c_void_p
-isl.isl_multi_val_free.argtypes = [c_void_p]
-isl.isl_multi_val_to_str.restype = POINTER(c_char)
-isl.isl_multi_val_to_str.argtypes = [c_void_p]
-
-class point(basic_set):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_point_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is point:
-                arg0 = point(arg0)
-        except:
-            raise
-        ptr = isl.isl_point_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.point("""%s""")' % s
-        else:
-            return 'isl.point("%s")' % s
-    def multi_val(arg0):
-        try:
-            if not arg0.__class__ is point:
-                arg0 = point(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_point_get_multi_val(arg0.ptr)
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def get_multi_val(arg0):
-        return arg0.multi_val()
-    def to_set(arg0):
-        try:
-            if not arg0.__class__ is point:
-                arg0 = point(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_point_to_set(isl.isl_point_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_point_get_multi_val.restype = c_void_p
-isl.isl_point_get_multi_val.argtypes = [c_void_p]
-isl.isl_point_to_set.restype = c_void_p
-isl.isl_point_to_set.argtypes = [c_void_p]
-isl.isl_point_copy.restype = c_void_p
-isl.isl_point_copy.argtypes = [c_void_p]
-isl.isl_point_free.restype = c_void_p
-isl.isl_point_free.argtypes = [c_void_p]
-isl.isl_point_to_str.restype = POINTER(c_char)
-isl.isl_point_to_str.argtypes = [c_void_p]
-
-class pw_aff_list(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == int:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_pw_aff_list_alloc(self.ctx, args[0])
-            return
-        if len(args) == 1 and args[0].__class__ is pw_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_pw_aff_list_from_pw_aff(isl.isl_pw_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_pw_aff_list_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_pw_aff_list_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is pw_aff_list:
-                arg0 = pw_aff_list(arg0)
-        except:
-            raise
-        ptr = isl.isl_pw_aff_list_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.pw_aff_list("""%s""")' % s
-        else:
-            return 'isl.pw_aff_list("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff_list:
-                arg0 = pw_aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff:
-                arg1 = pw_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_list_add(isl.isl_pw_aff_list_copy(arg0.ptr), isl.isl_pw_aff_copy(arg1.ptr))
-        obj = pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff_list:
-                arg0 = pw_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_list_get_at(arg0.ptr, arg1)
-        obj = pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def clear(arg0):
-        try:
-            if not arg0.__class__ is pw_aff_list:
-                arg0 = pw_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_list_clear(isl.isl_pw_aff_list_copy(arg0.ptr))
-        obj = pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def concat(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff_list:
-                arg0 = pw_aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff_list:
-                arg1 = pw_aff_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_list_concat(isl.isl_pw_aff_list_copy(arg0.ptr), isl.isl_pw_aff_list_copy(arg1.ptr))
-        obj = pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def drop(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is pw_aff_list:
-                arg0 = pw_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_list_drop(isl.isl_pw_aff_list_copy(arg0.ptr), arg1, arg2)
-        obj = pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def foreach(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_aff_list:
-                arg0 = pw_aff_list(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = pw_aff(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_list_foreach(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def insert(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is pw_aff_list:
-                arg0 = pw_aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is pw_aff:
-                arg2 = pw_aff(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_list_insert(isl.isl_pw_aff_list_copy(arg0.ptr), arg1, isl.isl_pw_aff_copy(arg2.ptr))
-        obj = pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def size(arg0):
-        try:
-            if not arg0.__class__ is pw_aff_list:
-                arg0 = pw_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_aff_list_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-
-isl.isl_pw_aff_list_alloc.restype = c_void_p
-isl.isl_pw_aff_list_alloc.argtypes = [Context, c_int]
-isl.isl_pw_aff_list_from_pw_aff.restype = c_void_p
-isl.isl_pw_aff_list_from_pw_aff.argtypes = [c_void_p]
-isl.isl_pw_aff_list_read_from_str.restype = c_void_p
-isl.isl_pw_aff_list_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_pw_aff_list_add.restype = c_void_p
-isl.isl_pw_aff_list_add.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_list_get_at.restype = c_void_p
-isl.isl_pw_aff_list_get_at.argtypes = [c_void_p, c_int]
-isl.isl_pw_aff_list_clear.restype = c_void_p
-isl.isl_pw_aff_list_clear.argtypes = [c_void_p]
-isl.isl_pw_aff_list_concat.restype = c_void_p
-isl.isl_pw_aff_list_concat.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_aff_list_drop.restype = c_void_p
-isl.isl_pw_aff_list_drop.argtypes = [c_void_p, c_int, c_int]
-isl.isl_pw_aff_list_foreach.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_pw_aff_list_insert.restype = c_void_p
-isl.isl_pw_aff_list_insert.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_pw_aff_list_size.argtypes = [c_void_p]
-isl.isl_pw_aff_list_copy.restype = c_void_p
-isl.isl_pw_aff_list_copy.argtypes = [c_void_p]
-isl.isl_pw_aff_list_free.restype = c_void_p
-isl.isl_pw_aff_list_free.argtypes = [c_void_p]
-isl.isl_pw_aff_list_to_str.restype = POINTER(c_char)
-isl.isl_pw_aff_list_to_str.argtypes = [c_void_p]
-
-class pw_multi_aff_list(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == int:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_pw_multi_aff_list_alloc(self.ctx, args[0])
-            return
-        if len(args) == 1 and args[0].__class__ is pw_multi_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_pw_multi_aff_list_from_pw_multi_aff(isl.isl_pw_multi_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_pw_multi_aff_list_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_pw_multi_aff_list_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff_list:
-                arg0 = pw_multi_aff_list(arg0)
-        except:
-            raise
-        ptr = isl.isl_pw_multi_aff_list_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.pw_multi_aff_list("""%s""")' % s
-        else:
-            return 'isl.pw_multi_aff_list("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff_list:
-                arg0 = pw_multi_aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_multi_aff:
-                arg1 = pw_multi_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_list_add(isl.isl_pw_multi_aff_list_copy(arg0.ptr), isl.isl_pw_multi_aff_copy(arg1.ptr))
-        obj = pw_multi_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff_list:
-                arg0 = pw_multi_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_list_get_at(arg0.ptr, arg1)
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def clear(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff_list:
-                arg0 = pw_multi_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_list_clear(isl.isl_pw_multi_aff_list_copy(arg0.ptr))
-        obj = pw_multi_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def concat(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff_list:
-                arg0 = pw_multi_aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_multi_aff_list:
-                arg1 = pw_multi_aff_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_list_concat(isl.isl_pw_multi_aff_list_copy(arg0.ptr), isl.isl_pw_multi_aff_list_copy(arg1.ptr))
-        obj = pw_multi_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def drop(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is pw_multi_aff_list:
-                arg0 = pw_multi_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_list_drop(isl.isl_pw_multi_aff_list_copy(arg0.ptr), arg1, arg2)
-        obj = pw_multi_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def foreach(arg0, arg1):
-        try:
-            if not arg0.__class__ is pw_multi_aff_list:
-                arg0 = pw_multi_aff_list(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = pw_multi_aff(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_list_foreach(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def insert(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is pw_multi_aff_list:
-                arg0 = pw_multi_aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is pw_multi_aff:
-                arg2 = pw_multi_aff(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_list_insert(isl.isl_pw_multi_aff_list_copy(arg0.ptr), arg1, isl.isl_pw_multi_aff_copy(arg2.ptr))
-        obj = pw_multi_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def size(arg0):
-        try:
-            if not arg0.__class__ is pw_multi_aff_list:
-                arg0 = pw_multi_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_pw_multi_aff_list_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-
-isl.isl_pw_multi_aff_list_alloc.restype = c_void_p
-isl.isl_pw_multi_aff_list_alloc.argtypes = [Context, c_int]
-isl.isl_pw_multi_aff_list_from_pw_multi_aff.restype = c_void_p
-isl.isl_pw_multi_aff_list_from_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_list_read_from_str.restype = c_void_p
-isl.isl_pw_multi_aff_list_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_pw_multi_aff_list_add.restype = c_void_p
-isl.isl_pw_multi_aff_list_add.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_list_get_at.restype = c_void_p
-isl.isl_pw_multi_aff_list_get_at.argtypes = [c_void_p, c_int]
-isl.isl_pw_multi_aff_list_clear.restype = c_void_p
-isl.isl_pw_multi_aff_list_clear.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_list_concat.restype = c_void_p
-isl.isl_pw_multi_aff_list_concat.argtypes = [c_void_p, c_void_p]
-isl.isl_pw_multi_aff_list_drop.restype = c_void_p
-isl.isl_pw_multi_aff_list_drop.argtypes = [c_void_p, c_int, c_int]
-isl.isl_pw_multi_aff_list_foreach.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_pw_multi_aff_list_insert.restype = c_void_p
-isl.isl_pw_multi_aff_list_insert.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_pw_multi_aff_list_size.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_list_copy.restype = c_void_p
-isl.isl_pw_multi_aff_list_copy.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_list_free.restype = c_void_p
-isl.isl_pw_multi_aff_list_free.argtypes = [c_void_p]
-isl.isl_pw_multi_aff_list_to_str.restype = POINTER(c_char)
-isl.isl_pw_multi_aff_list_to_str.argtypes = [c_void_p]
-
-class schedule(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_schedule_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule:
-                arg0 = schedule(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule("""%s""")' % s
-        else:
-            return 'isl.schedule("%s")' % s
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is schedule:
-                arg0 = schedule(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_get_domain(arg0.ptr)
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def get_domain(arg0):
-        return arg0.domain()
-    @staticmethod
-    def from_domain(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_from_domain(isl.isl_union_set_copy(arg0.ptr))
-        obj = schedule(ctx=ctx, ptr=res)
-        return obj
-    def map(arg0):
-        try:
-            if not arg0.__class__ is schedule:
-                arg0 = schedule(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_get_map(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_map(arg0):
-        return arg0.map()
-    def pullback(*args):
-        if len(args) == 2 and args[1].__class__ is union_pw_multi_aff:
-            ctx = args[0].ctx
-            res = isl.isl_schedule_pullback_union_pw_multi_aff(isl.isl_schedule_copy(args[0].ptr), isl.isl_union_pw_multi_aff_copy(args[1].ptr))
-            obj = schedule(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def root(arg0):
-        try:
-            if not arg0.__class__ is schedule:
-                arg0 = schedule(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_get_root(arg0.ptr)
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def get_root(arg0):
-        return arg0.root()
-
-isl.isl_schedule_read_from_str.restype = c_void_p
-isl.isl_schedule_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_schedule_get_domain.restype = c_void_p
-isl.isl_schedule_get_domain.argtypes = [c_void_p]
-isl.isl_schedule_from_domain.restype = c_void_p
-isl.isl_schedule_from_domain.argtypes = [c_void_p]
-isl.isl_schedule_get_map.restype = c_void_p
-isl.isl_schedule_get_map.argtypes = [c_void_p]
-isl.isl_schedule_pullback_union_pw_multi_aff.restype = c_void_p
-isl.isl_schedule_pullback_union_pw_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_get_root.restype = c_void_p
-isl.isl_schedule_get_root.argtypes = [c_void_p]
-isl.isl_schedule_copy.restype = c_void_p
-isl.isl_schedule_copy.argtypes = [c_void_p]
-isl.isl_schedule_free.restype = c_void_p
-isl.isl_schedule_free.argtypes = [c_void_p]
-isl.isl_schedule_to_str.restype = POINTER(c_char)
-isl.isl_schedule_to_str.argtypes = [c_void_p]
-
-class schedule_constraints(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_schedule_constraints_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_constraints_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_constraints_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_constraints("""%s""")' % s
-        else:
-            return 'isl.schedule_constraints("%s")' % s
-    def coincidence(arg0):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_get_coincidence(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_coincidence(arg0):
-        return arg0.coincidence()
-    def compute_schedule(arg0):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_compute_schedule(isl.isl_schedule_constraints_copy(arg0.ptr))
-        obj = schedule(ctx=ctx, ptr=res)
-        return obj
-    def conditional_validity(arg0):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_get_conditional_validity(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_conditional_validity(arg0):
-        return arg0.conditional_validity()
-    def conditional_validity_condition(arg0):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_get_conditional_validity_condition(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_conditional_validity_condition(arg0):
-        return arg0.conditional_validity_condition()
-    def context(arg0):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_get_context(arg0.ptr)
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def get_context(arg0):
-        return arg0.context()
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_get_domain(arg0.ptr)
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def get_domain(arg0):
-        return arg0.domain()
-    @staticmethod
-    def on_domain(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_on_domain(isl.isl_union_set_copy(arg0.ptr))
-        obj = schedule_constraints(ctx=ctx, ptr=res)
-        return obj
-    def proximity(arg0):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_get_proximity(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_proximity(arg0):
-        return arg0.proximity()
-    def set_coincidence(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_set_coincidence(isl.isl_schedule_constraints_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = schedule_constraints(ctx=ctx, ptr=res)
-        return obj
-    def set_conditional_validity(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is union_map:
-                arg2 = union_map(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_set_conditional_validity(isl.isl_schedule_constraints_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr), isl.isl_union_map_copy(arg2.ptr))
-        obj = schedule_constraints(ctx=ctx, ptr=res)
-        return obj
-    def set_context(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_set_context(isl.isl_schedule_constraints_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = schedule_constraints(ctx=ctx, ptr=res)
-        return obj
-    def set_proximity(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_set_proximity(isl.isl_schedule_constraints_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = schedule_constraints(ctx=ctx, ptr=res)
-        return obj
-    def set_validity(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_set_validity(isl.isl_schedule_constraints_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = schedule_constraints(ctx=ctx, ptr=res)
-        return obj
-    def validity(arg0):
-        try:
-            if not arg0.__class__ is schedule_constraints:
-                arg0 = schedule_constraints(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_constraints_get_validity(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_validity(arg0):
-        return arg0.validity()
-
-isl.isl_schedule_constraints_read_from_str.restype = c_void_p
-isl.isl_schedule_constraints_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_schedule_constraints_get_coincidence.restype = c_void_p
-isl.isl_schedule_constraints_get_coincidence.argtypes = [c_void_p]
-isl.isl_schedule_constraints_compute_schedule.restype = c_void_p
-isl.isl_schedule_constraints_compute_schedule.argtypes = [c_void_p]
-isl.isl_schedule_constraints_get_conditional_validity.restype = c_void_p
-isl.isl_schedule_constraints_get_conditional_validity.argtypes = [c_void_p]
-isl.isl_schedule_constraints_get_conditional_validity_condition.restype = c_void_p
-isl.isl_schedule_constraints_get_conditional_validity_condition.argtypes = [c_void_p]
-isl.isl_schedule_constraints_get_context.restype = c_void_p
-isl.isl_schedule_constraints_get_context.argtypes = [c_void_p]
-isl.isl_schedule_constraints_get_domain.restype = c_void_p
-isl.isl_schedule_constraints_get_domain.argtypes = [c_void_p]
-isl.isl_schedule_constraints_on_domain.restype = c_void_p
-isl.isl_schedule_constraints_on_domain.argtypes = [c_void_p]
-isl.isl_schedule_constraints_get_proximity.restype = c_void_p
-isl.isl_schedule_constraints_get_proximity.argtypes = [c_void_p]
-isl.isl_schedule_constraints_set_coincidence.restype = c_void_p
-isl.isl_schedule_constraints_set_coincidence.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_constraints_set_conditional_validity.restype = c_void_p
-isl.isl_schedule_constraints_set_conditional_validity.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_schedule_constraints_set_context.restype = c_void_p
-isl.isl_schedule_constraints_set_context.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_constraints_set_proximity.restype = c_void_p
-isl.isl_schedule_constraints_set_proximity.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_constraints_set_validity.restype = c_void_p
-isl.isl_schedule_constraints_set_validity.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_constraints_get_validity.restype = c_void_p
-isl.isl_schedule_constraints_get_validity.argtypes = [c_void_p]
-isl.isl_schedule_constraints_copy.restype = c_void_p
-isl.isl_schedule_constraints_copy.argtypes = [c_void_p]
-isl.isl_schedule_constraints_free.restype = c_void_p
-isl.isl_schedule_constraints_free.argtypes = [c_void_p]
-isl.isl_schedule_constraints_to_str.restype = POINTER(c_char)
-isl.isl_schedule_constraints_to_str.argtypes = [c_void_p]
-
-class schedule_node(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and isinstance(args[0], schedule_node_band):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_schedule_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], schedule_node_context):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_schedule_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], schedule_node_domain):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_schedule_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], schedule_node_expansion):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_schedule_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], schedule_node_extension):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_schedule_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], schedule_node_filter):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_schedule_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], schedule_node_leaf):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_schedule_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], schedule_node_guard):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_schedule_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], schedule_node_mark):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_schedule_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], schedule_node_sequence):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_schedule_node_copy(args[0].ptr)
-            return
-        if len(args) == 1 and isinstance(args[0], schedule_node_set):
-            self.ctx = args[0].ctx
-            self.ptr = isl.isl_schedule_node_copy(args[0].ptr)
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        if "ptr" in keywords:
-            type = isl.isl_schedule_node_get_type(keywords["ptr"])
-            if type == 0:
-                return schedule_node_band(**keywords)
-            if type == 1:
-                return schedule_node_context(**keywords)
-            if type == 2:
-                return schedule_node_domain(**keywords)
-            if type == 3:
-                return schedule_node_expansion(**keywords)
-            if type == 4:
-                return schedule_node_extension(**keywords)
-            if type == 5:
-                return schedule_node_filter(**keywords)
-            if type == 6:
-                return schedule_node_leaf(**keywords)
-            if type == 7:
-                return schedule_node_guard(**keywords)
-            if type == 8:
-                return schedule_node_mark(**keywords)
-            if type == 9:
-                return schedule_node_sequence(**keywords)
-            if type == 10:
-                return schedule_node_set(**keywords)
-            raise
-        return super(schedule_node, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node("""%s""")' % s
-        else:
-            return 'isl.schedule_node("%s")' % s
-    def ancestor(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_ancestor(isl.isl_schedule_node_copy(arg0.ptr), arg1)
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def ancestor_child_position(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is schedule_node:
-                arg1 = schedule_node(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_get_ancestor_child_position(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def get_ancestor_child_position(arg0, arg1):
-        return arg0.ancestor_child_position(arg1)
-    def child(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_child(isl.isl_schedule_node_copy(arg0.ptr), arg1)
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def child_position(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_get_child_position(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def get_child_position(arg0):
-        return arg0.child_position()
-    def every_descendant(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = schedule_node(ctx=arg0.ctx, ptr=isl.isl_schedule_node_copy(cb_arg0))
-            try:
-                res = arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 1 if res else 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_every_descendant(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-        return bool(res)
-    def first_child(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_first_child(isl.isl_schedule_node_copy(arg0.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def foreach_ancestor_top_down(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = schedule_node(ctx=arg0.ctx, ptr=isl.isl_schedule_node_copy(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_foreach_ancestor_top_down(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def foreach_descendant_top_down(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = schedule_node(ctx=arg0.ctx, ptr=isl.isl_schedule_node_copy(cb_arg0))
-            try:
-                res = arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 1 if res else 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_foreach_descendant_top_down(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    @staticmethod
-    def from_domain(arg0):
-        try:
-            if not arg0.__class__ is union_set:
-                arg0 = union_set(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_from_domain(isl.isl_union_set_copy(arg0.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def from_extension(arg0):
-        try:
-            if not arg0.__class__ is union_map:
-                arg0 = union_map(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_from_extension(isl.isl_union_map_copy(arg0.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def graft_after(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is schedule_node:
-                arg1 = schedule_node(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_graft_after(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_schedule_node_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def graft_before(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is schedule_node:
-                arg1 = schedule_node(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_graft_before(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_schedule_node_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def has_children(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_has_children(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def has_next_sibling(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_has_next_sibling(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def has_parent(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_has_parent(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def has_previous_sibling(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_has_previous_sibling(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def insert_context(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_insert_context(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def insert_filter(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_insert_filter(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def insert_guard(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_insert_guard(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def insert_mark(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is id:
-                arg1 = id(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_insert_mark(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_id_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def insert_partial_schedule(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_union_pw_aff:
-                arg1 = multi_union_pw_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_insert_partial_schedule(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_multi_union_pw_aff_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def insert_sequence(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set_list:
-                arg1 = union_set_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_insert_sequence(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_union_set_list_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def insert_set(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set_list:
-                arg1 = union_set_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_insert_set(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_union_set_list_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is schedule_node:
-                arg1 = schedule_node(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_subtree_anchored(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_is_subtree_anchored(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def map_descendant_bottom_up(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_void_p, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = schedule_node(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                res = arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return None
-            return isl.isl_schedule_node_copy(res.ptr)
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_map_descendant_bottom_up(isl.isl_schedule_node_copy(arg0.ptr), cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def n_children(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_n_children(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def next_sibling(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_next_sibling(isl.isl_schedule_node_copy(arg0.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def order_after(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_order_after(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def order_before(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_order_before(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def parent(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_parent(isl.isl_schedule_node_copy(arg0.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def prefix_schedule_multi_union_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(arg0.ptr)
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def get_prefix_schedule_multi_union_pw_aff(arg0):
-        return arg0.prefix_schedule_multi_union_pw_aff()
-    def prefix_schedule_union_map(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_get_prefix_schedule_union_map(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_prefix_schedule_union_map(arg0):
-        return arg0.prefix_schedule_union_map()
-    def prefix_schedule_union_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(arg0.ptr)
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def get_prefix_schedule_union_pw_multi_aff(arg0):
-        return arg0.prefix_schedule_union_pw_multi_aff()
-    def previous_sibling(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_previous_sibling(isl.isl_schedule_node_copy(arg0.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def root(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_root(isl.isl_schedule_node_copy(arg0.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def schedule(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_get_schedule(arg0.ptr)
-        obj = schedule(ctx=ctx, ptr=res)
-        return obj
-    def get_schedule(arg0):
-        return arg0.schedule()
-    def shared_ancestor(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is schedule_node:
-                arg1 = schedule_node(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_get_shared_ancestor(arg0.ptr, arg1.ptr)
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def get_shared_ancestor(arg0, arg1):
-        return arg0.shared_ancestor(arg1)
-    def tree_depth(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_get_tree_depth(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def get_tree_depth(arg0):
-        return arg0.tree_depth()
-
-isl.isl_schedule_node_ancestor.restype = c_void_p
-isl.isl_schedule_node_ancestor.argtypes = [c_void_p, c_int]
-isl.isl_schedule_node_get_ancestor_child_position.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_child.restype = c_void_p
-isl.isl_schedule_node_child.argtypes = [c_void_p, c_int]
-isl.isl_schedule_node_get_child_position.argtypes = [c_void_p]
-isl.isl_schedule_node_every_descendant.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_schedule_node_first_child.restype = c_void_p
-isl.isl_schedule_node_first_child.argtypes = [c_void_p]
-isl.isl_schedule_node_foreach_ancestor_top_down.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_schedule_node_foreach_descendant_top_down.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_schedule_node_from_domain.restype = c_void_p
-isl.isl_schedule_node_from_domain.argtypes = [c_void_p]
-isl.isl_schedule_node_from_extension.restype = c_void_p
-isl.isl_schedule_node_from_extension.argtypes = [c_void_p]
-isl.isl_schedule_node_graft_after.restype = c_void_p
-isl.isl_schedule_node_graft_after.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_graft_before.restype = c_void_p
-isl.isl_schedule_node_graft_before.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_has_children.argtypes = [c_void_p]
-isl.isl_schedule_node_has_next_sibling.argtypes = [c_void_p]
-isl.isl_schedule_node_has_parent.argtypes = [c_void_p]
-isl.isl_schedule_node_has_previous_sibling.argtypes = [c_void_p]
-isl.isl_schedule_node_insert_context.restype = c_void_p
-isl.isl_schedule_node_insert_context.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_insert_filter.restype = c_void_p
-isl.isl_schedule_node_insert_filter.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_insert_guard.restype = c_void_p
-isl.isl_schedule_node_insert_guard.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_insert_mark.restype = c_void_p
-isl.isl_schedule_node_insert_mark.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_insert_partial_schedule.restype = c_void_p
-isl.isl_schedule_node_insert_partial_schedule.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_insert_sequence.restype = c_void_p
-isl.isl_schedule_node_insert_sequence.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_insert_set.restype = c_void_p
-isl.isl_schedule_node_insert_set.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_is_subtree_anchored.argtypes = [c_void_p]
-isl.isl_schedule_node_map_descendant_bottom_up.restype = c_void_p
-isl.isl_schedule_node_map_descendant_bottom_up.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_schedule_node_n_children.argtypes = [c_void_p]
-isl.isl_schedule_node_next_sibling.restype = c_void_p
-isl.isl_schedule_node_next_sibling.argtypes = [c_void_p]
-isl.isl_schedule_node_order_after.restype = c_void_p
-isl.isl_schedule_node_order_after.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_order_before.restype = c_void_p
-isl.isl_schedule_node_order_before.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_parent.restype = c_void_p
-isl.isl_schedule_node_parent.argtypes = [c_void_p]
-isl.isl_schedule_node_get_prefix_schedule_multi_union_pw_aff.restype = c_void_p
-isl.isl_schedule_node_get_prefix_schedule_multi_union_pw_aff.argtypes = [c_void_p]
-isl.isl_schedule_node_get_prefix_schedule_union_map.restype = c_void_p
-isl.isl_schedule_node_get_prefix_schedule_union_map.argtypes = [c_void_p]
-isl.isl_schedule_node_get_prefix_schedule_union_pw_multi_aff.restype = c_void_p
-isl.isl_schedule_node_get_prefix_schedule_union_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_schedule_node_previous_sibling.restype = c_void_p
-isl.isl_schedule_node_previous_sibling.argtypes = [c_void_p]
-isl.isl_schedule_node_root.restype = c_void_p
-isl.isl_schedule_node_root.argtypes = [c_void_p]
-isl.isl_schedule_node_get_schedule.restype = c_void_p
-isl.isl_schedule_node_get_schedule.argtypes = [c_void_p]
-isl.isl_schedule_node_get_shared_ancestor.restype = c_void_p
-isl.isl_schedule_node_get_shared_ancestor.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_get_tree_depth.argtypes = [c_void_p]
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-isl.isl_schedule_node_get_type.argtypes = [c_void_p]
-
-class schedule_node_band(schedule_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(schedule_node_band, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node_band:
-                arg0 = schedule_node_band(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node_band("""%s""")' % s
-        else:
-            return 'isl.schedule_node_band("%s")' % s
-    def ast_build_options(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_get_ast_build_options(arg0.ptr)
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def get_ast_build_options(arg0):
-        return arg0.ast_build_options()
-    def ast_isolate_option(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_get_ast_isolate_option(arg0.ptr)
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def get_ast_isolate_option(arg0):
-        return arg0.ast_isolate_option()
-    def member_get_coincident(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_member_get_coincident(arg0.ptr, arg1)
-        if res < 0:
-            raise
-        return bool(res)
-    def member_set_coincident(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_member_set_coincident(isl.isl_schedule_node_copy(arg0.ptr), arg1, arg2)
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def mod(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_mod(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_multi_val_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def n_member(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_n_member(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-    def partial_schedule(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_get_partial_schedule(arg0.ptr)
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def get_partial_schedule(arg0):
-        return arg0.partial_schedule()
-    def permutable(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_get_permutable(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def get_permutable(arg0):
-        return arg0.permutable()
-    def scale(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_scale(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_multi_val_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def scale_down(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_scale_down(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_multi_val_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def set_ast_build_options(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_set_ast_build_options(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def set_permutable(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_set_permutable(isl.isl_schedule_node_copy(arg0.ptr), arg1)
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def shift(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_union_pw_aff:
-                arg1 = multi_union_pw_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_shift(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_multi_union_pw_aff_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def split(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_split(isl.isl_schedule_node_copy(arg0.ptr), arg1)
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def tile(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is multi_val:
-                arg1 = multi_val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_tile(isl.isl_schedule_node_copy(arg0.ptr), isl.isl_multi_val_copy(arg1.ptr))
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def member_set_ast_loop_default(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_member_set_ast_loop_type(isl.isl_schedule_node_copy(arg0.ptr), arg1, 0)
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def member_set_ast_loop_atomic(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_member_set_ast_loop_type(isl.isl_schedule_node_copy(arg0.ptr), arg1, 1)
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def member_set_ast_loop_unroll(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_member_set_ast_loop_type(isl.isl_schedule_node_copy(arg0.ptr), arg1, 2)
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-    def member_set_ast_loop_separate(arg0, arg1):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_band_member_set_ast_loop_type(isl.isl_schedule_node_copy(arg0.ptr), arg1, 3)
-        obj = schedule_node(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_schedule_node_band_get_ast_build_options.restype = c_void_p
-isl.isl_schedule_node_band_get_ast_build_options.argtypes = [c_void_p]
-isl.isl_schedule_node_band_get_ast_isolate_option.restype = c_void_p
-isl.isl_schedule_node_band_get_ast_isolate_option.argtypes = [c_void_p]
-isl.isl_schedule_node_band_member_get_coincident.argtypes = [c_void_p, c_int]
-isl.isl_schedule_node_band_member_set_coincident.restype = c_void_p
-isl.isl_schedule_node_band_member_set_coincident.argtypes = [c_void_p, c_int, c_int]
-isl.isl_schedule_node_band_mod.restype = c_void_p
-isl.isl_schedule_node_band_mod.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_band_n_member.argtypes = [c_void_p]
-isl.isl_schedule_node_band_get_partial_schedule.restype = c_void_p
-isl.isl_schedule_node_band_get_partial_schedule.argtypes = [c_void_p]
-isl.isl_schedule_node_band_get_permutable.argtypes = [c_void_p]
-isl.isl_schedule_node_band_scale.restype = c_void_p
-isl.isl_schedule_node_band_scale.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_band_scale_down.restype = c_void_p
-isl.isl_schedule_node_band_scale_down.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_band_set_ast_build_options.restype = c_void_p
-isl.isl_schedule_node_band_set_ast_build_options.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_band_set_permutable.restype = c_void_p
-isl.isl_schedule_node_band_set_permutable.argtypes = [c_void_p, c_int]
-isl.isl_schedule_node_band_shift.restype = c_void_p
-isl.isl_schedule_node_band_shift.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_band_split.restype = c_void_p
-isl.isl_schedule_node_band_split.argtypes = [c_void_p, c_int]
-isl.isl_schedule_node_band_tile.restype = c_void_p
-isl.isl_schedule_node_band_tile.argtypes = [c_void_p, c_void_p]
-isl.isl_schedule_node_band_member_set_ast_loop_type.restype = c_void_p
-isl.isl_schedule_node_band_member_set_ast_loop_type.argtypes = [c_void_p, c_int, c_int]
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-
-class schedule_node_context(schedule_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(schedule_node_context, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node_context:
-                arg0 = schedule_node_context(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node_context("""%s""")' % s
-        else:
-            return 'isl.schedule_node_context("%s")' % s
-    def context(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_context_get_context(arg0.ptr)
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def get_context(arg0):
-        return arg0.context()
-
-isl.isl_schedule_node_context_get_context.restype = c_void_p
-isl.isl_schedule_node_context_get_context.argtypes = [c_void_p]
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-
-class schedule_node_domain(schedule_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(schedule_node_domain, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node_domain:
-                arg0 = schedule_node_domain(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node_domain("""%s""")' % s
-        else:
-            return 'isl.schedule_node_domain("%s")' % s
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_domain_get_domain(arg0.ptr)
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def get_domain(arg0):
-        return arg0.domain()
-
-isl.isl_schedule_node_domain_get_domain.restype = c_void_p
-isl.isl_schedule_node_domain_get_domain.argtypes = [c_void_p]
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-
-class schedule_node_expansion(schedule_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(schedule_node_expansion, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node_expansion:
-                arg0 = schedule_node_expansion(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node_expansion("""%s""")' % s
-        else:
-            return 'isl.schedule_node_expansion("%s")' % s
-    def contraction(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_expansion_get_contraction(arg0.ptr)
-        obj = union_pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def get_contraction(arg0):
-        return arg0.contraction()
-    def expansion(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_expansion_get_expansion(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_expansion(arg0):
-        return arg0.expansion()
-
-isl.isl_schedule_node_expansion_get_contraction.restype = c_void_p
-isl.isl_schedule_node_expansion_get_contraction.argtypes = [c_void_p]
-isl.isl_schedule_node_expansion_get_expansion.restype = c_void_p
-isl.isl_schedule_node_expansion_get_expansion.argtypes = [c_void_p]
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-
-class schedule_node_extension(schedule_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(schedule_node_extension, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node_extension:
-                arg0 = schedule_node_extension(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node_extension("""%s""")' % s
-        else:
-            return 'isl.schedule_node_extension("%s")' % s
-    def extension(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_extension_get_extension(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_extension(arg0):
-        return arg0.extension()
-
-isl.isl_schedule_node_extension_get_extension.restype = c_void_p
-isl.isl_schedule_node_extension_get_extension.argtypes = [c_void_p]
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-
-class schedule_node_filter(schedule_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(schedule_node_filter, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node_filter:
-                arg0 = schedule_node_filter(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node_filter("""%s""")' % s
-        else:
-            return 'isl.schedule_node_filter("%s")' % s
-    def filter(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_filter_get_filter(arg0.ptr)
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def get_filter(arg0):
-        return arg0.filter()
-
-isl.isl_schedule_node_filter_get_filter.restype = c_void_p
-isl.isl_schedule_node_filter_get_filter.argtypes = [c_void_p]
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-
-class schedule_node_guard(schedule_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(schedule_node_guard, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node_guard:
-                arg0 = schedule_node_guard(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node_guard("""%s""")' % s
-        else:
-            return 'isl.schedule_node_guard("%s")' % s
-    def guard(arg0):
-        try:
-            if not arg0.__class__ is schedule_node:
-                arg0 = schedule_node(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_schedule_node_guard_get_guard(arg0.ptr)
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def get_guard(arg0):
-        return arg0.guard()
-
-isl.isl_schedule_node_guard_get_guard.restype = c_void_p
-isl.isl_schedule_node_guard_get_guard.argtypes = [c_void_p]
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-
-class schedule_node_leaf(schedule_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(schedule_node_leaf, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node_leaf:
-                arg0 = schedule_node_leaf(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node_leaf("""%s""")' % s
-        else:
-            return 'isl.schedule_node_leaf("%s")' % s
-
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-
-class schedule_node_mark(schedule_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(schedule_node_mark, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node_mark:
-                arg0 = schedule_node_mark(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node_mark("""%s""")' % s
-        else:
-            return 'isl.schedule_node_mark("%s")' % s
-
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-
-class schedule_node_sequence(schedule_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(schedule_node_sequence, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node_sequence:
-                arg0 = schedule_node_sequence(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node_sequence("""%s""")' % s
-        else:
-            return 'isl.schedule_node_sequence("%s")' % s
-
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-
-class schedule_node_set(schedule_node):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_schedule_node_free(self.ptr)
-    def __new__(cls, *args, **keywords):
-        return super(schedule_node_set, cls).__new__(cls)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is schedule_node_set:
-                arg0 = schedule_node_set(arg0)
-        except:
-            raise
-        ptr = isl.isl_schedule_node_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.schedule_node_set("""%s""")' % s
-        else:
-            return 'isl.schedule_node_set("%s")' % s
-
-isl.isl_schedule_node_copy.restype = c_void_p
-isl.isl_schedule_node_copy.argtypes = [c_void_p]
-isl.isl_schedule_node_free.restype = c_void_p
-isl.isl_schedule_node_free.argtypes = [c_void_p]
-isl.isl_schedule_node_to_str.restype = POINTER(c_char)
-isl.isl_schedule_node_to_str.argtypes = [c_void_p]
-
-class set_list(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == int:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_set_list_alloc(self.ctx, args[0])
-            return
-        if len(args) == 1 and args[0].__class__ is set:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_set_list_from_set(isl.isl_set_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_set_list_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_set_list_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is set_list:
-                arg0 = set_list(arg0)
-        except:
-            raise
-        ptr = isl.isl_set_list_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.set_list("""%s""")' % s
-        else:
-            return 'isl.set_list("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is set_list:
-                arg0 = set_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set:
-                arg1 = set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_list_add(isl.isl_set_list_copy(arg0.ptr), isl.isl_set_copy(arg1.ptr))
-        obj = set_list(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is set_list:
-                arg0 = set_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_list_get_at(arg0.ptr, arg1)
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def clear(arg0):
-        try:
-            if not arg0.__class__ is set_list:
-                arg0 = set_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_list_clear(isl.isl_set_list_copy(arg0.ptr))
-        obj = set_list(ctx=ctx, ptr=res)
-        return obj
-    def concat(arg0, arg1):
-        try:
-            if not arg0.__class__ is set_list:
-                arg0 = set_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is set_list:
-                arg1 = set_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_list_concat(isl.isl_set_list_copy(arg0.ptr), isl.isl_set_list_copy(arg1.ptr))
-        obj = set_list(ctx=ctx, ptr=res)
-        return obj
-    def drop(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is set_list:
-                arg0 = set_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_list_drop(isl.isl_set_list_copy(arg0.ptr), arg1, arg2)
-        obj = set_list(ctx=ctx, ptr=res)
-        return obj
-    def foreach(arg0, arg1):
-        try:
-            if not arg0.__class__ is set_list:
-                arg0 = set_list(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = set(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_set_list_foreach(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def insert(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is set_list:
-                arg0 = set_list(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is set:
-                arg2 = set(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_list_insert(isl.isl_set_list_copy(arg0.ptr), arg1, isl.isl_set_copy(arg2.ptr))
-        obj = set_list(ctx=ctx, ptr=res)
-        return obj
-    def size(arg0):
-        try:
-            if not arg0.__class__ is set_list:
-                arg0 = set_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_set_list_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-
-isl.isl_set_list_alloc.restype = c_void_p
-isl.isl_set_list_alloc.argtypes = [Context, c_int]
-isl.isl_set_list_from_set.restype = c_void_p
-isl.isl_set_list_from_set.argtypes = [c_void_p]
-isl.isl_set_list_read_from_str.restype = c_void_p
-isl.isl_set_list_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_set_list_add.restype = c_void_p
-isl.isl_set_list_add.argtypes = [c_void_p, c_void_p]
-isl.isl_set_list_get_at.restype = c_void_p
-isl.isl_set_list_get_at.argtypes = [c_void_p, c_int]
-isl.isl_set_list_clear.restype = c_void_p
-isl.isl_set_list_clear.argtypes = [c_void_p]
-isl.isl_set_list_concat.restype = c_void_p
-isl.isl_set_list_concat.argtypes = [c_void_p, c_void_p]
-isl.isl_set_list_drop.restype = c_void_p
-isl.isl_set_list_drop.argtypes = [c_void_p, c_int, c_int]
-isl.isl_set_list_foreach.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_set_list_insert.restype = c_void_p
-isl.isl_set_list_insert.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_set_list_size.argtypes = [c_void_p]
-isl.isl_set_list_copy.restype = c_void_p
-isl.isl_set_list_copy.argtypes = [c_void_p]
-isl.isl_set_list_free.restype = c_void_p
-isl.isl_set_list_free.argtypes = [c_void_p]
-isl.isl_set_list_to_str.restype = POINTER(c_char)
-isl.isl_set_list_to_str.argtypes = [c_void_p]
-
-class space(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_space_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ptr = isl.isl_space_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.space("""%s""")' % s
-        else:
-            return 'isl.space("%s")' % s
-    def add_named_tuple(*args):
-        if len(args) == 3 and (args[1].__class__ is id or type(args[1]) == str) and type(args[2]) == int:
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_space_add_named_tuple_id_ui(isl.isl_space_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr), args[2])
-            obj = space(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def add_param(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_space_add_param_id(isl.isl_space_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = space(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def add_unnamed_tuple(*args):
-        if len(args) == 2 and type(args[1]) == int:
-            ctx = args[0].ctx
-            res = isl.isl_space_add_unnamed_tuple_ui(isl.isl_space_copy(args[0].ptr), args[1])
-            obj = space(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def curry(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_curry(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def domain(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_domain(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def domain_map_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_domain_map_multi_aff(isl.isl_space_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def domain_map_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_domain_map_pw_multi_aff(isl.isl_space_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def domain_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_get_domain_tuple_id(arg0.ptr)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_domain_tuple_id(arg0):
-        return arg0.domain_tuple_id()
-    def flatten_domain(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_flatten_domain(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def flatten_range(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_flatten_range(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def has_domain_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_has_domain_tuple_id(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def has_range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_has_range_tuple_id(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def identity_multi_aff_on_domain(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_identity_multi_aff_on_domain(isl.isl_space_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def identity_multi_pw_aff_on_domain(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_identity_multi_pw_aff_on_domain(isl.isl_space_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def identity_pw_multi_aff_on_domain(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_identity_pw_multi_aff_on_domain(isl.isl_space_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def is_equal(arg0, arg1):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is space:
-                arg1 = space(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_is_equal(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_wrapping(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_is_wrapping(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def map_from_set(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_map_from_set(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def multi_aff(arg0, arg1):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is aff_list:
-                arg1 = aff_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_multi_aff(isl.isl_space_copy(arg0.ptr), isl.isl_aff_list_copy(arg1.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def multi_aff_on_domain(*args):
-        if len(args) == 2 and args[1].__class__ is multi_val:
-            ctx = args[0].ctx
-            res = isl.isl_space_multi_aff_on_domain_multi_val(isl.isl_space_copy(args[0].ptr), isl.isl_multi_val_copy(args[1].ptr))
-            obj = multi_aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def multi_id(arg0, arg1):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is id_list:
-                arg1 = id_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_multi_id(isl.isl_space_copy(arg0.ptr), isl.isl_id_list_copy(arg1.ptr))
-        obj = multi_id(ctx=ctx, ptr=res)
-        return obj
-    def multi_pw_aff(arg0, arg1):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is pw_aff_list:
-                arg1 = pw_aff_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_multi_pw_aff(isl.isl_space_copy(arg0.ptr), isl.isl_pw_aff_list_copy(arg1.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def multi_union_pw_aff(arg0, arg1):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_pw_aff_list:
-                arg1 = union_pw_aff_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_multi_union_pw_aff(isl.isl_space_copy(arg0.ptr), isl.isl_union_pw_aff_list_copy(arg1.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def multi_val(arg0, arg1):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val_list:
-                arg1 = val_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_multi_val(isl.isl_space_copy(arg0.ptr), isl.isl_val_list_copy(arg1.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-    def param_aff_on_domain(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_space_param_aff_on_domain_id(isl.isl_space_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = aff(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def params(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_params(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def product(arg0, arg1):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is space:
-                arg1 = space(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_product(isl.isl_space_copy(arg0.ptr), isl.isl_space_copy(arg1.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def range(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_range(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def range_map_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_range_map_multi_aff(isl.isl_space_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def range_map_pw_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_range_map_pw_multi_aff(isl.isl_space_copy(arg0.ptr))
-        obj = pw_multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def range_reverse(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_range_reverse(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def range_tuple_id(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_get_range_tuple_id(arg0.ptr)
-        obj = id(ctx=ctx, ptr=res)
-        return obj
-    def get_range_tuple_id(arg0):
-        return arg0.range_tuple_id()
-    def reverse(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_reverse(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def set_domain_tuple(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_space_set_domain_tuple_id(isl.isl_space_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = space(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def set_range_tuple(*args):
-        if len(args) == 2 and (args[1].__class__ is id or type(args[1]) == str):
-            args = list(args)
-            try:
-                if not args[1].__class__ is id:
-                    args[1] = id(args[1])
-            except:
-                raise
-            ctx = args[0].ctx
-            res = isl.isl_space_set_range_tuple_id(isl.isl_space_copy(args[0].ptr), isl.isl_id_copy(args[1].ptr))
-            obj = space(ctx=ctx, ptr=res)
-            return obj
-        raise Error
-    def uncurry(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_uncurry(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def unit():
-        ctx = Context.getDefaultInstance()
-        res = isl.isl_space_unit(ctx)
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def universe_map(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_universe_map(isl.isl_space_copy(arg0.ptr))
-        obj = map(ctx=ctx, ptr=res)
-        return obj
-    def universe_set(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_universe_set(isl.isl_space_copy(arg0.ptr))
-        obj = set(ctx=ctx, ptr=res)
-        return obj
-    def unwrap(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_unwrap(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def wrap(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_wrap(isl.isl_space_copy(arg0.ptr))
-        obj = space(ctx=ctx, ptr=res)
-        return obj
-    def zero_aff_on_domain(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_zero_aff_on_domain(isl.isl_space_copy(arg0.ptr))
-        obj = aff(ctx=ctx, ptr=res)
-        return obj
-    def zero_multi_aff(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_zero_multi_aff(isl.isl_space_copy(arg0.ptr))
-        obj = multi_aff(ctx=ctx, ptr=res)
-        return obj
-    def zero_multi_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_zero_multi_pw_aff(isl.isl_space_copy(arg0.ptr))
-        obj = multi_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def zero_multi_union_pw_aff(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_zero_multi_union_pw_aff(isl.isl_space_copy(arg0.ptr))
-        obj = multi_union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def zero_multi_val(arg0):
-        try:
-            if not arg0.__class__ is space:
-                arg0 = space(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_space_zero_multi_val(isl.isl_space_copy(arg0.ptr))
-        obj = multi_val(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_space_add_named_tuple_id_ui.restype = c_void_p
-isl.isl_space_add_named_tuple_id_ui.argtypes = [c_void_p, c_void_p, c_int]
-isl.isl_space_add_param_id.restype = c_void_p
-isl.isl_space_add_param_id.argtypes = [c_void_p, c_void_p]
-isl.isl_space_add_unnamed_tuple_ui.restype = c_void_p
-isl.isl_space_add_unnamed_tuple_ui.argtypes = [c_void_p, c_int]
-isl.isl_space_curry.restype = c_void_p
-isl.isl_space_curry.argtypes = [c_void_p]
-isl.isl_space_domain.restype = c_void_p
-isl.isl_space_domain.argtypes = [c_void_p]
-isl.isl_space_domain_map_multi_aff.restype = c_void_p
-isl.isl_space_domain_map_multi_aff.argtypes = [c_void_p]
-isl.isl_space_domain_map_pw_multi_aff.restype = c_void_p
-isl.isl_space_domain_map_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_space_get_domain_tuple_id.restype = c_void_p
-isl.isl_space_get_domain_tuple_id.argtypes = [c_void_p]
-isl.isl_space_flatten_domain.restype = c_void_p
-isl.isl_space_flatten_domain.argtypes = [c_void_p]
-isl.isl_space_flatten_range.restype = c_void_p
-isl.isl_space_flatten_range.argtypes = [c_void_p]
-isl.isl_space_has_domain_tuple_id.argtypes = [c_void_p]
-isl.isl_space_has_range_tuple_id.argtypes = [c_void_p]
-isl.isl_space_identity_multi_aff_on_domain.restype = c_void_p
-isl.isl_space_identity_multi_aff_on_domain.argtypes = [c_void_p]
-isl.isl_space_identity_multi_pw_aff_on_domain.restype = c_void_p
-isl.isl_space_identity_multi_pw_aff_on_domain.argtypes = [c_void_p]
-isl.isl_space_identity_pw_multi_aff_on_domain.restype = c_void_p
-isl.isl_space_identity_pw_multi_aff_on_domain.argtypes = [c_void_p]
-isl.isl_space_is_equal.argtypes = [c_void_p, c_void_p]
-isl.isl_space_is_wrapping.argtypes = [c_void_p]
-isl.isl_space_map_from_set.restype = c_void_p
-isl.isl_space_map_from_set.argtypes = [c_void_p]
-isl.isl_space_multi_aff.restype = c_void_p
-isl.isl_space_multi_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_space_multi_aff_on_domain_multi_val.restype = c_void_p
-isl.isl_space_multi_aff_on_domain_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_space_multi_id.restype = c_void_p
-isl.isl_space_multi_id.argtypes = [c_void_p, c_void_p]
-isl.isl_space_multi_pw_aff.restype = c_void_p
-isl.isl_space_multi_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_space_multi_union_pw_aff.restype = c_void_p
-isl.isl_space_multi_union_pw_aff.argtypes = [c_void_p, c_void_p]
-isl.isl_space_multi_val.restype = c_void_p
-isl.isl_space_multi_val.argtypes = [c_void_p, c_void_p]
-isl.isl_space_param_aff_on_domain_id.restype = c_void_p
-isl.isl_space_param_aff_on_domain_id.argtypes = [c_void_p, c_void_p]
-isl.isl_space_params.restype = c_void_p
-isl.isl_space_params.argtypes = [c_void_p]
-isl.isl_space_product.restype = c_void_p
-isl.isl_space_product.argtypes = [c_void_p, c_void_p]
-isl.isl_space_range.restype = c_void_p
-isl.isl_space_range.argtypes = [c_void_p]
-isl.isl_space_range_map_multi_aff.restype = c_void_p
-isl.isl_space_range_map_multi_aff.argtypes = [c_void_p]
-isl.isl_space_range_map_pw_multi_aff.restype = c_void_p
-isl.isl_space_range_map_pw_multi_aff.argtypes = [c_void_p]
-isl.isl_space_range_reverse.restype = c_void_p
-isl.isl_space_range_reverse.argtypes = [c_void_p]
-isl.isl_space_get_range_tuple_id.restype = c_void_p
-isl.isl_space_get_range_tuple_id.argtypes = [c_void_p]
-isl.isl_space_reverse.restype = c_void_p
-isl.isl_space_reverse.argtypes = [c_void_p]
-isl.isl_space_set_domain_tuple_id.restype = c_void_p
-isl.isl_space_set_domain_tuple_id.argtypes = [c_void_p, c_void_p]
-isl.isl_space_set_range_tuple_id.restype = c_void_p
-isl.isl_space_set_range_tuple_id.argtypes = [c_void_p, c_void_p]
-isl.isl_space_uncurry.restype = c_void_p
-isl.isl_space_uncurry.argtypes = [c_void_p]
-isl.isl_space_unit.restype = c_void_p
-isl.isl_space_unit.argtypes = [Context]
-isl.isl_space_universe_map.restype = c_void_p
-isl.isl_space_universe_map.argtypes = [c_void_p]
-isl.isl_space_universe_set.restype = c_void_p
-isl.isl_space_universe_set.argtypes = [c_void_p]
-isl.isl_space_unwrap.restype = c_void_p
-isl.isl_space_unwrap.argtypes = [c_void_p]
-isl.isl_space_wrap.restype = c_void_p
-isl.isl_space_wrap.argtypes = [c_void_p]
-isl.isl_space_zero_aff_on_domain.restype = c_void_p
-isl.isl_space_zero_aff_on_domain.argtypes = [c_void_p]
-isl.isl_space_zero_multi_aff.restype = c_void_p
-isl.isl_space_zero_multi_aff.argtypes = [c_void_p]
-isl.isl_space_zero_multi_pw_aff.restype = c_void_p
-isl.isl_space_zero_multi_pw_aff.argtypes = [c_void_p]
-isl.isl_space_zero_multi_union_pw_aff.restype = c_void_p
-isl.isl_space_zero_multi_union_pw_aff.argtypes = [c_void_p]
-isl.isl_space_zero_multi_val.restype = c_void_p
-isl.isl_space_zero_multi_val.argtypes = [c_void_p]
-isl.isl_space_copy.restype = c_void_p
-isl.isl_space_copy.argtypes = [c_void_p]
-isl.isl_space_free.restype = c_void_p
-isl.isl_space_free.argtypes = [c_void_p]
-isl.isl_space_to_str.restype = POINTER(c_char)
-isl.isl_space_to_str.argtypes = [c_void_p]
-
-class union_access_info(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and args[0].__class__ is union_map:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_access_info_from_sink(isl.isl_union_map_copy(args[0].ptr))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_union_access_info_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is union_access_info:
-                arg0 = union_access_info(arg0)
-        except:
-            raise
-        ptr = isl.isl_union_access_info_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.union_access_info("""%s""")' % s
-        else:
-            return 'isl.union_access_info("%s")' % s
-    def compute_flow(arg0):
-        try:
-            if not arg0.__class__ is union_access_info:
-                arg0 = union_access_info(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_access_info_compute_flow(isl.isl_union_access_info_copy(arg0.ptr))
-        obj = union_flow(ctx=ctx, ptr=res)
-        return obj
-    def set_kill(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_access_info:
-                arg0 = union_access_info(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_access_info_set_kill(isl.isl_union_access_info_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_access_info(ctx=ctx, ptr=res)
-        return obj
-    def set_may_source(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_access_info:
-                arg0 = union_access_info(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_access_info_set_may_source(isl.isl_union_access_info_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_access_info(ctx=ctx, ptr=res)
-        return obj
-    def set_must_source(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_access_info:
-                arg0 = union_access_info(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_access_info_set_must_source(isl.isl_union_access_info_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_access_info(ctx=ctx, ptr=res)
-        return obj
-    def set_schedule(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_access_info:
-                arg0 = union_access_info(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is schedule:
-                arg1 = schedule(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_access_info_set_schedule(isl.isl_union_access_info_copy(arg0.ptr), isl.isl_schedule_copy(arg1.ptr))
-        obj = union_access_info(ctx=ctx, ptr=res)
-        return obj
-    def set_schedule_map(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_access_info:
-                arg0 = union_access_info(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_map:
-                arg1 = union_map(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_access_info_set_schedule_map(isl.isl_union_access_info_copy(arg0.ptr), isl.isl_union_map_copy(arg1.ptr))
-        obj = union_access_info(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_union_access_info_from_sink.restype = c_void_p
-isl.isl_union_access_info_from_sink.argtypes = [c_void_p]
-isl.isl_union_access_info_compute_flow.restype = c_void_p
-isl.isl_union_access_info_compute_flow.argtypes = [c_void_p]
-isl.isl_union_access_info_set_kill.restype = c_void_p
-isl.isl_union_access_info_set_kill.argtypes = [c_void_p, c_void_p]
-isl.isl_union_access_info_set_may_source.restype = c_void_p
-isl.isl_union_access_info_set_may_source.argtypes = [c_void_p, c_void_p]
-isl.isl_union_access_info_set_must_source.restype = c_void_p
-isl.isl_union_access_info_set_must_source.argtypes = [c_void_p, c_void_p]
-isl.isl_union_access_info_set_schedule.restype = c_void_p
-isl.isl_union_access_info_set_schedule.argtypes = [c_void_p, c_void_p]
-isl.isl_union_access_info_set_schedule_map.restype = c_void_p
-isl.isl_union_access_info_set_schedule_map.argtypes = [c_void_p, c_void_p]
-isl.isl_union_access_info_copy.restype = c_void_p
-isl.isl_union_access_info_copy.argtypes = [c_void_p]
-isl.isl_union_access_info_free.restype = c_void_p
-isl.isl_union_access_info_free.argtypes = [c_void_p]
-isl.isl_union_access_info_to_str.restype = POINTER(c_char)
-isl.isl_union_access_info_to_str.argtypes = [c_void_p]
-
-class union_flow(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_union_flow_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is union_flow:
-                arg0 = union_flow(arg0)
-        except:
-            raise
-        ptr = isl.isl_union_flow_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.union_flow("""%s""")' % s
-        else:
-            return 'isl.union_flow("%s")' % s
-    def full_may_dependence(arg0):
-        try:
-            if not arg0.__class__ is union_flow:
-                arg0 = union_flow(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_flow_get_full_may_dependence(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_full_may_dependence(arg0):
-        return arg0.full_may_dependence()
-    def full_must_dependence(arg0):
-        try:
-            if not arg0.__class__ is union_flow:
-                arg0 = union_flow(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_flow_get_full_must_dependence(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_full_must_dependence(arg0):
-        return arg0.full_must_dependence()
-    def may_dependence(arg0):
-        try:
-            if not arg0.__class__ is union_flow:
-                arg0 = union_flow(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_flow_get_may_dependence(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_may_dependence(arg0):
-        return arg0.may_dependence()
-    def may_no_source(arg0):
-        try:
-            if not arg0.__class__ is union_flow:
-                arg0 = union_flow(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_flow_get_may_no_source(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_may_no_source(arg0):
-        return arg0.may_no_source()
-    def must_dependence(arg0):
-        try:
-            if not arg0.__class__ is union_flow:
-                arg0 = union_flow(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_flow_get_must_dependence(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_must_dependence(arg0):
-        return arg0.must_dependence()
-    def must_no_source(arg0):
-        try:
-            if not arg0.__class__ is union_flow:
-                arg0 = union_flow(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_flow_get_must_no_source(arg0.ptr)
-        obj = union_map(ctx=ctx, ptr=res)
-        return obj
-    def get_must_no_source(arg0):
-        return arg0.must_no_source()
-
-isl.isl_union_flow_get_full_may_dependence.restype = c_void_p
-isl.isl_union_flow_get_full_may_dependence.argtypes = [c_void_p]
-isl.isl_union_flow_get_full_must_dependence.restype = c_void_p
-isl.isl_union_flow_get_full_must_dependence.argtypes = [c_void_p]
-isl.isl_union_flow_get_may_dependence.restype = c_void_p
-isl.isl_union_flow_get_may_dependence.argtypes = [c_void_p]
-isl.isl_union_flow_get_may_no_source.restype = c_void_p
-isl.isl_union_flow_get_may_no_source.argtypes = [c_void_p]
-isl.isl_union_flow_get_must_dependence.restype = c_void_p
-isl.isl_union_flow_get_must_dependence.argtypes = [c_void_p]
-isl.isl_union_flow_get_must_no_source.restype = c_void_p
-isl.isl_union_flow_get_must_no_source.argtypes = [c_void_p]
-isl.isl_union_flow_copy.restype = c_void_p
-isl.isl_union_flow_copy.argtypes = [c_void_p]
-isl.isl_union_flow_free.restype = c_void_p
-isl.isl_union_flow_free.argtypes = [c_void_p]
-isl.isl_union_flow_to_str.restype = POINTER(c_char)
-isl.isl_union_flow_to_str.argtypes = [c_void_p]
-
-class union_pw_aff_list(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == int:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_pw_aff_list_alloc(self.ctx, args[0])
-            return
-        if len(args) == 1 and args[0].__class__ is union_pw_aff:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_pw_aff_list_from_union_pw_aff(isl.isl_union_pw_aff_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_pw_aff_list_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_union_pw_aff_list_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is union_pw_aff_list:
-                arg0 = union_pw_aff_list(arg0)
-        except:
-            raise
-        ptr = isl.isl_union_pw_aff_list_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.union_pw_aff_list("""%s""")' % s
-        else:
-            return 'isl.union_pw_aff_list("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_aff_list:
-                arg0 = union_pw_aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_pw_aff:
-                arg1 = union_pw_aff(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_list_add(isl.isl_union_pw_aff_list_copy(arg0.ptr), isl.isl_union_pw_aff_copy(arg1.ptr))
-        obj = union_pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_aff_list:
-                arg0 = union_pw_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_list_get_at(arg0.ptr, arg1)
-        obj = union_pw_aff(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def clear(arg0):
-        try:
-            if not arg0.__class__ is union_pw_aff_list:
-                arg0 = union_pw_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_list_clear(isl.isl_union_pw_aff_list_copy(arg0.ptr))
-        obj = union_pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def concat(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_aff_list:
-                arg0 = union_pw_aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_pw_aff_list:
-                arg1 = union_pw_aff_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_list_concat(isl.isl_union_pw_aff_list_copy(arg0.ptr), isl.isl_union_pw_aff_list_copy(arg1.ptr))
-        obj = union_pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def drop(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is union_pw_aff_list:
-                arg0 = union_pw_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_list_drop(isl.isl_union_pw_aff_list_copy(arg0.ptr), arg1, arg2)
-        obj = union_pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def foreach(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_pw_aff_list:
-                arg0 = union_pw_aff_list(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = union_pw_aff(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_list_foreach(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def insert(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is union_pw_aff_list:
-                arg0 = union_pw_aff_list(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is union_pw_aff:
-                arg2 = union_pw_aff(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_list_insert(isl.isl_union_pw_aff_list_copy(arg0.ptr), arg1, isl.isl_union_pw_aff_copy(arg2.ptr))
-        obj = union_pw_aff_list(ctx=ctx, ptr=res)
-        return obj
-    def size(arg0):
-        try:
-            if not arg0.__class__ is union_pw_aff_list:
-                arg0 = union_pw_aff_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_pw_aff_list_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-
-isl.isl_union_pw_aff_list_alloc.restype = c_void_p
-isl.isl_union_pw_aff_list_alloc.argtypes = [Context, c_int]
-isl.isl_union_pw_aff_list_from_union_pw_aff.restype = c_void_p
-isl.isl_union_pw_aff_list_from_union_pw_aff.argtypes = [c_void_p]
-isl.isl_union_pw_aff_list_read_from_str.restype = c_void_p
-isl.isl_union_pw_aff_list_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_union_pw_aff_list_add.restype = c_void_p
-isl.isl_union_pw_aff_list_add.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_list_get_at.restype = c_void_p
-isl.isl_union_pw_aff_list_get_at.argtypes = [c_void_p, c_int]
-isl.isl_union_pw_aff_list_clear.restype = c_void_p
-isl.isl_union_pw_aff_list_clear.argtypes = [c_void_p]
-isl.isl_union_pw_aff_list_concat.restype = c_void_p
-isl.isl_union_pw_aff_list_concat.argtypes = [c_void_p, c_void_p]
-isl.isl_union_pw_aff_list_drop.restype = c_void_p
-isl.isl_union_pw_aff_list_drop.argtypes = [c_void_p, c_int, c_int]
-isl.isl_union_pw_aff_list_foreach.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_union_pw_aff_list_insert.restype = c_void_p
-isl.isl_union_pw_aff_list_insert.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_union_pw_aff_list_size.argtypes = [c_void_p]
-isl.isl_union_pw_aff_list_copy.restype = c_void_p
-isl.isl_union_pw_aff_list_copy.argtypes = [c_void_p]
-isl.isl_union_pw_aff_list_free.restype = c_void_p
-isl.isl_union_pw_aff_list_free.argtypes = [c_void_p]
-isl.isl_union_pw_aff_list_to_str.restype = POINTER(c_char)
-isl.isl_union_pw_aff_list_to_str.argtypes = [c_void_p]
-
-class union_set_list(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == int:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_set_list_alloc(self.ctx, args[0])
-            return
-        if len(args) == 1 and args[0].__class__ is union_set:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_set_list_from_union_set(isl.isl_union_set_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_union_set_list_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_union_set_list_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is union_set_list:
-                arg0 = union_set_list(arg0)
-        except:
-            raise
-        ptr = isl.isl_union_set_list_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.union_set_list("""%s""")' % s
-        else:
-            return 'isl.union_set_list("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set_list:
-                arg0 = union_set_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set:
-                arg1 = union_set(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_list_add(isl.isl_union_set_list_copy(arg0.ptr), isl.isl_union_set_copy(arg1.ptr))
-        obj = union_set_list(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set_list:
-                arg0 = union_set_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_list_get_at(arg0.ptr, arg1)
-        obj = union_set(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def clear(arg0):
-        try:
-            if not arg0.__class__ is union_set_list:
-                arg0 = union_set_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_list_clear(isl.isl_union_set_list_copy(arg0.ptr))
-        obj = union_set_list(ctx=ctx, ptr=res)
-        return obj
-    def concat(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set_list:
-                arg0 = union_set_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is union_set_list:
-                arg1 = union_set_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_list_concat(isl.isl_union_set_list_copy(arg0.ptr), isl.isl_union_set_list_copy(arg1.ptr))
-        obj = union_set_list(ctx=ctx, ptr=res)
-        return obj
-    def drop(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is union_set_list:
-                arg0 = union_set_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_list_drop(isl.isl_union_set_list_copy(arg0.ptr), arg1, arg2)
-        obj = union_set_list(ctx=ctx, ptr=res)
-        return obj
-    def foreach(arg0, arg1):
-        try:
-            if not arg0.__class__ is union_set_list:
-                arg0 = union_set_list(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = union_set(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_union_set_list_foreach(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def insert(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is union_set_list:
-                arg0 = union_set_list(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is union_set:
-                arg2 = union_set(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_list_insert(isl.isl_union_set_list_copy(arg0.ptr), arg1, isl.isl_union_set_copy(arg2.ptr))
-        obj = union_set_list(ctx=ctx, ptr=res)
-        return obj
-    def size(arg0):
-        try:
-            if not arg0.__class__ is union_set_list:
-                arg0 = union_set_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_union_set_list_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-
-isl.isl_union_set_list_alloc.restype = c_void_p
-isl.isl_union_set_list_alloc.argtypes = [Context, c_int]
-isl.isl_union_set_list_from_union_set.restype = c_void_p
-isl.isl_union_set_list_from_union_set.argtypes = [c_void_p]
-isl.isl_union_set_list_read_from_str.restype = c_void_p
-isl.isl_union_set_list_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_union_set_list_add.restype = c_void_p
-isl.isl_union_set_list_add.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_list_get_at.restype = c_void_p
-isl.isl_union_set_list_get_at.argtypes = [c_void_p, c_int]
-isl.isl_union_set_list_clear.restype = c_void_p
-isl.isl_union_set_list_clear.argtypes = [c_void_p]
-isl.isl_union_set_list_concat.restype = c_void_p
-isl.isl_union_set_list_concat.argtypes = [c_void_p, c_void_p]
-isl.isl_union_set_list_drop.restype = c_void_p
-isl.isl_union_set_list_drop.argtypes = [c_void_p, c_int, c_int]
-isl.isl_union_set_list_foreach.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_union_set_list_insert.restype = c_void_p
-isl.isl_union_set_list_insert.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_union_set_list_size.argtypes = [c_void_p]
-isl.isl_union_set_list_copy.restype = c_void_p
-isl.isl_union_set_list_copy.argtypes = [c_void_p]
-isl.isl_union_set_list_free.restype = c_void_p
-isl.isl_union_set_list_free.argtypes = [c_void_p]
-isl.isl_union_set_list_to_str.restype = POINTER(c_char)
-isl.isl_union_set_list_to_str.argtypes = [c_void_p]
-
-class val(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == int:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_val_int_from_si(self.ctx, args[0])
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_val_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_val_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ptr = isl.isl_val_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.val("""%s""")' % s
-        else:
-            return 'isl.val("%s")' % s
-    def abs(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_abs(isl.isl_val_copy(arg0.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def abs_eq(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_abs_eq(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_add(isl.isl_val_copy(arg0.ptr), isl.isl_val_copy(arg1.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def ceil(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_ceil(isl.isl_val_copy(arg0.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def cmp_si(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_cmp_si(arg0.ptr, arg1)
-        return res
-    def den_si(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_get_den_si(arg0.ptr)
-        return res
-    def get_den_si(arg0):
-        return arg0.den_si()
-    def div(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_div(isl.isl_val_copy(arg0.ptr), isl.isl_val_copy(arg1.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def eq(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_eq(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def floor(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_floor(isl.isl_val_copy(arg0.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def gcd(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_gcd(isl.isl_val_copy(arg0.ptr), isl.isl_val_copy(arg1.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def ge(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_ge(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def gt(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_gt(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    @staticmethod
-    def infty():
-        ctx = Context.getDefaultInstance()
-        res = isl.isl_val_infty(ctx)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def inv(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_inv(isl.isl_val_copy(arg0.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def is_divisible_by(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_divisible_by(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_infty(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_infty(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_int(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_int(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_nan(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_nan(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_neg(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_neg(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_neginfty(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_neginfty(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_negone(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_negone(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_nonneg(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_nonneg(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_nonpos(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_nonpos(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_one(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_one(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_pos(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_pos(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_rat(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_rat(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def is_zero(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_is_zero(arg0.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def le(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_le(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def lt(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_lt(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def max(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_max(isl.isl_val_copy(arg0.ptr), isl.isl_val_copy(arg1.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def min(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_min(isl.isl_val_copy(arg0.ptr), isl.isl_val_copy(arg1.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def mod(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_mod(isl.isl_val_copy(arg0.ptr), isl.isl_val_copy(arg1.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def mul(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_mul(isl.isl_val_copy(arg0.ptr), isl.isl_val_copy(arg1.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def nan():
-        ctx = Context.getDefaultInstance()
-        res = isl.isl_val_nan(ctx)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def ne(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_ne(arg0.ptr, arg1.ptr)
-        if res < 0:
-            raise
-        return bool(res)
-    def neg(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_neg(isl.isl_val_copy(arg0.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def neginfty():
-        ctx = Context.getDefaultInstance()
-        res = isl.isl_val_neginfty(ctx)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def negone():
-        ctx = Context.getDefaultInstance()
-        res = isl.isl_val_negone(ctx)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def num_si(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_get_num_si(arg0.ptr)
-        return res
-    def get_num_si(arg0):
-        return arg0.num_si()
-    @staticmethod
-    def one():
-        ctx = Context.getDefaultInstance()
-        res = isl.isl_val_one(ctx)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def pow2(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_pow2(isl.isl_val_copy(arg0.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def sgn(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_sgn(arg0.ptr)
-        return res
-    def sub(arg0, arg1):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_sub(isl.isl_val_copy(arg0.ptr), isl.isl_val_copy(arg1.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def to_list(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_to_list(isl.isl_val_copy(arg0.ptr))
-        obj = val_list(ctx=ctx, ptr=res)
-        return obj
-    def trunc(arg0):
-        try:
-            if not arg0.__class__ is val:
-                arg0 = val(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_trunc(isl.isl_val_copy(arg0.ptr))
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    @staticmethod
-    def zero():
-        ctx = Context.getDefaultInstance()
-        res = isl.isl_val_zero(ctx)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-
-isl.isl_val_int_from_si.restype = c_void_p
-isl.isl_val_int_from_si.argtypes = [Context, c_long]
-isl.isl_val_read_from_str.restype = c_void_p
-isl.isl_val_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_val_abs.restype = c_void_p
-isl.isl_val_abs.argtypes = [c_void_p]
-isl.isl_val_abs_eq.argtypes = [c_void_p, c_void_p]
-isl.isl_val_add.restype = c_void_p
-isl.isl_val_add.argtypes = [c_void_p, c_void_p]
-isl.isl_val_ceil.restype = c_void_p
-isl.isl_val_ceil.argtypes = [c_void_p]
-isl.isl_val_cmp_si.argtypes = [c_void_p, c_long]
-isl.isl_val_get_den_si.argtypes = [c_void_p]
-isl.isl_val_div.restype = c_void_p
-isl.isl_val_div.argtypes = [c_void_p, c_void_p]
-isl.isl_val_eq.argtypes = [c_void_p, c_void_p]
-isl.isl_val_floor.restype = c_void_p
-isl.isl_val_floor.argtypes = [c_void_p]
-isl.isl_val_gcd.restype = c_void_p
-isl.isl_val_gcd.argtypes = [c_void_p, c_void_p]
-isl.isl_val_ge.argtypes = [c_void_p, c_void_p]
-isl.isl_val_gt.argtypes = [c_void_p, c_void_p]
-isl.isl_val_infty.restype = c_void_p
-isl.isl_val_infty.argtypes = [Context]
-isl.isl_val_inv.restype = c_void_p
-isl.isl_val_inv.argtypes = [c_void_p]
-isl.isl_val_is_divisible_by.argtypes = [c_void_p, c_void_p]
-isl.isl_val_is_infty.argtypes = [c_void_p]
-isl.isl_val_is_int.argtypes = [c_void_p]
-isl.isl_val_is_nan.argtypes = [c_void_p]
-isl.isl_val_is_neg.argtypes = [c_void_p]
-isl.isl_val_is_neginfty.argtypes = [c_void_p]
-isl.isl_val_is_negone.argtypes = [c_void_p]
-isl.isl_val_is_nonneg.argtypes = [c_void_p]
-isl.isl_val_is_nonpos.argtypes = [c_void_p]
-isl.isl_val_is_one.argtypes = [c_void_p]
-isl.isl_val_is_pos.argtypes = [c_void_p]
-isl.isl_val_is_rat.argtypes = [c_void_p]
-isl.isl_val_is_zero.argtypes = [c_void_p]
-isl.isl_val_le.argtypes = [c_void_p, c_void_p]
-isl.isl_val_lt.argtypes = [c_void_p, c_void_p]
-isl.isl_val_max.restype = c_void_p
-isl.isl_val_max.argtypes = [c_void_p, c_void_p]
-isl.isl_val_min.restype = c_void_p
-isl.isl_val_min.argtypes = [c_void_p, c_void_p]
-isl.isl_val_mod.restype = c_void_p
-isl.isl_val_mod.argtypes = [c_void_p, c_void_p]
-isl.isl_val_mul.restype = c_void_p
-isl.isl_val_mul.argtypes = [c_void_p, c_void_p]
-isl.isl_val_nan.restype = c_void_p
-isl.isl_val_nan.argtypes = [Context]
-isl.isl_val_ne.argtypes = [c_void_p, c_void_p]
-isl.isl_val_neg.restype = c_void_p
-isl.isl_val_neg.argtypes = [c_void_p]
-isl.isl_val_neginfty.restype = c_void_p
-isl.isl_val_neginfty.argtypes = [Context]
-isl.isl_val_negone.restype = c_void_p
-isl.isl_val_negone.argtypes = [Context]
-isl.isl_val_get_num_si.argtypes = [c_void_p]
-isl.isl_val_one.restype = c_void_p
-isl.isl_val_one.argtypes = [Context]
-isl.isl_val_pow2.restype = c_void_p
-isl.isl_val_pow2.argtypes = [c_void_p]
-isl.isl_val_sgn.argtypes = [c_void_p]
-isl.isl_val_sub.restype = c_void_p
-isl.isl_val_sub.argtypes = [c_void_p, c_void_p]
-isl.isl_val_to_list.restype = c_void_p
-isl.isl_val_to_list.argtypes = [c_void_p]
-isl.isl_val_trunc.restype = c_void_p
-isl.isl_val_trunc.argtypes = [c_void_p]
-isl.isl_val_zero.restype = c_void_p
-isl.isl_val_zero.argtypes = [Context]
-isl.isl_val_copy.restype = c_void_p
-isl.isl_val_copy.argtypes = [c_void_p]
-isl.isl_val_free.restype = c_void_p
-isl.isl_val_free.argtypes = [c_void_p]
-isl.isl_val_to_str.restype = POINTER(c_char)
-isl.isl_val_to_str.argtypes = [c_void_p]
-
-class val_list(object):
-    def __init__(self, *args, **keywords):
-        if "ptr" in keywords:
-            self.ctx = keywords["ctx"]
-            self.ptr = keywords["ptr"]
-            return
-        if len(args) == 1 and type(args[0]) == int:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_val_list_alloc(self.ctx, args[0])
-            return
-        if len(args) == 1 and (args[0].__class__ is val or type(args[0]) == int):
-            args = list(args)
-            try:
-                if not args[0].__class__ is val:
-                    args[0] = val(args[0])
-            except:
-                raise
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_val_list_from_val(isl.isl_val_copy(args[0].ptr))
-            return
-        if len(args) == 1 and type(args[0]) == str:
-            self.ctx = Context.getDefaultInstance()
-            self.ptr = isl.isl_val_list_read_from_str(self.ctx, args[0].encode('ascii'))
-            return
-        raise Error
-    def __del__(self):
-        if hasattr(self, 'ptr'):
-            isl.isl_val_list_free(self.ptr)
-    def __str__(arg0):
-        try:
-            if not arg0.__class__ is val_list:
-                arg0 = val_list(arg0)
-        except:
-            raise
-        ptr = isl.isl_val_list_to_str(arg0.ptr)
-        res = cast(ptr, c_char_p).value.decode('ascii')
-        libc.free(ptr)
-        return res
-    def __repr__(self):
-        s = str(self)
-        if '"' in s:
-            return 'isl.val_list("""%s""")' % s
-        else:
-            return 'isl.val_list("%s")' % s
-    def add(arg0, arg1):
-        try:
-            if not arg0.__class__ is val_list:
-                arg0 = val_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val:
-                arg1 = val(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_list_add(isl.isl_val_list_copy(arg0.ptr), isl.isl_val_copy(arg1.ptr))
-        obj = val_list(ctx=ctx, ptr=res)
-        return obj
-    def at(arg0, arg1):
-        try:
-            if not arg0.__class__ is val_list:
-                arg0 = val_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_list_get_at(arg0.ptr, arg1)
-        obj = val(ctx=ctx, ptr=res)
-        return obj
-    def get_at(arg0, arg1):
-        return arg0.at(arg1)
-    def clear(arg0):
-        try:
-            if not arg0.__class__ is val_list:
-                arg0 = val_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_list_clear(isl.isl_val_list_copy(arg0.ptr))
-        obj = val_list(ctx=ctx, ptr=res)
-        return obj
-    def concat(arg0, arg1):
-        try:
-            if not arg0.__class__ is val_list:
-                arg0 = val_list(arg0)
-        except:
-            raise
-        try:
-            if not arg1.__class__ is val_list:
-                arg1 = val_list(arg1)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_list_concat(isl.isl_val_list_copy(arg0.ptr), isl.isl_val_list_copy(arg1.ptr))
-        obj = val_list(ctx=ctx, ptr=res)
-        return obj
-    def drop(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is val_list:
-                arg0 = val_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_list_drop(isl.isl_val_list_copy(arg0.ptr), arg1, arg2)
-        obj = val_list(ctx=ctx, ptr=res)
-        return obj
-    def foreach(arg0, arg1):
-        try:
-            if not arg0.__class__ is val_list:
-                arg0 = val_list(arg0)
-        except:
-            raise
-        exc_info = [None]
-        fn = CFUNCTYPE(c_int, c_void_p, c_void_p)
-        def cb_func(cb_arg0, cb_arg1):
-            cb_arg0 = val(ctx=arg0.ctx, ptr=(cb_arg0))
-            try:
-                arg1(cb_arg0)
-            except BaseException as e:
-                exc_info[0] = e
-                return -1
-            return 0
-        cb = fn(cb_func)
-        ctx = arg0.ctx
-        res = isl.isl_val_list_foreach(arg0.ptr, cb, None)
-        if exc_info[0] is not None:
-            raise exc_info[0]
-        if res < 0:
-            raise
-    def insert(arg0, arg1, arg2):
-        try:
-            if not arg0.__class__ is val_list:
-                arg0 = val_list(arg0)
-        except:
-            raise
-        try:
-            if not arg2.__class__ is val:
-                arg2 = val(arg2)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_list_insert(isl.isl_val_list_copy(arg0.ptr), arg1, isl.isl_val_copy(arg2.ptr))
-        obj = val_list(ctx=ctx, ptr=res)
-        return obj
-    def size(arg0):
-        try:
-            if not arg0.__class__ is val_list:
-                arg0 = val_list(arg0)
-        except:
-            raise
-        ctx = arg0.ctx
-        res = isl.isl_val_list_size(arg0.ptr)
-        if res < 0:
-            raise
-        return int(res)
-
-isl.isl_val_list_alloc.restype = c_void_p
-isl.isl_val_list_alloc.argtypes = [Context, c_int]
-isl.isl_val_list_from_val.restype = c_void_p
-isl.isl_val_list_from_val.argtypes = [c_void_p]
-isl.isl_val_list_read_from_str.restype = c_void_p
-isl.isl_val_list_read_from_str.argtypes = [Context, c_char_p]
-isl.isl_val_list_add.restype = c_void_p
-isl.isl_val_list_add.argtypes = [c_void_p, c_void_p]
-isl.isl_val_list_get_at.restype = c_void_p
-isl.isl_val_list_get_at.argtypes = [c_void_p, c_int]
-isl.isl_val_list_clear.restype = c_void_p
-isl.isl_val_list_clear.argtypes = [c_void_p]
-isl.isl_val_list_concat.restype = c_void_p
-isl.isl_val_list_concat.argtypes = [c_void_p, c_void_p]
-isl.isl_val_list_drop.restype = c_void_p
-isl.isl_val_list_drop.argtypes = [c_void_p, c_int, c_int]
-isl.isl_val_list_foreach.argtypes = [c_void_p, c_void_p, c_void_p]
-isl.isl_val_list_insert.restype = c_void_p
-isl.isl_val_list_insert.argtypes = [c_void_p, c_int, c_void_p]
-isl.isl_val_list_size.argtypes = [c_void_p]
-isl.isl_val_list_copy.restype = c_void_p
-isl.isl_val_list_copy.argtypes = [c_void_p]
-isl.isl_val_list_free.restype = c_void_p
-isl.isl_val_list_free.argtypes = [c_void_p]
-isl.isl_val_list_to_str.restype = POINTER(c_char)
-isl.isl_val_list_to_str.argtypes = [c_void_p]
diff --git a/polly/lib/External/isl/interface/isl_config.h.in b/polly/lib/External/isl/interface/isl_config.h.in
deleted file mode 100644 (file)
index e116521..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-/* isl_config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define if HeaderSearchOptions::AddPath takes 4 arguments */
-#undef ADDPATH_TAKES_4_ARGUMENTS
-
-/* Clang installation prefix */
-#undef CLANG_PREFIX
-
-/* Define to sysroot if needed */
-#undef CLANG_SYSROOT
-
-/* Define if CompilerInstance::createDiagnostics takes argc and argv */
-#undef CREATEDIAGNOSTICS_TAKES_ARG
-
-/* Define if CompilerInstance::createPreprocessor takes TranslationUnitKind */
-#undef CREATEPREPROCESSOR_TAKES_TUKIND
-
-/* Define if TargetInfo::CreateTargetInfo takes pointer */
-#undef CREATETARGETINFO_TAKES_POINTER
-
-/* Define if TargetInfo::CreateTargetInfo takes shared_ptr */
-#undef CREATETARGETINFO_TAKES_SHARED_PTR
-
-/* Define if CompilerInvocation::CreateFromArgs takes ArrayRef */
-#undef CREATE_FROM_ARGS_TAKES_ARRAYREF
-
-/* Define if Driver constructor takes default image name */
-#undef DRIVER_CTOR_TAKES_DEFAULTIMAGENAME
-
-/* Define to Diagnostic for older versions of clang */
-#undef DiagnosticsEngine
-
-/* Define if llvm/ADT/OwningPtr.h exists */
-#undef HAVE_ADT_OWNINGPTR_H
-
-/* Define if clang/Basic/DiagnosticOptions.h exists */
-#undef HAVE_BASIC_DIAGNOSTICOPTIONS_H
-
-/* define if the compiler supports basic C++11 syntax */
-#undef HAVE_CXX11
-
-/* Define if Driver constructor takes CXXIsProduction argument */
-#undef HAVE_CXXISPRODUCTION
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define if Driver constructor takes IsProduction argument */
-#undef HAVE_ISPRODUCTION
-
-/* Define if clang/Lex/PreprocessorOptions.h exists */
-#undef HAVE_LEX_PREPROCESSOROPTIONS_H
-
-/* Define if llvm/Option/Arg.h exists */
-#undef HAVE_LLVM_OPTION_ARG_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define if SourceManager has a setMainFileID method */
-#undef HAVE_SETMAINFILEID
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Return type of HandleTopLevelDeclReturn */
-#undef HandleTopLevelDeclContinue
-
-/* Return type of HandleTopLevelDeclReturn */
-#undef HandleTopLevelDeclReturn
-
-/* Define to Language::C or InputKind::C for newer versions of clang */
-#undef IK_C
-
-/* Define to the sub-directory where libtool stores uninstalled libraries. */
-#undef LT_OBJDIR
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Defined if CompilerInstance::setInvocation takes a shared_ptr */
-#undef SETINVOCATION_TAKES_SHARED_PTR
-
-/* Define if CompilerInvocation::setLangDefaults takes 5 arguments */
-#undef SETLANGDEFAULTS_TAKES_5_ARGUMENTS
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define if Driver::BuildCompilation takes ArrayRef */
-#undef USE_ARRAYREF
-
-/* Version number of package */
-#undef VERSION
-
-/* Define to getParamType for newer versions of clang */
-#undef getArgType
-
-/* Define to getHostTriple for older versions of clang */
-#undef getDefaultTargetTriple
-
-/* Define to getInstantiationLineNumber for older versions of clang */
-#undef getExpansionLineNumber
-
-/* Define to getImmediateInstantiationRange for older versions of clang */
-#undef getImmediateExpansionRange
-
-/* Define to getNumParams for newer versions of clang */
-#undef getNumArgs
-
-/* Define to getResultType for older versions of clang */
-#undef getReturnType
-
-/* Define to InitializeBuiltins for older versions of clang */
-#undef initializeBuiltins
diff --git a/polly/lib/External/isl/interface/ltmain.sh b/polly/lib/External/isl/interface/ltmain.sh
deleted file mode 100644 (file)
index 48cea9b..0000000
+++ /dev/null
@@ -1,11369 +0,0 @@
-#! /bin/sh
-## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
-##               by inline-source v2018-07-24.06
-
-# libtool (GNU libtool) 2.4.6.42-b88ce-dirty
-# Provide generalized library-building support services.
-# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-
-PROGRAM=libtool
-PACKAGE=libtool
-VERSION=2.4.6.42-b88ce-dirty
-package_revision=2.4.6.42
-
-
-## ------ ##
-## Usage. ##
-## ------ ##
-
-# Run './libtool --help' for help with using this script from the
-# command line.
-
-
-## ------------------------------- ##
-## User overridable command paths. ##
-## ------------------------------- ##
-
-# After configure completes, it has a better idea of some of the
-# shell tools we need than the defaults used by the functions shared
-# with bootstrap, so set those here where they can still be over-
-# ridden by the user, but otherwise take precedence.
-
-: ${AUTOCONF="autoconf"}
-: ${AUTOMAKE="automake"}
-
-
-## -------------------------- ##
-## Source external libraries. ##
-## -------------------------- ##
-
-# Much of our low-level functionality needs to be sourced from external
-# libraries, which are installed to $pkgauxdir.
-
-# Set a version string for this script.
-scriptversion=2018-07-24.06; # UTC
-
-# General shell script boiler plate, and helper functions.
-# Written by Gary V. Vaughan, 2004
-
-# This is free software.  There is NO warranty; not even for
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#
-# Copyright (C) 2004-2018 Bootstrap Authors
-#
-# This file is dual licensed under the terms of the MIT license
-# <https://opensource.org/license/MIT>, and GPL version 3 or later
-# <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of
-# these licenses when using or redistributing this software or any of
-# the files within it.  See the URLs above, or the file `LICENSE`
-# included in the Bootstrap distribution for the full license texts.
-
-# Please report bugs or propose patches to:
-# <https://github.com/gnulib-modules/bootstrap/issues>
-
-
-## ------ ##
-## Usage. ##
-## ------ ##
-
-# Evaluate this file near the top of your script to gain access to
-# the functions and variables defined here:
-#
-#   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
-#
-# If you need to override any of the default environment variable
-# settings, do that before evaluating this file.
-
-
-## -------------------- ##
-## Shell normalisation. ##
-## -------------------- ##
-
-# Some shells need a little help to be as Bourne compatible as possible.
-# Before doing anything else, make sure all that help has been provided!
-
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
-fi
-
-# NLS nuisances: We save the old values in case they are required later.
-_G_user_locale=
-_G_safe_locale=
-for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
-  eval "if test set = \"\${$_G_var+set}\"; then
-          save_$_G_var=\$$_G_var
-          $_G_var=C
-         export $_G_var
-         _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
-         _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
-       fi"
-done
-
-# Make sure IFS has a sensible default
-sp=' '
-nl='
-'
-IFS="$sp       $nl"
-
-# There are apparently some retarded systems that use ';' as a PATH separator!
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# func_unset VAR
-# --------------
-# Portably unset VAR.
-# In some shells, an 'unset VAR' statement leaves a non-zero return
-# status if VAR is already unset, which might be problematic if the
-# statement is used at the end of a function (thus poisoning its return
-# value) or when 'set -e' is active (causing even a spurious abort of
-# the script in this case).
-func_unset ()
-{
-    { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; }
-}
-
-
-# Make sure CDPATH doesn't cause `cd` commands to output the target dir.
-func_unset CDPATH
-
-# Make sure ${,E,F}GREP behave sanely.
-func_unset GREP_OPTIONS
-
-
-## ------------------------- ##
-## Locate command utilities. ##
-## ------------------------- ##
-
-
-# func_executable_p FILE
-# ----------------------
-# Check that FILE is an executable regular file.
-func_executable_p ()
-{
-    test -f "$1" && test -x "$1"
-}
-
-
-# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
-# --------------------------------------------
-# Search for either a program that responds to --version with output
-# containing "GNU", or else returned by CHECK_FUNC otherwise, by
-# trying all the directories in PATH with each of the elements of
-# PROGS_LIST.
-#
-# CHECK_FUNC should accept the path to a candidate program, and
-# set $func_check_prog_result if it truncates its output less than
-# $_G_path_prog_max characters.
-func_path_progs ()
-{
-    _G_progs_list=$1
-    _G_check_func=$2
-    _G_PATH=${3-"$PATH"}
-
-    _G_path_prog_max=0
-    _G_path_prog_found=false
-    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
-    for _G_dir in $_G_PATH; do
-      IFS=$_G_save_IFS
-      test -z "$_G_dir" && _G_dir=.
-      for _G_prog_name in $_G_progs_list; do
-        for _exeext in '' .EXE; do
-          _G_path_prog=$_G_dir/$_G_prog_name$_exeext
-          func_executable_p "$_G_path_prog" || continue
-          case `"$_G_path_prog" --version 2>&1` in
-            *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
-            *)     $_G_check_func $_G_path_prog
-                  func_path_progs_result=$func_check_prog_result
-                  ;;
-          esac
-          $_G_path_prog_found && break 3
-        done
-      done
-    done
-    IFS=$_G_save_IFS
-    test -z "$func_path_progs_result" && {
-      echo "no acceptable sed could be found in \$PATH" >&2
-      exit 1
-    }
-}
-
-
-# We want to be able to use the functions in this file before configure
-# has figured out where the best binaries are kept, which means we have
-# to search for them ourselves - except when the results are already set
-# where we skip the searches.
-
-# Unless the user overrides by setting SED, search the path for either GNU
-# sed, or the sed that truncates its output the least.
-test -z "$SED" && {
-  _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-  for _G_i in 1 2 3 4 5 6 7; do
-    _G_sed_script=$_G_sed_script$nl$_G_sed_script
-  done
-  echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
-  _G_sed_script=
-
-  func_check_prog_sed ()
-  {
-    _G_path_prog=$1
-
-    _G_count=0
-    printf 0123456789 >conftest.in
-    while :
-    do
-      cat conftest.in conftest.in >conftest.tmp
-      mv conftest.tmp conftest.in
-      cp conftest.in conftest.nl
-      echo '' >> conftest.nl
-      "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
-      diff conftest.out conftest.nl >/dev/null 2>&1 || break
-      _G_count=`expr $_G_count + 1`
-      if test "$_G_count" -gt "$_G_path_prog_max"; then
-        # Best one so far, save it but keep looking for a better one
-        func_check_prog_result=$_G_path_prog
-        _G_path_prog_max=$_G_count
-      fi
-      # 10*(2^10) chars as input seems more than enough
-      test 10 -lt "$_G_count" && break
-    done
-    rm -f conftest.in conftest.tmp conftest.nl conftest.out
-  }
-
-  func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin"
-  rm -f conftest.sed
-  SED=$func_path_progs_result
-}
-
-
-# Unless the user overrides by setting GREP, search the path for either GNU
-# grep, or the grep that truncates its output the least.
-test -z "$GREP" && {
-  func_check_prog_grep ()
-  {
-    _G_path_prog=$1
-
-    _G_count=0
-    _G_path_prog_max=0
-    printf 0123456789 >conftest.in
-    while :
-    do
-      cat conftest.in conftest.in >conftest.tmp
-      mv conftest.tmp conftest.in
-      cp conftest.in conftest.nl
-      echo 'GREP' >> conftest.nl
-      "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
-      diff conftest.out conftest.nl >/dev/null 2>&1 || break
-      _G_count=`expr $_G_count + 1`
-      if test "$_G_count" -gt "$_G_path_prog_max"; then
-        # Best one so far, save it but keep looking for a better one
-        func_check_prog_result=$_G_path_prog
-        _G_path_prog_max=$_G_count
-      fi
-      # 10*(2^10) chars as input seems more than enough
-      test 10 -lt "$_G_count" && break
-    done
-    rm -f conftest.in conftest.tmp conftest.nl conftest.out
-  }
-
-  func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin"
-  GREP=$func_path_progs_result
-}
-
-
-## ------------------------------- ##
-## User overridable command paths. ##
-## ------------------------------- ##
-
-# All uppercase variable names are used for environment variables.  These
-# variables can be overridden by the user before calling a script that
-# uses them if a suitable command of that name is not already available
-# in the command search PATH.
-
-: ${CP="cp -f"}
-: ${ECHO="printf %s\n"}
-: ${EGREP="$GREP -E"}
-: ${FGREP="$GREP -F"}
-: ${LN_S="ln -s"}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-
-
-## -------------------- ##
-## Useful sed snippets. ##
-## -------------------- ##
-
-sed_dirname='s|/[^/]*$||'
-sed_basename='s|^.*/||'
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
-
-# Same as above, but do not quote variable references.
-sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
-
-# Sed substitution that converts a w32 file name or path
-# that contains forward slashes, into one that contains
-# (escaped) backslashes.  A very naive implementation.
-sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-'\' parameter expansions in output of sed_double_quote_subst that
-# were '\'-ed in input to the same.  If an odd number of '\' preceded a
-# '$' in input to sed_double_quote_subst, that '$' was protected from
-# expansion.  Since each input '\' is now two '\'s, look for any number
-# of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
-_G_bs='\\'
-_G_bs2='\\\\'
-_G_bs4='\\\\\\\\'
-_G_dollar='\$'
-sed_double_backslash="\
-  s/$_G_bs4/&\\
-/g
-  s/^$_G_bs2$_G_dollar/$_G_bs&/
-  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
-  s/\n//g"
-
-
-## ----------------- ##
-## Global variables. ##
-## ----------------- ##
-
-# Except for the global variables explicitly listed below, the following
-# functions in the '^func_' namespace, and the '^require_' namespace
-# variables initialised in the 'Resource management' section, sourcing
-# this file will not pollute your global namespace with anything
-# else. There's no portable way to scope variables in Bourne shell
-# though, so actually running these functions will sometimes place
-# results into a variable named after the function, and often use
-# temporary variables in the '^_G_' namespace. If you are careful to
-# avoid using those namespaces casually in your sourcing script, things
-# should continue to work as you expect. And, of course, you can freely
-# overwrite any of the functions or variables defined here before
-# calling anything to customize them.
-
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77     # $? = 77 is used to indicate a skipped test to automake.
-
-# Allow overriding, eg assuming that you follow the convention of
-# putting '$debug_cmd' at the start of all your functions, you can get
-# bash to show function call trace with:
-#
-#    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
-debug_cmd=${debug_cmd-":"}
-exit_cmd=:
-
-# By convention, finish your script with:
-#
-#    exit $exit_status
-#
-# so that you can set exit_status to non-zero if you want to indicate
-# something went wrong during execution without actually bailing out at
-# the point of failure.
-exit_status=$EXIT_SUCCESS
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath=$0
-
-# The name of this program.
-progname=`$ECHO "$progpath" |$SED "$sed_basename"`
-
-# Make sure we have an absolute progpath for reexecution:
-case $progpath in
-  [\\/]*|[A-Za-z]:\\*) ;;
-  *[\\/]*)
-     progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
-     progdir=`cd "$progdir" && pwd`
-     progpath=$progdir/$progname
-     ;;
-  *)
-     _G_IFS=$IFS
-     IFS=${PATH_SEPARATOR-:}
-     for progdir in $PATH; do
-       IFS=$_G_IFS
-       test -x "$progdir/$progname" && break
-     done
-     IFS=$_G_IFS
-     test -n "$progdir" || progdir=`pwd`
-     progpath=$progdir/$progname
-     ;;
-esac
-
-
-## ----------------- ##
-## Standard options. ##
-## ----------------- ##
-
-# The following options affect the operation of the functions defined
-# below, and should be set appropriately depending on run-time para-
-# meters passed on the command line.
-
-opt_dry_run=false
-opt_quiet=false
-opt_verbose=false
-
-# Categories 'all' and 'none' are always available.  Append any others
-# you will pass as the first argument to func_warning from your own
-# code.
-warning_categories=
-
-# By default, display warnings according to 'opt_warning_types'.  Set
-# 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
-# treat the next displayed warning as a fatal error.
-warning_func=func_warn_and_continue
-
-# Set to 'all' to display all warnings, 'none' to suppress all
-# warnings, or a space delimited list of some subset of
-# 'warning_categories' to display only the listed warnings.
-opt_warning_types=all
-
-
-## -------------------- ##
-## Resource management. ##
-## -------------------- ##
-
-# This section contains definitions for functions that each ensure a
-# particular resource (a file, or a non-empty configuration variable for
-# example) is available, and if appropriate to extract default values
-# from pertinent package files. Call them using their associated
-# 'require_*' variable to ensure that they are executed, at most, once.
-#
-# It's entirely deliberate that calling these functions can set
-# variables that don't obey the namespace limitations obeyed by the rest
-# of this file, in order that that they be as useful as possible to
-# callers.
-
-
-# require_term_colors
-# -------------------
-# Allow display of bold text on terminals that support it.
-require_term_colors=func_require_term_colors
-func_require_term_colors ()
-{
-    $debug_cmd
-
-    test -t 1 && {
-      # COLORTERM and USE_ANSI_COLORS environment variables take
-      # precedence, because most terminfo databases neglect to describe
-      # whether color sequences are supported.
-      test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
-
-      if test 1 = "$USE_ANSI_COLORS"; then
-        # Standard ANSI escape sequences
-        tc_reset='\e[0m'
-        tc_bold='\e[1m';   tc_standout='\e[7m'
-        tc_red='\e[31m';   tc_green='\e[32m'
-        tc_blue='\e[34m';  tc_cyan='\e[36m'
-      else
-        # Otherwise trust the terminfo database after all.
-        test -n "`tput sgr0 2>/dev/null`" && {
-          tc_reset=`tput sgr0`
-          test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
-          tc_standout=$tc_bold
-          test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
-          test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
-          test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
-          test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
-          test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
-        }
-      fi
-    }
-
-    require_term_colors=:
-}
-
-
-## ----------------- ##
-## Function library. ##
-## ----------------- ##
-
-# This section contains a variety of useful functions to call in your
-# scripts. Take note of the portable wrappers for features provided by
-# some modern shells, which will fall back to slower equivalents on
-# less featureful shells.
-
-
-# func_append VAR VALUE
-# ---------------------
-# Append VALUE onto the existing contents of VAR.
-
-  # We should try to minimise forks, especially on Windows where they are
-  # unreasonably slow, so skip the feature probes when bash or zsh are
-  # being used:
-  if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
-    : ${_G_HAVE_ARITH_OP="yes"}
-    : ${_G_HAVE_XSI_OPS="yes"}
-    # The += operator was introduced in bash 3.1
-    case $BASH_VERSION in
-      [12].* | 3.0 | 3.0*) ;;
-      *)
-        : ${_G_HAVE_PLUSEQ_OP="yes"}
-        ;;
-    esac
-  fi
-
-  # _G_HAVE_PLUSEQ_OP
-  # Can be empty, in which case the shell is probed, "yes" if += is
-  # useable or anything else if it does not work.
-  test -z "$_G_HAVE_PLUSEQ_OP" \
-    && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
-    && _G_HAVE_PLUSEQ_OP=yes
-
-if test yes = "$_G_HAVE_PLUSEQ_OP"
-then
-  # This is an XSI compatible shell, allowing a faster implementation...
-  eval 'func_append ()
-  {
-    $debug_cmd
-
-    eval "$1+=\$2"
-  }'
-else
-  # ...otherwise fall back to using expr, which is often a shell builtin.
-  func_append ()
-  {
-    $debug_cmd
-
-    eval "$1=\$$1\$2"
-  }
-fi
-
-
-# func_append_quoted VAR VALUE
-# ----------------------------
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-if test yes = "$_G_HAVE_PLUSEQ_OP"; then
-  eval 'func_append_quoted ()
-  {
-    $debug_cmd
-
-    func_quote_arg pretty "$2"
-    eval "$1+=\\ \$func_quote_arg_result"
-  }'
-else
-  func_append_quoted ()
-  {
-    $debug_cmd
-
-    func_quote_arg pretty "$2"
-    eval "$1=\$$1\\ \$func_quote_arg_result"
-  }
-fi
-
-
-# func_append_uniq VAR VALUE
-# --------------------------
-# Append unique VALUE onto the existing contents of VAR, assuming
-# entries are delimited by the first character of VALUE.  For example:
-#
-#   func_append_uniq options " --another-option option-argument"
-#
-# will only append to $options if " --another-option option-argument "
-# is not already present somewhere in $options already (note spaces at
-# each end implied by leading space in second argument).
-func_append_uniq ()
-{
-    $debug_cmd
-
-    eval _G_current_value='`$ECHO $'$1'`'
-    _G_delim=`expr "$2" : '\(.\)'`
-
-    case $_G_delim$_G_current_value$_G_delim in
-      *"$2$_G_delim"*) ;;
-      *) func_append "$@" ;;
-    esac
-}
-
-
-# func_arith TERM...
-# ------------------
-# Set func_arith_result to the result of evaluating TERMs.
-  test -z "$_G_HAVE_ARITH_OP" \
-    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
-    && _G_HAVE_ARITH_OP=yes
-
-if test yes = "$_G_HAVE_ARITH_OP"; then
-  eval 'func_arith ()
-  {
-    $debug_cmd
-
-    func_arith_result=$(( $* ))
-  }'
-else
-  func_arith ()
-  {
-    $debug_cmd
-
-    func_arith_result=`expr "$@"`
-  }
-fi
-
-
-# func_basename FILE
-# ------------------
-# Set func_basename_result to FILE with everything up to and including
-# the last / stripped.
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  # If this shell supports suffix pattern removal, then use it to avoid
-  # forking. Hide the definitions single quotes in case the shell chokes
-  # on unsupported syntax...
-  _b='func_basename_result=${1##*/}'
-  _d='case $1 in
-        */*) func_dirname_result=${1%/*}$2 ;;
-        *  ) func_dirname_result=$3        ;;
-      esac'
-
-else
-  # ...otherwise fall back to using sed.
-  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
-  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
-      if test "X$func_dirname_result" = "X$1"; then
-        func_dirname_result=$3
-      else
-        func_append func_dirname_result "$2"
-      fi'
-fi
-
-eval 'func_basename ()
-{
-    $debug_cmd
-
-    '"$_b"'
-}'
-
-
-# func_dirname FILE APPEND NONDIR_REPLACEMENT
-# -------------------------------------------
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-eval 'func_dirname ()
-{
-    $debug_cmd
-
-    '"$_d"'
-}'
-
-
-# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
-# --------------------------------------------------------
-# Perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# For efficiency, we do not delegate to the functions above but instead
-# duplicate the functionality here.
-eval 'func_dirname_and_basename ()
-{
-    $debug_cmd
-
-    '"$_b"'
-    '"$_d"'
-}'
-
-
-# func_echo ARG...
-# ----------------
-# Echo program name prefixed message.
-func_echo ()
-{
-    $debug_cmd
-
-    _G_message=$*
-
-    func_echo_IFS=$IFS
-    IFS=$nl
-    for _G_line in $_G_message; do
-      IFS=$func_echo_IFS
-      $ECHO "$progname: $_G_line"
-    done
-    IFS=$func_echo_IFS
-}
-
-
-# func_echo_all ARG...
-# --------------------
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*"
-}
-
-
-# func_echo_infix_1 INFIX ARG...
-# ------------------------------
-# Echo program name, followed by INFIX on the first line, with any
-# additional lines not showing INFIX.
-func_echo_infix_1 ()
-{
-    $debug_cmd
-
-    $require_term_colors
-
-    _G_infix=$1; shift
-    _G_indent=$_G_infix
-    _G_prefix="$progname: $_G_infix: "
-    _G_message=$*
-
-    # Strip color escape sequences before counting printable length
-    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
-    do
-      test -n "$_G_tc" && {
-        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
-        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
-      }
-    done
-    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
-
-    func_echo_infix_1_IFS=$IFS
-    IFS=$nl
-    for _G_line in $_G_message; do
-      IFS=$func_echo_infix_1_IFS
-      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
-      _G_prefix=$_G_indent
-    done
-    IFS=$func_echo_infix_1_IFS
-}
-
-
-# func_error ARG...
-# -----------------
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $debug_cmd
-
-    $require_term_colors
-
-    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
-}
-
-
-# func_fatal_error ARG...
-# -----------------------
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    $debug_cmd
-
-    func_error "$*"
-    exit $EXIT_FAILURE
-}
-
-
-# func_grep EXPRESSION FILENAME
-# -----------------------------
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
-    $debug_cmd
-
-    $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_len STRING
-# ---------------
-# Set func_len_result to the length of STRING. STRING may not
-# start with a hyphen.
-  test -z "$_G_HAVE_XSI_OPS" \
-    && (eval 'x=a/b/c;
-      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
-    && _G_HAVE_XSI_OPS=yes
-
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  eval 'func_len ()
-  {
-    $debug_cmd
-
-    func_len_result=${#1}
-  }'
-else
-  func_len ()
-  {
-    $debug_cmd
-
-    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
-  }
-fi
-
-
-# func_mkdir_p DIRECTORY-PATH
-# ---------------------------
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
-    $debug_cmd
-
-    _G_directory_path=$1
-    _G_dir_list=
-
-    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
-
-      # Protect directory names starting with '-'
-      case $_G_directory_path in
-        -*) _G_directory_path=./$_G_directory_path ;;
-      esac
-
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$_G_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-       # list incase some portion of path contains whitespace.
-        _G_dir_list=$_G_directory_path:$_G_dir_list
-
-        # If the last portion added has no slash in it, the list is done
-        case $_G_directory_path in */*) ;; *) break ;; esac
-
-        # ...otherwise throw away the child directory and loop
-        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
-      done
-      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
-
-      func_mkdir_p_IFS=$IFS; IFS=:
-      for _G_dir in $_G_dir_list; do
-       IFS=$func_mkdir_p_IFS
-        # mkdir can fail with a 'File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$_G_dir" 2>/dev/null || :
-      done
-      IFS=$func_mkdir_p_IFS
-
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$_G_directory_path" || \
-        func_fatal_error "Failed to create '$1'"
-    fi
-}
-
-
-# func_mktempdir [BASENAME]
-# -------------------------
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, BASENAME is the basename for that directory.
-func_mktempdir ()
-{
-    $debug_cmd
-
-    _G_template=${TMPDIR-/tmp}/${1-$progname}
-
-    if test : = "$opt_dry_run"; then
-      # Return a directory name, but don't create it in dry-run mode
-      _G_tmpdir=$_G_template-$$
-    else
-
-      # If mktemp works, use that first and foremost
-      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
-
-      if test ! -d "$_G_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        _G_tmpdir=$_G_template-${RANDOM-0}$$
-
-        func_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$_G_tmpdir"
-        umask $func_mktempdir_umask
-      fi
-
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$_G_tmpdir" || \
-        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
-    fi
-
-    $ECHO "$_G_tmpdir"
-}
-
-
-# func_normal_abspath PATH
-# ------------------------
-# Remove doubled-up and trailing slashes, "." path components,
-# and cancel out any ".." path components in PATH after making
-# it an absolute path.
-func_normal_abspath ()
-{
-    $debug_cmd
-
-    # These SED scripts presuppose an absolute path with a trailing slash.
-    _G_pathcar='s|^/\([^/]*\).*$|\1|'
-    _G_pathcdr='s|^/[^/]*||'
-    _G_removedotparts=':dotsl
-               s|/\./|/|g
-               t dotsl
-               s|/\.$|/|'
-    _G_collapseslashes='s|/\{1,\}|/|g'
-    _G_finalslash='s|/*$|/|'
-
-    # Start from root dir and reassemble the path.
-    func_normal_abspath_result=
-    func_normal_abspath_tpath=$1
-    func_normal_abspath_altnamespace=
-    case $func_normal_abspath_tpath in
-      "")
-        # Empty path, that just means $cwd.
-        func_stripname '' '/' "`pwd`"
-        func_normal_abspath_result=$func_stripname_result
-        return
-        ;;
-      # The next three entries are used to spot a run of precisely
-      # two leading slashes without using negated character classes;
-      # we take advantage of case's first-match behaviour.
-      ///*)
-        # Unusual form of absolute path, do nothing.
-        ;;
-      //*)
-        # Not necessarily an ordinary path; POSIX reserves leading '//'
-        # and for example Cygwin uses it to access remote file shares
-        # over CIFS/SMB, so we conserve a leading double slash if found.
-        func_normal_abspath_altnamespace=/
-        ;;
-      /*)
-        # Absolute path, do nothing.
-        ;;
-      *)
-        # Relative path, prepend $cwd.
-        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
-        ;;
-    esac
-
-    # Cancel out all the simple stuff to save iterations.  We also want
-    # the path to end with a slash for ease of parsing, so make sure
-    # there is one (and only one) here.
-    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
-    while :; do
-      # Processed it all yet?
-      if test / = "$func_normal_abspath_tpath"; then
-        # If we ascended to the root using ".." the result may be empty now.
-        if test -z "$func_normal_abspath_result"; then
-          func_normal_abspath_result=/
-        fi
-        break
-      fi
-      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-          -e "$_G_pathcar"`
-      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-          -e "$_G_pathcdr"`
-      # Figure out what to do with it
-      case $func_normal_abspath_tcomponent in
-        "")
-          # Trailing empty path component, ignore it.
-          ;;
-        ..)
-          # Parent dir; strip last assembled component from result.
-          func_dirname "$func_normal_abspath_result"
-          func_normal_abspath_result=$func_dirname_result
-          ;;
-        *)
-          # Actual path component, append it.
-          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
-          ;;
-      esac
-    done
-    # Restore leading double-slash if one was found on entry.
-    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
-
-
-# func_notquiet ARG...
-# --------------------
-# Echo program name prefixed message only when not in quiet mode.
-func_notquiet ()
-{
-    $debug_cmd
-
-    $opt_quiet || func_echo ${1+"$@"}
-
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
-}
-
-
-# func_relative_path SRCDIR DSTDIR
-# --------------------------------
-# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
-func_relative_path ()
-{
-    $debug_cmd
-
-    func_relative_path_result=
-    func_normal_abspath "$1"
-    func_relative_path_tlibdir=$func_normal_abspath_result
-    func_normal_abspath "$2"
-    func_relative_path_tbindir=$func_normal_abspath_result
-
-    # Ascend the tree starting from libdir
-    while :; do
-      # check if we have found a prefix of bindir
-      case $func_relative_path_tbindir in
-        $func_relative_path_tlibdir)
-          # found an exact match
-          func_relative_path_tcancelled=
-          break
-          ;;
-        $func_relative_path_tlibdir*)
-          # found a matching prefix
-          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
-          func_relative_path_tcancelled=$func_stripname_result
-          if test -z "$func_relative_path_result"; then
-            func_relative_path_result=.
-          fi
-          break
-          ;;
-        *)
-          func_dirname $func_relative_path_tlibdir
-          func_relative_path_tlibdir=$func_dirname_result
-          if test -z "$func_relative_path_tlibdir"; then
-            # Have to descend all the way to the root!
-            func_relative_path_result=../$func_relative_path_result
-            func_relative_path_tcancelled=$func_relative_path_tbindir
-            break
-          fi
-          func_relative_path_result=../$func_relative_path_result
-          ;;
-      esac
-    done
-
-    # Now calculate path; take care to avoid doubling-up slashes.
-    func_stripname '' '/' "$func_relative_path_result"
-    func_relative_path_result=$func_stripname_result
-    func_stripname '/' '/' "$func_relative_path_tcancelled"
-    if test -n "$func_stripname_result"; then
-      func_append func_relative_path_result "/$func_stripname_result"
-    fi
-
-    # Normalisation. If bindir is libdir, return '.' else relative path.
-    if test -n "$func_relative_path_result"; then
-      func_stripname './' '' "$func_relative_path_result"
-      func_relative_path_result=$func_stripname_result
-    fi
-
-    test -n "$func_relative_path_result" || func_relative_path_result=.
-
-    :
-}
-
-
-# func_quote_portable EVAL ARG
-# ----------------------------
-# Internal function to portably implement func_quote_arg.  Note that we still
-# keep attention to performance here so we as much as possible try to avoid
-# calling sed binary (so far O(N) complexity as long as func_append is O(1)).
-func_quote_portable ()
-{
-    $debug_cmd
-
-    func_quote_portable_result=$2
-
-    # one-time-loop (easy break)
-    while true
-    do
-      if $1; then
-        func_quote_portable_result=`$ECHO "$2" | $SED \
-          -e "$sed_double_quote_subst" -e "$sed_double_backslash"`
-        break
-      fi
-
-      # Quote for eval.
-      case $func_quote_portable_result in
-        *[\\\`\"\$]*)
-          case $func_quote_portable_result in
-            *[\[\*\?]*)
-              func_quote_portable_result=`$ECHO "$func_quote_portable_result" \
-                  | $SED "$sed_quote_subst"`
-              break
-              ;;
-          esac
-
-          func_quote_portable_old_IFS=$IFS
-          for _G_char in '\' '`' '"' '$'
-          do
-            # STATE($1) PREV($2) SEPARATOR($3)
-            set start "" ""
-            func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy
-            IFS=$_G_char
-            for _G_part in $func_quote_portable_result
-            do
-              case $1 in
-              quote)
-                func_append func_quote_portable_result "$3$2"
-                set quote "$_G_part" "\\$_G_char"
-                ;;
-              start)
-                set first "" ""
-                func_quote_portable_result=
-                ;;
-              first)
-                set quote "$_G_part" ""
-                ;;
-              esac
-            done
-          done
-          IFS=$func_quote_portable_old_IFS
-          ;;
-        *) ;;
-      esac
-      break
-    done
-
-    func_quote_portable_unquoted_result=$func_quote_portable_result
-    case $func_quote_portable_result in
-      # double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and variable expansion
-      # for a subsequent eval.
-      # many bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
-        func_quote_portable_result=\"$func_quote_portable_result\"
-        ;;
-    esac
-}
-
-
-# func_quotefast_eval ARG
-# -----------------------
-# Quote one ARG (internal).  This is equivalent to 'func_quote_arg eval ARG',
-# but optimized for speed.  Result is stored in $func_quotefast_eval.
-if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then
-  printf -v _GL_test_printf_tilde %q '~'
-  if test '\~' = "$_GL_test_printf_tilde"; then
-    func_quotefast_eval ()
-    {
-      printf -v func_quotefast_eval_result %q "$1"
-    }
-  else
-    # Broken older Bash implementations.  Make those faster too if possible.
-    func_quotefast_eval ()
-    {
-      case $1 in
-        '~'*)
-          func_quote_portable false "$1"
-          func_quotefast_eval_result=$func_quote_portable_result
-          ;;
-        *)
-          printf -v func_quotefast_eval_result %q "$1"
-          ;;
-      esac
-    }
-  fi
-else
-  func_quotefast_eval ()
-  {
-    func_quote_portable false "$1"
-    func_quotefast_eval_result=$func_quote_portable_result
-  }
-fi
-
-
-# func_quote_arg MODEs ARG
-# ------------------------
-# Quote one ARG to be evaled later.  MODEs argument may contain zero or more
-# specifiers listed below separated by ',' character.  This function returns two
-# values:
-#   i) func_quote_arg_result
-#      double-quoted (when needed), suitable for a subsequent eval
-#  ii) func_quote_arg_unquoted_result
-#      has all characters that are still active within double
-#      quotes backslashified.  Available only if 'unquoted' is specified.
-#
-# Available modes:
-# ----------------
-# 'eval' (default)
-#       - escape shell special characters
-# 'expand'
-#       - the same as 'eval';  but do not quote variable references
-# 'pretty'
-#       - request aesthetic output, i.e. '"a b"' instead of 'a\ b'.  This might
-#         be used later in func_quote to get output like: 'echo "a b"' instead
-#         of 'echo a\ b'.  This is slower than default on some shells.
-# 'unquoted'
-#       - produce also $func_quote_arg_unquoted_result which does not contain
-#         wrapping double-quotes.
-#
-# Examples for 'func_quote_arg pretty,unquoted string':
-#
-#   string      | *_result              | *_unquoted_result
-#   ------------+-----------------------+-------------------
-#   "           | \"                    | \"
-#   a b         | "a b"                 | a b
-#   "a b"       | "\"a b\""             | \"a b\"
-#   *           | "*"                   | *
-#   z="${x-$y}" | "z=\"\${x-\$y}\""     | z=\"\${x-\$y}\"
-#
-# Examples for 'func_quote_arg pretty,unquoted,expand string':
-#
-#   string        |   *_result          |  *_unquoted_result
-#   --------------+---------------------+--------------------
-#   z="${x-$y}"   | "z=\"${x-$y}\""     | z=\"${x-$y}\"
-func_quote_arg ()
-{
-    _G_quote_expand=false
-    case ,$1, in
-      *,expand,*)
-        _G_quote_expand=:
-        ;;
-    esac
-
-    case ,$1, in
-      *,pretty,*|*,expand,*|*,unquoted,*)
-        func_quote_portable $_G_quote_expand "$2"
-        func_quote_arg_result=$func_quote_portable_result
-        func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result
-        ;;
-      *)
-        # Faster quote-for-eval for some shells.
-        func_quotefast_eval "$2"
-        func_quote_arg_result=$func_quotefast_eval_result
-        ;;
-    esac
-}
-
-
-# func_quote MODEs ARGs...
-# ------------------------
-# Quote all ARGs to be evaled later and join them into single command.  See
-# func_quote_arg's description for more info.
-func_quote ()
-{
-    $debug_cmd
-    _G_func_quote_mode=$1 ; shift
-    func_quote_result=
-    while test 0 -lt $#; do
-      func_quote_arg "$_G_func_quote_mode" "$1"
-      if test -n "$func_quote_result"; then
-        func_append func_quote_result " $func_quote_arg_result"
-      else
-        func_append func_quote_result "$func_quote_arg_result"
-      fi
-      shift
-    done
-}
-
-
-# func_stripname PREFIX SUFFIX NAME
-# ---------------------------------
-# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  eval 'func_stripname ()
-  {
-    $debug_cmd
-
-    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-    # positional parameters, so assign one to ordinary variable first.
-    func_stripname_result=$3
-    func_stripname_result=${func_stripname_result#"$1"}
-    func_stripname_result=${func_stripname_result%"$2"}
-  }'
-else
-  func_stripname ()
-  {
-    $debug_cmd
-
-    case $2 in
-      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
-      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
-    esac
-  }
-fi
-
-
-# func_show_eval CMD [FAIL_EXP]
-# -----------------------------
-# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
-    $debug_cmd
-
-    _G_cmd=$1
-    _G_fail_exp=${2-':'}
-
-    func_quote_arg pretty,expand "$_G_cmd"
-    eval "func_notquiet $func_quote_arg_result"
-
-    $opt_dry_run || {
-      eval "$_G_cmd"
-      _G_status=$?
-      if test 0 -ne "$_G_status"; then
-       eval "(exit $_G_status); $_G_fail_exp"
-      fi
-    }
-}
-
-
-# func_show_eval_locale CMD [FAIL_EXP]
-# ------------------------------------
-# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.  Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
-    $debug_cmd
-
-    _G_cmd=$1
-    _G_fail_exp=${2-':'}
-
-    $opt_quiet || {
-      func_quote_arg expand,pretty "$_G_cmd"
-      eval "func_echo $func_quote_arg_result"
-    }
-
-    $opt_dry_run || {
-      eval "$_G_user_locale
-           $_G_cmd"
-      _G_status=$?
-      eval "$_G_safe_locale"
-      if test 0 -ne "$_G_status"; then
-       eval "(exit $_G_status); $_G_fail_exp"
-      fi
-    }
-}
-
-
-# func_tr_sh
-# ----------
-# Turn $1 into a string suitable for a shell variable name.
-# Result is stored in $func_tr_sh_result.  All characters
-# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
-# if $1 begins with a digit, a '_' is prepended as well.
-func_tr_sh ()
-{
-    $debug_cmd
-
-    case $1 in
-    [0-9]* | *[!a-zA-Z0-9_]*)
-      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
-      ;;
-    * )
-      func_tr_sh_result=$1
-      ;;
-    esac
-}
-
-
-# func_verbose ARG...
-# -------------------
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $debug_cmd
-
-    $opt_verbose && func_echo "$*"
-
-    :
-}
-
-
-# func_warn_and_continue ARG...
-# -----------------------------
-# Echo program name prefixed warning message to standard error.
-func_warn_and_continue ()
-{
-    $debug_cmd
-
-    $require_term_colors
-
-    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
-}
-
-
-# func_warning CATEGORY ARG...
-# ----------------------------
-# Echo program name prefixed warning message to standard error. Warning
-# messages can be filtered according to CATEGORY, where this function
-# elides messages where CATEGORY is not listed in the global variable
-# 'opt_warning_types'.
-func_warning ()
-{
-    $debug_cmd
-
-    # CATEGORY must be in the warning_categories list!
-    case " $warning_categories " in
-      *" $1 "*) ;;
-      *) func_internal_error "invalid warning category '$1'" ;;
-    esac
-
-    _G_category=$1
-    shift
-
-    case " $opt_warning_types " in
-      *" $_G_category "*) $warning_func ${1+"$@"} ;;
-    esac
-}
-
-
-# func_sort_ver VER1 VER2
-# -----------------------
-# 'sort -V' is not generally available.
-# Note this deviates from the version comparison in automake
-# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
-# but this should suffice as we won't be specifying old
-# version formats or redundant trailing .0 in bootstrap.conf.
-# If we did want full compatibility then we should probably
-# use m4_version_compare from autoconf.
-func_sort_ver ()
-{
-    $debug_cmd
-
-    printf '%s\n%s\n' "$1" "$2" \
-      | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
-}
-
-# func_lt_ver PREV CURR
-# ---------------------
-# Return true if PREV and CURR are in the correct order according to
-# func_sort_ver, otherwise false.  Use it like this:
-#
-#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
-func_lt_ver ()
-{
-    $debug_cmd
-
-    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
-}
-
-
-# Local variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
-# time-stamp-time-zone: "UTC"
-# End:
-#! /bin/sh
-
-# A portable, pluggable option parser for Bourne shell.
-# Written by Gary V. Vaughan, 2010
-
-# This is free software.  There is NO warranty; not even for
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#
-# Copyright (C) 2010-2018 Bootstrap Authors
-#
-# This file is dual licensed under the terms of the MIT license
-# <https://opensource.org/license/MIT>, and GPL version 3 or later
-# <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of
-# these licenses when using or redistributing this software or any of
-# the files within it.  See the URLs above, or the file `LICENSE`
-# included in the Bootstrap distribution for the full license texts.
-
-# Please report bugs or propose patches to:
-# <https://github.com/gnulib-modules/bootstrap/issues>
-
-# Set a version string for this script.
-scriptversion=2018-07-24.06; # UTC
-
-
-## ------ ##
-## Usage. ##
-## ------ ##
-
-# This file is a library for parsing options in your shell scripts along
-# with assorted other useful supporting features that you can make use
-# of too.
-#
-# For the simplest scripts you might need only:
-#
-#   #!/bin/sh
-#   . relative/path/to/funclib.sh
-#   . relative/path/to/options-parser
-#   scriptversion=1.0
-#   func_options ${1+"$@"}
-#   eval set dummy "$func_options_result"; shift
-#   ...rest of your script...
-#
-# In order for the '--version' option to work, you will need to have a
-# suitably formatted comment like the one at the top of this file
-# starting with '# Written by ' and ending with '# Copyright'.
-#
-# For '-h' and '--help' to work, you will also need a one line
-# description of your script's purpose in a comment directly above the
-# '# Written by ' line, like the one at the top of this file.
-#
-# The default options also support '--debug', which will turn on shell
-# execution tracing (see the comment above debug_cmd below for another
-# use), and '--verbose' and the func_verbose function to allow your script
-# to display verbose messages only when your user has specified
-# '--verbose'.
-#
-# After sourcing this file, you can plug in processing for additional
-# options by amending the variables from the 'Configuration' section
-# below, and following the instructions in the 'Option parsing'
-# section further down.
-
-## -------------- ##
-## Configuration. ##
-## -------------- ##
-
-# You should override these variables in your script after sourcing this
-# file so that they reflect the customisations you have added to the
-# option parser.
-
-# The usage line for option parsing errors and the start of '-h' and
-# '--help' output messages. You can embed shell variables for delayed
-# expansion at the time the message is displayed, but you will need to
-# quote other shell meta-characters carefully to prevent them being
-# expanded when the contents are evaled.
-usage='$progpath [OPTION]...'
-
-# Short help message in response to '-h' and '--help'.  Add to this or
-# override it after sourcing this library to reflect the full set of
-# options your script accepts.
-usage_message="\
-       --debug        enable verbose shell tracing
-   -W, --warnings=CATEGORY
-                      report the warnings falling in CATEGORY [all]
-   -v, --verbose      verbosely report processing
-       --version      print version information and exit
-   -h, --help         print short or long help message and exit
-"
-
-# Additional text appended to 'usage_message' in response to '--help'.
-long_help_message="
-Warning categories include:
-       'all'          show all warnings
-       'none'         turn off all the warnings
-       'error'        warnings are treated as fatal errors"
-
-# Help message printed before fatal option parsing errors.
-fatal_help="Try '\$progname --help' for more information."
-
-
-
-## ------------------------- ##
-## Hook function management. ##
-## ------------------------- ##
-
-# This section contains functions for adding, removing, and running hooks
-# in the main code.  A hook is just a list of function names that can be
-# run in order later on.
-
-# func_hookable FUNC_NAME
-# -----------------------
-# Declare that FUNC_NAME will run hooks added with
-# 'func_add_hook FUNC_NAME ...'.
-func_hookable ()
-{
-    $debug_cmd
-
-    func_append hookable_fns " $1"
-}
-
-
-# func_add_hook FUNC_NAME HOOK_FUNC
-# ---------------------------------
-# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
-# first have been declared "hookable" by a call to 'func_hookable'.
-func_add_hook ()
-{
-    $debug_cmd
-
-    case " $hookable_fns " in
-      *" $1 "*) ;;
-      *) func_fatal_error "'$1' does not accept hook functions." ;;
-    esac
-
-    eval func_append ${1}_hooks '" $2"'
-}
-
-
-# func_remove_hook FUNC_NAME HOOK_FUNC
-# ------------------------------------
-# Remove HOOK_FUNC from the list of hook functions to be called by
-# FUNC_NAME.
-func_remove_hook ()
-{
-    $debug_cmd
-
-    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
-}
-
-
-# func_propagate_result FUNC_NAME_A FUNC_NAME_B
-# ---------------------------------------------
-# If the *_result variable of FUNC_NAME_A _is set_, assign its value to
-# *_result variable of FUNC_NAME_B.
-func_propagate_result ()
-{
-    $debug_cmd
-
-    func_propagate_result_result=:
-    if eval "test \"\${${1}_result+set}\" = set"
-    then
-      eval "${2}_result=\$${1}_result"
-    else
-      func_propagate_result_result=false
-    fi
-}
-
-
-# func_run_hooks FUNC_NAME [ARG]...
-# ---------------------------------
-# Run all hook functions registered to FUNC_NAME.
-# It's assumed that the list of hook functions contains nothing more
-# than a whitespace-delimited list of legal shell function names, and
-# no effort is wasted trying to catch shell meta-characters or preserve
-# whitespace.
-func_run_hooks ()
-{
-    $debug_cmd
-
-    case " $hookable_fns " in
-      *" $1 "*) ;;
-      *) func_fatal_error "'$1' does not support hook functions." ;;
-    esac
-
-    eval _G_hook_fns=\$$1_hooks; shift
-
-    for _G_hook in $_G_hook_fns; do
-      func_unset "${_G_hook}_result"
-      eval $_G_hook '${1+"$@"}'
-      func_propagate_result $_G_hook func_run_hooks
-      if $func_propagate_result_result; then
-        eval set dummy "$func_run_hooks_result"; shift
-      fi
-    done
-}
-
-
-
-## --------------- ##
-## Option parsing. ##
-## --------------- ##
-
-# In order to add your own option parsing hooks, you must accept the
-# full positional parameter list from your hook function.  You may remove
-# or edit any options that you action, and then pass back the remaining
-# unprocessed options in '<hooked_function_name>_result', escaped
-# suitably for 'eval'.
-#
-# The '<hooked_function_name>_result' variable is automatically unset
-# before your hook gets called; for best performance, only set the
-# *_result variable when necessary (i.e. don't call the 'func_quote'
-# function unnecessarily because it can be an expensive operation on some
-# machines).
-#
-# Like this:
-#
-#    my_options_prep ()
-#    {
-#        $debug_cmd
-#
-#        # Extend the existing usage message.
-#        usage_message=$usage_message'
-#      -s, --silent       don'\''t print informational messages
-#    '
-#        # No change in '$@' (ignored completely by this hook).  Leave
-#        # my_options_prep_result variable intact.
-#    }
-#    func_add_hook func_options_prep my_options_prep
-#
-#
-#    my_silent_option ()
-#    {
-#        $debug_cmd
-#
-#        args_changed=false
-#
-#        # Note that, for efficiency, we parse as many options as we can
-#        # recognise in a loop before passing the remainder back to the
-#        # caller on the first unrecognised argument we encounter.
-#        while test $# -gt 0; do
-#          opt=$1; shift
-#          case $opt in
-#            --silent|-s) opt_silent=:
-#                         args_changed=:
-#                         ;;
-#            # Separate non-argument short options:
-#            -s*)         func_split_short_opt "$_G_opt"
-#                         set dummy "$func_split_short_opt_name" \
-#                             "-$func_split_short_opt_arg" ${1+"$@"}
-#                         shift
-#                         args_changed=:
-#                         ;;
-#            *)           # Make sure the first unrecognised option "$_G_opt"
-#                         # is added back to "$@" in case we need it later,
-#                         # if $args_changed was set to 'true'.
-#                         set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
-#          esac
-#        done
-#
-#        # Only call 'func_quote' here if we processed at least one argument.
-#        if $args_changed; then
-#          func_quote eval ${1+"$@"}
-#          my_silent_option_result=$func_quote_result
-#        fi
-#    }
-#    func_add_hook func_parse_options my_silent_option
-#
-#
-#    my_option_validation ()
-#    {
-#        $debug_cmd
-#
-#        $opt_silent && $opt_verbose && func_fatal_help "\
-#    '--silent' and '--verbose' options are mutually exclusive."
-#    }
-#    func_add_hook func_validate_options my_option_validation
-#
-# You'll also need to manually amend $usage_message to reflect the extra
-# options you parse.  It's preferable to append if you can, so that
-# multiple option parsing hooks can be added safely.
-
-
-# func_options_finish [ARG]...
-# ----------------------------
-# Finishing the option parse loop (call 'func_options' hooks ATM).
-func_options_finish ()
-{
-    $debug_cmd
-
-    func_run_hooks func_options ${1+"$@"}
-    func_propagate_result func_run_hooks func_options_finish
-}
-
-
-# func_options [ARG]...
-# ---------------------
-# All the functions called inside func_options are hookable. See the
-# individual implementations for details.
-func_hookable func_options
-func_options ()
-{
-    $debug_cmd
-
-    _G_options_quoted=false
-
-    for my_func in options_prep parse_options validate_options options_finish
-    do
-      func_unset func_${my_func}_result
-      func_unset func_run_hooks_result
-      eval func_$my_func '${1+"$@"}'
-      func_propagate_result func_$my_func func_options
-      if $func_propagate_result_result; then
-        eval set dummy "$func_options_result"; shift
-        _G_options_quoted=:
-      fi
-    done
-
-    $_G_options_quoted || {
-      # As we (func_options) are top-level options-parser function and
-      # nobody quoted "$@" for us yet, we need to do it explicitly for
-      # caller.
-      func_quote eval ${1+"$@"}
-      func_options_result=$func_quote_result
-    }
-}
-
-
-# func_options_prep [ARG]...
-# --------------------------
-# All initialisations required before starting the option parse loop.
-# Note that when calling hook functions, we pass through the list of
-# positional parameters.  If a hook function modifies that list, and
-# needs to propagate that back to rest of this script, then the complete
-# modified list must be put in 'func_run_hooks_result' before returning.
-func_hookable func_options_prep
-func_options_prep ()
-{
-    $debug_cmd
-
-    # Option defaults:
-    opt_verbose=false
-    opt_warning_types=
-
-    func_run_hooks func_options_prep ${1+"$@"}
-    func_propagate_result func_run_hooks func_options_prep
-}
-
-
-# func_parse_options [ARG]...
-# ---------------------------
-# The main option parsing loop.
-func_hookable func_parse_options
-func_parse_options ()
-{
-    $debug_cmd
-
-    _G_parse_options_requote=false
-    # this just eases exit handling
-    while test $# -gt 0; do
-      # Defer to hook functions for initial option parsing, so they
-      # get priority in the event of reusing an option name.
-      func_run_hooks func_parse_options ${1+"$@"}
-      func_propagate_result func_run_hooks func_parse_options
-      if $func_propagate_result_result; then
-        eval set dummy "$func_parse_options_result"; shift
-        # Even though we may have changed "$@", we passed the "$@" array
-        # down into the hook and it quoted it for us (because we are in
-        # this if-branch).  No need to quote it again.
-        _G_parse_options_requote=false
-      fi
-
-      # Break out of the loop if we already parsed every option.
-      test $# -gt 0 || break
-
-      # We expect that one of the options parsed in this function matches
-      # and thus we remove _G_opt from "$@" and need to re-quote.
-      _G_match_parse_options=:
-      _G_opt=$1
-      shift
-      case $_G_opt in
-        --debug|-x)   debug_cmd='set -x'
-                      func_echo "enabling shell trace mode" >&2
-                      $debug_cmd
-                      ;;
-
-        --no-warnings|--no-warning|--no-warn)
-                      set dummy --warnings none ${1+"$@"}
-                      shift
-                     ;;
-
-        --warnings|--warning|-W)
-                      if test $# = 0 && func_missing_arg $_G_opt; then
-                        _G_parse_options_requote=:
-                        break
-                      fi
-                      case " $warning_categories $1" in
-                        *" $1 "*)
-                          # trailing space prevents matching last $1 above
-                          func_append_uniq opt_warning_types " $1"
-                          ;;
-                        *all)
-                          opt_warning_types=$warning_categories
-                          ;;
-                        *none)
-                          opt_warning_types=none
-                          warning_func=:
-                          ;;
-                        *error)
-                          opt_warning_types=$warning_categories
-                          warning_func=func_fatal_error
-                          ;;
-                        *)
-                          func_fatal_error \
-                             "unsupported warning category: '$1'"
-                          ;;
-                      esac
-                      shift
-                      ;;
-
-        --verbose|-v) opt_verbose=: ;;
-        --version)    func_version ;;
-        -\?|-h)       func_usage ;;
-        --help)       func_help ;;
-
-       # Separate optargs to long options (plugins may need this):
-       --*=*)        func_split_equals "$_G_opt"
-                     set dummy "$func_split_equals_lhs" \
-                          "$func_split_equals_rhs" ${1+"$@"}
-                      shift
-                      ;;
-
-       # Separate optargs to short options:
-        -W*)
-                      func_split_short_opt "$_G_opt"
-                      set dummy "$func_split_short_opt_name" \
-                          "$func_split_short_opt_arg" ${1+"$@"}
-                      shift
-                      ;;
-
-        # Separate non-argument short options:
-        -\?*|-h*|-v*|-x*)
-                      func_split_short_opt "$_G_opt"
-                      set dummy "$func_split_short_opt_name" \
-                          "-$func_split_short_opt_arg" ${1+"$@"}
-                      shift
-                      ;;
-
-        --)           _G_parse_options_requote=: ; break ;;
-        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
-        *)            set dummy "$_G_opt" ${1+"$@"}; shift
-                      _G_match_parse_options=false
-                      break
-                      ;;
-      esac
-
-      if $_G_match_parse_options; then
-        _G_parse_options_requote=:
-      fi
-    done
-
-    if $_G_parse_options_requote; then
-      # save modified positional parameters for caller
-      func_quote eval ${1+"$@"}
-      func_parse_options_result=$func_quote_result
-    fi
-}
-
-
-# func_validate_options [ARG]...
-# ------------------------------
-# Perform any sanity checks on option settings and/or unconsumed
-# arguments.
-func_hookable func_validate_options
-func_validate_options ()
-{
-    $debug_cmd
-
-    # Display all warnings if -W was not given.
-    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
-
-    func_run_hooks func_validate_options ${1+"$@"}
-    func_propagate_result func_run_hooks func_validate_options
-
-    # Bail if the options were screwed!
-    $exit_cmd $EXIT_FAILURE
-}
-
-
-
-## ----------------- ##
-## Helper functions. ##
-## ----------------- ##
-
-# This section contains the helper functions used by the rest of the
-# hookable option parser framework in ascii-betical order.
-
-
-# func_fatal_help ARG...
-# ----------------------
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    $debug_cmd
-
-    eval \$ECHO \""Usage: $usage"\"
-    eval \$ECHO \""$fatal_help"\"
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
-
-
-# func_help
-# ---------
-# Echo long help message to standard output and exit.
-func_help ()
-{
-    $debug_cmd
-
-    func_usage_message
-    $ECHO "$long_help_message"
-    exit 0
-}
-
-
-# func_missing_arg ARGNAME
-# ------------------------
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
-    $debug_cmd
-
-    func_error "Missing argument for '$1'."
-    exit_cmd=exit
-}
-
-
-# func_split_equals STRING
-# ------------------------
-# Set func_split_equals_lhs and func_split_equals_rhs shell variables
-# after splitting STRING at the '=' sign.
-test -z "$_G_HAVE_XSI_OPS" \
-    && (eval 'x=a/b/c;
-      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
-    && _G_HAVE_XSI_OPS=yes
-
-if test yes = "$_G_HAVE_XSI_OPS"
-then
-  # This is an XSI compatible shell, allowing a faster implementation...
-  eval 'func_split_equals ()
-  {
-      $debug_cmd
-
-      func_split_equals_lhs=${1%%=*}
-      func_split_equals_rhs=${1#*=}
-      if test "x$func_split_equals_lhs" = "x$1"; then
-        func_split_equals_rhs=
-      fi
-  }'
-else
-  # ...otherwise fall back to using expr, which is often a shell builtin.
-  func_split_equals ()
-  {
-      $debug_cmd
-
-      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
-      func_split_equals_rhs=
-      test "x$func_split_equals_lhs" = "x$1" \
-        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
-  }
-fi #func_split_equals
-
-
-# func_split_short_opt SHORTOPT
-# -----------------------------
-# Set func_split_short_opt_name and func_split_short_opt_arg shell
-# variables after splitting SHORTOPT after the 2nd character.
-if test yes = "$_G_HAVE_XSI_OPS"
-then
-  # This is an XSI compatible shell, allowing a faster implementation...
-  eval 'func_split_short_opt ()
-  {
-      $debug_cmd
-
-      func_split_short_opt_arg=${1#??}
-      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
-  }'
-else
-  # ...otherwise fall back to using expr, which is often a shell builtin.
-  func_split_short_opt ()
-  {
-      $debug_cmd
-
-      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
-      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
-  }
-fi #func_split_short_opt
-
-
-# func_usage
-# ----------
-# Echo short help message to standard output and exit.
-func_usage ()
-{
-    $debug_cmd
-
-    func_usage_message
-    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
-    exit 0
-}
-
-
-# func_usage_message
-# ------------------
-# Echo short help message to standard output.
-func_usage_message ()
-{
-    $debug_cmd
-
-    eval \$ECHO \""Usage: $usage"\"
-    echo
-    $SED -n 's|^# ||
-        /^Written by/{
-          x;p;x
-        }
-       h
-       /^Written by/q' < "$progpath"
-    echo
-    eval \$ECHO \""$usage_message"\"
-}
-
-
-# func_version
-# ------------
-# Echo version message to standard output and exit.
-# The version message is extracted from the calling file's header
-# comments, with leading '# ' stripped:
-#   1. First display the progname and version
-#   2. Followed by the header comment line matching  /^# Written by /
-#   3. Then a blank line followed by the first following line matching
-#      /^# Copyright /
-#   4. Immediately followed by any lines between the previous matches,
-#      except lines preceding the intervening completely blank line.
-# For example, see the header comments of this file.
-func_version ()
-{
-    $debug_cmd
-
-    printf '%s\n' "$progname $scriptversion"
-    $SED -n '
-        /^# Written by /!b
-        s|^# ||; p; n
-
-        :fwd2blnk
-        /./ {
-          n
-          b fwd2blnk
-        }
-        p; n
-
-        :holdwrnt
-        s|^# ||
-        s|^# *$||
-        /^Copyright /!{
-          /./H
-          n
-          b holdwrnt
-        }
-
-        s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
-        G
-        s|\(\n\)\n*|\1|g
-        p; q' < "$progpath"
-
-    exit $?
-}
-
-
-# Local variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC"
-# time-stamp-time-zone: "UTC"
-# End:
-
-# Set a version string.
-scriptversion='(GNU libtool) 2.4.6.42-b88ce-dirty'
-
-
-# func_echo ARG...
-# ----------------
-# Libtool also displays the current mode in messages, so override
-# funclib.sh func_echo with this custom definition.
-func_echo ()
-{
-    $debug_cmd
-
-    _G_message=$*
-
-    func_echo_IFS=$IFS
-    IFS=$nl
-    for _G_line in $_G_message; do
-      IFS=$func_echo_IFS
-      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
-    done
-    IFS=$func_echo_IFS
-}
-
-
-# func_warning ARG...
-# -------------------
-# Libtool warnings are not categorized, so override funclib.sh
-# func_warning with this simpler definition.
-func_warning ()
-{
-    $debug_cmd
-
-    $warning_func ${1+"$@"}
-}
-
-
-## ---------------- ##
-## Options parsing. ##
-## ---------------- ##
-
-# Hook in the functions to make sure our own options are parsed during
-# the option parsing loop.
-
-usage='$progpath [OPTION]... [MODE-ARG]...'
-
-# Short help message in response to '-h'.
-usage_message="Options:
-       --config             show all configuration variables
-       --debug              enable verbose shell tracing
-   -n, --dry-run            display commands without modifying any files
-       --features           display basic configuration information and exit
-       --mode=MODE          use operation mode MODE
-       --no-warnings        equivalent to '-Wnone'
-       --preserve-dup-deps  don't remove duplicate dependency libraries
-       --quiet, --silent    don't print informational messages
-       --tag=TAG            use configuration variables from tag TAG
-   -v, --verbose            print more informational messages than default
-       --version            print version information
-   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
-   -h, --help, --help-all   print short, long, or detailed help message
-"
-
-# Additional text appended to 'usage_message' in response to '--help'.
-func_help ()
-{
-    $debug_cmd
-
-    func_usage_message
-    $ECHO "$long_help_message
-
-MODE must be one of the following:
-
-       clean           remove files from the build directory
-       compile         compile a source file into a libtool object
-       execute         automatically set library path, then run a program
-       finish          complete the installation of libtool libraries
-       install         install libraries or executables
-       link            create a library or an executable
-       uninstall       remove libraries from an installed directory
-
-MODE-ARGS vary depending on the MODE.  When passed as first option,
-'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
-Try '$progname --help --mode=MODE' for a more detailed description of MODE.
-
-When reporting a bug, please describe a test case to reproduce it and
-include the following information:
-
-       host-triplet:   $host
-       shell:          $SHELL
-       compiler:       $LTCC
-       compiler flags: $LTCFLAGS
-       linker:         $LD (gnu? $with_gnu_ld)
-       version:        $progname (GNU libtool) 2.4.6.42-b88ce-dirty
-       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
-       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
-
-Report bugs to <bug-libtool@gnu.org>.
-GNU libtool home page: <http://www.gnu.org/s/libtool/>.
-General help using GNU software: <http://www.gnu.org/gethelp/>."
-    exit 0
-}
-
-
-# func_lo2o OBJECT-NAME
-# ---------------------
-# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
-# object suffix.
-
-lo2o=s/\\.lo\$/.$objext/
-o2lo=s/\\.$objext\$/.lo/
-
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  eval 'func_lo2o ()
-  {
-    case $1 in
-      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
-      *   ) func_lo2o_result=$1               ;;
-    esac
-  }'
-
-  # func_xform LIBOBJ-OR-SOURCE
-  # ---------------------------
-  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
-  # suffix to a '.lo' libtool-object suffix.
-  eval 'func_xform ()
-  {
-    func_xform_result=${1%.*}.lo
-  }'
-else
-  # ...otherwise fall back to using sed.
-  func_lo2o ()
-  {
-    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
-  }
-
-  func_xform ()
-  {
-    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
-  }
-fi
-
-
-# func_fatal_configuration ARG...
-# -------------------------------
-# Echo program name prefixed message to standard error, followed by
-# a configuration failure hint, and exit.
-func_fatal_configuration ()
-{
-    func_fatal_error ${1+"$@"} \
-      "See the $PACKAGE documentation for more information." \
-      "Fatal configuration error."
-}
-
-
-# func_config
-# -----------
-# Display the configuration for all the tags in this script.
-func_config ()
-{
-    re_begincf='^# ### BEGIN LIBTOOL'
-    re_endcf='^# ### END LIBTOOL'
-
-    # Default configuration.
-    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
-
-    # Now print the configurations for the tags.
-    for tagname in $taglist; do
-      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
-    done
-
-    exit $?
-}
-
-
-# func_features
-# -------------
-# Display the features supported by this script.
-func_features ()
-{
-    echo "host: $host"
-    if test yes = "$build_libtool_libs"; then
-      echo "enable shared libraries"
-    else
-      echo "disable shared libraries"
-    fi
-    if test yes = "$build_old_libs"; then
-      echo "enable static libraries"
-    else
-      echo "disable static libraries"
-    fi
-
-    exit $?
-}
-
-
-# func_enable_tag TAGNAME
-# -----------------------
-# Verify that TAGNAME is valid, and either flag an error and exit, or
-# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
-# variable here.
-func_enable_tag ()
-{
-    # Global variable:
-    tagname=$1
-
-    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-    sed_extractcf=/$re_begincf/,/$re_endcf/p
-
-    # Validate tagname.
-    case $tagname in
-      *[!-_A-Za-z0-9,/]*)
-        func_fatal_error "invalid tag name: $tagname"
-        ;;
-    esac
-
-    # Don't test for the "default" C tag, as we know it's
-    # there but not specially marked.
-    case $tagname in
-        CC) ;;
-    *)
-        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-         taglist="$taglist $tagname"
-
-         # Evaluate the configuration.  Be careful to quote the path
-         # and the sed script, to avoid splitting on whitespace, but
-         # also don't use non-portable quotes within backquotes within
-         # quotes we have to do it in 2 steps:
-         extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-         eval "$extractedcf"
-        else
-         func_error "ignoring unknown tag $tagname"
-        fi
-        ;;
-    esac
-}
-
-
-# func_check_version_match
-# ------------------------
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
-    if test "$package_revision" != "$macro_revision"; then
-      if test "$VERSION" != "$macro_version"; then
-        if test -z "$macro_version"; then
-          cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-        else
-          cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-        fi
-      else
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
-      fi
-
-      exit $EXIT_MISMATCH
-    fi
-}
-
-
-# libtool_options_prep [ARG]...
-# -----------------------------
-# Preparation for options parsed by libtool.
-libtool_options_prep ()
-{
-    $debug_mode
-
-    # Option defaults:
-    opt_config=false
-    opt_dlopen=
-    opt_dry_run=false
-    opt_help=false
-    opt_mode=
-    opt_preserve_dup_deps=false
-    opt_quiet=false
-
-    nonopt=
-    preserve_args=
-
-    _G_rc_lt_options_prep=:
-
-    # Shorthand for --mode=foo, only valid as the first argument
-    case $1 in
-    clean|clea|cle|cl)
-      shift; set dummy --mode clean ${1+"$@"}; shift
-      ;;
-    compile|compil|compi|comp|com|co|c)
-      shift; set dummy --mode compile ${1+"$@"}; shift
-      ;;
-    execute|execut|execu|exec|exe|ex|e)
-      shift; set dummy --mode execute ${1+"$@"}; shift
-      ;;
-    finish|finis|fini|fin|fi|f)
-      shift; set dummy --mode finish ${1+"$@"}; shift
-      ;;
-    install|instal|insta|inst|ins|in|i)
-      shift; set dummy --mode install ${1+"$@"}; shift
-      ;;
-    link|lin|li|l)
-      shift; set dummy --mode link ${1+"$@"}; shift
-      ;;
-    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-      shift; set dummy --mode uninstall ${1+"$@"}; shift
-      ;;
-    *)
-      _G_rc_lt_options_prep=false
-      ;;
-    esac
-
-    if $_G_rc_lt_options_prep; then
-      # Pass back the list of options.
-      func_quote eval ${1+"$@"}
-      libtool_options_prep_result=$func_quote_result
-    fi
-}
-func_add_hook func_options_prep libtool_options_prep
-
-
-# libtool_parse_options [ARG]...
-# ---------------------------------
-# Provide handling for libtool specific options.
-libtool_parse_options ()
-{
-    $debug_cmd
-
-    _G_rc_lt_parse_options=false
-
-    # Perform our own loop to consume as many options as possible in
-    # each iteration.
-    while test $# -gt 0; do
-      _G_match_lt_parse_options=:
-      _G_opt=$1
-      shift
-      case $_G_opt in
-        --dry-run|--dryrun|-n)
-                        opt_dry_run=:
-                        ;;
-
-        --config)       func_config ;;
-
-        --dlopen|-dlopen)
-                        opt_dlopen="${opt_dlopen+$opt_dlopen
-}$1"
-                        shift
-                        ;;
-
-        --preserve-dup-deps)
-                        opt_preserve_dup_deps=: ;;
-
-        --features)     func_features ;;
-
-        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
-
-        --help)         opt_help=: ;;
-
-        --help-all)     opt_help=': help-all' ;;
-
-        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
-                        opt_mode=$1
-                        case $1 in
-                          # Valid mode arguments:
-                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
-
-                          # Catch anything else as an error
-                          *) func_error "invalid argument for $_G_opt"
-                             exit_cmd=exit
-                             break
-                             ;;
-                        esac
-                        shift
-                        ;;
-
-        --no-silent|--no-quiet)
-                        opt_quiet=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --no-warnings|--no-warning|--no-warn)
-                        opt_warning=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --no-verbose)
-                        opt_verbose=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --silent|--quiet)
-                        opt_quiet=:
-                        opt_verbose=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
-                        opt_tag=$1
-                        func_append preserve_args " $_G_opt $1"
-                        func_enable_tag "$1"
-                        shift
-                        ;;
-
-        --verbose|-v)   opt_quiet=false
-                        opt_verbose=:
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        # An option not handled by this hook function:
-        *)              set dummy "$_G_opt" ${1+"$@"} ; shift
-                        _G_match_lt_parse_options=false
-                        break
-                        ;;
-      esac
-      $_G_match_lt_parse_options && _G_rc_lt_parse_options=:
-    done
-
-    if $_G_rc_lt_parse_options; then
-      # save modified positional parameters for caller
-      func_quote eval ${1+"$@"}
-      libtool_parse_options_result=$func_quote_result
-    fi
-}
-func_add_hook func_parse_options libtool_parse_options
-
-
-
-# libtool_validate_options [ARG]...
-# ---------------------------------
-# Perform any sanity checks on option settings and/or unconsumed
-# arguments.
-libtool_validate_options ()
-{
-    # save first non-option argument
-    if test 0 -lt $#; then
-      nonopt=$1
-      shift
-    fi
-
-    # preserve --debug
-    test : = "$debug_cmd" || func_append preserve_args " --debug"
-
-    case $host in
-      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
-      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
-      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
-        # don't eliminate duplications in $postdeps and $predeps
-        opt_duplicate_compiler_generated_deps=:
-        ;;
-      *)
-        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-        ;;
-    esac
-
-    $opt_help || {
-      # Sanity checks first:
-      func_check_version_match
-
-      test yes != "$build_libtool_libs" \
-        && test yes != "$build_old_libs" \
-        && func_fatal_configuration "not configured to build any kind of library"
-
-      # Darwin sucks
-      eval std_shrext=\"$shrext_cmds\"
-
-      # Only execute mode is allowed to have -dlopen flags.
-      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
-        func_error "unrecognized option '-dlopen'"
-        $ECHO "$help" 1>&2
-        exit $EXIT_FAILURE
-      fi
-
-      # Change the help message to a mode-specific one.
-      generic_help=$help
-      help="Try '$progname --help --mode=$opt_mode' for more information."
-    }
-
-    # Pass back the unparsed argument list
-    func_quote eval ${1+"$@"}
-    libtool_validate_options_result=$func_quote_result
-}
-func_add_hook func_validate_options libtool_validate_options
-
-
-# Process options as early as possible so that --help and --version
-# can return quickly.
-func_options ${1+"$@"}
-eval set dummy "$func_options_result"; shift
-
-
-
-## ----------- ##
-##    Main.    ##
-## ----------- ##
-
-magic='%%%MAGIC variable%%%'
-magic_exe='%%%MAGIC EXE variable%%%'
-
-# Global variables.
-extracted_archives=
-extracted_serial=0
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# func_generated_by_libtool
-# True iff stdin has been generated by Libtool. This function is only
-# a basic sanity check; it will hardly flush out determined imposters.
-func_generated_by_libtool_p ()
-{
-  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
-# func_lalib_p file
-# True iff FILE is a libtool '.la' library or '.lo' object file.
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_lalib_p ()
-{
-    test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
-}
-
-# func_lalib_unsafe_p file
-# True iff FILE is a libtool '.la' library or '.lo' object file.
-# This function implements the same check as func_lalib_p without
-# resorting to external programs.  To this end, it redirects stdin and
-# closes it afterwards, without saving the original file descriptor.
-# As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if 'file' does not exist.
-func_lalib_unsafe_p ()
-{
-    lalib_p=no
-    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
-       for lalib_p_l in 1 2 3 4
-       do
-           read lalib_p_line
-           case $lalib_p_line in
-               \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
-           esac
-       done
-       exec 0<&5 5<&-
-    fi
-    test yes = "$lalib_p"
-}
-
-# func_ltwrapper_script_p file
-# True iff FILE is a libtool wrapper script
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_script_p ()
-{
-    test -f "$1" &&
-      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
-}
-
-# func_ltwrapper_executable_p file
-# True iff FILE is a libtool wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_executable_p ()
-{
-    func_ltwrapper_exec_suffix=
-    case $1 in
-    *.exe) ;;
-    *) func_ltwrapper_exec_suffix=.exe ;;
-    esac
-    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
-}
-
-# func_ltwrapper_scriptname file
-# Assumes file is an ltwrapper_executable
-# uses $file to determine the appropriate filename for a
-# temporary ltwrapper_script.
-func_ltwrapper_scriptname ()
-{
-    func_dirname_and_basename "$1" "" "."
-    func_stripname '' '.exe' "$func_basename_result"
-    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
-}
-
-# func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script or wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_p ()
-{
-    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
-}
-
-
-# func_execute_cmds commands fail_cmd
-# Execute tilde-delimited COMMANDS.
-# If FAIL_CMD is given, eval that upon failure.
-# FAIL_CMD may read-access the current command in variable CMD!
-func_execute_cmds ()
-{
-    $debug_cmd
-
-    save_ifs=$IFS; IFS='~'
-    for cmd in $1; do
-      IFS=$sp$nl
-      eval cmd=\"$cmd\"
-      IFS=$save_ifs
-      func_show_eval "$cmd" "${2-:}"
-    done
-    IFS=$save_ifs
-}
-
-
-# func_source file
-# Source FILE, adding directory component if necessary.
-# Note that it is not necessary on cygwin/mingw to append a dot to
-# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
-# behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# 'FILE.' does not work on cygwin managed mounts.
-func_source ()
-{
-    $debug_cmd
-
-    case $1 in
-    */* | *\\*)        . "$1" ;;
-    *)         . "./$1" ;;
-    esac
-}
-
-
-# func_resolve_sysroot PATH
-# Replace a leading = in PATH with a sysroot.  Store the result into
-# func_resolve_sysroot_result
-func_resolve_sysroot ()
-{
-  func_resolve_sysroot_result=$1
-  case $func_resolve_sysroot_result in
-  =*)
-    func_stripname '=' '' "$func_resolve_sysroot_result"
-    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
-    ;;
-  esac
-}
-
-# func_replace_sysroot PATH
-# If PATH begins with the sysroot, replace it with = and
-# store the result into func_replace_sysroot_result.
-func_replace_sysroot ()
-{
-  case $lt_sysroot:$1 in
-  ?*:"$lt_sysroot"*)
-    func_stripname "$lt_sysroot" '' "$1"
-    func_replace_sysroot_result='='$func_stripname_result
-    ;;
-  *)
-    # Including no sysroot.
-    func_replace_sysroot_result=$1
-    ;;
-  esac
-}
-
-# func_infer_tag arg
-# Infer tagged configuration to use if any are available and
-# if one wasn't chosen via the "--tag" command line option.
-# Only attempt this if the compiler in the base compile
-# command doesn't match the default compiler.
-# arg is usually of the form 'gcc ...'
-func_infer_tag ()
-{
-    $debug_cmd
-
-    if test -n "$available_tags" && test -z "$tagname"; then
-      CC_quoted=
-      for arg in $CC; do
-       func_append_quoted CC_quoted "$arg"
-      done
-      CC_expanded=`func_echo_all $CC`
-      CC_quoted_expanded=`func_echo_all $CC_quoted`
-      case $@ in
-      # Blanks in the command may have been stripped by the calling shell,
-      # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
-      # Blanks at the start of $base_compile will cause this to fail
-      # if we don't check for them as well.
-      *)
-       for z in $available_tags; do
-         if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
-           # Evaluate the configuration.
-           eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
-           CC_quoted=
-           for arg in $CC; do
-             # Double-quote args containing other shell metacharacters.
-             func_append_quoted CC_quoted "$arg"
-           done
-           CC_expanded=`func_echo_all $CC`
-           CC_quoted_expanded=`func_echo_all $CC_quoted`
-           case "$@ " in
-           " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-           " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
-             # The compiler in the base compile command matches
-             # the one in the tagged configuration.
-             # Assume this is the tagged configuration we want.
-             tagname=$z
-             break
-             ;;
-           esac
-         fi
-       done
-       # If $tagname still isn't set, then no tagged configuration
-       # was found and let the user know that the "--tag" command
-       # line option must be used.
-       if test -z "$tagname"; then
-         func_echo "unable to infer tagged configuration"
-         func_fatal_error "specify a tag with '--tag'"
-#      else
-#        func_verbose "using $tagname tagged configuration"
-       fi
-       ;;
-      esac
-    fi
-}
-
-
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
-{
-    write_libobj=$1
-    if test yes = "$build_libtool_libs"; then
-      write_lobj=\'$2\'
-    else
-      write_lobj=none
-    fi
-
-    if test yes = "$build_old_libs"; then
-      write_oldobj=\'$3\'
-    else
-      write_oldobj=none
-    fi
-
-    $opt_dry_run || {
-      cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object=$write_lobj
-
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-
-EOF
-      $MV "${write_libobj}T" "$write_libobj"
-    }
-}
-
-
-##################################################
-# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
-##################################################
-
-# func_convert_core_file_wine_to_w32 ARG
-# Helper function used by file name conversion functions when $build is *nix,
-# and $host is mingw, cygwin, or some other w32 environment. Relies on a
-# correctly configured wine environment available, with the winepath program
-# in $build's $PATH.
-#
-# ARG is the $build file name to be converted to w32 format.
-# Result is available in $func_convert_core_file_wine_to_w32_result, and will
-# be empty on error (or when ARG is empty)
-func_convert_core_file_wine_to_w32 ()
-{
-  $debug_cmd
-
-  func_convert_core_file_wine_to_w32_result=$1
-  if test -n "$1"; then
-    # Unfortunately, winepath does not exit with a non-zero error code, so we
-    # are forced to check the contents of stdout. On the other hand, if the
-    # command is not found, the shell will set an exit code of 127 and print
-    # *an error message* to stdout. So we must check for both error code of
-    # zero AND non-empty stdout, which explains the odd construction:
-    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
-    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
-      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
-        $SED -e "$sed_naive_backslashify"`
-    else
-      func_convert_core_file_wine_to_w32_result=
-    fi
-  fi
-}
-# end: func_convert_core_file_wine_to_w32
-
-
-# func_convert_core_path_wine_to_w32 ARG
-# Helper function used by path conversion functions when $build is *nix, and
-# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
-# configured wine environment available, with the winepath program in $build's
-# $PATH. Assumes ARG has no leading or trailing path separator characters.
-#
-# ARG is path to be converted from $build format to win32.
-# Result is available in $func_convert_core_path_wine_to_w32_result.
-# Unconvertible file (directory) names in ARG are skipped; if no directory names
-# are convertible, then the result may be empty.
-func_convert_core_path_wine_to_w32 ()
-{
-  $debug_cmd
-
-  # unfortunately, winepath doesn't convert paths, only file names
-  func_convert_core_path_wine_to_w32_result=
-  if test -n "$1"; then
-    oldIFS=$IFS
-    IFS=:
-    for func_convert_core_path_wine_to_w32_f in $1; do
-      IFS=$oldIFS
-      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
-      if test -n "$func_convert_core_file_wine_to_w32_result"; then
-        if test -z "$func_convert_core_path_wine_to_w32_result"; then
-          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
-        else
-          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
-        fi
-      fi
-    done
-    IFS=$oldIFS
-  fi
-}
-# end: func_convert_core_path_wine_to_w32
-
-
-# func_cygpath ARGS...
-# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
-# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
-# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
-# (2), returns the Cygwin file name or path in func_cygpath_result (input
-# file name or path is assumed to be in w32 format, as previously converted
-# from $build's *nix or MSYS format). In case (3), returns the w32 file name
-# or path in func_cygpath_result (input file name or path is assumed to be in
-# Cygwin format). Returns an empty string on error.
-#
-# ARGS are passed to cygpath, with the last one being the file name or path to
-# be converted.
-#
-# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
-# environment variable; do not put it in $PATH.
-func_cygpath ()
-{
-  $debug_cmd
-
-  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
-    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
-    if test "$?" -ne 0; then
-      # on failure, ensure result is empty
-      func_cygpath_result=
-    fi
-  else
-    func_cygpath_result=
-    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
-  fi
-}
-#end: func_cygpath
-
-
-# func_convert_core_msys_to_w32 ARG
-# Convert file name or path ARG from MSYS format to w32 format.  Return
-# result in func_convert_core_msys_to_w32_result.
-func_convert_core_msys_to_w32 ()
-{
-  $debug_cmd
-
-  # awkward: cmd appends spaces to result
-  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
-    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
-}
-#end: func_convert_core_msys_to_w32
-
-
-# func_convert_file_check ARG1 ARG2
-# Verify that ARG1 (a file name in $build format) was converted to $host
-# format in ARG2. Otherwise, emit an error message, but continue (resetting
-# func_to_host_file_result to ARG1).
-func_convert_file_check ()
-{
-  $debug_cmd
-
-  if test -z "$2" && test -n "$1"; then
-    func_error "Could not determine host file name corresponding to"
-    func_error "  '$1'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback:
-    func_to_host_file_result=$1
-  fi
-}
-# end func_convert_file_check
-
-
-# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
-# Verify that FROM_PATH (a path in $build format) was converted to $host
-# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
-# func_to_host_file_result to a simplistic fallback value (see below).
-func_convert_path_check ()
-{
-  $debug_cmd
-
-  if test -z "$4" && test -n "$3"; then
-    func_error "Could not determine the host path corresponding to"
-    func_error "  '$3'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback.  This is a deliberately simplistic "conversion" and
-    # should not be "improved".  See libtool.info.
-    if test "x$1" != "x$2"; then
-      lt_replace_pathsep_chars="s|$1|$2|g"
-      func_to_host_path_result=`echo "$3" |
-        $SED -e "$lt_replace_pathsep_chars"`
-    else
-      func_to_host_path_result=$3
-    fi
-  fi
-}
-# end func_convert_path_check
-
-
-# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
-# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
-# and appending REPL if ORIG matches BACKPAT.
-func_convert_path_front_back_pathsep ()
-{
-  $debug_cmd
-
-  case $4 in
-  $1 ) func_to_host_path_result=$3$func_to_host_path_result
-    ;;
-  esac
-  case $4 in
-  $2 ) func_append func_to_host_path_result "$3"
-    ;;
-  esac
-}
-# end func_convert_path_front_back_pathsep
-
-
-##################################################
-# $build to $host FILE NAME CONVERSION FUNCTIONS #
-##################################################
-# invoked via '$to_host_file_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# Result will be available in $func_to_host_file_result.
-
-
-# func_to_host_file ARG
-# Converts the file name ARG from $build format to $host format. Return result
-# in func_to_host_file_result.
-func_to_host_file ()
-{
-  $debug_cmd
-
-  $to_host_file_cmd "$1"
-}
-# end func_to_host_file
-
-
-# func_to_tool_file ARG LAZY
-# converts the file name ARG from $build format to toolchain format. Return
-# result in func_to_tool_file_result.  If the conversion in use is listed
-# in (the comma separated) LAZY, no conversion takes place.
-func_to_tool_file ()
-{
-  $debug_cmd
-
-  case ,$2, in
-    *,"$to_tool_file_cmd",*)
-      func_to_tool_file_result=$1
-      ;;
-    *)
-      $to_tool_file_cmd "$1"
-      func_to_tool_file_result=$func_to_host_file_result
-      ;;
-  esac
-}
-# end func_to_tool_file
-
-
-# func_convert_file_noop ARG
-# Copy ARG to func_to_host_file_result.
-func_convert_file_noop ()
-{
-  func_to_host_file_result=$1
-}
-# end func_convert_file_noop
-
-
-# func_convert_file_msys_to_w32 ARG
-# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_file_result.
-func_convert_file_msys_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_file_result=$1
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_to_host_file_result=$func_convert_core_msys_to_w32_result
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_w32
-
-
-# func_convert_file_cygwin_to_w32 ARG
-# Convert file name ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_file_cygwin_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_file_result=$1
-  if test -n "$1"; then
-    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
-    # LT_CYGPATH in this case.
-    func_to_host_file_result=`cygpath -m "$1"`
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_cygwin_to_w32
-
-
-# func_convert_file_nix_to_w32 ARG
-# Convert file name ARG from *nix to w32 format.  Requires a wine environment
-# and a working winepath. Returns result in func_to_host_file_result.
-func_convert_file_nix_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_file_result=$1
-  if test -n "$1"; then
-    func_convert_core_file_wine_to_w32 "$1"
-    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_w32
-
-
-# func_convert_file_msys_to_cygwin ARG
-# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_file_msys_to_cygwin ()
-{
-  $debug_cmd
-
-  func_to_host_file_result=$1
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_msys_to_w32_result"
-    func_to_host_file_result=$func_cygpath_result
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_cygwin
-
-
-# func_convert_file_nix_to_cygwin ARG
-# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
-# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
-# in func_to_host_file_result.
-func_convert_file_nix_to_cygwin ()
-{
-  $debug_cmd
-
-  func_to_host_file_result=$1
-  if test -n "$1"; then
-    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
-    func_convert_core_file_wine_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
-    func_to_host_file_result=$func_cygpath_result
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_cygwin
-
-
-#############################################
-# $build to $host PATH CONVERSION FUNCTIONS #
-#############################################
-# invoked via '$to_host_path_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# The result will be available in $func_to_host_path_result.
-#
-# Path separators are also converted from $build format to $host format.  If
-# ARG begins or ends with a path separator character, it is preserved (but
-# converted to $host format) on output.
-#
-# All path conversion functions are named using the following convention:
-#   file name conversion function    : func_convert_file_X_to_Y ()
-#   path conversion function         : func_convert_path_X_to_Y ()
-# where, for any given $build/$host combination the 'X_to_Y' value is the
-# same.  If conversion functions are added for new $build/$host combinations,
-# the two new functions must follow this pattern, or func_init_to_host_path_cmd
-# will break.
-
-
-# func_init_to_host_path_cmd
-# Ensures that function "pointer" variable $to_host_path_cmd is set to the
-# appropriate value, based on the value of $to_host_file_cmd.
-to_host_path_cmd=
-func_init_to_host_path_cmd ()
-{
-  $debug_cmd
-
-  if test -z "$to_host_path_cmd"; then
-    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
-    to_host_path_cmd=func_convert_path_$func_stripname_result
-  fi
-}
-
-
-# func_to_host_path ARG
-# Converts the path ARG from $build format to $host format. Return result
-# in func_to_host_path_result.
-func_to_host_path ()
-{
-  $debug_cmd
-
-  func_init_to_host_path_cmd
-  $to_host_path_cmd "$1"
-}
-# end func_to_host_path
-
-
-# func_convert_path_noop ARG
-# Copy ARG to func_to_host_path_result.
-func_convert_path_noop ()
-{
-  func_to_host_path_result=$1
-}
-# end func_convert_path_noop
-
-
-# func_convert_path_msys_to_w32 ARG
-# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_path_result.
-func_convert_path_msys_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_path_result=$1
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from ARG.  MSYS
-    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
-    # and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result=$func_convert_core_msys_to_w32_result
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_msys_to_w32
-
-
-# func_convert_path_cygwin_to_w32 ARG
-# Convert path ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_path_cygwin_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_path_result=$1
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_cygwin_to_w32
-
-
-# func_convert_path_nix_to_w32 ARG
-# Convert path ARG from *nix to w32 format.  Requires a wine environment and
-# a working winepath.  Returns result in func_to_host_file_result.
-func_convert_path_nix_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_path_result=$1
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_nix_to_w32
-
-
-# func_convert_path_msys_to_cygwin ARG
-# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_path_msys_to_cygwin ()
-{
-  $debug_cmd
-
-  func_to_host_path_result=$1
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
-    func_to_host_path_result=$func_cygpath_result
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_msys_to_cygwin
-
-
-# func_convert_path_nix_to_cygwin ARG
-# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
-# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
-# func_to_host_file_result.
-func_convert_path_nix_to_cygwin ()
-{
-  $debug_cmd
-
-  func_to_host_path_result=$1
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from
-    # ARG. msys behavior is inconsistent here, cygpath turns them
-    # into '.;' and ';.', and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
-    func_to_host_path_result=$func_cygpath_result
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_nix_to_cygwin
-
-
-# func_dll_def_p FILE
-# True iff FILE is a Windows DLL '.def' file.
-# Keep in sync with _LT_DLL_DEF_P in libtool.m4
-func_dll_def_p ()
-{
-  $debug_cmd
-
-  func_dll_def_p_tmp=`$SED -n \
-    -e 's/^[    ]*//' \
-    -e '/^\(;.*\)*$/d' \
-    -e 's/^\(EXPORTS\|LIBRARY\)\([      ].*\)*$/DEF/p' \
-    -e q \
-    "$1"`
-  test DEF = "$func_dll_def_p_tmp"
-}
-
-
-# func_mode_compile arg...
-func_mode_compile ()
-{
-    $debug_cmd
-
-    # Get the compilation command and the source file.
-    base_compile=
-    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
-    suppress_opt=yes
-    suppress_output=
-    arg_mode=normal
-    libobj=
-    later=
-    pie_flag=
-
-    for arg
-    do
-      case $arg_mode in
-      arg  )
-       # do not "continue".  Instead, add this to base_compile
-       lastarg=$arg
-       arg_mode=normal
-       ;;
-
-      target )
-       libobj=$arg
-       arg_mode=normal
-       continue
-       ;;
-
-      normal )
-       # Accept any command-line options.
-       case $arg in
-       -o)
-         test -n "$libobj" && \
-           func_fatal_error "you cannot specify '-o' more than once"
-         arg_mode=target
-         continue
-         ;;
-
-       -pie | -fpie | -fPIE)
-          func_append pie_flag " $arg"
-         continue
-         ;;
-
-       -shared | -static | -prefer-pic | -prefer-non-pic)
-         func_append later " $arg"
-         continue
-         ;;
-
-       -no-suppress)
-         suppress_opt=no
-         continue
-         ;;
-
-       -Xcompiler)
-         arg_mode=arg  #  the next one goes into the "base_compile" arg list
-         continue      #  The current "srcfile" will either be retained or
-         ;;            #  replaced later.  I would guess that would be a bug.
-
-       -Wc,*)
-         func_stripname '-Wc,' '' "$arg"
-         args=$func_stripname_result
-         lastarg=
-         save_ifs=$IFS; IFS=,
-         for arg in $args; do
-           IFS=$save_ifs
-           func_append_quoted lastarg "$arg"
-         done
-         IFS=$save_ifs
-         func_stripname ' ' '' "$lastarg"
-         lastarg=$func_stripname_result
-
-         # Add the arguments to base_compile.
-         func_append base_compile " $lastarg"
-         continue
-         ;;
-
-       *)
-         # Accept the current argument as the source file.
-         # The previous "srcfile" becomes the current argument.
-         #
-         lastarg=$srcfile
-         srcfile=$arg
-         ;;
-       esac  #  case $arg
-       ;;
-      esac    #  case $arg_mode
-
-      # Aesthetically quote the previous argument.
-      func_append_quoted base_compile "$lastarg"
-    done # for arg
-
-    case $arg_mode in
-    arg)
-      func_fatal_error "you must specify an argument for -Xcompile"
-      ;;
-    target)
-      func_fatal_error "you must specify a target with '-o'"
-      ;;
-    *)
-      # Get the name of the library object.
-      test -z "$libobj" && {
-       func_basename "$srcfile"
-       libobj=$func_basename_result
-      }
-      ;;
-    esac
-
-    # Recognize several different file suffixes.
-    # If the user specifies -o file.o, it is replaced with file.lo
-    case $libobj in
-    *.[cCFSifmso] | \
-    *.ada | *.adb | *.ads | *.asm | \
-    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
-      func_xform "$libobj"
-      libobj=$func_xform_result
-      ;;
-    esac
-
-    case $libobj in
-    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
-    *)
-      func_fatal_error "cannot determine name of library object from '$libobj'"
-      ;;
-    esac
-
-    func_infer_tag $base_compile
-
-    for arg in $later; do
-      case $arg in
-      -shared)
-       test yes = "$build_libtool_libs" \
-         || func_fatal_configuration "cannot build a shared library"
-       build_old_libs=no
-       continue
-       ;;
-
-      -static)
-       build_libtool_libs=no
-       build_old_libs=yes
-       continue
-       ;;
-
-      -prefer-pic)
-       pic_mode=yes
-       continue
-       ;;
-
-      -prefer-non-pic)
-       pic_mode=no
-       continue
-       ;;
-      esac
-    done
-
-    func_quote_arg pretty "$libobj"
-    test "X$libobj" != "X$func_quote_arg_result" \
-      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'   &()|`$[]' \
-      && func_warning "libobj name '$libobj' may not contain shell special characters."
-    func_dirname_and_basename "$obj" "/" ""
-    objname=$func_basename_result
-    xdir=$func_dirname_result
-    lobj=$xdir$objdir/$objname
-
-    test -z "$base_compile" && \
-      func_fatal_help "you must specify a compilation command"
-
-    # Delete any leftover library objects.
-    if test yes = "$build_old_libs"; then
-      removelist="$obj $lobj $libobj ${libobj}T"
-    else
-      removelist="$lobj $libobj ${libobj}T"
-    fi
-
-    # On Cygwin there's no "real" PIC flag so we must build both object types
-    case $host_os in
-    cygwin* | mingw* | pw32* | os2* | cegcc*)
-      pic_mode=default
-      ;;
-    esac
-    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
-      # non-PIC code in shared libraries is not supported
-      pic_mode=default
-    fi
-
-    # Calculate the filename of the output object if compiler does
-    # not support -o with -c
-    if test no = "$compiler_c_o"; then
-      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
-      lockfile=$output_obj.lock
-    else
-      output_obj=
-      need_locks=no
-      lockfile=
-    fi
-
-    # Lock this critical section if it is needed
-    # We use this script file to make the link, it avoids creating a new file
-    if test yes = "$need_locks"; then
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-       func_echo "Waiting for $lockfile to be removed"
-       sleep 2
-      done
-    elif test warn = "$need_locks"; then
-      if test -f "$lockfile"; then
-       $ECHO "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support '-c' and '-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-       $opt_dry_run || $RM $removelist
-       exit $EXIT_FAILURE
-      fi
-      func_append removelist " $output_obj"
-      $ECHO "$srcfile" > "$lockfile"
-    fi
-
-    $opt_dry_run || $RM $removelist
-    func_append removelist " $lockfile"
-    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
-    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
-    srcfile=$func_to_tool_file_result
-    func_quote_arg pretty "$srcfile"
-    qsrcfile=$func_quote_arg_result
-
-    # Only build a PIC object if we are building libtool libraries.
-    if test yes = "$build_libtool_libs"; then
-      # Without this assignment, base_compile gets emptied.
-      fbsd_hideous_sh_bug=$base_compile
-
-      if test no != "$pic_mode"; then
-       command="$base_compile $qsrcfile $pic_flag"
-      else
-       # Don't build PIC code
-       command="$base_compile $qsrcfile"
-      fi
-
-      func_mkdir_p "$xdir$objdir"
-
-      if test -z "$output_obj"; then
-       # Place PIC objects in $objdir
-       func_append command " -o $lobj"
-      fi
-
-      func_show_eval_locale "$command" \
-          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
-
-      if test warn = "$need_locks" &&
-        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-       $ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support '-c' and '-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-       $opt_dry_run || $RM $removelist
-       exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed, then go on to compile the next one
-      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
-       func_show_eval '$MV "$output_obj" "$lobj"' \
-         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-
-      # Allow error messages only from the first compilation.
-      if test yes = "$suppress_opt"; then
-       suppress_output=' >/dev/null 2>&1'
-      fi
-    fi
-
-    # Only build a position-dependent object if we build old libraries.
-    if test yes = "$build_old_libs"; then
-      if test yes != "$pic_mode"; then
-       # Don't build PIC code
-       command="$base_compile $qsrcfile$pie_flag"
-      else
-       command="$base_compile $qsrcfile $pic_flag"
-      fi
-      if test yes = "$compiler_c_o"; then
-       func_append command " -o $obj"
-      fi
-
-      # Suppress compiler output if we already did a PIC compilation.
-      func_append command "$suppress_output"
-      func_show_eval_locale "$command" \
-        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
-      if test warn = "$need_locks" &&
-        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-       $ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support '-c' and '-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-       $opt_dry_run || $RM $removelist
-       exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed
-      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
-       func_show_eval '$MV "$output_obj" "$obj"' \
-         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-    fi
-
-    $opt_dry_run || {
-      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
-
-      # Unlock the critical section if it was locked
-      if test no != "$need_locks"; then
-       removelist=$lockfile
-        $RM "$lockfile"
-      fi
-    }
-
-    exit $EXIT_SUCCESS
-}
-
-$opt_help || {
-  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
-    # We need to display help for each of the modes.
-    case $opt_mode in
-      "")
-        # Generic help is extracted from the usage comments
-        # at the start of this file.
-        func_help
-        ;;
-
-      clean)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      compile)
-      $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
-  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-  -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to build PIC objects only
-  -prefer-non-pic   try to build non-PIC objects only
-  -shared           do not build a '.o' file suitable for static linking
-  -static           only build a '.o' file suitable for static linking
-  -Wc,FLAG          pass FLAG directly to the compiler
-
-COMPILE-COMMAND is a command to be used in creating a 'standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix '.c' with the
-library object suffix, '.lo'."
-        ;;
-
-      execute)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
-  -dlopen FILE      add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to '-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
-        ;;
-
-      finish)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges.  Use
-the '--dry-run' option if you just want to see what would be executed."
-        ;;
-
-      install)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command.  The first component should be
-either the 'install' or 'cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
-  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
-        ;;
-
-      link)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
-  -all-static       do not do any dynamic linking at all
-  -avoid-version    do not add a version suffix if possible
-  -bindir BINDIR    specify path to binaries directory (for systems where
-                    libraries must be found in the PATH setting at runtime)
-  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
-  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-  -export-symbols SYMFILE
-                    try to export only the symbols listed in SYMFILE
-  -export-symbols-regex REGEX
-                    try to export only the symbols matching REGEX
-  -LLIBDIR          search LIBDIR for required installed libraries
-  -lNAME            OUTPUT-FILE requires the installed library libNAME
-  -module           build a library that can dlopened
-  -no-fast-install  disable the fast-install mode
-  -no-install       link a not-installable executable
-  -no-undefined     declare that a library does not refer to external symbols
-  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  use a list of object files found in FILE to specify objects
-  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
-  -precious-files-regex REGEX
-                    don't remove output files matching REGEX
-  -release RELEASE  specify package release information
-  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -shared           only do dynamic linking of libtool libraries
-  -shrext SUFFIX    override the standard shared library file extension
-  -static           do not do any dynamic linking of uninstalled libtool libraries
-  -static-libtool-libs
-                    do not do any dynamic linking of libtool libraries
-  -version-info CURRENT[:REVISION[:AGE]]
-                    specify library version info [each variable defaults to 0]
-  -weak LIBNAME     declare that the target provides the LIBNAME interface
-  -Wc,FLAG
-  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
-  -Wl,FLAG
-  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
-  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
-
-All other options (arguments beginning with '-') are ignored.
-
-Every other argument is treated as a filename.  Files ending in '.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in '.la', then a libtool library is created,
-only library objects ('.lo' files) may be specified, and '-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
-using 'ar' and 'ranlib', or on Windows using 'lib'.
-
-If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
-is created, otherwise an executable program is created."
-        ;;
-
-      uninstall)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      *)
-        func_fatal_help "invalid operation mode '$opt_mode'"
-        ;;
-    esac
-
-    echo
-    $ECHO "Try '$progname --help' for more information about other modes."
-}
-
-# Now that we've collected a possible --mode arg, show help if necessary
-if $opt_help; then
-  if test : = "$opt_help"; then
-    func_mode_help
-  else
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-       func_mode_help
-      done
-    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-       echo
-       func_mode_help
-      done
-    } |
-    $SED '1d
-      /^When reporting/,/^Report/{
-       H
-       d
-      }
-      $x
-      /information about other modes/d
-      /more detailed .*MODE/d
-      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
-  fi
-  exit $?
-fi
-
-
-# func_mode_execute arg...
-func_mode_execute ()
-{
-    $debug_cmd
-
-    # The first argument is the command name.
-    cmd=$nonopt
-    test -z "$cmd" && \
-      func_fatal_help "you must specify a COMMAND"
-
-    # Handle -dlopen flags immediately.
-    for file in $opt_dlopen; do
-      test -f "$file" \
-       || func_fatal_help "'$file' is not a file"
-
-      dir=
-      case $file in
-      *.la)
-       func_resolve_sysroot "$file"
-       file=$func_resolve_sysroot_result
-
-       # Check to see that this really is a libtool archive.
-       func_lalib_unsafe_p "$file" \
-         || func_fatal_help "'$lib' is not a valid libtool archive"
-
-       # Read the libtool library.
-       dlname=
-       library_names=
-       func_source "$file"
-
-       # Skip this library if it cannot be dlopened.
-       if test -z "$dlname"; then
-         # Warn if it was a shared library.
-         test -n "$library_names" && \
-           func_warning "'$file' was not linked with '-export-dynamic'"
-         continue
-       fi
-
-       func_dirname "$file" "" "."
-       dir=$func_dirname_result
-
-       if test -f "$dir/$objdir/$dlname"; then
-         func_append dir "/$objdir"
-       else
-         if test ! -f "$dir/$dlname"; then
-           func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
-         fi
-       fi
-       ;;
-
-      *.lo)
-       # Just add the directory containing the .lo file.
-       func_dirname "$file" "" "."
-       dir=$func_dirname_result
-       ;;
-
-      *)
-       func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
-       continue
-       ;;
-      esac
-
-      # Get the absolute pathname.
-      absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir=$absdir
-
-      # Now add the directory to shlibpath_var.
-      if eval "test -z \"\$$shlibpath_var\""; then
-       eval "$shlibpath_var=\"\$dir\""
-      else
-       eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
-      fi
-    done
-
-    # This variable tells wrapper scripts just to set shlibpath_var
-    # rather than running their programs.
-    libtool_execute_magic=$magic
-
-    # Check if any of the arguments is a wrapper script.
-    args=
-    for file
-    do
-      case $file in
-      -* | *.la | *.lo ) ;;
-      *)
-       # Do a test to see if this is really a libtool program.
-       if func_ltwrapper_script_p "$file"; then
-         func_source "$file"
-         # Transform arg to wrapped name.
-         file=$progdir/$program
-       elif func_ltwrapper_executable_p "$file"; then
-         func_ltwrapper_scriptname "$file"
-         func_source "$func_ltwrapper_scriptname_result"
-         # Transform arg to wrapped name.
-         file=$progdir/$program
-       fi
-       ;;
-      esac
-      # Quote arguments (to preserve shell metacharacters).
-      func_append_quoted args "$file"
-    done
-
-    if $opt_dry_run; then
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-       eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-       echo "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
-    else
-      if test -n "$shlibpath_var"; then
-       # Export the shlibpath_var.
-       eval "export $shlibpath_var"
-      fi
-
-      # Restore saved environment variables
-      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-      do
-       eval "if test \"\${save_$lt_var+set}\" = set; then
-                $lt_var=\$save_$lt_var; export $lt_var
-             else
-               $lt_unset $lt_var
-             fi"
-      done
-
-      # Now prepare to actually exec the command.
-      exec_cmd=\$cmd$args
-    fi
-}
-
-test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
-    $debug_cmd
-
-    libs=
-    libdirs=
-    admincmds=
-
-    for opt in "$nonopt" ${1+"$@"}
-    do
-      if test -d "$opt"; then
-       func_append libdirs " $opt"
-
-      elif test -f "$opt"; then
-       if func_lalib_unsafe_p "$opt"; then
-         func_append libs " $opt"
-       else
-         func_warning "'$opt' is not a valid libtool archive"
-       fi
-
-      else
-       func_fatal_error "invalid argument '$opt'"
-      fi
-    done
-
-    if test -n "$libs"; then
-      if test -n "$lt_sysroot"; then
-        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
-        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
-      else
-        sysroot_cmd=
-      fi
-
-      # Remove sysroot references
-      if $opt_dry_run; then
-        for lib in $libs; do
-          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
-        done
-      else
-        tmpdir=`func_mktempdir`
-        for lib in $libs; do
-         $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
-           > $tmpdir/tmp-la
-         mv -f $tmpdir/tmp-la $lib
-       done
-        ${RM}r "$tmpdir"
-      fi
-    fi
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for libdir in $libdirs; do
-       if test -n "$finish_cmds"; then
-         # Do each command in the finish commands.
-         func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
-'"$cmd"'"'
-       fi
-       if test -n "$finish_eval"; then
-         # Do the single finish_eval.
-         eval cmds=\"$finish_eval\"
-         $opt_dry_run || eval "$cmds" || func_append admincmds "
-       $cmds"
-       fi
-      done
-    fi
-
-    # Exit here if they wanted silent mode.
-    $opt_quiet && exit $EXIT_SUCCESS
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      echo "----------------------------------------------------------------------"
-      echo "Libraries have been installed in:"
-      for libdir in $libdirs; do
-       $ECHO "   $libdir"
-      done
-      echo
-      echo "If you ever happen to want to link against installed libraries"
-      echo "in a given directory, LIBDIR, you must either use libtool, and"
-      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
-      echo "flag during linking and do at least one of the following:"
-      if test -n "$shlibpath_var"; then
-       echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
-       echo "     during execution"
-      fi
-      if test -n "$runpath_var"; then
-       echo "   - add LIBDIR to the '$runpath_var' environment variable"
-       echo "     during linking"
-      fi
-      if test -n "$hardcode_libdir_flag_spec"; then
-       libdir=LIBDIR
-       eval flag=\"$hardcode_libdir_flag_spec\"
-
-       $ECHO "   - use the '$flag' linker flag"
-      fi
-      if test -n "$admincmds"; then
-       $ECHO "   - have your system administrator run these commands:$admincmds"
-      fi
-      if test -f /etc/ld.so.conf; then
-       echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
-      fi
-      echo
-
-      echo "See any operating system documentation about shared libraries for"
-      case $host in
-       solaris2.[6789]|solaris2.1[0-9])
-         echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-         echo "pages."
-         ;;
-       *)
-         echo "more information, such as the ld(1) and ld.so(8) manual pages."
-         ;;
-      esac
-      echo "----------------------------------------------------------------------"
-    fi
-    exit $EXIT_SUCCESS
-}
-
-test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
-
-
-# func_mode_install arg...
-func_mode_install ()
-{
-    $debug_cmd
-
-    # There may be an optional sh(1) argument at the beginning of
-    # install_prog (especially on Windows NT).
-    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
-       # Allow the use of GNU shtool's install command.
-       case $nonopt in *shtool*) :;; *) false;; esac
-    then
-      # Aesthetically quote it.
-      func_quote_arg pretty "$nonopt"
-      install_prog="$func_quote_arg_result "
-      arg=$1
-      shift
-    else
-      install_prog=
-      arg=$nonopt
-    fi
-
-    # The real first argument should be the name of the installation program.
-    # Aesthetically quote it.
-    func_quote_arg pretty "$arg"
-    func_append install_prog "$func_quote_arg_result"
-    install_shared_prog=$install_prog
-    case " $install_prog " in
-      *[\\\ /]cp\ *) install_cp=: ;;
-      *) install_cp=false ;;
-    esac
-
-    # We need to accept at least all the BSD install flags.
-    dest=
-    files=
-    opts=
-    prev=
-    install_type=
-    isdir=false
-    stripme=
-    no_mode=:
-    for arg
-    do
-      arg2=
-      if test -n "$dest"; then
-       func_append files " $dest"
-       dest=$arg
-       continue
-      fi
-
-      case $arg in
-      -d) isdir=: ;;
-      -f)
-       if $install_cp; then :; else
-         prev=$arg
-       fi
-       ;;
-      -g | -m | -o)
-       prev=$arg
-       ;;
-      -s)
-       stripme=" -s"
-       continue
-       ;;
-      -*)
-       ;;
-      *)
-       # If the previous option needed an argument, then skip it.
-       if test -n "$prev"; then
-         if test X-m = "X$prev" && test -n "$install_override_mode"; then
-           arg2=$install_override_mode
-           no_mode=false
-         fi
-         prev=
-       else
-         dest=$arg
-         continue
-       fi
-       ;;
-      esac
-
-      # Aesthetically quote the argument.
-      func_quote_arg pretty "$arg"
-      func_append install_prog " $func_quote_arg_result"
-      if test -n "$arg2"; then
-       func_quote_arg pretty "$arg2"
-      fi
-      func_append install_shared_prog " $func_quote_arg_result"
-    done
-
-    test -z "$install_prog" && \
-      func_fatal_help "you must specify an install program"
-
-    test -n "$prev" && \
-      func_fatal_help "the '$prev' option requires an argument"
-
-    if test -n "$install_override_mode" && $no_mode; then
-      if $install_cp; then :; else
-       func_quote_arg pretty "$install_override_mode"
-       func_append install_shared_prog " -m $func_quote_arg_result"
-      fi
-    fi
-
-    if test -z "$files"; then
-      if test -z "$dest"; then
-       func_fatal_help "no file or destination specified"
-      else
-       func_fatal_help "you must specify a destination"
-      fi
-    fi
-
-    # Strip any trailing slash from the destination.
-    func_stripname '' '/' "$dest"
-    dest=$func_stripname_result
-
-    # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=:
-    if $isdir; then
-      destdir=$dest
-      destname=
-    else
-      func_dirname_and_basename "$dest" "" "."
-      destdir=$func_dirname_result
-      destname=$func_basename_result
-
-      # Not a directory, so check to see that there is only one file specified.
-      set dummy $files; shift
-      test "$#" -gt 1 && \
-       func_fatal_help "'$dest' is not a directory"
-    fi
-    case $destdir in
-    [\\/]* | [A-Za-z]:[\\/]*) ;;
-    *)
-      for file in $files; do
-       case $file in
-       *.lo) ;;
-       *)
-         func_fatal_help "'$destdir' must be an absolute directory name"
-         ;;
-       esac
-      done
-      ;;
-    esac
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic=$magic
-
-    staticlibs=
-    future_libdirs=
-    current_libdirs=
-    for file in $files; do
-
-      # Do each installation.
-      case $file in
-      *.$libext)
-       # Do the static libraries later.
-       func_append staticlibs " $file"
-       ;;
-
-      *.la)
-       func_resolve_sysroot "$file"
-       file=$func_resolve_sysroot_result
-
-       # Check to see that this really is a libtool archive.
-       func_lalib_unsafe_p "$file" \
-         || func_fatal_help "'$file' is not a valid libtool archive"
-
-       library_names=
-       old_library=
-       relink_command=
-       func_source "$file"
-
-       # Add the libdir to current_libdirs if it is the destination.
-       if test "X$destdir" = "X$libdir"; then
-         case "$current_libdirs " in
-         *" $libdir "*) ;;
-         *) func_append current_libdirs " $libdir" ;;
-         esac
-       else
-         # Note the libdir as a future libdir.
-         case "$future_libdirs " in
-         *" $libdir "*) ;;
-         *) func_append future_libdirs " $libdir" ;;
-         esac
-       fi
-
-       func_dirname "$file" "/" ""
-       dir=$func_dirname_result
-       func_append dir "$objdir"
-
-       if test -n "$relink_command"; then
-         # Determine the prefix the user has applied to our future dir.
-         inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
-
-         # Don't allow the user to place us outside of our expected
-         # location b/c this prevents finding dependent libraries that
-         # are installed to the same prefix.
-         # At present, this check doesn't affect windows .dll's that
-         # are installed into $libdir/../bin (currently, that works fine)
-         # but it's something to keep an eye on.
-         test "$inst_prefix_dir" = "$destdir" && \
-           func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
-
-         if test -n "$inst_prefix_dir"; then
-           # Stick the inst_prefix_dir data into the link command.
-           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-         else
-           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
-         fi
-
-         func_warning "relinking '$file'"
-         func_show_eval "$relink_command" \
-           'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
-       fi
-
-       # See the names of the shared library.
-       set dummy $library_names; shift
-       if test -n "$1"; then
-         realname=$1
-         shift
-
-         srcname=$realname
-         test -n "$relink_command" && srcname=${realname}T
-
-         # Install the shared library and build the symlinks.
-         func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
-             'exit $?'
-         tstripme=$stripme
-         case $host_os in
-         cygwin* | mingw* | pw32* | cegcc*)
-           case $realname in
-           *.dll.a)
-             tstripme=
-             ;;
-           esac
-           ;;
-         os2*)
-           case $realname in
-           *_dll.a)
-             tstripme=
-             ;;
-           esac
-           ;;
-         esac
-         if test -n "$tstripme" && test -n "$striplib"; then
-           func_show_eval "$striplib $destdir/$realname" 'exit $?'
-         fi
-
-         if test "$#" -gt 0; then
-           # Delete the old symlinks, and create new ones.
-           # Try 'ln -sf' first, because the 'ln' binary might depend on
-           # the symlink we replace!  Solaris /bin/ln does not understand -f,
-           # so we also need to try rm && ln -s.
-           for linkname
-           do
-             test "$linkname" != "$realname" \
-               && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
-           done
-         fi
-
-         # Do each command in the postinstall commands.
-         lib=$destdir/$realname
-         func_execute_cmds "$postinstall_cmds" 'exit $?'
-       fi
-
-       # Install the pseudo-library for information purposes.
-       func_basename "$file"
-       name=$func_basename_result
-       instname=$dir/${name}i
-       func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
-       # Maybe install the static library, too.
-       test -n "$old_library" && func_append staticlibs " $dir/$old_library"
-       ;;
-
-      *.lo)
-       # Install (i.e. copy) a libtool object.
-
-       # Figure out destination file name, if it wasn't already specified.
-       if test -n "$destname"; then
-         destfile=$destdir/$destname
-       else
-         func_basename "$file"
-         destfile=$func_basename_result
-         destfile=$destdir/$destfile
-       fi
-
-       # Deduce the name of the destination old-style object file.
-       case $destfile in
-       *.lo)
-         func_lo2o "$destfile"
-         staticdest=$func_lo2o_result
-         ;;
-       *.$objext)
-         staticdest=$destfile
-         destfile=
-         ;;
-       *)
-         func_fatal_help "cannot copy a libtool object to '$destfile'"
-         ;;
-       esac
-
-       # Install the libtool object if requested.
-       test -n "$destfile" && \
-         func_show_eval "$install_prog $file $destfile" 'exit $?'
-
-       # Install the old object if enabled.
-       if test yes = "$build_old_libs"; then
-         # Deduce the name of the old-style object file.
-         func_lo2o "$file"
-         staticobj=$func_lo2o_result
-         func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
-       fi
-       exit $EXIT_SUCCESS
-       ;;
-
-      *)
-       # Figure out destination file name, if it wasn't already specified.
-       if test -n "$destname"; then
-         destfile=$destdir/$destname
-       else
-         func_basename "$file"
-         destfile=$func_basename_result
-         destfile=$destdir/$destfile
-       fi
-
-       # If the file is missing, and there is a .exe on the end, strip it
-       # because it is most likely a libtool script we actually want to
-       # install
-       stripped_ext=
-       case $file in
-         *.exe)
-           if test ! -f "$file"; then
-             func_stripname '' '.exe' "$file"
-             file=$func_stripname_result
-             stripped_ext=.exe
-           fi
-           ;;
-       esac
-
-       # Do a test to see if this is really a libtool program.
-       case $host in
-       *cygwin* | *mingw*)
-           if func_ltwrapper_executable_p "$file"; then
-             func_ltwrapper_scriptname "$file"
-             wrapper=$func_ltwrapper_scriptname_result
-           else
-             func_stripname '' '.exe' "$file"
-             wrapper=$func_stripname_result
-           fi
-           ;;
-       *)
-           wrapper=$file
-           ;;
-       esac
-       if func_ltwrapper_script_p "$wrapper"; then
-         notinst_deplibs=
-         relink_command=
-
-         func_source "$wrapper"
-
-         # Check the variables that should have been set.
-         test -z "$generated_by_libtool_version" && \
-           func_fatal_error "invalid libtool wrapper script '$wrapper'"
-
-         finalize=:
-         for lib in $notinst_deplibs; do
-           # Check to see that each library is installed.
-           libdir=
-           if test -f "$lib"; then
-             func_source "$lib"
-           fi
-           libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
-           if test -n "$libdir" && test ! -f "$libfile"; then
-             func_warning "'$lib' has not been installed in '$libdir'"
-             finalize=false
-           fi
-         done
-
-         relink_command=
-         func_source "$wrapper"
-
-         outputname=
-         if test no = "$fast_install" && test -n "$relink_command"; then
-           $opt_dry_run || {
-             if $finalize; then
-               tmpdir=`func_mktempdir`
-               func_basename "$file$stripped_ext"
-               file=$func_basename_result
-               outputname=$tmpdir/$file
-               # Replace the output file specification.
-               relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
-
-               $opt_quiet || {
-                 func_quote_arg expand,pretty "$relink_command"
-                 eval "func_echo $func_quote_arg_result"
-               }
-               if eval "$relink_command"; then :
-                 else
-                 func_error "error: relink '$file' with the above command before installing it"
-                 $opt_dry_run || ${RM}r "$tmpdir"
-                 continue
-               fi
-               file=$outputname
-             else
-               func_warning "cannot relink '$file'"
-             fi
-           }
-         else
-           # Install the binary that we compiled earlier.
-           file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
-         fi
-       fi
-
-       # remove .exe since cygwin /usr/bin/install will append another
-       # one anyway
-       case $install_prog,$host in
-       */usr/bin/install*,*cygwin*)
-         case $file:$destfile in
-         *.exe:*.exe)
-           # this is ok
-           ;;
-         *.exe:*)
-           destfile=$destfile.exe
-           ;;
-         *:*.exe)
-           func_stripname '' '.exe' "$destfile"
-           destfile=$func_stripname_result
-           ;;
-         esac
-         ;;
-       esac
-       func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
-       $opt_dry_run || if test -n "$outputname"; then
-         ${RM}r "$tmpdir"
-       fi
-       ;;
-      esac
-    done
-
-    for file in $staticlibs; do
-      func_basename "$file"
-      name=$func_basename_result
-
-      # Set up the ranlib parameters.
-      oldlib=$destdir/$name
-      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-      tool_oldlib=$func_to_tool_file_result
-
-      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-       func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
-      fi
-
-      # Do each command in the postinstall commands.
-      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
-    done
-
-    test -n "$future_libdirs" && \
-      func_warning "remember to run '$progname --finish$future_libdirs'"
-
-    if test -n "$current_libdirs"; then
-      # Maybe just do a dry run.
-      $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
-    else
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test install = "$opt_mode" && func_mode_install ${1+"$@"}
-
-
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
-{
-    $debug_cmd
-
-    my_outputname=$1
-    my_originator=$2
-    my_pic_p=${3-false}
-    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
-    my_dlsyms=
-
-    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
-      if test -n "$NM" && test -n "$global_symbol_pipe"; then
-       my_dlsyms=${my_outputname}S.c
-      else
-       func_error "not configured to extract global symbols from dlpreopened files"
-      fi
-    fi
-
-    if test -n "$my_dlsyms"; then
-      case $my_dlsyms in
-      "") ;;
-      *.c)
-       # Discover the nlist of each of the dlfiles.
-       nlist=$output_objdir/$my_outputname.nm
-
-       func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
-
-       # Parse the name list into a source file.
-       func_verbose "creating $output_objdir/$my_dlsyms"
-
-       $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
-#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
-#endif
-
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
-/* DATA imports from DLLs on WIN32 can't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined __osf__
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
-
-/* External symbol declarations for the compiler. */\
-"
-
-       if test yes = "$dlself"; then
-         func_verbose "generating symbol list for '$output'"
-
-         $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
-
-         # Add our own program objects to the symbol list.
-         progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-         for progfile in $progfiles; do
-           func_to_tool_file "$progfile" func_convert_file_msys_to_w32
-           func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
-           $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
-         done
-
-         if test -n "$exclude_expsyms"; then
-           $opt_dry_run || {
-             eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-           }
-         fi
-
-         if test -n "$export_symbols_regex"; then
-           $opt_dry_run || {
-             eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-           }
-         fi
-
-         # Prepare the list of exported symbols
-         if test -z "$export_symbols"; then
-           export_symbols=$output_objdir/$outputname.exp
-           $opt_dry_run || {
-             $RM $export_symbols
-             eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-             case $host in
-             *cygwin* | *mingw* | *cegcc* )
-                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
-               ;;
-             esac
-           }
-         else
-           $opt_dry_run || {
-             eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-             eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-             case $host in
-               *cygwin* | *mingw* | *cegcc* )
-                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
-                 ;;
-             esac
-           }
-         fi
-       fi
-
-       for dlprefile in $dlprefiles; do
-         func_verbose "extracting global C symbols from '$dlprefile'"
-         func_basename "$dlprefile"
-         name=$func_basename_result
-          case $host in
-           *cygwin* | *mingw* | *cegcc* )
-             # if an import library, we need to obtain dlname
-             if func_win32_import_lib_p "$dlprefile"; then
-               func_tr_sh "$dlprefile"
-               eval "curr_lafile=\$libfile_$func_tr_sh_result"
-               dlprefile_dlbasename=
-               if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
-                 # Use subshell, to avoid clobbering current variable values
-                 dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
-                 if test -n "$dlprefile_dlname"; then
-                   func_basename "$dlprefile_dlname"
-                   dlprefile_dlbasename=$func_basename_result
-                 else
-                   # no lafile. user explicitly requested -dlpreopen <import library>.
-                   $sharedlib_from_linklib_cmd "$dlprefile"
-                   dlprefile_dlbasename=$sharedlib_from_linklib_result
-                 fi
-               fi
-               $opt_dry_run || {
-                 if test -n "$dlprefile_dlbasename"; then
-                   eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
-                 else
-                   func_warning "Could not compute DLL name from $name"
-                   eval '$ECHO ": $name " >> "$nlist"'
-                 fi
-                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
-                   $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
-               }
-             else # not an import lib
-               $opt_dry_run || {
-                 eval '$ECHO ": $name " >> "$nlist"'
-                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-               }
-             fi
-           ;;
-           *)
-             $opt_dry_run || {
-               eval '$ECHO ": $name " >> "$nlist"'
-               func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-               eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-             }
-           ;;
-          esac
-       done
-
-       $opt_dry_run || {
-         # Make sure we have at least an empty file.
-         test -f "$nlist" || : > "$nlist"
-
-         if test -n "$exclude_expsyms"; then
-           $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-           $MV "$nlist"T "$nlist"
-         fi
-
-         # Try sorting and uniquifying the output.
-         if $GREP -v "^: " < "$nlist" |
-             if sort -k 3 </dev/null >/dev/null 2>&1; then
-               sort -k 3
-             else
-               sort +2
-             fi |
-             uniq > "$nlist"S; then
-           :
-         else
-           $GREP -v "^: " < "$nlist" > "$nlist"S
-         fi
-
-         if test -f "$nlist"S; then
-           eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
-         else
-           echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
-         fi
-
-         func_show_eval '$RM "${nlist}I"'
-         if test -n "$global_symbol_to_import"; then
-           eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
-         fi
-
-         echo >> "$output_objdir/$my_dlsyms" "\
-
-/* The mapping between symbol names and symbols.  */
-typedef struct {
-  const char *name;
-  void *address;
-} lt_dlsymlist;
-extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];\
-"
-
-         if test -s "$nlist"I; then
-           echo >> "$output_objdir/$my_dlsyms" "\
-static void lt_syminit(void)
-{
-  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
-  for (; symbol->name; ++symbol)
-    {"
-           $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
-           echo >> "$output_objdir/$my_dlsyms" "\
-    }
-}"
-         fi
-         echo >> "$output_objdir/$my_dlsyms" "\
-LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{ {\"$my_originator\", (void *) 0},"
-
-         if test -s "$nlist"I; then
-           echo >> "$output_objdir/$my_dlsyms" "\
-  {\"@INIT@\", (void *) &lt_syminit},"
-         fi
-
-         case $need_lib_prefix in
-         no)
-           eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
-           ;;
-         *)
-           eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
-           ;;
-         esac
-         echo >> "$output_objdir/$my_dlsyms" "\
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt_${my_prefix}_LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
-       } # !$opt_dry_run
-
-       pic_flag_for_symtable=
-       case "$compile_command " in
-       *" -static "*) ;;
-       *)
-         case $host in
-         # compiling the symbol table file with pic_flag works around
-         # a FreeBSD bug that causes programs to crash when -lm is
-         # linked before any other PIC object.  But we must not use
-         # pic_flag when linking with -static.  The problem exists in
-         # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-         *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-           pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
-         *-*-hpux*)
-           pic_flag_for_symtable=" $pic_flag"  ;;
-         *)
-           $my_pic_p && pic_flag_for_symtable=" $pic_flag"
-           ;;
-         esac
-         ;;
-       esac
-       symtab_cflags=
-       for arg in $LTCFLAGS; do
-         case $arg in
-         -pie | -fpie | -fPIE) ;;
-         *) func_append symtab_cflags " $arg" ;;
-         esac
-       done
-
-       # Now compile the dynamic symbol file.
-       func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
-
-       # Clean up the generated files.
-       func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
-
-       # Transform the symbol file into the correct name.
-       symfileobj=$output_objdir/${my_outputname}S.$objext
-       case $host in
-       *cygwin* | *mingw* | *cegcc* )
-         if test -f "$output_objdir/$my_outputname.def"; then
-           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-         else
-           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-         fi
-         ;;
-       *)
-         compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-         finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-         ;;
-       esac
-       ;;
-      *)
-       func_fatal_error "unknown suffix for '$my_dlsyms'"
-       ;;
-      esac
-    else
-      # We keep going just in case the user didn't refer to
-      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-      # really was required.
-
-      # Nullify the symbol file.
-      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
-    fi
-}
-
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
-  $debug_cmd
-
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
-  test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
-  $debug_cmd
-
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
-  test -n "$func_cygming_ms_implib_tmp"
-}
-
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-# Despite the name, also deal with 64 bit binaries.
-func_win32_libid ()
-{
-  $debug_cmd
-
-  win32_libid_type=unknown
-  win32_fileres=`file -L $1 2>/dev/null`
-  case $win32_fileres in
-  *ar\ archive\ import\ library*) # definitely import
-    win32_libid_type="x86 archive import"
-    ;;
-  *ar\ archive*) # could be an import, or static
-    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-      case $nm_interface in
-      "MS dumpbin")
-       if func_cygming_ms_implib_p "$1" ||
-          func_cygming_gnu_implib_p "$1"
-       then
-         win32_nmres=import
-       else
-         win32_nmres=
-       fi
-       ;;
-      *)
-       func_to_tool_file "$1" func_convert_file_msys_to_w32
-       win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
-         $SED -n -e '
-           1,100{
-               / I /{
-                   s|.*|import|
-                   p
-                   q
-               }
-           }'`
-       ;;
-      esac
-      case $win32_nmres in
-      import*)  win32_libid_type="x86 archive import";;
-      *)        win32_libid_type="x86 archive static";;
-      esac
-    fi
-    ;;
-  *DLL*)
-    win32_libid_type="x86 DLL"
-    ;;
-  *executable*) # but shell scripts are "executable" too...
-    case $win32_fileres in
-    *MS\ Windows\ PE\ Intel*)
-      win32_libid_type="x86 DLL"
-      ;;
-    esac
-    ;;
-  esac
-  $ECHO "$win32_libid_type"
-}
-
-# func_cygming_dll_for_implib ARG
-#
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib ()
-{
-  $debug_cmd
-
-  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
-}
-
-# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
-#
-# The is the core of a fallback implementation of a
-# platform-specific function to extract the name of the
-# DLL associated with the specified import library LIBNAME.
-#
-# SECTION_NAME is either .idata$6 or .idata$7, depending
-# on the platform and compiler that created the implib.
-#
-# Echos the name of the DLL associated with the
-# specified import library.
-func_cygming_dll_for_implib_fallback_core ()
-{
-  $debug_cmd
-
-  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
-  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
-    $SED '/^Contents of section '"$match_literal"':/{
-      # Place marker at beginning of archive member dllname section
-      s/.*/====MARK====/
-      p
-      d
-    }
-    # These lines can sometimes be longer than 43 characters, but
-    # are always uninteresting
-    /:[         ]*file format pe[i]\{,1\}-/d
-    /^In archive [^:]*:/d
-    # Ensure marker is printed
-    /^====MARK====/p
-    # Remove all lines with less than 43 characters
-    /^.\{43\}/!d
-    # From remaining lines, remove first 43 characters
-    s/^.\{43\}//' |
-    $SED -n '
-      # Join marker and all lines until next marker into a single line
-      /^====MARK====/ b para
-      H
-      $ b para
-      b
-      :para
-      x
-      s/\n//g
-      # Remove the marker
-      s/^====MARK====//
-      # Remove trailing dots and whitespace
-      s/[\. \t]*$//
-      # Print
-      /./p' |
-    # we now have a list, one entry per line, of the stringified
-    # contents of the appropriate section of all members of the
-    # archive that possess that section. Heuristic: eliminate
-    # all those that have a first or second character that is
-    # a '.' (that is, objdump's representation of an unprintable
-    # character.) This should work for all archives with less than
-    # 0x302f exports -- but will fail for DLLs whose name actually
-    # begins with a literal '.' or a single character followed by
-    # a '.'.
-    #
-    # Of those that remain, print the first one.
-    $SED -e '/^\./d;/^.\./d;q'
-}
-
-# func_cygming_dll_for_implib_fallback ARG
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-#
-# This fallback implementation is for use when $DLLTOOL
-# does not support the --identify-strict option.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib_fallback ()
-{
-  $debug_cmd
-
-  if func_cygming_gnu_implib_p "$1"; then
-    # binutils import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
-  elif func_cygming_ms_implib_p "$1"; then
-    # ms-generated import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
-  else
-    # unknown
-    sharedlib_from_linklib_result=
-  fi
-}
-
-
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
-    $debug_cmd
-
-    f_ex_an_ar_dir=$1; shift
-    f_ex_an_ar_oldlib=$1
-    if test yes = "$lock_old_archive_extraction"; then
-      lockfile=$f_ex_an_ar_oldlib.lock
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-       func_echo "Waiting for $lockfile to be removed"
-       sleep 2
-      done
-    fi
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
-                  'stat=$?; rm -f "$lockfile"; exit $stat'
-    if test yes = "$lock_old_archive_extraction"; then
-      $opt_dry_run || rm -f "$lockfile"
-    fi
-    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-     :
-    else
-      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
-    fi
-}
-
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
-    $debug_cmd
-
-    my_gentop=$1; shift
-    my_oldlibs=${1+"$@"}
-    my_oldobjs=
-    my_xlib=
-    my_xabs=
-    my_xdir=
-
-    for my_xlib in $my_oldlibs; do
-      # Extract the objects.
-      case $my_xlib in
-       [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
-       *) my_xabs=`pwd`"/$my_xlib" ;;
-      esac
-      func_basename "$my_xlib"
-      my_xlib=$func_basename_result
-      my_xlib_u=$my_xlib
-      while :; do
-        case " $extracted_archives " in
-       *" $my_xlib_u "*)
-         func_arith $extracted_serial + 1
-         extracted_serial=$func_arith_result
-         my_xlib_u=lt$extracted_serial-$my_xlib ;;
-       *) break ;;
-       esac
-      done
-      extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir=$my_gentop/$my_xlib_u
-
-      func_mkdir_p "$my_xdir"
-
-      case $host in
-      *-darwin*)
-       func_verbose "Extracting $my_xabs"
-       # Do not bother doing anything if just a dry run
-       $opt_dry_run || {
-         darwin_orig_dir=`pwd`
-         cd $my_xdir || exit $?
-         darwin_archive=$my_xabs
-         darwin_curdir=`pwd`
-         func_basename "$darwin_archive"
-         darwin_base_archive=$func_basename_result
-         darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
-         if test -n "$darwin_arches"; then
-           darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
-           darwin_arch=
-           func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-           for darwin_arch in  $darwin_arches; do
-             func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
-             $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
-             cd "unfat-$$/$darwin_base_archive-$darwin_arch"
-             func_extract_an_archive "`pwd`" "$darwin_base_archive"
-             cd "$darwin_curdir"
-             $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
-           done # $darwin_arches
-            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-           darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
-           darwin_file=
-           darwin_files=
-           for darwin_file in $darwin_filelist; do
-             darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
-             $LIPO -create -output "$darwin_file" $darwin_files
-           done # $darwin_filelist
-           $RM -rf unfat-$$
-           cd "$darwin_orig_dir"
-         else
-           cd $darwin_orig_dir
-           func_extract_an_archive "$my_xdir" "$my_xabs"
-         fi # $darwin_arches
-       } # !$opt_dry_run
-       ;;
-      *)
-        func_extract_an_archive "$my_xdir" "$my_xabs"
-       ;;
-      esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
-    done
-
-    func_extract_archives_result=$my_oldobjs
-}
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable.  Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take.  If 'yes', then the emitted script
-# will assume that the directory where it is stored is
-# the $objdir directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
-       func_emit_wrapper_arg1=${1-no}
-
-       $ECHO "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
-  # install mode needs the following variables:
-  generated_by_libtool_version='$macro_version'
-  notinst_deplibs='$notinst_deplibs'
-else
-  # When we are sourced in execute mode, \$file and \$ECHO are already set.
-  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    file=\"\$0\""
-
-    func_quote_arg pretty "$ECHO"
-    qECHO=$func_quote_arg_result
-    $ECHO "\
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-    ECHO=$qECHO
-  fi
-
-# Very basic option parsing. These options are (a) specific to
-# the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ that is used only on
-# windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options that match
-# this pattern).
-#
-# There are only two supported options: --lt-debug and
-# --lt-dump-script. There is, deliberately, no --lt-help.
-#
-# The first argument to this parsing function should be the
-# script's $0 value, followed by "$@".
-lt_option_debug=
-func_parse_lt_options ()
-{
-  lt_script_arg0=\$0
-  shift
-  for lt_opt
-  do
-    case \"\$lt_opt\" in
-    --lt-debug) lt_option_debug=1 ;;
-    --lt-dump-script)
-        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
-        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
-        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
-        cat \"\$lt_dump_D/\$lt_dump_F\"
-        exit 0
-      ;;
-    --lt-*)
-        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
-        exit 1
-      ;;
-    esac
-  done
-
-  # Print the debug banner immediately:
-  if test -n \"\$lt_option_debug\"; then
-    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
-  fi
-}
-
-# Used when --lt-debug. Prints its arguments to stdout
-# (redirection is the responsibility of the caller)
-func_lt_dump_args ()
-{
-  lt_dump_args_N=1;
-  for lt_arg
-  do
-    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
-    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
-  done
-}
-
-# Core function for launching the target application
-func_exec_program_core ()
-{
-"
-  case $host in
-  # Backslashes separate directories on plain windows
-  *-*-mingw | *-*-os2* | *-cegcc*)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-    ;;
-
-  *)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-    ;;
-  esac
-  $ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 1
-}
-
-# A function to encapsulate launching the target application
-# Strips options in the --lt-* namespace from \$@ and
-# launches target application with the remaining arguments.
-func_exec_program ()
-{
-  case \" \$* \" in
-  *\\ --lt-*)
-    for lt_wr_arg
-    do
-      case \$lt_wr_arg in
-      --lt-*) ;;
-      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-      esac
-      shift
-    done ;;
-  esac
-  func_exec_program_core \${1+\"\$@\"}
-}
-
-  # Parse options
-  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
-
-  # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
-  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
-  # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
-  while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
-
-    # If there was a directory component, then change thisdir.
-    if test \"x\$destdir\" != \"x\$file\"; then
-      case \"\$destdir\" in
-      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-      *) thisdir=\"\$thisdir/\$destdir\" ;;
-      esac
-    fi
-
-    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
-  done
-
-  # Usually 'no', except on cygwin/mingw when embedded into
-  # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
-  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
-    # special case for '.'
-    if test \"\$thisdir\" = \".\"; then
-      thisdir=\`pwd\`
-    fi
-    # remove .libs from thisdir
-    case \"\$thisdir\" in
-    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
-    $objdir )   thisdir=. ;;
-    esac
-  fi
-
-  # Try to get the absolute directory name.
-  absdir=\`cd \"\$thisdir\" && pwd\`
-  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
-       if test yes = "$fast_install"; then
-         $ECHO "\
-  program=lt-'$outputname'$exeext
-  progdir=\"\$thisdir/$objdir\"
-
-  if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
-       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
-    file=\"\$\$-\$program\"
-
-    if test ! -d \"\$progdir\"; then
-      $MKDIR \"\$progdir\"
-    else
-      $RM \"\$progdir/\$file\"
-    fi"
-
-         $ECHO "\
-
-    # relink executable if necessary
-    if test -n \"\$relink_command\"; then
-      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-      else
-       \$ECHO \"\$relink_command_output\" >&2
-       $RM \"\$progdir/\$file\"
-       exit 1
-      fi
-    fi
-
-    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-    { $RM \"\$progdir/\$program\";
-      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-    $RM \"\$progdir/\$file\"
-  fi"
-       else
-         $ECHO "\
-  program='$outputname'
-  progdir=\"\$thisdir/$objdir\"
-"
-       fi
-
-       $ECHO "\
-
-  if test -f \"\$progdir/\$program\"; then"
-
-       # fixup the dll searchpath if we need to.
-       #
-       # Fix the DLL searchpath if we need to.  Do this before prepending
-       # to shlibpath, because on Windows, both are PATH and uninstalled
-       # libraries must come first.
-       if test -n "$dllsearchpath"; then
-         $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-       fi
-
-       # Export our shlibpath_var if we have one.
-       if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-         $ECHO "\
-    # Add our own library path to $shlibpath_var
-    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
-    # Some systems cannot cope with colon-terminated $shlibpath_var
-    # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
-
-    export $shlibpath_var
-"
-       fi
-
-       $ECHO "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-      func_exec_program \${1+\"\$@\"}
-    fi
-  else
-    # The program doesn't exist.
-    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
-    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
-    exit 1
-  fi
-fi\
-"
-}
-
-
-# func_emit_cwrapperexe_src
-# emit the source code for a wrapper executable on stdout
-# Must ONLY be called from within func_mode_link because
-# it depends on a number of variable set therein.
-func_emit_cwrapperexe_src ()
-{
-       cat <<EOF
-
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
-
-   The $output program cannot be directly executed until all the libtool
-   libraries that it depends on are installed.
-
-   This wrapper executable should never be moved out of the build directory.
-   If it is, it will not operate correctly.
-*/
-EOF
-           cat <<"EOF"
-#ifdef _MSC_VER
-# define _CRT_SECURE_NO_DEPRECATE 1
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-#  include <io.h>
-# endif
-#endif
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
-
-/* declarations of non-ANSI functions */
-#if defined __MINGW32__
-# ifdef __STRICT_ANSI__
-int _putenv (const char *);
-# endif
-#elif defined __CYGWIN__
-# ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-# endif
-/* #elif defined other_platform || defined ... */
-#endif
-
-/* portability defines, excluding path handling macros */
-#if defined _MSC_VER
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-# define S_IXUSR _S_IEXEC
-#elif defined __MINGW32__
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-#elif defined __CYGWIN__
-# define HAVE_SETENV
-# define FOPEN_WB "wb"
-/* #elif defined other platforms ... */
-#endif
-
-#if defined PATH_MAX
-# define LT_PATHMAX PATH_MAX
-#elif defined MAXPATHLEN
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-
-/* path handling portability macros */
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
-  defined __OS2__
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# define FOPEN_WB "wb"
-# ifndef DIR_SEPARATOR_2
-#  define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-#  define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
-       (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#ifndef FOPEN_WB
-# define FOPEN_WB "w"
-#endif
-#ifndef _O_BINARY
-# define _O_BINARY 0
-#endif
-
-#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
-  if (stale) { free (stale); stale = 0; } \
-} while (0)
-
-#if defined LT_DEBUGWRAPPER
-static int lt_debug = 1;
-#else
-static int lt_debug = 0;
-#endif
-
-const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
-
-void *xmalloc (size_t num);
-char *xstrdup (const char *string);
-const char *base_name (const char *name);
-char *find_executable (const char *wrapper);
-char *chase_symlinks (const char *pathspec);
-int make_executable (const char *path);
-int check_executable (const char *path);
-char *strendzap (char *str, const char *pat);
-void lt_debugprintf (const char *file, int line, const char *fmt, ...);
-void lt_fatal (const char *file, int line, const char *message, ...);
-static const char *nonnull (const char *s);
-static const char *nonempty (const char *s);
-void lt_setenv (const char *name, const char *value);
-char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-char **prepare_spawn (char **argv);
-void lt_dump_script (FILE *f);
-EOF
-
-           cat <<EOF
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
-# define externally_visible volatile
-#else
-# define externally_visible __attribute__((externally_visible)) volatile
-#endif
-externally_visible const char * MAGIC_EXE = "$magic_exe";
-const char * LIB_PATH_VARNAME = "$shlibpath_var";
-EOF
-
-           if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-              func_to_host_path "$temp_rpath"
-             cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-           else
-             cat <<"EOF"
-const char * LIB_PATH_VALUE   = "";
-EOF
-           fi
-
-           if test -n "$dllsearchpath"; then
-              func_to_host_path "$dllsearchpath:"
-             cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-           else
-             cat <<"EOF"
-const char * EXE_PATH_VARNAME = "";
-const char * EXE_PATH_VALUE   = "";
-EOF
-           fi
-
-           if test yes = "$fast_install"; then
-             cat <<EOF
-const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
-EOF
-           else
-             cat <<EOF
-const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
-EOF
-           fi
-
-
-           cat <<"EOF"
-
-#define LTWRAPPER_OPTION_PREFIX         "--lt-"
-
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
-
-int
-main (int argc, char *argv[])
-{
-  char **newargz;
-  int  newargc;
-  char *tmp_pathspec;
-  char *actual_cwrapper_path;
-  char *actual_cwrapper_name;
-  char *target_name;
-  char *lt_argv_zero;
-  int rval = 127;
-
-  int i;
-
-  program_name = (char *) xstrdup (base_name (argv[0]));
-  newargz = XMALLOC (char *, (size_t) argc + 1);
-
-  /* very simple arg parsing; don't want to rely on getopt
-   * also, copy all non cwrapper options to newargz, except
-   * argz[0], which is handled differently
-   */
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (STREQ (argv[i], dumpscript_opt))
-       {
-EOF
-           case $host in
-             *mingw* | *cygwin* )
-               # make stdout use "unix" line endings
-               echo "          setmode(1,_O_BINARY);"
-               ;;
-             esac
-
-           cat <<"EOF"
-         lt_dump_script (stdout);
-         return 0;
-       }
-      if (STREQ (argv[i], debug_opt))
-       {
-          lt_debug = 1;
-          continue;
-       }
-      if (STREQ (argv[i], ltwrapper_option_prefix))
-        {
-          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-             namespace, but it is not one of the ones we know about and
-             have already dealt with, above (inluding dump-script), then
-             report an error. Otherwise, targets might begin to believe
-             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-             namespace. The first time any user complains about this, we'll
-             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-             or a configure.ac-settable value.
-           */
-          lt_fatal (__FILE__, __LINE__,
-                   "unrecognized %s option: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-EOF
-           cat <<EOF
-  /* The GNU banner must be the first non-error debug message */
-  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
-EOF
-           cat <<"EOF"
-  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
-
-  tmp_pathspec = find_executable (argv[0]);
-  if (tmp_pathspec == NULL)
-    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (before symlink chase) at: %s\n",
-                 tmp_pathspec);
-
-  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (after symlink chase) at: %s\n",
-                 actual_cwrapper_path);
-  XFREE (tmp_pathspec);
-
-  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
-  strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
-  /* wrapper name transforms */
-  strendzap (actual_cwrapper_name, ".exe");
-  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
-  XFREE (actual_cwrapper_name);
-  actual_cwrapper_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  /* target_name transforms -- use actual target program name; might have lt- prefix */
-  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
-  strendzap (target_name, ".exe");
-  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
-  XFREE (target_name);
-  target_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(main) libtool target name: %s\n",
-                 target_name);
-EOF
-
-           cat <<EOF
-  newargz[0] =
-    XMALLOC (char, (strlen (actual_cwrapper_path) +
-                   strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
-  strcpy (newargz[0], actual_cwrapper_path);
-  strcat (newargz[0], "$objdir");
-  strcat (newargz[0], "/");
-EOF
-
-           cat <<"EOF"
-  /* stop here, and copy so we don't have to do this twice */
-  tmp_pathspec = xstrdup (newargz[0]);
-
-  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
-  strcat (newargz[0], actual_cwrapper_name);
-
-  /* DO want the lt- prefix here if it exists, so use target_name */
-  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
-  XFREE (tmp_pathspec);
-  tmp_pathspec = NULL;
-EOF
-
-           case $host_os in
-             mingw*)
-           cat <<"EOF"
-  {
-    char* p;
-    while ((p = strchr (newargz[0], '\\')) != NULL)
-      {
-       *p = '/';
-      }
-    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
-      {
-       *p = '/';
-      }
-  }
-EOF
-           ;;
-           esac
-
-           cat <<"EOF"
-  XFREE (target_name);
-  XFREE (actual_cwrapper_path);
-  XFREE (actual_cwrapper_name);
-
-  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
-  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
-     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
-     because on Windows, both *_VARNAMEs are PATH but uninstalled
-     libraries must come first. */
-  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-
-  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
-                 nonnull (lt_argv_zero));
-  for (i = 0; i < newargc; i++)
-    {
-      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
-                     i, nonnull (newargz[i]));
-    }
-
-EOF
-
-           case $host_os in
-             mingw*)
-               cat <<"EOF"
-  /* execv doesn't actually work on mingw as expected on unix */
-  newargz = prepare_spawn (newargz);
-  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
-  if (rval == -1)
-    {
-      /* failed to start process */
-      lt_debugprintf (__FILE__, __LINE__,
-                     "(main) failed to launch target \"%s\": %s\n",
-                     lt_argv_zero, nonnull (strerror (errno)));
-      return 127;
-    }
-  return rval;
-EOF
-               ;;
-             *)
-               cat <<"EOF"
-  execv (lt_argv_zero, newargz);
-  return rval; /* =127, but avoids unused variable warning */
-EOF
-               ;;
-           esac
-
-           cat <<"EOF"
-}
-
-void *
-xmalloc (size_t num)
-{
-  void *p = (void *) malloc (num);
-  if (!p)
-    lt_fatal (__FILE__, __LINE__, "memory exhausted");
-
-  return p;
-}
-
-char *
-xstrdup (const char *string)
-{
-  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
-                         string) : NULL;
-}
-
-const char *
-base_name (const char *name)
-{
-  const char *base;
-
-#if defined HAVE_DOS_BASED_FILE_SYSTEM
-  /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
-    name += 2;
-#endif
-
-  for (base = name; *name; name++)
-    if (IS_DIR_SEPARATOR (*name))
-      base = name + 1;
-  return base;
-}
-
-int
-check_executable (const char *path)
-{
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if ((stat (path, &st) >= 0)
-      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
-    return 1;
-  else
-    return 0;
-}
-
-int
-make_executable (const char *path)
-{
-  int rval = 0;
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if (stat (path, &st) >= 0)
-    {
-      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
-    }
-  return rval;
-}
-
-/* Searches for the full path of the wrapper.  Returns
-   newly allocated full path name if found, NULL otherwise
-   Does not chase symlinks, even on platforms that support them.
-*/
-char *
-find_executable (const char *wrapper)
-{
-  int has_slash = 0;
-  const char *p;
-  const char *p_next;
-  /* static buffer for getcwd */
-  char tmp[LT_PATHMAX + 1];
-  size_t tmp_len;
-  char *concat_name;
-
-  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
-                  nonempty (wrapper));
-
-  if ((wrapper == NULL) || (*wrapper == '\0'))
-    return NULL;
-
-  /* Absolute path? */
-#if defined HAVE_DOS_BASED_FILE_SYSTEM
-  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
-    {
-      concat_name = xstrdup (wrapper);
-      if (check_executable (concat_name))
-       return concat_name;
-      XFREE (concat_name);
-    }
-  else
-    {
-#endif
-      if (IS_DIR_SEPARATOR (wrapper[0]))
-       {
-         concat_name = xstrdup (wrapper);
-         if (check_executable (concat_name))
-           return concat_name;
-         XFREE (concat_name);
-       }
-#if defined HAVE_DOS_BASED_FILE_SYSTEM
-    }
-#endif
-
-  for (p = wrapper; *p; p++)
-    if (*p == '/')
-      {
-       has_slash = 1;
-       break;
-      }
-  if (!has_slash)
-    {
-      /* no slashes; search PATH */
-      const char *path = getenv ("PATH");
-      if (path != NULL)
-       {
-         for (p = path; *p; p = p_next)
-           {
-             const char *q;
-             size_t p_len;
-             for (q = p; *q; q++)
-               if (IS_PATH_SEPARATOR (*q))
-                 break;
-             p_len = (size_t) (q - p);
-             p_next = (*q == '\0' ? q : q + 1);
-             if (p_len == 0)
-               {
-                 /* empty path: current directory */
-                 if (getcwd (tmp, LT_PATHMAX) == NULL)
-                   lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-                              nonnull (strerror (errno)));
-                 tmp_len = strlen (tmp);
-                 concat_name =
-                   XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-                 memcpy (concat_name, tmp, tmp_len);
-                 concat_name[tmp_len] = '/';
-                 strcpy (concat_name + tmp_len + 1, wrapper);
-               }
-             else
-               {
-                 concat_name =
-                   XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
-                 memcpy (concat_name, p, p_len);
-                 concat_name[p_len] = '/';
-                 strcpy (concat_name + p_len + 1, wrapper);
-               }
-             if (check_executable (concat_name))
-               return concat_name;
-             XFREE (concat_name);
-           }
-       }
-      /* not found in PATH; assume curdir */
-    }
-  /* Relative path | not found in path: prepend cwd */
-  if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-              nonnull (strerror (errno)));
-  tmp_len = strlen (tmp);
-  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-  memcpy (concat_name, tmp, tmp_len);
-  concat_name[tmp_len] = '/';
-  strcpy (concat_name + tmp_len + 1, wrapper);
-
-  if (check_executable (concat_name))
-    return concat_name;
-  XFREE (concat_name);
-  return NULL;
-}
-
-char *
-chase_symlinks (const char *pathspec)
-{
-#ifndef S_ISLNK
-  return xstrdup (pathspec);
-#else
-  char buf[LT_PATHMAX];
-  struct stat s;
-  char *tmp_pathspec = xstrdup (pathspec);
-  char *p;
-  int has_symlinks = 0;
-  while (strlen (tmp_pathspec) && !has_symlinks)
-    {
-      lt_debugprintf (__FILE__, __LINE__,
-                     "checking path component for symlinks: %s\n",
-                     tmp_pathspec);
-      if (lstat (tmp_pathspec, &s) == 0)
-       {
-         if (S_ISLNK (s.st_mode) != 0)
-           {
-             has_symlinks = 1;
-             break;
-           }
-
-         /* search backwards for last DIR_SEPARATOR */
-         p = tmp_pathspec + strlen (tmp_pathspec) - 1;
-         while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-           p--;
-         if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-           {
-             /* no more DIR_SEPARATORS left */
-             break;
-           }
-         *p = '\0';
-       }
-      else
-       {
-         lt_fatal (__FILE__, __LINE__,
-                   "error accessing file \"%s\": %s",
-                   tmp_pathspec, nonnull (strerror (errno)));
-       }
-    }
-  XFREE (tmp_pathspec);
-
-  if (!has_symlinks)
-    {
-      return xstrdup (pathspec);
-    }
-
-  tmp_pathspec = realpath (pathspec, buf);
-  if (tmp_pathspec == 0)
-    {
-      lt_fatal (__FILE__, __LINE__,
-               "could not follow symlinks for %s", pathspec);
-    }
-  return xstrdup (tmp_pathspec);
-#endif
-}
-
-char *
-strendzap (char *str, const char *pat)
-{
-  size_t len, patlen;
-
-  assert (str != NULL);
-  assert (pat != NULL);
-
-  len = strlen (str);
-  patlen = strlen (pat);
-
-  if (patlen <= len)
-    {
-      str += len - patlen;
-      if (STREQ (str, pat))
-       *str = '\0';
-    }
-  return str;
-}
-
-void
-lt_debugprintf (const char *file, int line, const char *fmt, ...)
-{
-  va_list args;
-  if (lt_debug)
-    {
-      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
-      va_start (args, fmt);
-      (void) vfprintf (stderr, fmt, args);
-      va_end (args);
-    }
-}
-
-static void
-lt_error_core (int exit_status, const char *file,
-              int line, const char *mode,
-              const char *message, va_list ap)
-{
-  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
-
-  if (exit_status >= 0)
-    exit (exit_status);
-}
-
-void
-lt_fatal (const char *file, int line, const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
-  va_end (ap);
-}
-
-static const char *
-nonnull (const char *s)
-{
-  return s ? s : "(null)";
-}
-
-static const char *
-nonempty (const char *s)
-{
-  return (s && !*s) ? "(empty)" : nonnull (s);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(lt_setenv) setting '%s' to '%s'\n",
-                  nonnull (name), nonnull (value));
-  {
-#ifdef HAVE_SETENV
-    /* always make a copy, for consistency with !HAVE_SETENV */
-    char *str = xstrdup (value);
-    setenv (name, str, 1);
-#else
-    size_t len = strlen (name) + 1 + strlen (value) + 1;
-    char *str = XMALLOC (char, len);
-    sprintf (str, "%s=%s", name, value);
-    if (putenv (str) != EXIT_SUCCESS)
-      {
-        XFREE (str);
-      }
-#endif
-  }
-}
-
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
-  char *new_value;
-  if (orig_value && *orig_value)
-    {
-      size_t orig_value_len = strlen (orig_value);
-      size_t add_len = strlen (add);
-      new_value = XMALLOC (char, add_len + orig_value_len + 1);
-      if (to_end)
-        {
-          strcpy (new_value, orig_value);
-          strcpy (new_value + orig_value_len, add);
-        }
-      else
-        {
-          strcpy (new_value, add);
-          strcpy (new_value + add_len, orig_value);
-        }
-    }
-  else
-    {
-      new_value = xstrdup (add);
-    }
-  return new_value;
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      /* some systems can't cope with a ':'-terminated path #' */
-      size_t len = strlen (new_value);
-      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
-        {
-          new_value[--len] = '\0';
-        }
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-void
-lt_update_lib_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-EOF
-           case $host_os in
-             mingw*)
-               cat <<"EOF"
-
-/* Prepares an argument vector before calling spawn().
-   Note that spawn() does not by itself call the command interpreter
-     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
-      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-         GetVersionEx(&v);
-         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
-      }) ? "cmd.exe" : "command.com").
-   Instead it simply concatenates the arguments, separated by ' ', and calls
-   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
-   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
-   special way:
-   - Space and tab are interpreted as delimiters. They are not treated as
-     delimiters if they are surrounded by double quotes: "...".
-   - Unescaped double quotes are removed from the input. Their only effect is
-     that within double quotes, space and tab are treated like normal
-     characters.
-   - Backslashes not followed by double quotes are not special.
-   - But 2*n+1 backslashes followed by a double quote become
-     n backslashes followed by a double quote (n >= 0):
-       \" -> "
-       \\\" -> \"
-       \\\\\" -> \\"
- */
-#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-char **
-prepare_spawn (char **argv)
-{
-  size_t argc;
-  char **new_argv;
-  size_t i;
-
-  /* Count number of arguments.  */
-  for (argc = 0; argv[argc] != NULL; argc++)
-    ;
-
-  /* Allocate new argument vector.  */
-  new_argv = XMALLOC (char *, argc + 1);
-
-  /* Put quoted arguments into the new argument vector.  */
-  for (i = 0; i < argc; i++)
-    {
-      const char *string = argv[i];
-
-      if (string[0] == '\0')
-       new_argv[i] = xstrdup ("\"\"");
-      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
-       {
-         int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
-         size_t length;
-         unsigned int backslashes;
-         const char *s;
-         char *quoted_string;
-         char *p;
-
-         length = 0;
-         backslashes = 0;
-         if (quote_around)
-           length++;
-         for (s = string; *s != '\0'; s++)
-           {
-             char c = *s;
-             if (c == '"')
-               length += backslashes + 1;
-             length++;
-             if (c == '\\')
-               backslashes++;
-             else
-               backslashes = 0;
-           }
-         if (quote_around)
-           length += backslashes + 1;
-
-         quoted_string = XMALLOC (char, length + 1);
-
-         p = quoted_string;
-         backslashes = 0;
-         if (quote_around)
-           *p++ = '"';
-         for (s = string; *s != '\0'; s++)
-           {
-             char c = *s;
-             if (c == '"')
-               {
-                 unsigned int j;
-                 for (j = backslashes + 1; j > 0; j--)
-                   *p++ = '\\';
-               }
-             *p++ = c;
-             if (c == '\\')
-               backslashes++;
-             else
-               backslashes = 0;
-           }
-         if (quote_around)
-           {
-             unsigned int j;
-             for (j = backslashes; j > 0; j--)
-               *p++ = '\\';
-             *p++ = '"';
-           }
-         *p = '\0';
-
-         new_argv[i] = quoted_string;
-       }
-      else
-       new_argv[i] = (char *) string;
-    }
-  new_argv[argc] = NULL;
-
-  return new_argv;
-}
-EOF
-               ;;
-           esac
-
-            cat <<"EOF"
-void lt_dump_script (FILE* f)
-{
-EOF
-           func_emit_wrapper yes |
-             $SED -n -e '
-s/^\(.\{79\}\)\(..*\)/\1\
-\2/
-h
-s/\([\\"]\)/\\\1/g
-s/$/\\n/
-s/\([^\n]*\).*/  fputs ("\1", f);/p
-g
-D'
-            cat <<"EOF"
-}
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# func_win32_import_lib_p ARG
-# True if ARG is an import lib, as indicated by $file_magic_cmd
-func_win32_import_lib_p ()
-{
-    $debug_cmd
-
-    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
-    *import*) : ;;
-    *) false ;;
-    esac
-}
-
-# func_suncc_cstd_abi
-# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
-# Several compiler flags select an ABI that is incompatible with the
-# Cstd library. Avoid specifying it if any are in CXXFLAGS.
-func_suncc_cstd_abi ()
-{
-    $debug_cmd
-
-    case " $compile_command " in
-    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
-      suncc_use_cstd_abi=no
-      ;;
-    *)
-      suncc_use_cstd_abi=yes
-      ;;
-    esac
-}
-
-# func_mode_link arg...
-func_mode_link ()
-{
-    $debug_cmd
-
-    case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-      # It is impossible to link a dll without this setting, and
-      # we shouldn't force the makefile maintainer to figure out
-      # what system we are compiling for in order to pass an extra
-      # flag for every libtool invocation.
-      # allow_undefined=no
-
-      # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll that has undefined symbols, in which case not
-      # even a static library is built.  For now, we need to specify
-      # -no-undefined on the libtool link line when we can be certain
-      # that all symbols are satisfied, otherwise we get a static library.
-      allow_undefined=yes
-      ;;
-    *)
-      allow_undefined=yes
-      ;;
-    esac
-    libtool_args=$nonopt
-    base_compile="$nonopt $@"
-    compile_command=$nonopt
-    finalize_command=$nonopt
-
-    compile_rpath=
-    finalize_rpath=
-    compile_shlibpath=
-    finalize_shlibpath=
-    convenience=
-    old_convenience=
-    deplibs=
-    old_deplibs=
-    compiler_flags=
-    linker_flags=
-    dllsearchpath=
-    lib_search_path=`pwd`
-    inst_prefix_dir=
-    new_inherited_linker_flags=
-
-    avoid_version=no
-    bindir=
-    dlfiles=
-    dlprefiles=
-    dlself=no
-    export_dynamic=no
-    export_symbols=
-    export_symbols_regex=
-    generated=
-    libobjs=
-    ltlibs=
-    module=no
-    no_install=no
-    objs=
-    os2dllname=
-    non_pic_objects=
-    precious_files_regex=
-    prefer_static_libs=no
-    preload=false
-    prev=
-    prevarg=
-    release=
-    rpath=
-    xrpath=
-    perm_rpath=
-    temp_rpath=
-    thread_safe=no
-    vinfo=
-    vinfo_number=no
-    weak_libs=
-    single_module=$wl-single_module
-    func_infer_tag $base_compile
-
-    # We need to know -static, to get the right output filenames.
-    for arg
-    do
-      case $arg in
-      -shared)
-       test yes != "$build_libtool_libs" \
-         && func_fatal_configuration "cannot build a shared library"
-       build_old_libs=no
-       break
-       ;;
-      -all-static | -static | -static-libtool-libs)
-       case $arg in
-       -all-static)
-         if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
-           func_warning "complete static linking is impossible in this configuration"
-         fi
-         if test -n "$link_static_flag"; then
-           dlopen_self=$dlopen_self_static
-         fi
-         prefer_static_libs=yes
-         ;;
-       -static)
-         if test -z "$pic_flag" && test -n "$link_static_flag"; then
-           dlopen_self=$dlopen_self_static
-         fi
-         prefer_static_libs=built
-         ;;
-       -static-libtool-libs)
-         if test -z "$pic_flag" && test -n "$link_static_flag"; then
-           dlopen_self=$dlopen_self_static
-         fi
-         prefer_static_libs=yes
-         ;;
-       esac
-       build_libtool_libs=no
-       build_old_libs=yes
-       break
-       ;;
-      esac
-    done
-
-    # See if our shared archives depend on static archives.
-    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
-    # Go through the arguments, transforming them on the way.
-    while test "$#" -gt 0; do
-      arg=$1
-      shift
-      func_quote_arg pretty,unquoted "$arg"
-      qarg=$func_quote_arg_unquoted_result
-      func_append libtool_args " $func_quote_arg_result"
-
-      # If the previous option needs an argument, assign it.
-      if test -n "$prev"; then
-       case $prev in
-       output)
-         func_append compile_command " @OUTPUT@"
-         func_append finalize_command " @OUTPUT@"
-         ;;
-       esac
-
-       case $prev in
-       bindir)
-         bindir=$arg
-         prev=
-         continue
-         ;;
-       dlfiles|dlprefiles)
-         $preload || {
-           # Add the symbol object into the linking commands.
-           func_append compile_command " @SYMFILE@"
-           func_append finalize_command " @SYMFILE@"
-           preload=:
-         }
-         case $arg in
-         *.la | *.lo) ;;  # We handle these cases below.
-         force)
-           if test no = "$dlself"; then
-             dlself=needless
-             export_dynamic=yes
-           fi
-           prev=
-           continue
-           ;;
-         self)
-           if test dlprefiles = "$prev"; then
-             dlself=yes
-           elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
-             dlself=yes
-           else
-             dlself=needless
-             export_dynamic=yes
-           fi
-           prev=
-           continue
-           ;;
-         *)
-           if test dlfiles = "$prev"; then
-             func_append dlfiles " $arg"
-           else
-             func_append dlprefiles " $arg"
-           fi
-           prev=
-           continue
-           ;;
-         esac
-         ;;
-       expsyms)
-         export_symbols=$arg
-         test -f "$arg" \
-           || func_fatal_error "symbol file '$arg' does not exist"
-         prev=
-         continue
-         ;;
-       expsyms_regex)
-         export_symbols_regex=$arg
-         prev=
-         continue
-         ;;
-       framework)
-         case $host in
-           *-*-darwin*)
-             case "$deplibs " in
-               *" $qarg.ltframework "*) ;;
-               *) func_append deplibs " $qarg.ltframework" # this is fixed later
-                  ;;
-             esac
-             ;;
-         esac
-         prev=
-         continue
-         ;;
-       inst_prefix)
-         inst_prefix_dir=$arg
-         prev=
-         continue
-         ;;
-       mllvm)
-         # Clang does not use LLVM to link, so we can simply discard any
-         # '-mllvm $arg' options when doing the link step.
-         prev=
-         continue
-         ;;
-       objectlist)
-         if test -f "$arg"; then
-           save_arg=$arg
-           moreargs=
-           for fil in `cat "$save_arg"`
-           do
-#            func_append moreargs " $fil"
-             arg=$fil
-             # A libtool-controlled object.
-
-             # Check to see that this really is a libtool object.
-             if func_lalib_unsafe_p "$arg"; then
-               pic_object=
-               non_pic_object=
-
-               # Read the .lo file
-               func_source "$arg"
-
-               if test -z "$pic_object" ||
-                  test -z "$non_pic_object" ||
-                  test none = "$pic_object" &&
-                  test none = "$non_pic_object"; then
-                 func_fatal_error "cannot find name of object for '$arg'"
-               fi
-
-               # Extract subdirectory from the argument.
-               func_dirname "$arg" "/" ""
-               xdir=$func_dirname_result
-
-               if test none != "$pic_object"; then
-                 # Prepend the subdirectory the object is found in.
-                 pic_object=$xdir$pic_object
-
-                 if test dlfiles = "$prev"; then
-                   if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
-                     func_append dlfiles " $pic_object"
-                     prev=
-                     continue
-                   else
-                     # If libtool objects are unsupported, then we need to preload.
-                     prev=dlprefiles
-                   fi
-                 fi
-
-                 # CHECK ME:  I think I busted this.  -Ossama
-                 if test dlprefiles = "$prev"; then
-                   # Preload the old-style object.
-                   func_append dlprefiles " $pic_object"
-                   prev=
-                 fi
-
-                 # A PIC object.
-                 func_append libobjs " $pic_object"
-                 arg=$pic_object
-               fi
-
-               # Non-PIC object.
-               if test none != "$non_pic_object"; then
-                 # Prepend the subdirectory the object is found in.
-                 non_pic_object=$xdir$non_pic_object
-
-                 # A standard non-PIC object
-                 func_append non_pic_objects " $non_pic_object"
-                 if test -z "$pic_object" || test none = "$pic_object"; then
-                   arg=$non_pic_object
-                 fi
-               else
-                 # If the PIC object exists, use it instead.
-                 # $xdir was prepended to $pic_object above.
-                 non_pic_object=$pic_object
-                 func_append non_pic_objects " $non_pic_object"
-               fi
-             else
-               # Only an error if not doing a dry-run.
-               if $opt_dry_run; then
-                 # Extract subdirectory from the argument.
-                 func_dirname "$arg" "/" ""
-                 xdir=$func_dirname_result
-
-                 func_lo2o "$arg"
-                 pic_object=$xdir$objdir/$func_lo2o_result
-                 non_pic_object=$xdir$func_lo2o_result
-                 func_append libobjs " $pic_object"
-                 func_append non_pic_objects " $non_pic_object"
-               else
-                 func_fatal_error "'$arg' is not a valid libtool object"
-               fi
-             fi
-           done
-         else
-           func_fatal_error "link input file '$arg' does not exist"
-         fi
-         arg=$save_arg
-         prev=
-         continue
-         ;;
-       os2dllname)
-         os2dllname=$arg
-         prev=
-         continue
-         ;;
-       precious_regex)
-         precious_files_regex=$arg
-         prev=
-         continue
-         ;;
-       release)
-         release=-$arg
-         prev=
-         continue
-         ;;
-       rpath | xrpath)
-         # We need an absolute path.
-         case $arg in
-         [\\/]* | [A-Za-z]:[\\/]*) ;;
-         *)
-           func_fatal_error "only absolute run-paths are allowed"
-           ;;
-         esac
-         if test rpath = "$prev"; then
-           case "$rpath " in
-           *" $arg "*) ;;
-           *) func_append rpath " $arg" ;;
-           esac
-         else
-           case "$xrpath " in
-           *" $arg "*) ;;
-           *) func_append xrpath " $arg" ;;
-           esac
-         fi
-         prev=
-         continue
-         ;;
-       shrext)
-         shrext_cmds=$arg
-         prev=
-         continue
-         ;;
-       weak)
-         func_append weak_libs " $arg"
-         prev=
-         continue
-         ;;
-       xcclinker)
-         func_append linker_flags " $qarg"
-         func_append compiler_flags " $qarg"
-         prev=
-         func_append compile_command " $qarg"
-         func_append finalize_command " $qarg"
-         continue
-         ;;
-       xcompiler)
-         func_append compiler_flags " $qarg"
-         prev=
-         func_append compile_command " $qarg"
-         func_append finalize_command " $qarg"
-         continue
-         ;;
-       xlinker)
-         func_append linker_flags " $qarg"
-         func_append compiler_flags " $wl$qarg"
-         prev=
-         func_append compile_command " $wl$qarg"
-         func_append finalize_command " $wl$qarg"
-         continue
-         ;;
-       *)
-         eval "$prev=\"\$arg\""
-         prev=
-         continue
-         ;;
-       esac
-      fi # test -n "$prev"
-
-      prevarg=$arg
-
-      case $arg in
-      -all-static)
-       if test -n "$link_static_flag"; then
-         # See comment for -static flag below, for more details.
-         func_append compile_command " $link_static_flag"
-         func_append finalize_command " $link_static_flag"
-       fi
-       continue
-       ;;
-
-      -allow-undefined)
-       # FIXME: remove this flag sometime in the future.
-       func_fatal_error "'-allow-undefined' must not be used because it is the default"
-       ;;
-
-      -avoid-version)
-       avoid_version=yes
-       continue
-       ;;
-
-      -bindir)
-       prev=bindir
-       continue
-       ;;
-
-      -dlopen)
-       prev=dlfiles
-       continue
-       ;;
-
-      -dlpreopen)
-       prev=dlprefiles
-       continue
-       ;;
-
-      -export-dynamic)
-       export_dynamic=yes
-       continue
-       ;;
-
-      -export-symbols | -export-symbols-regex)
-       if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-         func_fatal_error "more than one -exported-symbols argument is not allowed"
-       fi
-       if test X-export-symbols = "X$arg"; then
-         prev=expsyms
-       else
-         prev=expsyms_regex
-       fi
-       continue
-       ;;
-
-      -framework)
-       prev=framework
-       continue
-       ;;
-
-      -inst-prefix-dir)
-       prev=inst_prefix
-       continue
-       ;;
-
-      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
-      # so, if we see these flags be careful not to treat them like -L
-      -L[A-Z][A-Z]*:*)
-       case $with_gcc/$host in
-       no/*-*-irix* | /*-*-irix*)
-         func_append compile_command " $arg"
-         func_append finalize_command " $arg"
-         ;;
-       esac
-       continue
-       ;;
-
-      -L*)
-       func_stripname "-L" '' "$arg"
-       if test -z "$func_stripname_result"; then
-         if test "$#" -gt 0; then
-           func_fatal_error "require no space between '-L' and '$1'"
-         else
-           func_fatal_error "need path for '-L' option"
-         fi
-       fi
-       func_resolve_sysroot "$func_stripname_result"
-       dir=$func_resolve_sysroot_result
-       # We need an absolute path.
-       case $dir in
-       [\\/]* | [A-Za-z]:[\\/]*) ;;
-       *)
-         absdir=`cd "$dir" && pwd`
-         test -z "$absdir" && \
-           func_fatal_error "cannot determine absolute directory name of '$dir'"
-         dir=$absdir
-         ;;
-       esac
-       case "$deplibs " in
-       *" -L$dir "* | *" $arg "*)
-         # Will only happen for absolute or sysroot arguments
-         ;;
-       *)
-         # Preserve sysroot, but never include relative directories
-         case $dir in
-           [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
-           *) func_append deplibs " -L$dir" ;;
-         esac
-         func_append lib_search_path " $dir"
-         ;;
-       esac
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-         testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
-         case :$dllsearchpath: in
-         *":$dir:"*) ;;
-         ::) dllsearchpath=$dir;;
-         *) func_append dllsearchpath ":$dir";;
-         esac
-         case :$dllsearchpath: in
-         *":$testbindir:"*) ;;
-         ::) dllsearchpath=$testbindir;;
-         *) func_append dllsearchpath ":$testbindir";;
-         esac
-         ;;
-       esac
-       continue
-       ;;
-
-      -l*)
-       if test X-lc = "X$arg" || test X-lm = "X$arg"; then
-         case $host in
-         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
-           # These systems don't actually have a C or math library (as such)
-           continue
-           ;;
-         *-*-os2*)
-           # These systems don't actually have a C library (as such)
-           test X-lc = "X$arg" && continue
-           ;;
-         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
-           # Do not include libc due to us having libc/libc_r.
-           test X-lc = "X$arg" && continue
-           ;;
-         *-*-rhapsody* | *-*-darwin1.[012])
-           # Rhapsody C and math libraries are in the System framework
-           func_append deplibs " System.ltframework"
-           continue
-           ;;
-         *-*-sco3.2v5* | *-*-sco5v6*)
-           # Causes problems with __ctype
-           test X-lc = "X$arg" && continue
-           ;;
-         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-           # Compiler inserts libc in the correct place for threads to work
-           test X-lc = "X$arg" && continue
-           ;;
-         esac
-       elif test X-lc_r = "X$arg"; then
-        case $host in
-        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
-          # Do not include libc_r directly, use -pthread flag.
-          continue
-          ;;
-        esac
-       fi
-       func_append deplibs " $arg"
-       continue
-       ;;
-
-      -mllvm)
-       prev=mllvm
-       continue
-       ;;
-
-      -module)
-       module=yes
-       continue
-       ;;
-
-      # Tru64 UNIX uses -model [arg] to determine the layout of C++
-      # classes, name mangling, and exception handling.
-      # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot|--sysroot)
-       func_append compiler_flags " $arg"
-       func_append compile_command " $arg"
-       func_append finalize_command " $arg"
-       prev=xcompiler
-       continue
-       ;;
-
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-       func_append compiler_flags " $arg"
-       func_append compile_command " $arg"
-       func_append finalize_command " $arg"
-       case "$new_inherited_linker_flags " in
-           *" $arg "*) ;;
-           * ) func_append new_inherited_linker_flags " $arg" ;;
-       esac
-       continue
-       ;;
-
-      -multi_module)
-       single_module=$wl-multi_module
-       continue
-       ;;
-
-      -no-fast-install)
-       fast_install=no
-       continue
-       ;;
-
-      -no-install)
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
-         # The PATH hackery in wrapper scripts is required on Windows
-         # and Darwin in order for the loader to find any dlls it needs.
-         func_warning "'-no-install' is ignored for $host"
-         func_warning "assuming '-no-fast-install' instead"
-         fast_install=no
-         ;;
-       *) no_install=yes ;;
-       esac
-       continue
-       ;;
-
-      -no-undefined)
-       allow_undefined=no
-       continue
-       ;;
-
-      -objectlist)
-       prev=objectlist
-       continue
-       ;;
-
-      -os2dllname)
-       prev=os2dllname
-       continue
-       ;;
-
-      -o) prev=output ;;
-
-      -precious-files-regex)
-       prev=precious_regex
-       continue
-       ;;
-
-      -release)
-       prev=release
-       continue
-       ;;
-
-      -rpath)
-       prev=rpath
-       continue
-       ;;
-
-      -R)
-       prev=xrpath
-       continue
-       ;;
-
-      -R*)
-       func_stripname '-R' '' "$arg"
-       dir=$func_stripname_result
-       # We need an absolute path.
-       case $dir in
-       [\\/]* | [A-Za-z]:[\\/]*) ;;
-       =*)
-         func_stripname '=' '' "$dir"
-         dir=$lt_sysroot$func_stripname_result
-         ;;
-       *)
-         func_fatal_error "only absolute run-paths are allowed"
-         ;;
-       esac
-       case "$xrpath " in
-       *" $dir "*) ;;
-       *) func_append xrpath " $dir" ;;
-       esac
-       continue
-       ;;
-
-      -shared)
-       # The effects of -shared are defined in a previous loop.
-       continue
-       ;;
-
-      -shrext)
-       prev=shrext
-       continue
-       ;;
-
-      -static | -static-libtool-libs)
-       # The effects of -static are defined in a previous loop.
-       # We used to do the same as -all-static on platforms that
-       # didn't have a PIC flag, but the assumption that the effects
-       # would be equivalent was wrong.  It would break on at least
-       # Digital Unix and AIX.
-       continue
-       ;;
-
-      -thread-safe)
-       thread_safe=yes
-       continue
-       ;;
-
-      -version-info)
-       prev=vinfo
-       continue
-       ;;
-
-      -version-number)
-       prev=vinfo
-       vinfo_number=yes
-       continue
-       ;;
-
-      -weak)
-        prev=weak
-       continue
-       ;;
-
-      -Wc,*)
-       func_stripname '-Wc,' '' "$arg"
-       args=$func_stripname_result
-       arg=
-       save_ifs=$IFS; IFS=,
-       for flag in $args; do
-         IFS=$save_ifs
-          func_quote_arg pretty "$flag"
-         func_append arg " $func_quote_arg_result"
-         func_append compiler_flags " $func_quote_arg_result"
-       done
-       IFS=$save_ifs
-       func_stripname ' ' '' "$arg"
-       arg=$func_stripname_result
-       ;;
-
-      -Wl,*)
-       func_stripname '-Wl,' '' "$arg"
-       args=$func_stripname_result
-       arg=
-       save_ifs=$IFS; IFS=,
-       for flag in $args; do
-         IFS=$save_ifs
-          func_quote_arg pretty "$flag"
-         func_append arg " $wl$func_quote_arg_result"
-         func_append compiler_flags " $wl$func_quote_arg_result"
-         func_append linker_flags " $func_quote_arg_result"
-       done
-       IFS=$save_ifs
-       func_stripname ' ' '' "$arg"
-       arg=$func_stripname_result
-       ;;
-
-      -Xcompiler)
-       prev=xcompiler
-       continue
-       ;;
-
-      -Xlinker)
-       prev=xlinker
-       continue
-       ;;
-
-      -XCClinker)
-       prev=xcclinker
-       continue
-       ;;
-
-      # -msg_* for osf cc
-      -msg_*)
-       func_quote_arg pretty "$arg"
-       arg=$func_quote_arg_result
-       ;;
-
-      # Flags to be passed through unchanged, with rationale:
-      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
-      # -r[0-9][0-9]*        specify processor for the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
-      # +DA*, +DD*           enable 64-bit mode for the HP compiler
-      # -q*                  compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
-      # -F/path              path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
-      # -fstack-protector*   stack protector flags for GCC
-      # @file                GCC response files
-      # -tp=*                Portland pgcc target processor selection
-      # --sysroot=*          for sysroot support
-      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
-      # -specs=*             GCC specs files
-      # -stdlib=*            select c++ std lib with clang
-      # -fsanitize=*         Clang/GCC memory and address sanitizer
-      # -fuse-ld=*           Linker select flags for GCC
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
-      -specs=*|-fsanitize=*|-fuse-ld=*)
-        func_quote_arg pretty "$arg"
-       arg=$func_quote_arg_result
-        func_append compile_command " $arg"
-        func_append finalize_command " $arg"
-        func_append compiler_flags " $arg"
-        continue
-        ;;
-
-      -Z*)
-        if test os2 = "`expr $host : '.*\(os2\)'`"; then
-          # OS/2 uses -Zxxx to specify OS/2-specific options
-         compiler_flags="$compiler_flags $arg"
-         func_append compile_command " $arg"
-         func_append finalize_command " $arg"
-         case $arg in
-         -Zlinker | -Zstack)
-           prev=xcompiler
-           ;;
-         esac
-         continue
-        else
-         # Otherwise treat like 'Some other compiler flag' below
-         func_quote_arg pretty "$arg"
-         arg=$func_quote_arg_result
-        fi
-       ;;
-
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_arg pretty "$arg"
-       arg=$func_quote_arg_result
-       ;;
-
-      *.$objext)
-       # A standard object.
-       func_append objs " $arg"
-       ;;
-
-      *.lo)
-       # A libtool-controlled object.
-
-       # Check to see that this really is a libtool object.
-       if func_lalib_unsafe_p "$arg"; then
-         pic_object=
-         non_pic_object=
-
-         # Read the .lo file
-         func_source "$arg"
-
-         if test -z "$pic_object" ||
-            test -z "$non_pic_object" ||
-            test none = "$pic_object" &&
-            test none = "$non_pic_object"; then
-           func_fatal_error "cannot find name of object for '$arg'"
-         fi
-
-         # Extract subdirectory from the argument.
-         func_dirname "$arg" "/" ""
-         xdir=$func_dirname_result
-
-         test none = "$pic_object" || {
-           # Prepend the subdirectory the object is found in.
-           pic_object=$xdir$pic_object
-
-           if test dlfiles = "$prev"; then
-             if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
-               func_append dlfiles " $pic_object"
-               prev=
-               continue
-             else
-               # If libtool objects are unsupported, then we need to preload.
-               prev=dlprefiles
-             fi
-           fi
-
-           # CHECK ME:  I think I busted this.  -Ossama
-           if test dlprefiles = "$prev"; then
-             # Preload the old-style object.
-             func_append dlprefiles " $pic_object"
-             prev=
-           fi
-
-           # A PIC object.
-           func_append libobjs " $pic_object"
-           arg=$pic_object
-         }
-
-         # Non-PIC object.
-         if test none != "$non_pic_object"; then
-           # Prepend the subdirectory the object is found in.
-           non_pic_object=$xdir$non_pic_object
-
-           # A standard non-PIC object
-           func_append non_pic_objects " $non_pic_object"
-           if test -z "$pic_object" || test none = "$pic_object"; then
-             arg=$non_pic_object
-           fi
-         else
-           # If the PIC object exists, use it instead.
-           # $xdir was prepended to $pic_object above.
-           non_pic_object=$pic_object
-           func_append non_pic_objects " $non_pic_object"
-         fi
-       else
-         # Only an error if not doing a dry-run.
-         if $opt_dry_run; then
-           # Extract subdirectory from the argument.
-           func_dirname "$arg" "/" ""
-           xdir=$func_dirname_result
-
-           func_lo2o "$arg"
-           pic_object=$xdir$objdir/$func_lo2o_result
-           non_pic_object=$xdir$func_lo2o_result
-           func_append libobjs " $pic_object"
-           func_append non_pic_objects " $non_pic_object"
-         else
-           func_fatal_error "'$arg' is not a valid libtool object"
-         fi
-       fi
-       ;;
-
-      *.$libext)
-       # An archive.
-       func_append deplibs " $arg"
-       func_append old_deplibs " $arg"
-       continue
-       ;;
-
-      *.la)
-       # A libtool-controlled library.
-
-       func_resolve_sysroot "$arg"
-       if test dlfiles = "$prev"; then
-         # This library was specified with -dlopen.
-         func_append dlfiles " $func_resolve_sysroot_result"
-         prev=
-       elif test dlprefiles = "$prev"; then
-         # The library was specified with -dlpreopen.
-         func_append dlprefiles " $func_resolve_sysroot_result"
-         prev=
-       else
-         func_append deplibs " $func_resolve_sysroot_result"
-       fi
-       continue
-       ;;
-
-      # Some other compiler argument.
-      *)
-       # Unknown arguments in both finalize_command and compile_command need
-       # to be aesthetically quoted because they are evaled later.
-       func_quote_arg pretty "$arg"
-       arg=$func_quote_arg_result
-       ;;
-      esac # arg
-
-      # Now actually substitute the argument into the commands.
-      if test -n "$arg"; then
-       func_append compile_command " $arg"
-       func_append finalize_command " $arg"
-      fi
-    done # argument parsing loop
-
-    test -n "$prev" && \
-      func_fatal_help "the '$prevarg' option requires an argument"
-
-    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
-      eval arg=\"$export_dynamic_flag_spec\"
-      func_append compile_command " $arg"
-      func_append finalize_command " $arg"
-    fi
-
-    oldlibs=
-    # calculate the name of the file, without its directory
-    func_basename "$output"
-    outputname=$func_basename_result
-    libobjs_save=$libobjs
-
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
-    else
-      shlib_search_path=
-    fi
-    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
-    # Definition is injected by LT_CONFIG during libtool generation.
-    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
-
-    func_dirname "$output" "/" ""
-    output_objdir=$func_dirname_result$objdir
-    func_to_tool_file "$output_objdir/"
-    tool_output_objdir=$func_to_tool_file_result
-    # Create the object directory.
-    func_mkdir_p "$output_objdir"
-
-    # Determine the type of output
-    case $output in
-    "")
-      func_fatal_help "you must specify an output file"
-      ;;
-    *.$libext) linkmode=oldlib ;;
-    *.lo | *.$objext) linkmode=obj ;;
-    *.la) linkmode=lib ;;
-    *) linkmode=prog ;; # Anything else should be a program.
-    esac
-
-    specialdeplibs=
-
-    libs=
-    # Find all interdependent deplibs by searching for libraries
-    # that are linked more than once (e.g. -la -lb -la)
-    for deplib in $deplibs; do
-      if $opt_preserve_dup_deps; then
-       case "$libs " in
-       *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-       esac
-      fi
-      func_append libs " $deplib"
-    done
-
-    if test lib = "$linkmode"; then
-      libs="$predeps $libs $compiler_lib_search_path $postdeps"
-
-      # Compute libraries that are listed more than once in $predeps
-      # $postdeps and mark them as special (i.e., whose duplicates are
-      # not to be eliminated).
-      pre_post_deps=
-      if $opt_duplicate_compiler_generated_deps; then
-       for pre_post_dep in $predeps $postdeps; do
-         case "$pre_post_deps " in
-         *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
-         esac
-         func_append pre_post_deps " $pre_post_dep"
-       done
-      fi
-      pre_post_deps=
-    fi
-
-    deplibs=
-    newdependency_libs=
-    newlib_search_path=
-    need_relink=no # whether we're linking any uninstalled libtool libraries
-    notinst_deplibs= # not-installed libtool libraries
-    notinst_path= # paths that contain not-installed libtool libraries
-
-    case $linkmode in
-    lib)
-       passes="conv dlpreopen link"
-       for file in $dlfiles $dlprefiles; do
-         case $file in
-         *.la) ;;
-         *)
-           func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
-           ;;
-         esac
-       done
-       ;;
-    prog)
-       compile_deplibs=
-       finalize_deplibs=
-       alldeplibs=false
-       newdlfiles=
-       newdlprefiles=
-       passes="conv scan dlopen dlpreopen link"
-       ;;
-    *)  passes="conv"
-       ;;
-    esac
-
-    for pass in $passes; do
-      # The preopen pass in lib mode reverses $deplibs; put it back here
-      # so that -L comes before libs that need it for instance...
-      if test lib,link = "$linkmode,$pass"; then
-       ## FIXME: Find the place where the list is rebuilt in the wrong
-       ##        order, and fix it there properly
-        tmp_deplibs=
-       for deplib in $deplibs; do
-         tmp_deplibs="$deplib $tmp_deplibs"
-       done
-       deplibs=$tmp_deplibs
-      fi
-
-      if test lib,link = "$linkmode,$pass" ||
-        test prog,scan = "$linkmode,$pass"; then
-       libs=$deplibs
-       deplibs=
-      fi
-      if test prog = "$linkmode"; then
-       case $pass in
-       dlopen) libs=$dlfiles ;;
-       dlpreopen) libs=$dlprefiles ;;
-       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
-       esac
-      fi
-      if test lib,dlpreopen = "$linkmode,$pass"; then
-       # Collect and forward deplibs of preopened libtool libs
-       for lib in $dlprefiles; do
-         # Ignore non-libtool-libs
-         dependency_libs=
-         func_resolve_sysroot "$lib"
-         case $lib in
-         *.la) func_source "$func_resolve_sysroot_result" ;;
-         esac
-
-         # Collect preopened libtool deplibs, except any this library
-         # has declared as weak libs
-         for deplib in $dependency_libs; do
-           func_basename "$deplib"
-            deplib_base=$func_basename_result
-           case " $weak_libs " in
-           *" $deplib_base "*) ;;
-           *) func_append deplibs " $deplib" ;;
-           esac
-         done
-       done
-       libs=$dlprefiles
-      fi
-      if test dlopen = "$pass"; then
-       # Collect dlpreopened libraries
-       save_deplibs=$deplibs
-       deplibs=
-      fi
-
-      for deplib in $libs; do
-       lib=
-       found=false
-       case $deplib in
-       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-         if test prog,link = "$linkmode,$pass"; then
-           compile_deplibs="$deplib $compile_deplibs"
-           finalize_deplibs="$deplib $finalize_deplibs"
-         else
-           func_append compiler_flags " $deplib"
-           if test lib = "$linkmode"; then
-               case "$new_inherited_linker_flags " in
-                   *" $deplib "*) ;;
-                   * ) func_append new_inherited_linker_flags " $deplib" ;;
-               esac
-           fi
-         fi
-         continue
-         ;;
-       -l*)
-         if test lib != "$linkmode" && test prog != "$linkmode"; then
-           func_warning "'-l' is ignored for archives/objects"
-           continue
-         fi
-         func_stripname '-l' '' "$deplib"
-         name=$func_stripname_result
-         if test lib = "$linkmode"; then
-           searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
-         else
-           searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
-         fi
-         for searchdir in $searchdirs; do
-           for search_ext in .la $std_shrext .so .a; do
-             # Search the libtool library
-             lib=$searchdir/lib$name$search_ext
-             if test -f "$lib"; then
-               if test .la = "$search_ext"; then
-                 found=:
-               else
-                 found=false
-               fi
-               break 2
-             fi
-           done
-         done
-         if $found; then
-           # deplib is a libtool library
-           # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
-           # We need to do some special things here, and not later.
-           if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-             case " $predeps $postdeps " in
-             *" $deplib "*)
-               if func_lalib_p "$lib"; then
-                 library_names=
-                 old_library=
-                 func_source "$lib"
-                 for l in $old_library $library_names; do
-                   ll=$l
-                 done
-                 if test "X$ll" = "X$old_library"; then # only static version available
-                   found=false
-                   func_dirname "$lib" "" "."
-                   ladir=$func_dirname_result
-                   lib=$ladir/$old_library
-                   if test prog,link = "$linkmode,$pass"; then
-                     compile_deplibs="$deplib $compile_deplibs"
-                     finalize_deplibs="$deplib $finalize_deplibs"
-                   else
-                     deplibs="$deplib $deplibs"
-                     test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
-                   fi
-                   continue
-                 fi
-               fi
-               ;;
-             *) ;;
-             esac
-           fi
-         else
-           # deplib doesn't seem to be a libtool library
-           if test prog,link = "$linkmode,$pass"; then
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           else
-             deplibs="$deplib $deplibs"
-             test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
-           fi
-           continue
-         fi
-         ;; # -l
-       *.ltframework)
-         if test prog,link = "$linkmode,$pass"; then
-           compile_deplibs="$deplib $compile_deplibs"
-           finalize_deplibs="$deplib $finalize_deplibs"
-         else
-           deplibs="$deplib $deplibs"
-           if test lib = "$linkmode"; then
-               case "$new_inherited_linker_flags " in
-                   *" $deplib "*) ;;
-                   * ) func_append new_inherited_linker_flags " $deplib" ;;
-               esac
-           fi
-         fi
-         continue
-         ;;
-       -L*)
-         case $linkmode in
-         lib)
-           deplibs="$deplib $deplibs"
-           test conv = "$pass" && continue
-           newdependency_libs="$deplib $newdependency_libs"
-           func_stripname '-L' '' "$deplib"
-           func_resolve_sysroot "$func_stripname_result"
-           func_append newlib_search_path " $func_resolve_sysroot_result"
-           ;;
-         prog)
-           if test conv = "$pass"; then
-             deplibs="$deplib $deplibs"
-             continue
-           fi
-           if test scan = "$pass"; then
-             deplibs="$deplib $deplibs"
-           else
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           fi
-           func_stripname '-L' '' "$deplib"
-           func_resolve_sysroot "$func_stripname_result"
-           func_append newlib_search_path " $func_resolve_sysroot_result"
-           ;;
-         *)
-           func_warning "'-L' is ignored for archives/objects"
-           ;;
-         esac # linkmode
-         continue
-         ;; # -L
-       -R*)
-         if test link = "$pass"; then
-           func_stripname '-R' '' "$deplib"
-           func_resolve_sysroot "$func_stripname_result"
-           dir=$func_resolve_sysroot_result
-           # Make sure the xrpath contains only unique directories.
-           case "$xrpath " in
-           *" $dir "*) ;;
-           *) func_append xrpath " $dir" ;;
-           esac
-         fi
-         deplibs="$deplib $deplibs"
-         continue
-         ;;
-       *.la)
-         func_resolve_sysroot "$deplib"
-         lib=$func_resolve_sysroot_result
-         ;;
-       *.$libext)
-         if test conv = "$pass"; then
-           deplibs="$deplib $deplibs"
-           continue
-         fi
-         case $linkmode in
-         lib)
-           # Linking convenience modules into shared libraries is allowed,
-           # but linking other static libraries is non-portable.
-           case " $dlpreconveniencelibs " in
-           *" $deplib "*) ;;
-           *)
-             valid_a_lib=false
-             case $deplibs_check_method in
-               match_pattern*)
-                 set dummy $deplibs_check_method; shift
-                 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-                 if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
-                   | $EGREP "$match_pattern_regex" > /dev/null; then
-                   valid_a_lib=:
-                 fi
-               ;;
-               pass_all)
-                 valid_a_lib=:
-               ;;
-             esac
-             if $valid_a_lib; then
-               echo
-               $ECHO "*** Warning: Linking the shared library $output against the"
-               $ECHO "*** static library $deplib is not portable!"
-               deplibs="$deplib $deplibs"
-             else
-               echo
-               $ECHO "*** Warning: Trying to link with static lib archive $deplib."
-               echo "*** I have the capability to make that library automatically link in when"
-               echo "*** you link to this library.  But I can only do this if you have a"
-               echo "*** shared version of the library, which you do not appear to have"
-               echo "*** because the file extensions .$libext of this argument makes me believe"
-               echo "*** that it is just a static archive that I should not use here."
-             fi
-             ;;
-           esac
-           continue
-           ;;
-         prog)
-           if test link != "$pass"; then
-             deplibs="$deplib $deplibs"
-           else
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           fi
-           continue
-           ;;
-         esac # linkmode
-         ;; # *.$libext
-       *.lo | *.$objext)
-         if test conv = "$pass"; then
-           deplibs="$deplib $deplibs"
-         elif test prog = "$linkmode"; then
-           if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
-             # If there is no dlopen support or we're linking statically,
-             # we need to preload.
-             func_append newdlprefiles " $deplib"
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           else
-             func_append newdlfiles " $deplib"
-           fi
-         fi
-         continue
-         ;;
-       %DEPLIBS%)
-         alldeplibs=:
-         continue
-         ;;
-       esac # case $deplib
-
-       $found || test -f "$lib" \
-         || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
-
-       # Check to see that this really is a libtool archive.
-       func_lalib_unsafe_p "$lib" \
-         || func_fatal_error "'$lib' is not a valid libtool archive"
-
-       func_dirname "$lib" "" "."
-       ladir=$func_dirname_result
-
-       dlname=
-       dlopen=
-       dlpreopen=
-       libdir=
-       library_names=
-       old_library=
-       inherited_linker_flags=
-       # If the library was installed with an old release of libtool,
-       # it will not redefine variables installed, or shouldnotlink
-       installed=yes
-       shouldnotlink=no
-       avoidtemprpath=
-
-
-       # Read the .la file
-       func_source "$lib"
-
-       # Convert "-framework foo" to "foo.ltframework"
-       if test -n "$inherited_linker_flags"; then
-         tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
-         for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
-           case " $new_inherited_linker_flags " in
-             *" $tmp_inherited_linker_flag "*) ;;
-             *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
-           esac
-         done
-       fi
-       dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       if test lib,link = "$linkmode,$pass" ||
-          test prog,scan = "$linkmode,$pass" ||
-          { test prog != "$linkmode" && test lib != "$linkmode"; }; then
-         test -n "$dlopen" && func_append dlfiles " $dlopen"
-         test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
-       fi
-
-       if test conv = "$pass"; then
-         # Only check for convenience libraries
-         deplibs="$lib $deplibs"
-         if test -z "$libdir"; then
-           if test -z "$old_library"; then
-             func_fatal_error "cannot find name of link library for '$lib'"
-           fi
-           # It is a libtool convenience library, so add in its objects.
-           func_append convenience " $ladir/$objdir/$old_library"
-           func_append old_convenience " $ladir/$objdir/$old_library"
-         elif test prog != "$linkmode" && test lib != "$linkmode"; then
-           func_fatal_error "'$lib' is not a convenience library"
-         fi
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           deplibs="$deplib $deplibs"
-           if $opt_preserve_dup_deps; then
-             case "$tmp_libs " in
-             *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-             esac
-           fi
-           func_append tmp_libs " $deplib"
-         done
-         continue
-       fi # $pass = conv
-
-
-       # Get the name of the library we link against.
-       linklib=
-       if test -n "$old_library" &&
-          { test yes = "$prefer_static_libs" ||
-            test built,no = "$prefer_static_libs,$installed"; }; then
-         linklib=$old_library
-       else
-         for l in $old_library $library_names; do
-           linklib=$l
-         done
-       fi
-       if test -z "$linklib"; then
-         func_fatal_error "cannot find name of link library for '$lib'"
-       fi
-
-       # This library was specified with -dlopen.
-       if test dlopen = "$pass"; then
-         test -z "$libdir" \
-           && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
-         if test -z "$dlname" ||
-            test yes != "$dlopen_support" ||
-            test no = "$build_libtool_libs"
-         then
-           # If there is no dlname, no dlopen support or we're linking
-           # statically, we need to preload.  We also need to preload any
-           # dependent libraries so libltdl's deplib preloader doesn't
-           # bomb out in the load deplibs phase.
-           func_append dlprefiles " $lib $dependency_libs"
-         else
-           func_append newdlfiles " $lib"
-         fi
-         continue
-       fi # $pass = dlopen
-
-       # We need an absolute path.
-       case $ladir in
-       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
-       *)
-         abs_ladir=`cd "$ladir" && pwd`
-         if test -z "$abs_ladir"; then
-           func_warning "cannot determine absolute directory name of '$ladir'"
-           func_warning "passing it literally to the linker, although it might fail"
-           abs_ladir=$ladir
-         fi
-         ;;
-       esac
-       func_basename "$lib"
-       laname=$func_basename_result
-
-       # Find the relevant object directory and library name.
-       if test yes = "$installed"; then
-         if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-           func_warning "library '$lib' was moved."
-           dir=$ladir
-           absdir=$abs_ladir
-           libdir=$abs_ladir
-         else
-           dir=$lt_sysroot$libdir
-           absdir=$lt_sysroot$libdir
-         fi
-         test yes = "$hardcode_automatic" && avoidtemprpath=yes
-       else
-         if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-           dir=$ladir
-           absdir=$abs_ladir
-           # Remove this search path later
-           func_append notinst_path " $abs_ladir"
-         else
-           dir=$ladir/$objdir
-           absdir=$abs_ladir/$objdir
-           # Remove this search path later
-           func_append notinst_path " $abs_ladir"
-         fi
-       fi # $installed = yes
-       func_stripname 'lib' '.la' "$laname"
-       name=$func_stripname_result
-
-       # This library was specified with -dlpreopen.
-       if test dlpreopen = "$pass"; then
-         if test -z "$libdir" && test prog = "$linkmode"; then
-           func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
-         fi
-         case $host in
-           # special handling for platforms with PE-DLLs.
-           *cygwin* | *mingw* | *cegcc* )
-             # Linker will automatically link against shared library if both
-             # static and shared are present.  Therefore, ensure we extract
-             # symbols from the import library if a shared library is present
-             # (otherwise, the dlopen module name will be incorrect).  We do
-             # this by putting the import library name into $newdlprefiles.
-             # We recover the dlopen module name by 'saving' the la file
-             # name in a special purpose variable, and (later) extracting the
-             # dlname from the la file.
-             if test -n "$dlname"; then
-               func_tr_sh "$dir/$linklib"
-               eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
-               func_append newdlprefiles " $dir/$linklib"
-             else
-               func_append newdlprefiles " $dir/$old_library"
-               # Keep a list of preopened convenience libraries to check
-               # that they are being used correctly in the link pass.
-               test -z "$libdir" && \
-                 func_append dlpreconveniencelibs " $dir/$old_library"
-             fi
-           ;;
-           * )
-             # Prefer using a static library (so that no silly _DYNAMIC symbols
-             # are required to link).
-             if test -n "$old_library"; then
-               func_append newdlprefiles " $dir/$old_library"
-               # Keep a list of preopened convenience libraries to check
-               # that they are being used correctly in the link pass.
-               test -z "$libdir" && \
-                 func_append dlpreconveniencelibs " $dir/$old_library"
-             # Otherwise, use the dlname, so that lt_dlopen finds it.
-             elif test -n "$dlname"; then
-               func_append newdlprefiles " $dir/$dlname"
-             else
-               func_append newdlprefiles " $dir/$linklib"
-             fi
-           ;;
-         esac
-       fi # $pass = dlpreopen
-
-       if test -z "$libdir"; then
-         # Link the convenience library
-         if test lib = "$linkmode"; then
-           deplibs="$dir/$old_library $deplibs"
-         elif test prog,link = "$linkmode,$pass"; then
-           compile_deplibs="$dir/$old_library $compile_deplibs"
-           finalize_deplibs="$dir/$old_library $finalize_deplibs"
-         else
-           deplibs="$lib $deplibs" # used for prog,scan pass
-         fi
-         continue
-       fi
-
-
-       if test prog = "$linkmode" && test link != "$pass"; then
-         func_append newlib_search_path " $ladir"
-         deplibs="$lib $deplibs"
-
-         linkalldeplibs=false
-         if test no != "$link_all_deplibs" || test -z "$library_names" ||
-            test no = "$build_libtool_libs"; then
-           linkalldeplibs=:
-         fi
-
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           case $deplib in
-           -L*) func_stripname '-L' '' "$deplib"
-                func_resolve_sysroot "$func_stripname_result"
-                func_append newlib_search_path " $func_resolve_sysroot_result"
-                ;;
-           esac
-           # Need to link against all dependency_libs?
-           if $linkalldeplibs; then
-             deplibs="$deplib $deplibs"
-           else
-             # Need to hardcode shared library paths
-             # or/and link against static libraries
-             newdependency_libs="$deplib $newdependency_libs"
-           fi
-           if $opt_preserve_dup_deps; then
-             case "$tmp_libs " in
-             *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-             esac
-           fi
-           func_append tmp_libs " $deplib"
-         done # for deplib
-         continue
-       fi # $linkmode = prog...
-
-       if test prog,link = "$linkmode,$pass"; then
-         if test -n "$library_names" &&
-            { { test no = "$prefer_static_libs" ||
-                test built,yes = "$prefer_static_libs,$installed"; } ||
-              test -z "$old_library"; }; then
-           # We need to hardcode the library path
-           if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
-             # Make sure the rpath contains only unique directories.
-             case $temp_rpath: in
-             *"$absdir:"*) ;;
-             *) func_append temp_rpath "$absdir:" ;;
-             esac
-           fi
-
-           # Hardcode the library path.
-           # Skip directories that are in the system default run-time
-           # search path.
-           case " $sys_lib_dlsearch_path " in
-           *" $absdir "*) ;;
-           *)
-             case "$compile_rpath " in
-             *" $absdir "*) ;;
-             *) func_append compile_rpath " $absdir" ;;
-             esac
-             ;;
-           esac
-           case " $sys_lib_dlsearch_path " in
-           *" $libdir "*) ;;
-           *)
-             case "$finalize_rpath " in
-             *" $libdir "*) ;;
-             *) func_append finalize_rpath " $libdir" ;;
-             esac
-             ;;
-           esac
-         fi # $linkmode,$pass = prog,link...
-
-         if $alldeplibs &&
-            { test pass_all = "$deplibs_check_method" ||
-              { test yes = "$build_libtool_libs" &&
-                test -n "$library_names"; }; }; then
-           # We only need to search for static libraries
-           continue
-         fi
-       fi
-
-       link_static=no # Whether the deplib will be linked statically
-       use_static_libs=$prefer_static_libs
-       if test built = "$use_static_libs" && test yes = "$installed"; then
-         use_static_libs=no
-       fi
-       if test -n "$library_names" &&
-          { test no = "$use_static_libs" || test -z "$old_library"; }; then
-         case $host in
-         *cygwin* | *mingw* | *cegcc* | *os2*)
-             # No point in relinking DLLs because paths are not encoded
-             func_append notinst_deplibs " $lib"
-             need_relink=no
-           ;;
-         *)
-           if test no = "$installed"; then
-             func_append notinst_deplibs " $lib"
-             need_relink=yes
-           fi
-           ;;
-         esac
-         # This is a shared library
-
-         # Warn about portability, can't link against -module's on some
-         # systems (darwin).  Don't bleat about dlopened modules though!
-         dlopenmodule=
-         for dlpremoduletest in $dlprefiles; do
-           if test "X$dlpremoduletest" = "X$lib"; then
-             dlopenmodule=$dlpremoduletest
-             break
-           fi
-         done
-         if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
-           echo
-           if test prog = "$linkmode"; then
-             $ECHO "*** Warning: Linking the executable $output against the loadable module"
-           else
-             $ECHO "*** Warning: Linking the shared library $output against the loadable module"
-           fi
-           $ECHO "*** $linklib is not portable!"
-         fi
-         if test lib = "$linkmode" &&
-            test yes = "$hardcode_into_libs"; then
-           # Hardcode the library path.
-           # Skip directories that are in the system default run-time
-           # search path.
-           case " $sys_lib_dlsearch_path " in
-           *" $absdir "*) ;;
-           *)
-             case "$compile_rpath " in
-             *" $absdir "*) ;;
-             *) func_append compile_rpath " $absdir" ;;
-             esac
-             ;;
-           esac
-           case " $sys_lib_dlsearch_path " in
-           *" $libdir "*) ;;
-           *)
-             case "$finalize_rpath " in
-             *" $libdir "*) ;;
-             *) func_append finalize_rpath " $libdir" ;;
-             esac
-             ;;
-           esac
-         fi
-
-         if test -n "$old_archive_from_expsyms_cmds"; then
-           # figure out the soname
-           set dummy $library_names
-           shift
-           realname=$1
-           shift
-           libname=`eval "\\$ECHO \"$libname_spec\""`
-           # use dlname if we got it. it's perfectly good, no?
-           if test -n "$dlname"; then
-             soname=$dlname
-           elif test -n "$soname_spec"; then
-             # bleh windows
-             case $host in
-             *cygwin* | mingw* | *cegcc* | *os2*)
-               func_arith $current - $age
-               major=$func_arith_result
-               versuffix=-$major
-               ;;
-             esac
-             eval soname=\"$soname_spec\"
-           else
-             soname=$realname
-           fi
-
-           # Make a new name for the extract_expsyms_cmds to use
-           soroot=$soname
-           func_basename "$soroot"
-           soname=$func_basename_result
-           func_stripname 'lib' '.dll' "$soname"
-           newlib=libimp-$func_stripname_result.a
-
-           # If the library has no export list, then create one now
-           if test -f "$output_objdir/$soname-def"; then :
-           else
-             func_verbose "extracting exported symbol list from '$soname'"
-             func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
-           fi
-
-           # Create $newlib
-           if test -f "$output_objdir/$newlib"; then :; else
-             func_verbose "generating import library for '$soname'"
-             func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
-           fi
-           # make sure the library variables are pointing to the new library
-           dir=$output_objdir
-           linklib=$newlib
-         fi # test -n "$old_archive_from_expsyms_cmds"
-
-         if test prog = "$linkmode" || test relink != "$opt_mode"; then
-           add_shlibpath=
-           add_dir=
-           add=
-           lib_linked=yes
-           case $hardcode_action in
-           immediate | unsupported)
-             if test no = "$hardcode_direct"; then
-               add=$dir/$linklib
-               case $host in
-                 *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
-                 *-*-sysv4*uw2*) add_dir=-L$dir ;;
-                 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-                   *-*-unixware7*) add_dir=-L$dir ;;
-                 *-*-darwin* )
-                   # if the lib is a (non-dlopened) module then we cannot
-                   # link against it, someone is ignoring the earlier warnings
-                   if /usr/bin/file -L $add 2> /dev/null |
-                        $GREP ": [^:]* bundle" >/dev/null; then
-                     if test "X$dlopenmodule" != "X$lib"; then
-                       $ECHO "*** Warning: lib $linklib is a module, not a shared library"
-                       if test -z "$old_library"; then
-                         echo
-                         echo "*** And there doesn't seem to be a static archive available"
-                         echo "*** The link will probably fail, sorry"
-                       else
-                         add=$dir/$old_library
-                       fi
-                     elif test -n "$old_library"; then
-                       add=$dir/$old_library
-                     fi
-                   fi
-               esac
-             elif test no = "$hardcode_minus_L"; then
-               case $host in
-               *-*-sunos*) add_shlibpath=$dir ;;
-               esac
-               add_dir=-L$dir
-               add=-l$name
-             elif test no = "$hardcode_shlibpath_var"; then
-               add_shlibpath=$dir
-               add=-l$name
-             else
-               lib_linked=no
-             fi
-             ;;
-           relink)
-             if test yes = "$hardcode_direct" &&
-                test no = "$hardcode_direct_absolute"; then
-               add=$dir/$linklib
-             elif test yes = "$hardcode_minus_L"; then
-               add_dir=-L$absdir
-               # Try looking first in the location we're being installed to.
-               if test -n "$inst_prefix_dir"; then
-                 case $libdir in
-                   [\\/]*)
-                     func_append add_dir " -L$inst_prefix_dir$libdir"
-                     ;;
-                 esac
-               fi
-               add=-l$name
-             elif test yes = "$hardcode_shlibpath_var"; then
-               add_shlibpath=$dir
-               add=-l$name
-             else
-               lib_linked=no
-             fi
-             ;;
-           *) lib_linked=no ;;
-           esac
-
-           if test yes != "$lib_linked"; then
-             func_fatal_configuration "unsupported hardcode properties"
-           fi
-
-           if test -n "$add_shlibpath"; then
-             case :$compile_shlibpath: in
-             *":$add_shlibpath:"*) ;;
-             *) func_append compile_shlibpath "$add_shlibpath:" ;;
-             esac
-           fi
-           if test prog = "$linkmode"; then
-             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-             test -n "$add" && compile_deplibs="$add $compile_deplibs"
-           else
-             test -n "$add_dir" && deplibs="$add_dir $deplibs"
-             test -n "$add" && deplibs="$add $deplibs"
-             if test yes != "$hardcode_direct" &&
-                test yes != "$hardcode_minus_L" &&
-                test yes = "$hardcode_shlibpath_var"; then
-               case :$finalize_shlibpath: in
-               *":$libdir:"*) ;;
-               *) func_append finalize_shlibpath "$libdir:" ;;
-               esac
-             fi
-           fi
-         fi
-
-         if test prog = "$linkmode" || test relink = "$opt_mode"; then
-           add_shlibpath=
-           add_dir=
-           add=
-           # Finalize command for both is simple: just hardcode it.
-           if test yes = "$hardcode_direct" &&
-              test no = "$hardcode_direct_absolute"; then
-             add=$libdir/$linklib
-           elif test yes = "$hardcode_minus_L"; then
-             add_dir=-L$libdir
-             add=-l$name
-           elif test yes = "$hardcode_shlibpath_var"; then
-             case :$finalize_shlibpath: in
-             *":$libdir:"*) ;;
-             *) func_append finalize_shlibpath "$libdir:" ;;
-             esac
-             add=-l$name
-           elif test yes = "$hardcode_automatic"; then
-             if test -n "$inst_prefix_dir" &&
-                test -f "$inst_prefix_dir$libdir/$linklib"; then
-               add=$inst_prefix_dir$libdir/$linklib
-             else
-               add=$libdir/$linklib
-             fi
-           else
-             # We cannot seem to hardcode it, guess we'll fake it.
-             add_dir=-L$libdir
-             # Try looking first in the location we're being installed to.
-             if test -n "$inst_prefix_dir"; then
-               case $libdir in
-                 [\\/]*)
-                   func_append add_dir " -L$inst_prefix_dir$libdir"
-                   ;;
-               esac
-             fi
-             add=-l$name
-           fi
-
-           if test prog = "$linkmode"; then
-             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
-           else
-             test -n "$add_dir" && deplibs="$add_dir $deplibs"
-             test -n "$add" && deplibs="$add $deplibs"
-           fi
-         fi
-       elif test prog = "$linkmode"; then
-         # Here we assume that one of hardcode_direct or hardcode_minus_L
-         # is not unsupported.  This is valid on all known static and
-         # shared platforms.
-         if test unsupported != "$hardcode_direct"; then
-           test -n "$old_library" && linklib=$old_library
-           compile_deplibs="$dir/$linklib $compile_deplibs"
-           finalize_deplibs="$dir/$linklib $finalize_deplibs"
-         else
-           compile_deplibs="-l$name -L$dir $compile_deplibs"
-           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
-         fi
-       elif test yes = "$build_libtool_libs"; then
-         # Not a shared library
-         if test pass_all != "$deplibs_check_method"; then
-           # We're trying link a shared library against a static one
-           # but the system doesn't support it.
-
-           # Just print a warning and add the library to dependency_libs so
-           # that the program can be linked against the static library.
-           echo
-           $ECHO "*** Warning: This system cannot link to static lib archive $lib."
-           echo "*** I have the capability to make that library automatically link in when"
-           echo "*** you link to this library.  But I can only do this if you have a"
-           echo "*** shared version of the library, which you do not appear to have."
-           if test yes = "$module"; then
-             echo "*** But as you try to build a module library, libtool will still create "
-             echo "*** a static module, that should work as long as the dlopening application"
-             echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
-             if test -z "$global_symbol_pipe"; then
-               echo
-               echo "*** However, this would only work if libtool was able to extract symbol"
-               echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
-               echo "*** not find such a program.  So, this module is probably useless."
-               echo "*** 'nm' from GNU binutils and a full rebuild may help."
-             fi
-             if test no = "$build_old_libs"; then
-               build_libtool_libs=module
-               build_old_libs=yes
-             else
-               build_libtool_libs=no
-             fi
-           fi
-         else
-           deplibs="$dir/$old_library $deplibs"
-           link_static=yes
-         fi
-       fi # link shared/static library?
-
-       if test lib = "$linkmode"; then
-         if test -n "$dependency_libs" &&
-            { test yes != "$hardcode_into_libs" ||
-              test yes = "$build_old_libs" ||
-              test yes = "$link_static"; }; then
-           # Extract -R from dependency_libs
-           temp_deplibs=
-           for libdir in $dependency_libs; do
-             case $libdir in
-             -R*) func_stripname '-R' '' "$libdir"
-                  temp_xrpath=$func_stripname_result
-                  case " $xrpath " in
-                  *" $temp_xrpath "*) ;;
-                  *) func_append xrpath " $temp_xrpath";;
-                  esac;;
-             *) func_append temp_deplibs " $libdir";;
-             esac
-           done
-           dependency_libs=$temp_deplibs
-         fi
-
-         func_append newlib_search_path " $absdir"
-         # Link against this library
-         test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
-         # ... and its dependency_libs
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           newdependency_libs="$deplib $newdependency_libs"
-           case $deplib in
-              -L*) func_stripname '-L' '' "$deplib"
-                   func_resolve_sysroot "$func_stripname_result";;
-              *) func_resolve_sysroot "$deplib" ;;
-            esac
-           if $opt_preserve_dup_deps; then
-             case "$tmp_libs " in
-             *" $func_resolve_sysroot_result "*)
-                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
-             esac
-           fi
-           func_append tmp_libs " $func_resolve_sysroot_result"
-         done
-
-         if test no != "$link_all_deplibs"; then
-           # Add the search paths of all dependency libraries
-           for deplib in $dependency_libs; do
-             path=
-             case $deplib in
-             -L*) path=$deplib ;;
-             *.la)
-               func_resolve_sysroot "$deplib"
-               deplib=$func_resolve_sysroot_result
-               func_dirname "$deplib" "" "."
-               dir=$func_dirname_result
-               # We need an absolute path.
-               case $dir in
-               [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
-               *)
-                 absdir=`cd "$dir" && pwd`
-                 if test -z "$absdir"; then
-                   func_warning "cannot determine absolute directory name of '$dir'"
-                   absdir=$dir
-                 fi
-                 ;;
-               esac
-               if $GREP "^installed=no" $deplib > /dev/null; then
-               case $host in
-               *-*-darwin*)
-                 depdepl=
-                 eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-                 if test -n "$deplibrary_names"; then
-                   for tmp in $deplibrary_names; do
-                     depdepl=$tmp
-                   done
-                   if test -f "$absdir/$objdir/$depdepl"; then
-                     depdepl=$absdir/$objdir/$depdepl
-                     darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
-                      if test -z "$darwin_install_name"; then
-                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
-                      fi
-                     func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
-                     func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
-                     path=
-                   fi
-                 fi
-                 ;;
-               *)
-                 path=-L$absdir/$objdir
-                 ;;
-               esac
-               else
-                 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-                 test -z "$libdir" && \
-                   func_fatal_error "'$deplib' is not a valid libtool archive"
-                 test "$absdir" != "$libdir" && \
-                   func_warning "'$deplib' seems to be moved"
-
-                 path=-L$absdir
-               fi
-               ;;
-             esac
-             case " $deplibs " in
-             *" $path "*) ;;
-             *) deplibs="$path $deplibs" ;;
-             esac
-           done
-         fi # link_all_deplibs != no
-       fi # linkmode = lib
-      done # for deplib in $libs
-      if test link = "$pass"; then
-       if test prog = "$linkmode"; then
-         compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
-         finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
-       else
-         compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       fi
-      fi
-      dependency_libs=$newdependency_libs
-      if test dlpreopen = "$pass"; then
-       # Link the dlpreopened libraries before other libraries
-       for deplib in $save_deplibs; do
-         deplibs="$deplib $deplibs"
-       done
-      fi
-      if test dlopen != "$pass"; then
-       test conv = "$pass" || {
-         # Make sure lib_search_path contains only unique directories.
-         lib_search_path=
-         for dir in $newlib_search_path; do
-           case "$lib_search_path " in
-           *" $dir "*) ;;
-           *) func_append lib_search_path " $dir" ;;
-           esac
-         done
-         newlib_search_path=
-       }
-
-       if test prog,link = "$linkmode,$pass"; then
-         vars="compile_deplibs finalize_deplibs"
-       else
-         vars=deplibs
-       fi
-       for var in $vars dependency_libs; do
-         # Add libraries to $var in reverse order
-         eval tmp_libs=\"\$$var\"
-         new_libs=
-         for deplib in $tmp_libs; do
-           # FIXME: Pedantically, this is the right thing to do, so
-           #        that some nasty dependency loop isn't accidentally
-           #        broken:
-           #new_libs="$deplib $new_libs"
-           # Pragmatically, this seems to cause very few problems in
-           # practice:
-           case $deplib in
-           -L*) new_libs="$deplib $new_libs" ;;
-           -R*) ;;
-           *)
-             # And here is the reason: when a library appears more
-             # than once as an explicit dependence of a library, or
-             # is implicitly linked in more than once by the
-             # compiler, it is considered special, and multiple
-             # occurrences thereof are not removed.  Compare this
-             # with having the same library being listed as a
-             # dependency of multiple other libraries: in this case,
-             # we know (pedantically, we assume) the library does not
-             # need to be listed more than once, so we keep only the
-             # last copy.  This is not always right, but it is rare
-             # enough that we require users that really mean to play
-             # such unportable linking tricks to link the library
-             # using -Wl,-lname, so that libtool does not consider it
-             # for duplicate removal.
-             case " $specialdeplibs " in
-             *" $deplib "*) new_libs="$deplib $new_libs" ;;
-             *)
-               case " $new_libs " in
-               *" $deplib "*) ;;
-               *) new_libs="$deplib $new_libs" ;;
-               esac
-               ;;
-             esac
-             ;;
-           esac
-         done
-         tmp_libs=
-         for deplib in $new_libs; do
-           case $deplib in
-           -L*)
-             case " $tmp_libs " in
-             *" $deplib "*) ;;
-             *) func_append tmp_libs " $deplib" ;;
-             esac
-             ;;
-           *) func_append tmp_libs " $deplib" ;;
-           esac
-         done
-         eval $var=\"$tmp_libs\"
-       done # for var
-      fi
-
-      # Add Sun CC postdeps if required:
-      test CXX = "$tagname" && {
-        case $host_os in
-        linux*)
-          case `$CC -V 2>&1 | sed 5q` in
-          *Sun\ C*) # Sun C++ 5.9
-            func_suncc_cstd_abi
-
-            if test no != "$suncc_use_cstd_abi"; then
-              func_append postdeps ' -library=Cstd -library=Crun'
-            fi
-            ;;
-          esac
-          ;;
-
-        solaris*)
-          func_cc_basename "$CC"
-          case $func_cc_basename_result in
-          CC* | sunCC*)
-            func_suncc_cstd_abi
-
-            if test no != "$suncc_use_cstd_abi"; then
-              func_append postdeps ' -library=Cstd -library=Crun'
-            fi
-            ;;
-          esac
-          ;;
-        esac
-      }
-
-      # Last step: remove runtime libs from dependency_libs
-      # (they stay in deplibs)
-      tmp_libs=
-      for i in $dependency_libs; do
-       case " $predeps $postdeps $compiler_lib_search_path " in
-       *" $i "*)
-         i=
-         ;;
-       esac
-       if test -n "$i"; then
-         func_append tmp_libs " $i"
-       fi
-      done
-      dependency_libs=$tmp_libs
-    done # for pass
-    if test prog = "$linkmode"; then
-      dlfiles=$newdlfiles
-    fi
-    if test prog = "$linkmode" || test lib = "$linkmode"; then
-      dlprefiles=$newdlprefiles
-    fi
-
-    case $linkmode in
-    oldlib)
-      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
-       func_warning "'-dlopen' is ignored for archives"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-       func_warning "'-l' and '-L' are ignored for archives" ;;
-      esac
-
-      test -n "$rpath" && \
-       func_warning "'-rpath' is ignored for archives"
-
-      test -n "$xrpath" && \
-       func_warning "'-R' is ignored for archives"
-
-      test -n "$vinfo" && \
-       func_warning "'-version-info/-version-number' is ignored for archives"
-
-      test -n "$release" && \
-       func_warning "'-release' is ignored for archives"
-
-      test -n "$export_symbols$export_symbols_regex" && \
-       func_warning "'-export-symbols' is ignored for archives"
-
-      # Now set the variables for building old libraries.
-      build_libtool_libs=no
-      oldlibs=$output
-      func_append objs "$old_deplibs"
-      ;;
-
-    lib)
-      # Make sure we only generate libraries of the form 'libNAME.la'.
-      case $outputname in
-      lib*)
-       func_stripname 'lib' '.la' "$outputname"
-       name=$func_stripname_result
-       eval shared_ext=\"$shrext_cmds\"
-       eval libname=\"$libname_spec\"
-       ;;
-      *)
-       test no = "$module" \
-         && func_fatal_help "libtool library '$output' must begin with 'lib'"
-
-       if test no != "$need_lib_prefix"; then
-         # Add the "lib" prefix for modules if required
-         func_stripname '' '.la' "$outputname"
-         name=$func_stripname_result
-         eval shared_ext=\"$shrext_cmds\"
-         eval libname=\"$libname_spec\"
-       else
-         func_stripname '' '.la' "$outputname"
-         libname=$func_stripname_result
-       fi
-       ;;
-      esac
-
-      if test -n "$objs"; then
-       if test pass_all != "$deplibs_check_method"; then
-         func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
-       else
-         echo
-         $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
-         $ECHO "*** objects $objs is not portable!"
-         func_append libobjs " $objs"
-       fi
-      fi
-
-      test no = "$dlself" \
-       || func_warning "'-dlopen self' is ignored for libtool libraries"
-
-      set dummy $rpath
-      shift
-      test 1 -lt "$#" \
-       && func_warning "ignoring multiple '-rpath's for a libtool library"
-
-      install_libdir=$1
-
-      oldlibs=
-      if test -z "$rpath"; then
-       if test yes = "$build_libtool_libs"; then
-         # Building a libtool convenience library.
-         # Some compilers have problems with a '.al' extension so
-         # convenience libraries should have the same extension an
-         # archive normally would.
-         oldlibs="$output_objdir/$libname.$libext $oldlibs"
-         build_libtool_libs=convenience
-         build_old_libs=yes
-       fi
-
-       test -n "$vinfo" && \
-         func_warning "'-version-info/-version-number' is ignored for convenience libraries"
-
-       test -n "$release" && \
-         func_warning "'-release' is ignored for convenience libraries"
-      else
-
-       # Parse the version information argument.
-       save_ifs=$IFS; IFS=:
-       set dummy $vinfo 0 0 0
-       shift
-       IFS=$save_ifs
-
-       test -n "$7" && \
-         func_fatal_help "too many parameters to '-version-info'"
-
-       # convert absolute version numbers to libtool ages
-       # this retains compatibility with .la files and attempts
-       # to make the code below a bit more comprehensible
-
-       case $vinfo_number in
-       yes)
-         number_major=$1
-         number_minor=$2
-         number_revision=$3
-         #
-         # There are really only two kinds -- those that
-         # use the current revision as the major version
-         # and those that subtract age and use age as
-         # a minor version.  But, then there is irix
-         # that has an extra 1 added just for fun
-         #
-         case $version_type in
-         # correct linux to gnu/linux during the next big refactor
-         darwin|freebsd-elf|linux|osf|windows|none)
-           func_arith $number_major + $number_minor
-           current=$func_arith_result
-           age=$number_minor
-           revision=$number_revision
-           ;;
-         freebsd-aout|qnx|sunos)
-           current=$number_major
-           revision=$number_minor
-           age=0
-           ;;
-         irix|nonstopux)
-           func_arith $number_major + $number_minor
-           current=$func_arith_result
-           age=$number_minor
-           revision=$number_minor
-           lt_irix_increment=no
-           ;;
-         esac
-         ;;
-       no)
-         current=$1
-         revision=$2
-         age=$3
-         ;;
-       esac
-
-       # Check that each of the things are valid numbers.
-       case $current in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "CURRENT '$current' must be a nonnegative integer"
-         func_fatal_error "'$vinfo' is not valid version information"
-         ;;
-       esac
-
-       case $revision in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "REVISION '$revision' must be a nonnegative integer"
-         func_fatal_error "'$vinfo' is not valid version information"
-         ;;
-       esac
-
-       case $age in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "AGE '$age' must be a nonnegative integer"
-         func_fatal_error "'$vinfo' is not valid version information"
-         ;;
-       esac
-
-       if test "$age" -gt "$current"; then
-         func_error "AGE '$age' is greater than the current interface number '$current'"
-         func_fatal_error "'$vinfo' is not valid version information"
-       fi
-
-       # Calculate the version variables.
-       major=
-       versuffix=
-       verstring=
-       case $version_type in
-       none) ;;
-
-       darwin)
-         # Like Linux, but with the current version available in
-         # verstring for coding it into the library header
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix=$major.$age.$revision
-         # Darwin ld doesn't like 0 for these options...
-         func_arith $current + 1
-         minor_current=$func_arith_result
-         xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
-         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-          # On Darwin other compilers
-          case $CC in
-              nagfor*)
-                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
-                  ;;
-              *)
-                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-                  ;;
-          esac
-         ;;
-
-       freebsd-aout)
-         major=.$current
-         versuffix=.$current.$revision
-         ;;
-
-       freebsd-elf)
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix=$major.$age.$revision
-         ;;
-
-       irix | nonstopux)
-         if test no = "$lt_irix_increment"; then
-           func_arith $current - $age
-         else
-           func_arith $current - $age + 1
-         fi
-         major=$func_arith_result
-
-         case $version_type in
-           nonstopux) verstring_prefix=nonstopux ;;
-           *)         verstring_prefix=sgi ;;
-         esac
-         verstring=$verstring_prefix$major.$revision
-
-         # Add in all the interfaces that we are compatible with.
-         loop=$revision
-         while test 0 -ne "$loop"; do
-           func_arith $revision - $loop
-           iface=$func_arith_result
-           func_arith $loop - 1
-           loop=$func_arith_result
-           verstring=$verstring_prefix$major.$iface:$verstring
-         done
-
-         # Before this point, $major must not contain '.'.
-         major=.$major
-         versuffix=$major.$revision
-         ;;
-
-       linux) # correct to gnu/linux during the next big refactor
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix=$major.$age.$revision
-         ;;
-
-       osf)
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix=.$current.$age.$revision
-         verstring=$current.$age.$revision
-
-         # Add in all the interfaces that we are compatible with.
-         loop=$age
-         while test 0 -ne "$loop"; do
-           func_arith $current - $loop
-           iface=$func_arith_result
-           func_arith $loop - 1
-           loop=$func_arith_result
-           verstring=$verstring:$iface.0
-         done
-
-         # Make executables depend on our current version.
-         func_append verstring ":$current.0"
-         ;;
-
-       qnx)
-         major=.$current
-         versuffix=.$current
-         ;;
-
-       sco)
-         major=.$current
-         versuffix=.$current
-         ;;
-
-       sunos)
-         major=.$current
-         versuffix=.$current.$revision
-         ;;
-
-       windows)
-         # Use '-' rather than '.', since we only want one
-         # extension on DOS 8.3 file systems.
-         func_arith $current - $age
-         major=$func_arith_result
-         versuffix=-$major
-         ;;
-
-       *)
-         func_fatal_configuration "unknown library version type '$version_type'"
-         ;;
-       esac
-
-       # Clear the version info if we defaulted, and they specified a release.
-       if test -z "$vinfo" && test -n "$release"; then
-         major=
-         case $version_type in
-         darwin)
-           # we can't check for "0.0" in archive_cmds due to quoting
-           # problems, so we reset it completely
-           verstring=
-           ;;
-         *)
-           verstring=0.0
-           ;;
-         esac
-         if test no = "$need_version"; then
-           versuffix=
-         else
-           versuffix=.0.0
-         fi
-       fi
-
-       # Remove version info from name if versioning should be avoided
-       if test yes,no = "$avoid_version,$need_version"; then
-         major=
-         versuffix=
-         verstring=
-       fi
-
-       # Check to see if the archive will have undefined symbols.
-       if test yes = "$allow_undefined"; then
-         if test unsupported = "$allow_undefined_flag"; then
-           if test yes = "$build_old_libs"; then
-             func_warning "undefined symbols not allowed in $host shared libraries; building static only"
-             build_libtool_libs=no
-           else
-             func_fatal_error "can't build $host shared library unless -no-undefined is specified"
-           fi
-         fi
-       else
-         # Don't allow undefined symbols.
-         allow_undefined_flag=$no_undefined_flag
-       fi
-
-      fi
-
-      func_generate_dlsyms "$libname" "$libname" :
-      func_append libobjs " $symfileobj"
-      test " " = "$libobjs" && libobjs=
-
-      if test relink != "$opt_mode"; then
-       # Remove our outputs, but don't remove object files since they
-       # may have been created when compiling PIC objects.
-       removelist=
-       tempremovelist=`$ECHO "$output_objdir/*"`
-       for p in $tempremovelist; do
-         case $p in
-           *.$objext | *.gcno)
-              ;;
-           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
-              if test -n "$precious_files_regex"; then
-                if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
-                then
-                  continue
-                fi
-              fi
-              func_append removelist " $p"
-              ;;
-           *) ;;
-         esac
-       done
-       test -n "$removelist" && \
-         func_show_eval "${RM}r \$removelist"
-      fi
-
-      # Now set the variables for building old libraries.
-      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
-       func_append oldlibs " $output_objdir/$libname.$libext"
-
-       # Transform .lo files to .o files.
-       oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
-      fi
-
-      # Eliminate all temporary directories.
-      #for path in $notinst_path; do
-      #        lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
-      #        deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
-      #        dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
-      #done
-
-      if test -n "$xrpath"; then
-       # If the user specified any rpath flags, then add them.
-       temp_xrpath=
-       for libdir in $xrpath; do
-         func_replace_sysroot "$libdir"
-         func_append temp_xrpath " -R$func_replace_sysroot_result"
-         case "$finalize_rpath " in
-         *" $libdir "*) ;;
-         *) func_append finalize_rpath " $libdir" ;;
-         esac
-       done
-       if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
-         dependency_libs="$temp_xrpath $dependency_libs"
-       fi
-      fi
-
-      # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles=$dlfiles
-      dlfiles=
-      for lib in $old_dlfiles; do
-       case " $dlprefiles $dlfiles " in
-       *" $lib "*) ;;
-       *) func_append dlfiles " $lib" ;;
-       esac
-      done
-
-      # Make sure dlprefiles contains only unique files
-      old_dlprefiles=$dlprefiles
-      dlprefiles=
-      for lib in $old_dlprefiles; do
-       case "$dlprefiles " in
-       *" $lib "*) ;;
-       *) func_append dlprefiles " $lib" ;;
-       esac
-      done
-
-      if test yes = "$build_libtool_libs"; then
-       if test -n "$rpath"; then
-         case $host in
-         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
-           # these systems don't actually have a c library (as such)!
-           ;;
-         *-*-rhapsody* | *-*-darwin1.[012])
-           # Rhapsody C library is in the System framework
-           func_append deplibs " System.ltframework"
-           ;;
-         *-*-netbsd*)
-           # Don't link with libc until the a.out ld.so is fixed.
-           ;;
-         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-           # Do not include libc due to us having libc/libc_r.
-           ;;
-         *-*-sco3.2v5* | *-*-sco5v6*)
-           # Causes problems with __ctype
-           ;;
-         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-           # Compiler inserts libc in the correct place for threads to work
-           ;;
-         *)
-           # Add libc to deplibs on all other systems if necessary.
-           if test yes = "$build_libtool_need_lc"; then
-             func_append deplibs " -lc"
-           fi
-           ;;
-         esac
-       fi
-
-       # Transform deplibs into only deplibs that can be linked in shared.
-       name_save=$name
-       libname_save=$libname
-       release_save=$release
-       versuffix_save=$versuffix
-       major_save=$major
-       # I'm not sure if I'm treating the release correctly.  I think
-       # release should show up in the -l (ie -lgmp5) so we don't want to
-       # add it in twice.  Is that correct?
-       release=
-       versuffix=
-       major=
-       newdeplibs=
-       droppeddeps=no
-       case $deplibs_check_method in
-       pass_all)
-         # Don't check for shared/static.  Everything works.
-         # This might be a little naive.  We might want to check
-         # whether the library exists or not.  But this is on
-         # osf3 & osf4 and I'm not really sure... Just
-         # implementing what was already the behavior.
-         newdeplibs=$deplibs
-         ;;
-       test_compile)
-         # This code stresses the "libraries are programs" paradigm to its
-         # limits. Maybe even breaks it.  We compile a program, linking it
-         # against the deplibs as a proxy for the library.  Then we can check
-         # whether they linked in statically or dynamically with ldd.
-         $opt_dry_run || $RM conftest.c
-         cat > conftest.c <<EOF
-         int main() { return 0; }
-EOF
-         $opt_dry_run || $RM conftest
-         if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
-           ldd_output=`ldd conftest`
-           for i in $deplibs; do
-             case $i in
-             -l*)
-               func_stripname -l '' "$i"
-               name=$func_stripname_result
-               if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-                 case " $predeps $postdeps " in
-                 *" $i "*)
-                   func_append newdeplibs " $i"
-                   i=
-                   ;;
-                 esac
-               fi
-               if test -n "$i"; then
-                 libname=`eval "\\$ECHO \"$libname_spec\""`
-                 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-                 set dummy $deplib_matches; shift
-                 deplib_match=$1
-                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
-                   func_append newdeplibs " $i"
-                 else
-                   droppeddeps=yes
-                   echo
-                   $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-                   echo "*** I have the capability to make that library automatically link in when"
-                   echo "*** you link to this library.  But I can only do this if you have a"
-                   echo "*** shared version of the library, which I believe you do not have"
-                   echo "*** because a test_compile did reveal that the linker did not use it for"
-                   echo "*** its dynamic dependency list that programs get resolved with at runtime."
-                 fi
-               fi
-               ;;
-             *)
-               func_append newdeplibs " $i"
-               ;;
-             esac
-           done
-         else
-           # Error occurred in the first compile.  Let's try to salvage
-           # the situation: Compile a separate program for each library.
-           for i in $deplibs; do
-             case $i in
-             -l*)
-               func_stripname -l '' "$i"
-               name=$func_stripname_result
-               $opt_dry_run || $RM conftest
-               if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
-                 ldd_output=`ldd conftest`
-                 if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-                   case " $predeps $postdeps " in
-                   *" $i "*)
-                     func_append newdeplibs " $i"
-                     i=
-                     ;;
-                   esac
-                 fi
-                 if test -n "$i"; then
-                   libname=`eval "\\$ECHO \"$libname_spec\""`
-                   deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-                   set dummy $deplib_matches; shift
-                   deplib_match=$1
-                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
-                     func_append newdeplibs " $i"
-                   else
-                     droppeddeps=yes
-                     echo
-                     $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-                     echo "*** I have the capability to make that library automatically link in when"
-                     echo "*** you link to this library.  But I can only do this if you have a"
-                     echo "*** shared version of the library, which you do not appear to have"
-                     echo "*** because a test_compile did reveal that the linker did not use this one"
-                     echo "*** as a dynamic dependency that programs can get resolved with at runtime."
-                   fi
-                 fi
-               else
-                 droppeddeps=yes
-                 echo
-                 $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-                 echo "*** make it link in!  You will probably need to install it or some"
-                 echo "*** library that it depends on before this library will be fully"
-                 echo "*** functional.  Installing it before continuing would be even better."
-               fi
-               ;;
-             *)
-               func_append newdeplibs " $i"
-               ;;
-             esac
-           done
-         fi
-         ;;
-       file_magic*)
-         set dummy $deplibs_check_method; shift
-         file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-         for a_deplib in $deplibs; do
-           case $a_deplib in
-           -l*)
-             func_stripname -l '' "$a_deplib"
-             name=$func_stripname_result
-             if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-               case " $predeps $postdeps " in
-               *" $a_deplib "*)
-                 func_append newdeplibs " $a_deplib"
-                 a_deplib=
-                 ;;
-               esac
-             fi
-             if test -n "$a_deplib"; then
-               libname=`eval "\\$ECHO \"$libname_spec\""`
-               if test -n "$file_magic_glob"; then
-                 libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
-               else
-                 libnameglob=$libname
-               fi
-               test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
-               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-                 if test yes = "$want_nocaseglob"; then
-                   shopt -s nocaseglob
-                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-                   $nocaseglob
-                 else
-                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-                 fi
-                 for potent_lib in $potential_libs; do
-                     # Follow soft links.
-                     if ls -lLd "$potent_lib" 2>/dev/null |
-                        $GREP " -> " >/dev/null; then
-                       continue
-                     fi
-                     # The statement above tries to avoid entering an
-                     # endless loop below, in case of cyclic links.
-                     # We might still enter an endless loop, since a link
-                     # loop can be closed while we follow links,
-                     # but so what?
-                     potlib=$potent_lib
-                     while test -h "$potlib" 2>/dev/null; do
-                       potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
-                       case $potliblink in
-                       [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
-                       *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
-                       esac
-                     done
-                     if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
-                        $SED -e 10q |
-                        $EGREP "$file_magic_regex" > /dev/null; then
-                       func_append newdeplibs " $a_deplib"
-                       a_deplib=
-                       break 2
-                     fi
-                 done
-               done
-             fi
-             if test -n "$a_deplib"; then
-               droppeddeps=yes
-               echo
-               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-               echo "*** I have the capability to make that library automatically link in when"
-               echo "*** you link to this library.  But I can only do this if you have a"
-               echo "*** shared version of the library, which you do not appear to have"
-               echo "*** because I did check the linker path looking for a file starting"
-               if test -z "$potlib"; then
-                 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
-               else
-                 $ECHO "*** with $libname and none of the candidates passed a file format test"
-                 $ECHO "*** using a file magic. Last file checked: $potlib"
-               fi
-             fi
-             ;;
-           *)
-             # Add a -L argument.
-             func_append newdeplibs " $a_deplib"
-             ;;
-           esac
-         done # Gone through all deplibs.
-         ;;
-       match_pattern*)
-         set dummy $deplibs_check_method; shift
-         match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-         for a_deplib in $deplibs; do
-           case $a_deplib in
-           -l*)
-             func_stripname -l '' "$a_deplib"
-             name=$func_stripname_result
-             if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-               case " $predeps $postdeps " in
-               *" $a_deplib "*)
-                 func_append newdeplibs " $a_deplib"
-                 a_deplib=
-                 ;;
-               esac
-             fi
-             if test -n "$a_deplib"; then
-               libname=`eval "\\$ECHO \"$libname_spec\""`
-               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-                 for potent_lib in $potential_libs; do
-                   potlib=$potent_lib # see symlink-check above in file_magic test
-                   if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
-                      $EGREP "$match_pattern_regex" > /dev/null; then
-                     func_append newdeplibs " $a_deplib"
-                     a_deplib=
-                     break 2
-                   fi
-                 done
-               done
-             fi
-             if test -n "$a_deplib"; then
-               droppeddeps=yes
-               echo
-               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-               echo "*** I have the capability to make that library automatically link in when"
-               echo "*** you link to this library.  But I can only do this if you have a"
-               echo "*** shared version of the library, which you do not appear to have"
-               echo "*** because I did check the linker path looking for a file starting"
-               if test -z "$potlib"; then
-                 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
-               else
-                 $ECHO "*** with $libname and none of the candidates passed a file format test"
-                 $ECHO "*** using a regex pattern. Last file checked: $potlib"
-               fi
-             fi
-             ;;
-           *)
-             # Add a -L argument.
-             func_append newdeplibs " $a_deplib"
-             ;;
-           esac
-         done # Gone through all deplibs.
-         ;;
-       none | unknown | *)
-         newdeplibs=
-         tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
-         if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-           for i in $predeps $postdeps; do
-             # can't use Xsed below, because $i might contain '/'
-             tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
-           done
-         fi
-         case $tmp_deplibs in
-         *[!\  \ ]*)
-           echo
-           if test none = "$deplibs_check_method"; then
-             echo "*** Warning: inter-library dependencies are not supported in this platform."
-           else
-             echo "*** Warning: inter-library dependencies are not known to be supported."
-           fi
-           echo "*** All declared inter-library dependencies are being dropped."
-           droppeddeps=yes
-           ;;
-         esac
-         ;;
-       esac
-       versuffix=$versuffix_save
-       major=$major_save
-       release=$release_save
-       libname=$libname_save
-       name=$name_save
-
-       case $host in
-       *-*-rhapsody* | *-*-darwin1.[012])
-         # On Rhapsody replace the C library with the System framework
-         newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
-         ;;
-       esac
-
-       if test yes = "$droppeddeps"; then
-         if test yes = "$module"; then
-           echo
-           echo "*** Warning: libtool could not satisfy all declared inter-library"
-           $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-           echo "*** a static module, that should work as long as the dlopening"
-           echo "*** application is linked with the -dlopen flag."
-           if test -z "$global_symbol_pipe"; then
-             echo
-             echo "*** However, this would only work if libtool was able to extract symbol"
-             echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
-             echo "*** not find such a program.  So, this module is probably useless."
-             echo "*** 'nm' from GNU binutils and a full rebuild may help."
-           fi
-           if test no = "$build_old_libs"; then
-             oldlibs=$output_objdir/$libname.$libext
-             build_libtool_libs=module
-             build_old_libs=yes
-           else
-             build_libtool_libs=no
-           fi
-         else
-           echo "*** The inter-library dependencies that have been dropped here will be"
-           echo "*** automatically added whenever a program is linked with this library"
-           echo "*** or is declared to -dlopen it."
-
-           if test no = "$allow_undefined"; then
-             echo
-             echo "*** Since this library must not contain undefined symbols,"
-             echo "*** because either the platform does not support them or"
-             echo "*** it was explicitly requested with -no-undefined,"
-             echo "*** libtool will only create a static version of it."
-             if test no = "$build_old_libs"; then
-               oldlibs=$output_objdir/$libname.$libext
-               build_libtool_libs=module
-               build_old_libs=yes
-             else
-               build_libtool_libs=no
-             fi
-           fi
-         fi
-       fi
-       # Done checking deplibs!
-       deplibs=$newdeplibs
-      fi
-      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-      case $host in
-       *-*-darwin*)
-         newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-         new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-         deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-         ;;
-      esac
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-       case " $new_libs " in
-       *" -L$path/$objdir "*) ;;
-       *)
-         case " $deplibs " in
-         *" -L$path/$objdir "*)
-           func_append new_libs " -L$path/$objdir" ;;
-         esac
-         ;;
-       esac
-      done
-      for deplib in $deplibs; do
-       case $deplib in
-       -L*)
-         case " $new_libs " in
-         *" $deplib "*) ;;
-         *) func_append new_libs " $deplib" ;;
-         esac
-         ;;
-       *) func_append new_libs " $deplib" ;;
-       esac
-      done
-      deplibs=$new_libs
-
-      # All the library-specific variables (install_libdir is set above).
-      library_names=
-      old_library=
-      dlname=
-
-      # Test again, we may have decided not to build it any more
-      if test yes = "$build_libtool_libs"; then
-       # Remove $wl instances when linking with ld.
-       # FIXME: should test the right _cmds variable.
-       case $archive_cmds in
-         *\$LD\ *) wl= ;;
-        esac
-       if test yes = "$hardcode_into_libs"; then
-         # Hardcode the library paths
-         hardcode_libdirs=
-         dep_rpath=
-         rpath=$finalize_rpath
-         test relink = "$opt_mode" || rpath=$compile_rpath$rpath
-         for libdir in $rpath; do
-           if test -n "$hardcode_libdir_flag_spec"; then
-             if test -n "$hardcode_libdir_separator"; then
-               func_replace_sysroot "$libdir"
-               libdir=$func_replace_sysroot_result
-               if test -z "$hardcode_libdirs"; then
-                 hardcode_libdirs=$libdir
-               else
-                 # Just accumulate the unique libdirs.
-                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-                   ;;
-                 *)
-                   func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-                   ;;
-                 esac
-               fi
-             else
-               eval flag=\"$hardcode_libdir_flag_spec\"
-               func_append dep_rpath " $flag"
-             fi
-           elif test -n "$runpath_var"; then
-             case "$perm_rpath " in
-             *" $libdir "*) ;;
-             *) func_append perm_rpath " $libdir" ;;
-             esac
-           fi
-         done
-         # Substitute the hardcoded libdirs into the rpath.
-         if test -n "$hardcode_libdir_separator" &&
-            test -n "$hardcode_libdirs"; then
-           libdir=$hardcode_libdirs
-           eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
-         fi
-         if test -n "$runpath_var" && test -n "$perm_rpath"; then
-           # We should set the runpath_var.
-           rpath=
-           for dir in $perm_rpath; do
-             func_append rpath "$dir:"
-           done
-           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
-         fi
-         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
-       fi
-
-       shlibpath=$finalize_shlibpath
-       test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
-       if test -n "$shlibpath"; then
-         eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
-       fi
-
-       # Get the real and link names of the library.
-       eval shared_ext=\"$shrext_cmds\"
-       eval library_names=\"$library_names_spec\"
-       set dummy $library_names
-       shift
-       realname=$1
-       shift
-
-       if test -n "$soname_spec"; then
-         eval soname=\"$soname_spec\"
-       else
-         soname=$realname
-       fi
-       if test -z "$dlname"; then
-         dlname=$soname
-       fi
-
-       lib=$output_objdir/$realname
-       linknames=
-       for link
-       do
-         func_append linknames " $link"
-       done
-
-       # Use standard objects if they are pic
-       test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-       test "X$libobjs" = "X " && libobjs=
-
-       delfiles=
-       if test -n "$export_symbols" && test -n "$include_expsyms"; then
-         $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-         export_symbols=$output_objdir/$libname.uexp
-         func_append delfiles " $export_symbols"
-       fi
-
-       orig_export_symbols=
-       case $host_os in
-       cygwin* | mingw* | cegcc*)
-         if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
-           # exporting using user supplied symfile
-           func_dll_def_p "$export_symbols" || {
-             # and it's NOT already a .def file. Must figure out
-             # which of the given symbols are data symbols and tag
-             # them as such. So, trigger use of export_symbols_cmds.
-             # export_symbols gets reassigned inside the "prepare
-             # the list of exported symbols" if statement, so the
-             # include_expsyms logic still works.
-             orig_export_symbols=$export_symbols
-             export_symbols=
-             always_export_symbols=yes
-           }
-         fi
-         ;;
-       esac
-
-       # Prepare the list of exported symbols
-       if test -z "$export_symbols"; then
-         if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
-           func_verbose "generating symbol list for '$libname.la'"
-           export_symbols=$output_objdir/$libname.exp
-           $opt_dry_run || $RM $export_symbols
-           cmds=$export_symbols_cmds
-           save_ifs=$IFS; IFS='~'
-           for cmd1 in $cmds; do
-             IFS=$save_ifs
-             # Take the normal branch if the nm_file_list_spec branch
-             # doesn't work or if tool conversion is not needed.
-             case $nm_file_list_spec~$to_tool_file_cmd in
-               *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
-                 try_normal_branch=yes
-                 eval cmd=\"$cmd1\"
-                 func_len " $cmd"
-                 len=$func_len_result
-                 ;;
-               *)
-                 try_normal_branch=no
-                 ;;
-             esac
-             if test yes = "$try_normal_branch" \
-                && { test "$len" -lt "$max_cmd_len" \
-                     || test "$max_cmd_len" -le -1; }
-             then
-               func_show_eval "$cmd" 'exit $?'
-               skipped_export=false
-             elif test -n "$nm_file_list_spec"; then
-               func_basename "$output"
-               output_la=$func_basename_result
-               save_libobjs=$libobjs
-               save_output=$output
-               output=$output_objdir/$output_la.nm
-               func_to_tool_file "$output"
-               libobjs=$nm_file_list_spec$func_to_tool_file_result
-               func_append delfiles " $output"
-               func_verbose "creating $NM input file list: $output"
-               for obj in $save_libobjs; do
-                 func_to_tool_file "$obj"
-                 $ECHO "$func_to_tool_file_result"
-               done > "$output"
-               eval cmd=\"$cmd1\"
-               func_show_eval "$cmd" 'exit $?'
-               output=$save_output
-               libobjs=$save_libobjs
-               skipped_export=false
-             else
-               # The command line is too long to execute in one step.
-               func_verbose "using reloadable object file for export list..."
-               skipped_export=:
-               # Break out early, otherwise skipped_export may be
-               # set to false by a later but shorter cmd.
-               break
-             fi
-           done
-           IFS=$save_ifs
-           if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
-             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-           fi
-         fi
-       fi
-
-       if test -n "$export_symbols" && test -n "$include_expsyms"; then
-         tmp_export_symbols=$export_symbols
-         test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
-         $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-       fi
-
-       if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
-         # The given exports_symbols file has to be filtered, so filter it.
-         func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
-         # FIXME: $output_objdir/$libname.filter potentially contains lots of
-         # 's' commands, which not all seds can handle. GNU sed should be fine
-         # though. Also, the filter scales superlinearly with the number of
-         # global variables. join(1) would be nice here, but unfortunately
-         # isn't a blessed tool.
-         $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-         func_append delfiles " $export_symbols $output_objdir/$libname.filter"
-         export_symbols=$output_objdir/$libname.def
-         $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-       fi
-
-       tmp_deplibs=
-       for test_deplib in $deplibs; do
-         case " $convenience " in
-         *" $test_deplib "*) ;;
-         *)
-           func_append tmp_deplibs " $test_deplib"
-           ;;
-         esac
-       done
-       deplibs=$tmp_deplibs
-
-       if test -n "$convenience"; then
-         if test -n "$whole_archive_flag_spec" &&
-           test yes = "$compiler_needs_object" &&
-           test -z "$libobjs"; then
-           # extract the archives, so we have objects to list.
-           # TODO: could optimize this to just extract one archive.
-           whole_archive_flag_spec=
-         fi
-         if test -n "$whole_archive_flag_spec"; then
-           save_libobjs=$libobjs
-           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-           test "X$libobjs" = "X " && libobjs=
-         else
-           gentop=$output_objdir/${outputname}x
-           func_append generated " $gentop"
-
-           func_extract_archives $gentop $convenience
-           func_append libobjs " $func_extract_archives_result"
-           test "X$libobjs" = "X " && libobjs=
-         fi
-       fi
-
-       if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
-         eval flag=\"$thread_safe_flag_spec\"
-         func_append linker_flags " $flag"
-       fi
-
-       # Make a backup of the uninstalled library when relinking
-       if test relink = "$opt_mode"; then
-         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
-       fi
-
-       # Do each of the archive commands.
-       if test yes = "$module" && test -n "$module_cmds"; then
-         if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-           eval test_cmds=\"$module_expsym_cmds\"
-           cmds=$module_expsym_cmds
-         else
-           eval test_cmds=\"$module_cmds\"
-           cmds=$module_cmds
-         fi
-       else
-         if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-           eval test_cmds=\"$archive_expsym_cmds\"
-           cmds=$archive_expsym_cmds
-         else
-           eval test_cmds=\"$archive_cmds\"
-           cmds=$archive_cmds
-         fi
-       fi
-
-       if test : != "$skipped_export" &&
-          func_len " $test_cmds" &&
-          len=$func_len_result &&
-          test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-         :
-       else
-         # The command line is too long to link in one step, link piecewise
-         # or, if using GNU ld and skipped_export is not :, use a linker
-         # script.
-
-         # Save the value of $output and $libobjs because we want to
-         # use them later.  If we have whole_archive_flag_spec, we
-         # want to use save_libobjs as it was before
-         # whole_archive_flag_spec was expanded, because we can't
-         # assume the linker understands whole_archive_flag_spec.
-         # This may have to be revisited, in case too many
-         # convenience libraries get linked in and end up exceeding
-         # the spec.
-         if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
-           save_libobjs=$libobjs
-         fi
-         save_output=$output
-         func_basename "$output"
-         output_la=$func_basename_result
-
-         # Clear the reloadable object creation command queue and
-         # initialize k to one.
-         test_cmds=
-         concat_cmds=
-         objlist=
-         last_robj=
-         k=1
-
-         if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
-           output=$output_objdir/$output_la.lnkscript
-           func_verbose "creating GNU ld script: $output"
-           echo 'INPUT (' > $output
-           for obj in $save_libobjs
-           do
-             func_to_tool_file "$obj"
-             $ECHO "$func_to_tool_file_result" >> $output
-           done
-           echo ')' >> $output
-           func_append delfiles " $output"
-           func_to_tool_file "$output"
-           output=$func_to_tool_file_result
-         elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
-           output=$output_objdir/$output_la.lnk
-           func_verbose "creating linker input file list: $output"
-           : > $output
-           set x $save_libobjs
-           shift
-           firstobj=
-           if test yes = "$compiler_needs_object"; then
-             firstobj="$1 "
-             shift
-           fi
-           for obj
-           do
-             func_to_tool_file "$obj"
-             $ECHO "$func_to_tool_file_result" >> $output
-           done
-           func_append delfiles " $output"
-           func_to_tool_file "$output"
-           output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
-         else
-           if test -n "$save_libobjs"; then
-             func_verbose "creating reloadable object files..."
-             output=$output_objdir/$output_la-$k.$objext
-             eval test_cmds=\"$reload_cmds\"
-             func_len " $test_cmds"
-             len0=$func_len_result
-             len=$len0
-
-             # Loop over the list of objects to be linked.
-             for obj in $save_libobjs
-             do
-               func_len " $obj"
-               func_arith $len + $func_len_result
-               len=$func_arith_result
-               if test -z "$objlist" ||
-                  test "$len" -lt "$max_cmd_len"; then
-                 func_append objlist " $obj"
-               else
-                 # The command $test_cmds is almost too long, add a
-                 # command to the queue.
-                 if test 1 -eq "$k"; then
-                   # The first file doesn't have a previous command to add.
-                   reload_objs=$objlist
-                   eval concat_cmds=\"$reload_cmds\"
-                 else
-                   # All subsequent reloadable object files will link in
-                   # the last one created.
-                   reload_objs="$objlist $last_robj"
-                   eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
-                 fi
-                 last_robj=$output_objdir/$output_la-$k.$objext
-                 func_arith $k + 1
-                 k=$func_arith_result
-                 output=$output_objdir/$output_la-$k.$objext
-                 objlist=" $obj"
-                 func_len " $last_robj"
-                 func_arith $len0 + $func_len_result
-                 len=$func_arith_result
-               fi
-             done
-             # Handle the remaining objects by creating one last
-             # reloadable object file.  All subsequent reloadable object
-             # files will link in the last one created.
-             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-             reload_objs="$objlist $last_robj"
-             eval concat_cmds=\"\$concat_cmds$reload_cmds\"
-             if test -n "$last_robj"; then
-               eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
-             fi
-             func_append delfiles " $output"
-
-           else
-             output=
-           fi
-
-           ${skipped_export-false} && {
-             func_verbose "generating symbol list for '$libname.la'"
-             export_symbols=$output_objdir/$libname.exp
-             $opt_dry_run || $RM $export_symbols
-             libobjs=$output
-             # Append the command to create the export file.
-             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-             eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
-             if test -n "$last_robj"; then
-               eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
-             fi
-           }
-
-           test -n "$save_libobjs" &&
-             func_verbose "creating a temporary reloadable object file: $output"
-
-           # Loop through the commands generated above and execute them.
-           save_ifs=$IFS; IFS='~'
-           for cmd in $concat_cmds; do
-             IFS=$save_ifs
-             $opt_quiet || {
-                 func_quote_arg expand,pretty "$cmd"
-                 eval "func_echo $func_quote_arg_result"
-             }
-             $opt_dry_run || eval "$cmd" || {
-               lt_exit=$?
-
-               # Restore the uninstalled library and exit
-               if test relink = "$opt_mode"; then
-                 ( cd "$output_objdir" && \
-                   $RM "${realname}T" && \
-                   $MV "${realname}U" "$realname" )
-               fi
-
-               exit $lt_exit
-             }
-           done
-           IFS=$save_ifs
-
-           if test -n "$export_symbols_regex" && ${skipped_export-false}; then
-             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-           fi
-         fi
-
-          ${skipped_export-false} && {
-           if test -n "$export_symbols" && test -n "$include_expsyms"; then
-             tmp_export_symbols=$export_symbols
-             test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
-             $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-           fi
-
-           if test -n "$orig_export_symbols"; then
-             # The given exports_symbols file has to be filtered, so filter it.
-             func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
-             # FIXME: $output_objdir/$libname.filter potentially contains lots of
-             # 's' commands, which not all seds can handle. GNU sed should be fine
-             # though. Also, the filter scales superlinearly with the number of
-             # global variables. join(1) would be nice here, but unfortunately
-             # isn't a blessed tool.
-             $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-             func_append delfiles " $export_symbols $output_objdir/$libname.filter"
-             export_symbols=$output_objdir/$libname.def
-             $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-           fi
-         }
-
-         libobjs=$output
-         # Restore the value of output.
-         output=$save_output
-
-         if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
-           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-           test "X$libobjs" = "X " && libobjs=
-         fi
-         # Expand the library linking commands again to reset the
-         # value of $libobjs for piecewise linking.
-
-         # Do each of the archive commands.
-         if test yes = "$module" && test -n "$module_cmds"; then
-           if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-             cmds=$module_expsym_cmds
-           else
-             cmds=$module_cmds
-           fi
-         else
-           if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-             cmds=$archive_expsym_cmds
-           else
-             cmds=$archive_cmds
-           fi
-         fi
-       fi
-
-       if test -n "$delfiles"; then
-         # Append the command to remove temporary files to $cmds.
-         eval cmds=\"\$cmds~\$RM $delfiles\"
-       fi
-
-       # Add any objects from preloaded convenience libraries
-       if test -n "$dlprefiles"; then
-         gentop=$output_objdir/${outputname}x
-         func_append generated " $gentop"
-
-         func_extract_archives $gentop $dlprefiles
-         func_append libobjs " $func_extract_archives_result"
-         test "X$libobjs" = "X " && libobjs=
-       fi
-
-       save_ifs=$IFS; IFS='~'
-       for cmd in $cmds; do
-         IFS=$sp$nl
-         eval cmd=\"$cmd\"
-         IFS=$save_ifs
-         $opt_quiet || {
-           func_quote_arg expand,pretty "$cmd"
-           eval "func_echo $func_quote_arg_result"
-         }
-         $opt_dry_run || eval "$cmd" || {
-           lt_exit=$?
-
-           # Restore the uninstalled library and exit
-           if test relink = "$opt_mode"; then
-             ( cd "$output_objdir" && \
-               $RM "${realname}T" && \
-               $MV "${realname}U" "$realname" )
-           fi
-
-           exit $lt_exit
-         }
-       done
-       IFS=$save_ifs
-
-       # Restore the uninstalled library and exit
-       if test relink = "$opt_mode"; then
-         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
-         if test -n "$convenience"; then
-           if test -z "$whole_archive_flag_spec"; then
-             func_show_eval '${RM}r "$gentop"'
-           fi
-         fi
-
-         exit $EXIT_SUCCESS
-       fi
-
-       # Create links to the real library.
-       for linkname in $linknames; do
-         if test "$realname" != "$linkname"; then
-           func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
-         fi
-       done
-
-       # If -module or -export-dynamic was specified, set the dlname.
-       if test yes = "$module" || test yes = "$export_dynamic"; then
-         # On all known operating systems, these are identical.
-         dlname=$soname
-       fi
-      fi
-      ;;
-
-    obj)
-      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
-       func_warning "'-dlopen' is ignored for objects"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-       func_warning "'-l' and '-L' are ignored for objects" ;;
-      esac
-
-      test -n "$rpath" && \
-       func_warning "'-rpath' is ignored for objects"
-
-      test -n "$xrpath" && \
-       func_warning "'-R' is ignored for objects"
-
-      test -n "$vinfo" && \
-       func_warning "'-version-info' is ignored for objects"
-
-      test -n "$release" && \
-       func_warning "'-release' is ignored for objects"
-
-      case $output in
-      *.lo)
-       test -n "$objs$old_deplibs" && \
-         func_fatal_error "cannot build library object '$output' from non-libtool objects"
-
-       libobj=$output
-       func_lo2o "$libobj"
-       obj=$func_lo2o_result
-       ;;
-      *)
-       libobj=
-       obj=$output
-       ;;
-      esac
-
-      # Delete the old objects.
-      $opt_dry_run || $RM $obj $libobj
-
-      # Objects from convenience libraries.  This assumes
-      # single-version convenience libraries.  Whenever we create
-      # different ones for PIC/non-PIC, this we'll have to duplicate
-      # the extraction.
-      reload_conv_objs=
-      gentop=
-      # if reload_cmds runs $LD directly, get rid of -Wl from
-      # whole_archive_flag_spec and hope we can get by with turning comma
-      # into space.
-      case $reload_cmds in
-        *\$LD[\ \$]*) wl= ;;
-      esac
-      if test -n "$convenience"; then
-       if test -n "$whole_archive_flag_spec"; then
-         eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-         test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
-         reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
-       else
-         gentop=$output_objdir/${obj}x
-         func_append generated " $gentop"
-
-         func_extract_archives $gentop $convenience
-         reload_conv_objs="$reload_objs $func_extract_archives_result"
-       fi
-      fi
-
-      # If we're not building shared, we need to use non_pic_objs
-      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
-
-      # Create the old-style object.
-      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
-
-      output=$obj
-      func_execute_cmds "$reload_cmds" 'exit $?'
-
-      # Exit if we aren't doing a library object file.
-      if test -z "$libobj"; then
-       if test -n "$gentop"; then
-         func_show_eval '${RM}r "$gentop"'
-       fi
-
-       exit $EXIT_SUCCESS
-      fi
-
-      test yes = "$build_libtool_libs" || {
-       if test -n "$gentop"; then
-         func_show_eval '${RM}r "$gentop"'
-       fi
-
-       # Create an invalid libtool object if no PIC, so that we don't
-       # accidentally link it into a program.
-       # $show "echo timestamp > $libobj"
-       # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
-       exit $EXIT_SUCCESS
-      }
-
-      if test -n "$pic_flag" || test default != "$pic_mode"; then
-       # Only do commands if we really have different PIC objects.
-       reload_objs="$libobjs $reload_conv_objs"
-       output=$libobj
-       func_execute_cmds "$reload_cmds" 'exit $?'
-      fi
-
-      if test -n "$gentop"; then
-       func_show_eval '${RM}r "$gentop"'
-      fi
-
-      exit $EXIT_SUCCESS
-      ;;
-
-    prog)
-      case $host in
-       *cygwin*) func_stripname '' '.exe' "$output"
-                 output=$func_stripname_result.exe;;
-      esac
-      test -n "$vinfo" && \
-       func_warning "'-version-info' is ignored for programs"
-
-      test -n "$release" && \
-       func_warning "'-release' is ignored for programs"
-
-      $preload \
-       && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
-       && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
-
-      case $host in
-      *-*-rhapsody* | *-*-darwin1.[012])
-       # On Rhapsody replace the C library is the System framework
-       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
-       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
-       ;;
-      esac
-
-      case $host in
-      *-*-darwin*)
-       # Don't allow lazy linking, it breaks C++ global constructors
-       # But is supposedly fixed on 10.4 or later (yay!).
-       if test CXX = "$tagname"; then
-         case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-           10.[0123])
-             func_append compile_command " $wl-bind_at_load"
-             func_append finalize_command " $wl-bind_at_load"
-           ;;
-         esac
-       fi
-       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       ;;
-      esac
-
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-       case " $new_libs " in
-       *" -L$path/$objdir "*) ;;
-       *)
-         case " $compile_deplibs " in
-         *" -L$path/$objdir "*)
-           func_append new_libs " -L$path/$objdir" ;;
-         esac
-         ;;
-       esac
-      done
-      for deplib in $compile_deplibs; do
-       case $deplib in
-       -L*)
-         case " $new_libs " in
-         *" $deplib "*) ;;
-         *) func_append new_libs " $deplib" ;;
-         esac
-         ;;
-       *) func_append new_libs " $deplib" ;;
-       esac
-      done
-      compile_deplibs=$new_libs
-
-
-      func_append compile_command " $compile_deplibs"
-      func_append finalize_command " $finalize_deplibs"
-
-      if test -n "$rpath$xrpath"; then
-       # If the user specified any rpath flags, then add them.
-       for libdir in $rpath $xrpath; do
-         # This is the magic to use -rpath.
-         case "$finalize_rpath " in
-         *" $libdir "*) ;;
-         *) func_append finalize_rpath " $libdir" ;;
-         esac
-       done
-      fi
-
-      # Now hardcode the library paths
-      rpath=
-      hardcode_libdirs=
-      for libdir in $compile_rpath $finalize_rpath; do
-       if test -n "$hardcode_libdir_flag_spec"; then
-         if test -n "$hardcode_libdir_separator"; then
-           if test -z "$hardcode_libdirs"; then
-             hardcode_libdirs=$libdir
-           else
-             # Just accumulate the unique libdirs.
-             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-               ;;
-             *)
-               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-               ;;
-             esac
-           fi
-         else
-           eval flag=\"$hardcode_libdir_flag_spec\"
-           func_append rpath " $flag"
-         fi
-       elif test -n "$runpath_var"; then
-         case "$perm_rpath " in
-         *" $libdir "*) ;;
-         *) func_append perm_rpath " $libdir" ;;
-         esac
-       fi
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-         testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
-         case :$dllsearchpath: in
-         *":$libdir:"*) ;;
-         ::) dllsearchpath=$libdir;;
-         *) func_append dllsearchpath ":$libdir";;
-         esac
-         case :$dllsearchpath: in
-         *":$testbindir:"*) ;;
-         ::) dllsearchpath=$testbindir;;
-         *) func_append dllsearchpath ":$testbindir";;
-         esac
-         ;;
-       esac
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-        test -n "$hardcode_libdirs"; then
-       libdir=$hardcode_libdirs
-       eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      compile_rpath=$rpath
-
-      rpath=
-      hardcode_libdirs=
-      for libdir in $finalize_rpath; do
-       if test -n "$hardcode_libdir_flag_spec"; then
-         if test -n "$hardcode_libdir_separator"; then
-           if test -z "$hardcode_libdirs"; then
-             hardcode_libdirs=$libdir
-           else
-             # Just accumulate the unique libdirs.
-             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-               ;;
-             *)
-               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-               ;;
-             esac
-           fi
-         else
-           eval flag=\"$hardcode_libdir_flag_spec\"
-           func_append rpath " $flag"
-         fi
-       elif test -n "$runpath_var"; then
-         case "$finalize_perm_rpath " in
-         *" $libdir "*) ;;
-         *) func_append finalize_perm_rpath " $libdir" ;;
-         esac
-       fi
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-        test -n "$hardcode_libdirs"; then
-       libdir=$hardcode_libdirs
-       eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      finalize_rpath=$rpath
-
-      if test -n "$libobjs" && test yes = "$build_old_libs"; then
-       # Transform all the library objects into standard objects.
-       compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-       finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-      fi
-
-      func_generate_dlsyms "$outputname" "@PROGRAM@" false
-
-      # template prelinking step
-      if test -n "$prelink_cmds"; then
-       func_execute_cmds "$prelink_cmds" 'exit $?'
-      fi
-
-      wrappers_required=:
-      case $host in
-      *cegcc* | *mingw32ce*)
-        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
-        wrappers_required=false
-        ;;
-      *cygwin* | *mingw* )
-        test yes = "$build_libtool_libs" || wrappers_required=false
-        ;;
-      *)
-        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
-          wrappers_required=false
-        fi
-        ;;
-      esac
-      $wrappers_required || {
-       # Replace the output file specification.
-       compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-       link_command=$compile_command$compile_rpath
-
-       # We have no uninstalled library dependencies, so finalize right now.
-       exit_status=0
-       func_show_eval "$link_command" 'exit_status=$?'
-
-       if test -n "$postlink_cmds"; then
-         func_to_tool_file "$output"
-         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-         func_execute_cmds "$postlink_cmds" 'exit $?'
-       fi
-
-       # Delete the generated files.
-       if test -f "$output_objdir/${outputname}S.$objext"; then
-         func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
-       fi
-
-       exit $exit_status
-      }
-
-      if test -n "$compile_shlibpath$finalize_shlibpath"; then
-       compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
-      fi
-      if test -n "$finalize_shlibpath"; then
-       finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
-      fi
-
-      compile_var=
-      finalize_var=
-      if test -n "$runpath_var"; then
-       if test -n "$perm_rpath"; then
-         # We should set the runpath_var.
-         rpath=
-         for dir in $perm_rpath; do
-           func_append rpath "$dir:"
-         done
-         compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
-       fi
-       if test -n "$finalize_perm_rpath"; then
-         # We should set the runpath_var.
-         rpath=
-         for dir in $finalize_perm_rpath; do
-           func_append rpath "$dir:"
-         done
-         finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
-       fi
-      fi
-
-      if test yes = "$no_install"; then
-       # We don't need to create a wrapper script.
-       link_command=$compile_var$compile_command$compile_rpath
-       # Replace the output file specification.
-       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-       # Delete the old output file.
-       $opt_dry_run || $RM $output
-       # Link the executable and exit
-       func_show_eval "$link_command" 'exit $?'
-
-       if test -n "$postlink_cmds"; then
-         func_to_tool_file "$output"
-         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-         func_execute_cmds "$postlink_cmds" 'exit $?'
-       fi
-
-       exit $EXIT_SUCCESS
-      fi
-
-      case $hardcode_action,$fast_install in
-        relink,*)
-         # Fast installation is not supported
-         link_command=$compile_var$compile_command$compile_rpath
-         relink_command=$finalize_var$finalize_command$finalize_rpath
-
-         func_warning "this platform does not like uninstalled shared libraries"
-         func_warning "'$output' will be relinked during installation"
-         ;;
-        *,yes)
-         link_command=$finalize_var$compile_command$finalize_rpath
-         relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
-          ;;
-       *,no)
-         link_command=$compile_var$compile_command$compile_rpath
-         relink_command=$finalize_var$finalize_command$finalize_rpath
-          ;;
-       *,needless)
-         link_command=$finalize_var$compile_command$finalize_rpath
-         relink_command=
-          ;;
-      esac
-
-      # Replace the output file specification.
-      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
-      # Delete the old output files.
-      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
-      func_show_eval "$link_command" 'exit $?'
-
-      if test -n "$postlink_cmds"; then
-       func_to_tool_file "$output_objdir/$outputname"
-       postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-       func_execute_cmds "$postlink_cmds" 'exit $?'
-      fi
-
-      # Now create the wrapper script.
-      func_verbose "creating $output"
-
-      # Quote the relink command for shipping.
-      if test -n "$relink_command"; then
-       # Preserve any variables that may affect compiler behavior
-       for var in $variables_saved_for_relink; do
-         if eval test -z \"\${$var+set}\"; then
-           relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-         elif eval var_value=\$$var; test -z "$var_value"; then
-           relink_command="$var=; export $var; $relink_command"
-         else
-           func_quote_arg pretty "$var_value"
-           relink_command="$var=$func_quote_arg_result; export $var; $relink_command"
-         fi
-       done
-       func_quote eval cd "`pwd`"
-       func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)"
-       relink_command=$func_quote_arg_unquoted_result
-      fi
-
-      # Only actually do things if not in dry run mode.
-      $opt_dry_run || {
-       # win32 will think the script is a binary if it has
-       # a .exe suffix, so we strip it off here.
-       case $output in
-         *.exe) func_stripname '' '.exe' "$output"
-                output=$func_stripname_result ;;
-       esac
-       # test for cygwin because mv fails w/o .exe extensions
-       case $host in
-         *cygwin*)
-           exeext=.exe
-           func_stripname '' '.exe' "$outputname"
-           outputname=$func_stripname_result ;;
-         *) exeext= ;;
-       esac
-       case $host in
-         *cygwin* | *mingw* )
-           func_dirname_and_basename "$output" "" "."
-           output_name=$func_basename_result
-           output_path=$func_dirname_result
-           cwrappersource=$output_path/$objdir/lt-$output_name.c
-           cwrapper=$output_path/$output_name.exe
-           $RM $cwrappersource $cwrapper
-           trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
-
-           func_emit_cwrapperexe_src > $cwrappersource
-
-           # The wrapper executable is built using the $host compiler,
-           # because it contains $host paths and files. If cross-
-           # compiling, it, like the target executable, must be
-           # executed on the $host or under an emulation environment.
-           $opt_dry_run || {
-             $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
-             $STRIP $cwrapper
-           }
-
-           # Now, create the wrapper script for func_source use:
-           func_ltwrapper_scriptname $cwrapper
-           $RM $func_ltwrapper_scriptname_result
-           trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
-           $opt_dry_run || {
-             # note: this script will not be executed, so do not chmod.
-             if test "x$build" = "x$host"; then
-               $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
-             else
-               func_emit_wrapper no > $func_ltwrapper_scriptname_result
-             fi
-           }
-         ;;
-         * )
-           $RM $output
-           trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
-           func_emit_wrapper no > $output
-           chmod +x $output
-         ;;
-       esac
-      }
-      exit $EXIT_SUCCESS
-      ;;
-    esac
-
-    # See if we need to build an old-fashioned archive.
-    for oldlib in $oldlibs; do
-
-      case $build_libtool_libs in
-        convenience)
-         oldobjs="$libobjs_save $symfileobj"
-         addlibs=$convenience
-         build_libtool_libs=no
-         ;;
-       module)
-         oldobjs=$libobjs_save
-         addlibs=$old_convenience
-         build_libtool_libs=no
-          ;;
-       *)
-         oldobjs="$old_deplibs $non_pic_objects"
-         $preload && test -f "$symfileobj" \
-           && func_append oldobjs " $symfileobj"
-         addlibs=$old_convenience
-         ;;
-      esac
-
-      if test -n "$addlibs"; then
-       gentop=$output_objdir/${outputname}x
-       func_append generated " $gentop"
-
-       func_extract_archives $gentop $addlibs
-       func_append oldobjs " $func_extract_archives_result"
-      fi
-
-      # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
-       cmds=$old_archive_from_new_cmds
-      else
-
-       # Add any objects from preloaded convenience libraries
-       if test -n "$dlprefiles"; then
-         gentop=$output_objdir/${outputname}x
-         func_append generated " $gentop"
-
-         func_extract_archives $gentop $dlprefiles
-         func_append oldobjs " $func_extract_archives_result"
-       fi
-
-       # POSIX demands no paths to be encoded in archives.  We have
-       # to avoid creating archives with duplicate basenames if we
-       # might have to extract them afterwards, e.g., when creating a
-       # static archive out of a convenience library, or when linking
-       # the entirety of a libtool archive into another (currently
-       # not supported by libtool).
-       if (for obj in $oldobjs
-           do
-             func_basename "$obj"
-             $ECHO "$func_basename_result"
-           done | sort | sort -uc >/dev/null 2>&1); then
-         :
-       else
-         echo "copying selected object files to avoid basename conflicts..."
-         gentop=$output_objdir/${outputname}x
-         func_append generated " $gentop"
-         func_mkdir_p "$gentop"
-         save_oldobjs=$oldobjs
-         oldobjs=
-         counter=1
-         for obj in $save_oldobjs
-         do
-           func_basename "$obj"
-           objbase=$func_basename_result
-           case " $oldobjs " in
-           " ") oldobjs=$obj ;;
-           *[\ /]"$objbase "*)
-             while :; do
-               # Make sure we don't pick an alternate name that also
-               # overlaps.
-               newobj=lt$counter-$objbase
-               func_arith $counter + 1
-               counter=$func_arith_result
-               case " $oldobjs " in
-               *[\ /]"$newobj "*) ;;
-               *) if test ! -f "$gentop/$newobj"; then break; fi ;;
-               esac
-             done
-             func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-             func_append oldobjs " $gentop/$newobj"
-             ;;
-           *) func_append oldobjs " $obj" ;;
-           esac
-         done
-       fi
-       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-       tool_oldlib=$func_to_tool_file_result
-       eval cmds=\"$old_archive_cmds\"
-
-       func_len " $cmds"
-       len=$func_len_result
-       if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-         cmds=$old_archive_cmds
-       elif test -n "$archiver_list_spec"; then
-         func_verbose "using command file archive linking..."
-         for obj in $oldobjs
-         do
-           func_to_tool_file "$obj"
-           $ECHO "$func_to_tool_file_result"
-         done > $output_objdir/$libname.libcmd
-         func_to_tool_file "$output_objdir/$libname.libcmd"
-         oldobjs=" $archiver_list_spec$func_to_tool_file_result"
-         cmds=$old_archive_cmds
-       else
-         # the command line is too long to link in one step, link in parts
-         func_verbose "using piecewise archive linking..."
-         save_RANLIB=$RANLIB
-         RANLIB=:
-         objlist=
-         concat_cmds=
-         save_oldobjs=$oldobjs
-         oldobjs=
-         # Is there a better way of finding the last object in the list?
-         for obj in $save_oldobjs
-         do
-           last_oldobj=$obj
-         done
-         eval test_cmds=\"$old_archive_cmds\"
-         func_len " $test_cmds"
-         len0=$func_len_result
-         len=$len0
-         for obj in $save_oldobjs
-         do
-           func_len " $obj"
-           func_arith $len + $func_len_result
-           len=$func_arith_result
-           func_append objlist " $obj"
-           if test "$len" -lt "$max_cmd_len"; then
-             :
-           else
-             # the above command should be used before it gets too long
-             oldobjs=$objlist
-             if test "$obj" = "$last_oldobj"; then
-               RANLIB=$save_RANLIB
-             fi
-             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-             eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
-             objlist=
-             len=$len0
-           fi
-         done
-         RANLIB=$save_RANLIB
-         oldobjs=$objlist
-         if test -z "$oldobjs"; then
-           eval cmds=\"\$concat_cmds\"
-         else
-           eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
-         fi
-       fi
-      fi
-      func_execute_cmds "$cmds" 'exit $?'
-    done
-
-    test -n "$generated" && \
-      func_show_eval "${RM}r$generated"
-
-    # Now create the libtool archive.
-    case $output in
-    *.la)
-      old_library=
-      test yes = "$build_old_libs" && old_library=$libname.$libext
-      func_verbose "creating $output"
-
-      # Preserve any variables that may affect compiler behavior
-      for var in $variables_saved_for_relink; do
-       if eval test -z \"\${$var+set}\"; then
-         relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-       elif eval var_value=\$$var; test -z "$var_value"; then
-         relink_command="$var=; export $var; $relink_command"
-       else
-         func_quote_arg pretty,unquoted "$var_value"
-         relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command"
-       fi
-      done
-      # Quote the link command for shipping.
-      func_quote eval cd "`pwd`"
-      relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      func_quote_arg pretty,unquoted "$relink_command"
-      relink_command=$func_quote_arg_unquoted_result
-      if test yes = "$hardcode_automatic"; then
-       relink_command=
-      fi
-
-      # Only create the output if not a dry run.
-      $opt_dry_run || {
-       for installed in no yes; do
-         if test yes = "$installed"; then
-           if test -z "$install_libdir"; then
-             break
-           fi
-           output=$output_objdir/${outputname}i
-           # Replace all uninstalled libtool libraries with the installed ones
-           newdependency_libs=
-           for deplib in $dependency_libs; do
-             case $deplib in
-             *.la)
-               func_basename "$deplib"
-               name=$func_basename_result
-               func_resolve_sysroot "$deplib"
-               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
-               test -z "$libdir" && \
-                 func_fatal_error "'$deplib' is not a valid libtool archive"
-               func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
-               ;;
-             -L*)
-               func_stripname -L '' "$deplib"
-               func_replace_sysroot "$func_stripname_result"
-               func_append newdependency_libs " -L$func_replace_sysroot_result"
-               ;;
-             -R*)
-               func_stripname -R '' "$deplib"
-               func_replace_sysroot "$func_stripname_result"
-               func_append newdependency_libs " -R$func_replace_sysroot_result"
-               ;;
-             *) func_append newdependency_libs " $deplib" ;;
-             esac
-           done
-           dependency_libs=$newdependency_libs
-           newdlfiles=
-
-           for lib in $dlfiles; do
-             case $lib in
-             *.la)
-               func_basename "$lib"
-               name=$func_basename_result
-               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-               test -z "$libdir" && \
-                 func_fatal_error "'$lib' is not a valid libtool archive"
-               func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
-               ;;
-             *) func_append newdlfiles " $lib" ;;
-             esac
-           done
-           dlfiles=$newdlfiles
-           newdlprefiles=
-           for lib in $dlprefiles; do
-             case $lib in
-             *.la)
-               # Only pass preopened files to the pseudo-archive (for
-               # eventual linking with the app. that links it) if we
-               # didn't already link the preopened objects directly into
-               # the library:
-               func_basename "$lib"
-               name=$func_basename_result
-               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-               test -z "$libdir" && \
-                 func_fatal_error "'$lib' is not a valid libtool archive"
-               func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
-               ;;
-             esac
-           done
-           dlprefiles=$newdlprefiles
-         else
-           newdlfiles=
-           for lib in $dlfiles; do
-             case $lib in
-               [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
-               *) abs=`pwd`"/$lib" ;;
-             esac
-             func_append newdlfiles " $abs"
-           done
-           dlfiles=$newdlfiles
-           newdlprefiles=
-           for lib in $dlprefiles; do
-             case $lib in
-               [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
-               *) abs=`pwd`"/$lib" ;;
-             esac
-             func_append newdlprefiles " $abs"
-           done
-           dlprefiles=$newdlprefiles
-         fi
-         $RM $output
-         # place dlname in correct position for cygwin
-         # In fact, it would be nice if we could use this code for all target
-         # systems that can't hard-code library paths into their executables
-         # and that have no shared library path variable independent of PATH,
-         # but it turns out we can't easily determine that from inspecting
-         # libtool variables, so we have to hard-code the OSs to which it
-         # applies here; at the moment, that means platforms that use the PE
-         # object format with DLL files.  See the long comment at the top of
-         # tests/bindir.at for full details.
-         tdlname=$dlname
-         case $host,$output,$installed,$module,$dlname in
-           *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
-             # If a -bindir argument was supplied, place the dll there.
-             if test -n "$bindir"; then
-               func_relative_path "$install_libdir" "$bindir"
-               tdlname=$func_relative_path_result/$dlname
-             else
-               # Otherwise fall back on heuristic.
-               tdlname=../bin/$dlname
-             fi
-             ;;
-         esac
-         $ECHO > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Linker flags that cannot go in dependency_libs.
-inherited_linker_flags='$new_inherited_linker_flags'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Names of additional weak libraries provided by this library
-weak_library_names='$weak_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=$module
-
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
-         if test no,yes = "$installed,$need_relink"; then
-           $ECHO >> $output "\
-relink_command=\"$relink_command\""
-         fi
-       done
-      }
-
-      # Do a symbolic link so that the libtool archive can be found in
-      # LD_LIBRARY_PATH before the program is installed.
-      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
-      ;;
-    esac
-    exit $EXIT_SUCCESS
-}
-
-if test link = "$opt_mode" || test relink = "$opt_mode"; then
-  func_mode_link ${1+"$@"}
-fi
-
-
-# func_mode_uninstall arg...
-func_mode_uninstall ()
-{
-    $debug_cmd
-
-    RM=$nonopt
-    files=
-    rmforce=false
-    exit_status=0
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic=$magic
-
-    for arg
-    do
-      case $arg in
-      -f) func_append RM " $arg"; rmforce=: ;;
-      -*) func_append RM " $arg" ;;
-      *) func_append files " $arg" ;;
-      esac
-    done
-
-    test -z "$RM" && \
-      func_fatal_help "you must specify an RM program"
-
-    rmdirs=
-
-    for file in $files; do
-      func_dirname "$file" "" "."
-      dir=$func_dirname_result
-      if test . = "$dir"; then
-       odir=$objdir
-      else
-       odir=$dir/$objdir
-      fi
-      func_basename "$file"
-      name=$func_basename_result
-      test uninstall = "$opt_mode" && odir=$dir
-
-      # Remember odir for removal later, being careful to avoid duplicates
-      if test clean = "$opt_mode"; then
-       case " $rmdirs " in
-         *" $odir "*) ;;
-         *) func_append rmdirs " $odir" ;;
-       esac
-      fi
-
-      # Don't error if the file doesn't exist and rm -f was used.
-      if { test -L "$file"; } >/dev/null 2>&1 ||
-        { test -h "$file"; } >/dev/null 2>&1 ||
-        test -f "$file"; then
-       :
-      elif test -d "$file"; then
-       exit_status=1
-       continue
-      elif $rmforce; then
-       continue
-      fi
-
-      rmfiles=$file
-
-      case $name in
-      *.la)
-       # Possibly a libtool archive, so verify it.
-       if func_lalib_p "$file"; then
-         func_source $dir/$name
-
-         # Delete the libtool libraries and symlinks.
-         for n in $library_names; do
-           func_append rmfiles " $odir/$n"
-         done
-         test -n "$old_library" && func_append rmfiles " $odir/$old_library"
-
-         case $opt_mode in
-         clean)
-           case " $library_names " in
-           *" $dlname "*) ;;
-           *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
-           esac
-           test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
-           ;;
-         uninstall)
-           if test -n "$library_names"; then
-             # Do each command in the postuninstall commands.
-             func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
-           fi
-
-           if test -n "$old_library"; then
-             # Do each command in the old_postuninstall commands.
-             func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
-           fi
-           # FIXME: should reinstall the best remaining shared library.
-           ;;
-         esac
-       fi
-       ;;
-
-      *.lo)
-       # Possibly a libtool object, so verify it.
-       if func_lalib_p "$file"; then
-
-         # Read the .lo file
-         func_source $dir/$name
-
-         # Add PIC object to the list of files to remove.
-         if test -n "$pic_object" && test none != "$pic_object"; then
-           func_append rmfiles " $dir/$pic_object"
-         fi
-
-         # Add non-PIC object to the list of files to remove.
-         if test -n "$non_pic_object" && test none != "$non_pic_object"; then
-           func_append rmfiles " $dir/$non_pic_object"
-         fi
-       fi
-       ;;
-
-      *)
-       if test clean = "$opt_mode"; then
-         noexename=$name
-         case $file in
-         *.exe)
-           func_stripname '' '.exe' "$file"
-           file=$func_stripname_result
-           func_stripname '' '.exe' "$name"
-           noexename=$func_stripname_result
-           # $file with .exe has already been added to rmfiles,
-           # add $file without .exe
-           func_append rmfiles " $file"
-           ;;
-         esac
-         # Do a test to see if this is a libtool program.
-         if func_ltwrapper_p "$file"; then
-           if func_ltwrapper_executable_p "$file"; then
-             func_ltwrapper_scriptname "$file"
-             relink_command=
-             func_source $func_ltwrapper_scriptname_result
-             func_append rmfiles " $func_ltwrapper_scriptname_result"
-           else
-             relink_command=
-             func_source $dir/$noexename
-           fi
-
-           # note $name still contains .exe if it was in $file originally
-           # as does the version of $file that was added into $rmfiles
-           func_append rmfiles " $odir/$name $odir/${name}S.$objext"
-           if test yes = "$fast_install" && test -n "$relink_command"; then
-             func_append rmfiles " $odir/lt-$name"
-           fi
-           if test "X$noexename" != "X$name"; then
-             func_append rmfiles " $odir/lt-$noexename.c"
-           fi
-         fi
-       fi
-       ;;
-      esac
-      func_show_eval "$RM $rmfiles" 'exit_status=1'
-    done
-
-    # Try to remove the $objdir's in the directories where we deleted files
-    for dir in $rmdirs; do
-      if test -d "$dir"; then
-       func_show_eval "rmdir $dir >/dev/null 2>&1"
-      fi
-    done
-
-    exit $exit_status
-}
-
-if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
-  func_mode_uninstall ${1+"$@"}
-fi
-
-test -z "$opt_mode" && {
-  help=$generic_help
-  func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode '$opt_mode'"
-
-if test -n "$exec_cmd"; then
-  eval exec "$exec_cmd"
-  exit $EXIT_FAILURE
-fi
-
-exit $exit_status
-
-
-# The TAGs below are defined such that we never get into a situation
-# where we disable both kinds of libraries.  Given conflicting
-# choices, we go for a static library, that is the most portable,
-# since we can't tell whether shared libraries were disabled because
-# the user asked for that or because the platform doesn't support
-# them.  This is particularly important on AIX, because we don't
-# support having both static and shared libraries enabled at the same
-# time on that platform, so we default to a shared-only configuration.
-# If a disable-shared tag is given, we'll fallback to a static-only
-# configuration.  But we'll never go from static-only to shared-only.
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
-# ### END LIBTOOL TAG CONFIG: disable-shared
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-# ### END LIBTOOL TAG CONFIG: disable-static
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
diff --git a/polly/lib/External/isl/interface/missing b/polly/lib/External/isl/interface/missing
deleted file mode 100755 (executable)
index 8d0eaad..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-#! /bin/sh
-# Common wrapper for a few potentially missing GNU programs.
-
-scriptversion=2018-03-07.03; # UTC
-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
-# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try '$0 --help' for more information"
-  exit 1
-fi
-
-case $1 in
-
-  --is-lightweight)
-    # Used by our autoconf macros to check whether the available missing
-    # script is modern enough.
-    exit 0
-    ;;
-
-  --run)
-    # Back-compat with the calling convention used by older automake.
-    shift
-    ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
-to PROGRAM being missing or too old.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-
-Supported PROGRAM values:
-  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
-  bison     yacc      flex         lex       help2man
-
-Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
-'g' are ignored when checking the name.
-
-Send bug reports to <bug-automake@gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: unknown '$1' option"
-    echo 1>&2 "Try '$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# Run the given program, remember its exit status.
-"$@"; st=$?
-
-# If it succeeded, we are done.
-test $st -eq 0 && exit 0
-
-# Also exit now if we it failed (or wasn't found), and '--version' was
-# passed; such an option is passed most likely to detect whether the
-# program is present and works.
-case $2 in --version|--help) exit $st;; esac
-
-# Exit code 63 means version mismatch.  This often happens when the user
-# tries to use an ancient version of a tool on a file that requires a
-# minimum version.
-if test $st -eq 63; then
-  msg="probably too old"
-elif test $st -eq 127; then
-  # Program was missing.
-  msg="missing on your system"
-else
-  # Program was found and executed, but failed.  Give up.
-  exit $st
-fi
-
-perl_URL=https://www.perl.org/
-flex_URL=https://github.com/westes/flex
-gnu_software_URL=https://www.gnu.org/software
-
-program_details ()
-{
-  case $1 in
-    aclocal|automake)
-      echo "The '$1' program is part of the GNU Automake package:"
-      echo "<$gnu_software_URL/automake>"
-      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/autoconf>"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-    autoconf|autom4te|autoheader)
-      echo "The '$1' program is part of the GNU Autoconf package:"
-      echo "<$gnu_software_URL/autoconf/>"
-      echo "It also requires GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-  esac
-}
-
-give_advice ()
-{
-  # Normalize program name to check for.
-  normalized_program=`echo "$1" | sed '
-    s/^gnu-//; t
-    s/^gnu//; t
-    s/^g//; t'`
-
-  printf '%s\n' "'$1' is $msg."
-
-  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
-  case $normalized_program in
-    autoconf*)
-      echo "You should only need it if you modified 'configure.ac',"
-      echo "or m4 files included by it."
-      program_details 'autoconf'
-      ;;
-    autoheader*)
-      echo "You should only need it if you modified 'acconfig.h' or"
-      echo "$configure_deps."
-      program_details 'autoheader'
-      ;;
-    automake*)
-      echo "You should only need it if you modified 'Makefile.am' or"
-      echo "$configure_deps."
-      program_details 'automake'
-      ;;
-    aclocal*)
-      echo "You should only need it if you modified 'acinclude.m4' or"
-      echo "$configure_deps."
-      program_details 'aclocal'
-      ;;
-   autom4te*)
-      echo "You might have modified some maintainer files that require"
-      echo "the 'autom4te' program to be rebuilt."
-      program_details 'autom4te'
-      ;;
-    bison*|yacc*)
-      echo "You should only need it if you modified a '.y' file."
-      echo "You may want to install the GNU Bison package:"
-      echo "<$gnu_software_URL/bison/>"
-      ;;
-    lex*|flex*)
-      echo "You should only need it if you modified a '.l' file."
-      echo "You may want to install the Fast Lexical Analyzer package:"
-      echo "<$flex_URL>"
-      ;;
-    help2man*)
-      echo "You should only need it if you modified a dependency" \
-           "of a man page."
-      echo "You may want to install the GNU Help2man package:"
-      echo "<$gnu_software_URL/help2man/>"
-    ;;
-    makeinfo*)
-      echo "You should only need it if you modified a '.texi' file, or"
-      echo "any other file indirectly affecting the aspect of the manual."
-      echo "You might want to install the Texinfo package:"
-      echo "<$gnu_software_URL/texinfo/>"
-      echo "The spurious makeinfo call might also be the consequence of"
-      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
-      echo "want to install GNU make:"
-      echo "<$gnu_software_URL/make/>"
-      ;;
-    *)
-      echo "You might have modified some files without having the proper"
-      echo "tools for further handling them.  Check the 'README' file, it"
-      echo "often tells you about the needed prerequisites for installing"
-      echo "this package.  You may also peek at any GNU archive site, in"
-      echo "case some other package contains this missing '$1' program."
-      ;;
-  esac
-}
-
-give_advice "$1" | sed -e '1s/^/WARNING: /' \
-                       -e '2,$s/^/         /' >&2
-
-# Propagate the correct exit status (expected to be 127 for a program
-# not found, 63 for a program that failed due to version mismatch).
-exit $st
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/isl/isl_config.h.in b/polly/lib/External/isl/isl_config.h.in
deleted file mode 100644 (file)
index 889ce31..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/* isl_config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* most gcc compilers know a function __attribute__((__warn_unused_result__))
-   */
-#undef GCC_WARN_UNUSED_RESULT
-
-/* define if the compiler supports basic C++11 syntax */
-#undef HAVE_CXX11
-
-/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
-#undef HAVE_DECL_FFS
-
-/* Define to 1 if you have the declaration of `mp_get_memory_functions', and
-   to 0 if you don't. */
-#undef HAVE_DECL_MP_GET_MEMORY_FUNCTIONS
-
-/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
-   don't. */
-#undef HAVE_DECL_SNPRINTF
-
-/* Define to 1 if you have the declaration of `strcasecmp', and to 0 if you
-   don't. */
-#undef HAVE_DECL_STRCASECMP
-
-/* Define to 1 if you have the declaration of `strncasecmp', and to 0 if you
-   don't. */
-#undef HAVE_DECL_STRNCASECMP
-
-/* Define to 1 if you have the declaration of `_BitScanForward', and to 0 if
-   you don't. */
-#undef HAVE_DECL__BITSCANFORWARD
-
-/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
-   don't. */
-#undef HAVE_DECL__SNPRINTF
-
-/* Define to 1 if you have the declaration of `_stricmp', and to 0 if you
-   don't. */
-#undef HAVE_DECL__STRICMP
-
-/* Define to 1 if you have the declaration of `_strnicmp', and to 0 if you
-   don't. */
-#undef HAVE_DECL__STRNICMP
-
-/* Define to 1 if you have the declaration of `__builtin_ffs', and to 0 if you
-   don't. */
-#undef HAVE_DECL___BUILTIN_FFS
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `gmp' library (-lgmp). */
-#undef HAVE_LIBGMP
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* define if your compiler has __attribute__ */
-#undef HAVE___ATTRIBUTE__
-
-/* Define to the sub-directory where libtool stores uninstalled libraries. */
-#undef LT_OBJDIR
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* The size of `char', as computed by sizeof. */
-#undef SIZEOF_CHAR
-
-/* The size of `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
-/* The size of `short', as computed by sizeof. */
-#undef SIZEOF_SHORT
-
-/* The size of `void*', as computed by sizeof. */
-#undef SIZEOF_VOIDP
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* use gmp to implement isl_int */
-#undef USE_GMP_FOR_MP
-
-/* use imath to implement isl_int */
-#undef USE_IMATH_FOR_MP
-
-/* Use small integer optimization */
-#undef USE_SMALL_INT_OPT
-
-/* Version number of package */
-#undef VERSION
-
-#include <isl_config_post.h>
diff --git a/polly/lib/External/isl/ltmain.sh b/polly/lib/External/isl/ltmain.sh
deleted file mode 100644 (file)
index 48cea9b..0000000
+++ /dev/null
@@ -1,11369 +0,0 @@
-#! /bin/sh
-## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
-##               by inline-source v2018-07-24.06
-
-# libtool (GNU libtool) 2.4.6.42-b88ce-dirty
-# Provide generalized library-building support services.
-# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-
-PROGRAM=libtool
-PACKAGE=libtool
-VERSION=2.4.6.42-b88ce-dirty
-package_revision=2.4.6.42
-
-
-## ------ ##
-## Usage. ##
-## ------ ##
-
-# Run './libtool --help' for help with using this script from the
-# command line.
-
-
-## ------------------------------- ##
-## User overridable command paths. ##
-## ------------------------------- ##
-
-# After configure completes, it has a better idea of some of the
-# shell tools we need than the defaults used by the functions shared
-# with bootstrap, so set those here where they can still be over-
-# ridden by the user, but otherwise take precedence.
-
-: ${AUTOCONF="autoconf"}
-: ${AUTOMAKE="automake"}
-
-
-## -------------------------- ##
-## Source external libraries. ##
-## -------------------------- ##
-
-# Much of our low-level functionality needs to be sourced from external
-# libraries, which are installed to $pkgauxdir.
-
-# Set a version string for this script.
-scriptversion=2018-07-24.06; # UTC
-
-# General shell script boiler plate, and helper functions.
-# Written by Gary V. Vaughan, 2004
-
-# This is free software.  There is NO warranty; not even for
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#
-# Copyright (C) 2004-2018 Bootstrap Authors
-#
-# This file is dual licensed under the terms of the MIT license
-# <https://opensource.org/license/MIT>, and GPL version 3 or later
-# <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of
-# these licenses when using or redistributing this software or any of
-# the files within it.  See the URLs above, or the file `LICENSE`
-# included in the Bootstrap distribution for the full license texts.
-
-# Please report bugs or propose patches to:
-# <https://github.com/gnulib-modules/bootstrap/issues>
-
-
-## ------ ##
-## Usage. ##
-## ------ ##
-
-# Evaluate this file near the top of your script to gain access to
-# the functions and variables defined here:
-#
-#   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
-#
-# If you need to override any of the default environment variable
-# settings, do that before evaluating this file.
-
-
-## -------------------- ##
-## Shell normalisation. ##
-## -------------------- ##
-
-# Some shells need a little help to be as Bourne compatible as possible.
-# Before doing anything else, make sure all that help has been provided!
-
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
-fi
-
-# NLS nuisances: We save the old values in case they are required later.
-_G_user_locale=
-_G_safe_locale=
-for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
-  eval "if test set = \"\${$_G_var+set}\"; then
-          save_$_G_var=\$$_G_var
-          $_G_var=C
-         export $_G_var
-         _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
-         _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
-       fi"
-done
-
-# Make sure IFS has a sensible default
-sp=' '
-nl='
-'
-IFS="$sp       $nl"
-
-# There are apparently some retarded systems that use ';' as a PATH separator!
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# func_unset VAR
-# --------------
-# Portably unset VAR.
-# In some shells, an 'unset VAR' statement leaves a non-zero return
-# status if VAR is already unset, which might be problematic if the
-# statement is used at the end of a function (thus poisoning its return
-# value) or when 'set -e' is active (causing even a spurious abort of
-# the script in this case).
-func_unset ()
-{
-    { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; }
-}
-
-
-# Make sure CDPATH doesn't cause `cd` commands to output the target dir.
-func_unset CDPATH
-
-# Make sure ${,E,F}GREP behave sanely.
-func_unset GREP_OPTIONS
-
-
-## ------------------------- ##
-## Locate command utilities. ##
-## ------------------------- ##
-
-
-# func_executable_p FILE
-# ----------------------
-# Check that FILE is an executable regular file.
-func_executable_p ()
-{
-    test -f "$1" && test -x "$1"
-}
-
-
-# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
-# --------------------------------------------
-# Search for either a program that responds to --version with output
-# containing "GNU", or else returned by CHECK_FUNC otherwise, by
-# trying all the directories in PATH with each of the elements of
-# PROGS_LIST.
-#
-# CHECK_FUNC should accept the path to a candidate program, and
-# set $func_check_prog_result if it truncates its output less than
-# $_G_path_prog_max characters.
-func_path_progs ()
-{
-    _G_progs_list=$1
-    _G_check_func=$2
-    _G_PATH=${3-"$PATH"}
-
-    _G_path_prog_max=0
-    _G_path_prog_found=false
-    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
-    for _G_dir in $_G_PATH; do
-      IFS=$_G_save_IFS
-      test -z "$_G_dir" && _G_dir=.
-      for _G_prog_name in $_G_progs_list; do
-        for _exeext in '' .EXE; do
-          _G_path_prog=$_G_dir/$_G_prog_name$_exeext
-          func_executable_p "$_G_path_prog" || continue
-          case `"$_G_path_prog" --version 2>&1` in
-            *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
-            *)     $_G_check_func $_G_path_prog
-                  func_path_progs_result=$func_check_prog_result
-                  ;;
-          esac
-          $_G_path_prog_found && break 3
-        done
-      done
-    done
-    IFS=$_G_save_IFS
-    test -z "$func_path_progs_result" && {
-      echo "no acceptable sed could be found in \$PATH" >&2
-      exit 1
-    }
-}
-
-
-# We want to be able to use the functions in this file before configure
-# has figured out where the best binaries are kept, which means we have
-# to search for them ourselves - except when the results are already set
-# where we skip the searches.
-
-# Unless the user overrides by setting SED, search the path for either GNU
-# sed, or the sed that truncates its output the least.
-test -z "$SED" && {
-  _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-  for _G_i in 1 2 3 4 5 6 7; do
-    _G_sed_script=$_G_sed_script$nl$_G_sed_script
-  done
-  echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
-  _G_sed_script=
-
-  func_check_prog_sed ()
-  {
-    _G_path_prog=$1
-
-    _G_count=0
-    printf 0123456789 >conftest.in
-    while :
-    do
-      cat conftest.in conftest.in >conftest.tmp
-      mv conftest.tmp conftest.in
-      cp conftest.in conftest.nl
-      echo '' >> conftest.nl
-      "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
-      diff conftest.out conftest.nl >/dev/null 2>&1 || break
-      _G_count=`expr $_G_count + 1`
-      if test "$_G_count" -gt "$_G_path_prog_max"; then
-        # Best one so far, save it but keep looking for a better one
-        func_check_prog_result=$_G_path_prog
-        _G_path_prog_max=$_G_count
-      fi
-      # 10*(2^10) chars as input seems more than enough
-      test 10 -lt "$_G_count" && break
-    done
-    rm -f conftest.in conftest.tmp conftest.nl conftest.out
-  }
-
-  func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin"
-  rm -f conftest.sed
-  SED=$func_path_progs_result
-}
-
-
-# Unless the user overrides by setting GREP, search the path for either GNU
-# grep, or the grep that truncates its output the least.
-test -z "$GREP" && {
-  func_check_prog_grep ()
-  {
-    _G_path_prog=$1
-
-    _G_count=0
-    _G_path_prog_max=0
-    printf 0123456789 >conftest.in
-    while :
-    do
-      cat conftest.in conftest.in >conftest.tmp
-      mv conftest.tmp conftest.in
-      cp conftest.in conftest.nl
-      echo 'GREP' >> conftest.nl
-      "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
-      diff conftest.out conftest.nl >/dev/null 2>&1 || break
-      _G_count=`expr $_G_count + 1`
-      if test "$_G_count" -gt "$_G_path_prog_max"; then
-        # Best one so far, save it but keep looking for a better one
-        func_check_prog_result=$_G_path_prog
-        _G_path_prog_max=$_G_count
-      fi
-      # 10*(2^10) chars as input seems more than enough
-      test 10 -lt "$_G_count" && break
-    done
-    rm -f conftest.in conftest.tmp conftest.nl conftest.out
-  }
-
-  func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin"
-  GREP=$func_path_progs_result
-}
-
-
-## ------------------------------- ##
-## User overridable command paths. ##
-## ------------------------------- ##
-
-# All uppercase variable names are used for environment variables.  These
-# variables can be overridden by the user before calling a script that
-# uses them if a suitable command of that name is not already available
-# in the command search PATH.
-
-: ${CP="cp -f"}
-: ${ECHO="printf %s\n"}
-: ${EGREP="$GREP -E"}
-: ${FGREP="$GREP -F"}
-: ${LN_S="ln -s"}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-
-
-## -------------------- ##
-## Useful sed snippets. ##
-## -------------------- ##
-
-sed_dirname='s|/[^/]*$||'
-sed_basename='s|^.*/||'
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
-
-# Same as above, but do not quote variable references.
-sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
-
-# Sed substitution that converts a w32 file name or path
-# that contains forward slashes, into one that contains
-# (escaped) backslashes.  A very naive implementation.
-sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-'\' parameter expansions in output of sed_double_quote_subst that
-# were '\'-ed in input to the same.  If an odd number of '\' preceded a
-# '$' in input to sed_double_quote_subst, that '$' was protected from
-# expansion.  Since each input '\' is now two '\'s, look for any number
-# of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
-_G_bs='\\'
-_G_bs2='\\\\'
-_G_bs4='\\\\\\\\'
-_G_dollar='\$'
-sed_double_backslash="\
-  s/$_G_bs4/&\\
-/g
-  s/^$_G_bs2$_G_dollar/$_G_bs&/
-  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
-  s/\n//g"
-
-
-## ----------------- ##
-## Global variables. ##
-## ----------------- ##
-
-# Except for the global variables explicitly listed below, the following
-# functions in the '^func_' namespace, and the '^require_' namespace
-# variables initialised in the 'Resource management' section, sourcing
-# this file will not pollute your global namespace with anything
-# else. There's no portable way to scope variables in Bourne shell
-# though, so actually running these functions will sometimes place
-# results into a variable named after the function, and often use
-# temporary variables in the '^_G_' namespace. If you are careful to
-# avoid using those namespaces casually in your sourcing script, things
-# should continue to work as you expect. And, of course, you can freely
-# overwrite any of the functions or variables defined here before
-# calling anything to customize them.
-
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77     # $? = 77 is used to indicate a skipped test to automake.
-
-# Allow overriding, eg assuming that you follow the convention of
-# putting '$debug_cmd' at the start of all your functions, you can get
-# bash to show function call trace with:
-#
-#    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
-debug_cmd=${debug_cmd-":"}
-exit_cmd=:
-
-# By convention, finish your script with:
-#
-#    exit $exit_status
-#
-# so that you can set exit_status to non-zero if you want to indicate
-# something went wrong during execution without actually bailing out at
-# the point of failure.
-exit_status=$EXIT_SUCCESS
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath=$0
-
-# The name of this program.
-progname=`$ECHO "$progpath" |$SED "$sed_basename"`
-
-# Make sure we have an absolute progpath for reexecution:
-case $progpath in
-  [\\/]*|[A-Za-z]:\\*) ;;
-  *[\\/]*)
-     progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
-     progdir=`cd "$progdir" && pwd`
-     progpath=$progdir/$progname
-     ;;
-  *)
-     _G_IFS=$IFS
-     IFS=${PATH_SEPARATOR-:}
-     for progdir in $PATH; do
-       IFS=$_G_IFS
-       test -x "$progdir/$progname" && break
-     done
-     IFS=$_G_IFS
-     test -n "$progdir" || progdir=`pwd`
-     progpath=$progdir/$progname
-     ;;
-esac
-
-
-## ----------------- ##
-## Standard options. ##
-## ----------------- ##
-
-# The following options affect the operation of the functions defined
-# below, and should be set appropriately depending on run-time para-
-# meters passed on the command line.
-
-opt_dry_run=false
-opt_quiet=false
-opt_verbose=false
-
-# Categories 'all' and 'none' are always available.  Append any others
-# you will pass as the first argument to func_warning from your own
-# code.
-warning_categories=
-
-# By default, display warnings according to 'opt_warning_types'.  Set
-# 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
-# treat the next displayed warning as a fatal error.
-warning_func=func_warn_and_continue
-
-# Set to 'all' to display all warnings, 'none' to suppress all
-# warnings, or a space delimited list of some subset of
-# 'warning_categories' to display only the listed warnings.
-opt_warning_types=all
-
-
-## -------------------- ##
-## Resource management. ##
-## -------------------- ##
-
-# This section contains definitions for functions that each ensure a
-# particular resource (a file, or a non-empty configuration variable for
-# example) is available, and if appropriate to extract default values
-# from pertinent package files. Call them using their associated
-# 'require_*' variable to ensure that they are executed, at most, once.
-#
-# It's entirely deliberate that calling these functions can set
-# variables that don't obey the namespace limitations obeyed by the rest
-# of this file, in order that that they be as useful as possible to
-# callers.
-
-
-# require_term_colors
-# -------------------
-# Allow display of bold text on terminals that support it.
-require_term_colors=func_require_term_colors
-func_require_term_colors ()
-{
-    $debug_cmd
-
-    test -t 1 && {
-      # COLORTERM and USE_ANSI_COLORS environment variables take
-      # precedence, because most terminfo databases neglect to describe
-      # whether color sequences are supported.
-      test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
-
-      if test 1 = "$USE_ANSI_COLORS"; then
-        # Standard ANSI escape sequences
-        tc_reset='\e[0m'
-        tc_bold='\e[1m';   tc_standout='\e[7m'
-        tc_red='\e[31m';   tc_green='\e[32m'
-        tc_blue='\e[34m';  tc_cyan='\e[36m'
-      else
-        # Otherwise trust the terminfo database after all.
-        test -n "`tput sgr0 2>/dev/null`" && {
-          tc_reset=`tput sgr0`
-          test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
-          tc_standout=$tc_bold
-          test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
-          test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
-          test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
-          test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
-          test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
-        }
-      fi
-    }
-
-    require_term_colors=:
-}
-
-
-## ----------------- ##
-## Function library. ##
-## ----------------- ##
-
-# This section contains a variety of useful functions to call in your
-# scripts. Take note of the portable wrappers for features provided by
-# some modern shells, which will fall back to slower equivalents on
-# less featureful shells.
-
-
-# func_append VAR VALUE
-# ---------------------
-# Append VALUE onto the existing contents of VAR.
-
-  # We should try to minimise forks, especially on Windows where they are
-  # unreasonably slow, so skip the feature probes when bash or zsh are
-  # being used:
-  if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
-    : ${_G_HAVE_ARITH_OP="yes"}
-    : ${_G_HAVE_XSI_OPS="yes"}
-    # The += operator was introduced in bash 3.1
-    case $BASH_VERSION in
-      [12].* | 3.0 | 3.0*) ;;
-      *)
-        : ${_G_HAVE_PLUSEQ_OP="yes"}
-        ;;
-    esac
-  fi
-
-  # _G_HAVE_PLUSEQ_OP
-  # Can be empty, in which case the shell is probed, "yes" if += is
-  # useable or anything else if it does not work.
-  test -z "$_G_HAVE_PLUSEQ_OP" \
-    && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
-    && _G_HAVE_PLUSEQ_OP=yes
-
-if test yes = "$_G_HAVE_PLUSEQ_OP"
-then
-  # This is an XSI compatible shell, allowing a faster implementation...
-  eval 'func_append ()
-  {
-    $debug_cmd
-
-    eval "$1+=\$2"
-  }'
-else
-  # ...otherwise fall back to using expr, which is often a shell builtin.
-  func_append ()
-  {
-    $debug_cmd
-
-    eval "$1=\$$1\$2"
-  }
-fi
-
-
-# func_append_quoted VAR VALUE
-# ----------------------------
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-if test yes = "$_G_HAVE_PLUSEQ_OP"; then
-  eval 'func_append_quoted ()
-  {
-    $debug_cmd
-
-    func_quote_arg pretty "$2"
-    eval "$1+=\\ \$func_quote_arg_result"
-  }'
-else
-  func_append_quoted ()
-  {
-    $debug_cmd
-
-    func_quote_arg pretty "$2"
-    eval "$1=\$$1\\ \$func_quote_arg_result"
-  }
-fi
-
-
-# func_append_uniq VAR VALUE
-# --------------------------
-# Append unique VALUE onto the existing contents of VAR, assuming
-# entries are delimited by the first character of VALUE.  For example:
-#
-#   func_append_uniq options " --another-option option-argument"
-#
-# will only append to $options if " --another-option option-argument "
-# is not already present somewhere in $options already (note spaces at
-# each end implied by leading space in second argument).
-func_append_uniq ()
-{
-    $debug_cmd
-
-    eval _G_current_value='`$ECHO $'$1'`'
-    _G_delim=`expr "$2" : '\(.\)'`
-
-    case $_G_delim$_G_current_value$_G_delim in
-      *"$2$_G_delim"*) ;;
-      *) func_append "$@" ;;
-    esac
-}
-
-
-# func_arith TERM...
-# ------------------
-# Set func_arith_result to the result of evaluating TERMs.
-  test -z "$_G_HAVE_ARITH_OP" \
-    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
-    && _G_HAVE_ARITH_OP=yes
-
-if test yes = "$_G_HAVE_ARITH_OP"; then
-  eval 'func_arith ()
-  {
-    $debug_cmd
-
-    func_arith_result=$(( $* ))
-  }'
-else
-  func_arith ()
-  {
-    $debug_cmd
-
-    func_arith_result=`expr "$@"`
-  }
-fi
-
-
-# func_basename FILE
-# ------------------
-# Set func_basename_result to FILE with everything up to and including
-# the last / stripped.
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  # If this shell supports suffix pattern removal, then use it to avoid
-  # forking. Hide the definitions single quotes in case the shell chokes
-  # on unsupported syntax...
-  _b='func_basename_result=${1##*/}'
-  _d='case $1 in
-        */*) func_dirname_result=${1%/*}$2 ;;
-        *  ) func_dirname_result=$3        ;;
-      esac'
-
-else
-  # ...otherwise fall back to using sed.
-  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
-  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
-      if test "X$func_dirname_result" = "X$1"; then
-        func_dirname_result=$3
-      else
-        func_append func_dirname_result "$2"
-      fi'
-fi
-
-eval 'func_basename ()
-{
-    $debug_cmd
-
-    '"$_b"'
-}'
-
-
-# func_dirname FILE APPEND NONDIR_REPLACEMENT
-# -------------------------------------------
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-eval 'func_dirname ()
-{
-    $debug_cmd
-
-    '"$_d"'
-}'
-
-
-# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
-# --------------------------------------------------------
-# Perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# For efficiency, we do not delegate to the functions above but instead
-# duplicate the functionality here.
-eval 'func_dirname_and_basename ()
-{
-    $debug_cmd
-
-    '"$_b"'
-    '"$_d"'
-}'
-
-
-# func_echo ARG...
-# ----------------
-# Echo program name prefixed message.
-func_echo ()
-{
-    $debug_cmd
-
-    _G_message=$*
-
-    func_echo_IFS=$IFS
-    IFS=$nl
-    for _G_line in $_G_message; do
-      IFS=$func_echo_IFS
-      $ECHO "$progname: $_G_line"
-    done
-    IFS=$func_echo_IFS
-}
-
-
-# func_echo_all ARG...
-# --------------------
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*"
-}
-
-
-# func_echo_infix_1 INFIX ARG...
-# ------------------------------
-# Echo program name, followed by INFIX on the first line, with any
-# additional lines not showing INFIX.
-func_echo_infix_1 ()
-{
-    $debug_cmd
-
-    $require_term_colors
-
-    _G_infix=$1; shift
-    _G_indent=$_G_infix
-    _G_prefix="$progname: $_G_infix: "
-    _G_message=$*
-
-    # Strip color escape sequences before counting printable length
-    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
-    do
-      test -n "$_G_tc" && {
-        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
-        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
-      }
-    done
-    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
-
-    func_echo_infix_1_IFS=$IFS
-    IFS=$nl
-    for _G_line in $_G_message; do
-      IFS=$func_echo_infix_1_IFS
-      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
-      _G_prefix=$_G_indent
-    done
-    IFS=$func_echo_infix_1_IFS
-}
-
-
-# func_error ARG...
-# -----------------
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $debug_cmd
-
-    $require_term_colors
-
-    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
-}
-
-
-# func_fatal_error ARG...
-# -----------------------
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    $debug_cmd
-
-    func_error "$*"
-    exit $EXIT_FAILURE
-}
-
-
-# func_grep EXPRESSION FILENAME
-# -----------------------------
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
-    $debug_cmd
-
-    $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_len STRING
-# ---------------
-# Set func_len_result to the length of STRING. STRING may not
-# start with a hyphen.
-  test -z "$_G_HAVE_XSI_OPS" \
-    && (eval 'x=a/b/c;
-      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
-    && _G_HAVE_XSI_OPS=yes
-
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  eval 'func_len ()
-  {
-    $debug_cmd
-
-    func_len_result=${#1}
-  }'
-else
-  func_len ()
-  {
-    $debug_cmd
-
-    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
-  }
-fi
-
-
-# func_mkdir_p DIRECTORY-PATH
-# ---------------------------
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
-    $debug_cmd
-
-    _G_directory_path=$1
-    _G_dir_list=
-
-    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
-
-      # Protect directory names starting with '-'
-      case $_G_directory_path in
-        -*) _G_directory_path=./$_G_directory_path ;;
-      esac
-
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$_G_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-       # list incase some portion of path contains whitespace.
-        _G_dir_list=$_G_directory_path:$_G_dir_list
-
-        # If the last portion added has no slash in it, the list is done
-        case $_G_directory_path in */*) ;; *) break ;; esac
-
-        # ...otherwise throw away the child directory and loop
-        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
-      done
-      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
-
-      func_mkdir_p_IFS=$IFS; IFS=:
-      for _G_dir in $_G_dir_list; do
-       IFS=$func_mkdir_p_IFS
-        # mkdir can fail with a 'File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$_G_dir" 2>/dev/null || :
-      done
-      IFS=$func_mkdir_p_IFS
-
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$_G_directory_path" || \
-        func_fatal_error "Failed to create '$1'"
-    fi
-}
-
-
-# func_mktempdir [BASENAME]
-# -------------------------
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, BASENAME is the basename for that directory.
-func_mktempdir ()
-{
-    $debug_cmd
-
-    _G_template=${TMPDIR-/tmp}/${1-$progname}
-
-    if test : = "$opt_dry_run"; then
-      # Return a directory name, but don't create it in dry-run mode
-      _G_tmpdir=$_G_template-$$
-    else
-
-      # If mktemp works, use that first and foremost
-      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
-
-      if test ! -d "$_G_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        _G_tmpdir=$_G_template-${RANDOM-0}$$
-
-        func_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$_G_tmpdir"
-        umask $func_mktempdir_umask
-      fi
-
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$_G_tmpdir" || \
-        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
-    fi
-
-    $ECHO "$_G_tmpdir"
-}
-
-
-# func_normal_abspath PATH
-# ------------------------
-# Remove doubled-up and trailing slashes, "." path components,
-# and cancel out any ".." path components in PATH after making
-# it an absolute path.
-func_normal_abspath ()
-{
-    $debug_cmd
-
-    # These SED scripts presuppose an absolute path with a trailing slash.
-    _G_pathcar='s|^/\([^/]*\).*$|\1|'
-    _G_pathcdr='s|^/[^/]*||'
-    _G_removedotparts=':dotsl
-               s|/\./|/|g
-               t dotsl
-               s|/\.$|/|'
-    _G_collapseslashes='s|/\{1,\}|/|g'
-    _G_finalslash='s|/*$|/|'
-
-    # Start from root dir and reassemble the path.
-    func_normal_abspath_result=
-    func_normal_abspath_tpath=$1
-    func_normal_abspath_altnamespace=
-    case $func_normal_abspath_tpath in
-      "")
-        # Empty path, that just means $cwd.
-        func_stripname '' '/' "`pwd`"
-        func_normal_abspath_result=$func_stripname_result
-        return
-        ;;
-      # The next three entries are used to spot a run of precisely
-      # two leading slashes without using negated character classes;
-      # we take advantage of case's first-match behaviour.
-      ///*)
-        # Unusual form of absolute path, do nothing.
-        ;;
-      //*)
-        # Not necessarily an ordinary path; POSIX reserves leading '//'
-        # and for example Cygwin uses it to access remote file shares
-        # over CIFS/SMB, so we conserve a leading double slash if found.
-        func_normal_abspath_altnamespace=/
-        ;;
-      /*)
-        # Absolute path, do nothing.
-        ;;
-      *)
-        # Relative path, prepend $cwd.
-        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
-        ;;
-    esac
-
-    # Cancel out all the simple stuff to save iterations.  We also want
-    # the path to end with a slash for ease of parsing, so make sure
-    # there is one (and only one) here.
-    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
-    while :; do
-      # Processed it all yet?
-      if test / = "$func_normal_abspath_tpath"; then
-        # If we ascended to the root using ".." the result may be empty now.
-        if test -z "$func_normal_abspath_result"; then
-          func_normal_abspath_result=/
-        fi
-        break
-      fi
-      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-          -e "$_G_pathcar"`
-      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-          -e "$_G_pathcdr"`
-      # Figure out what to do with it
-      case $func_normal_abspath_tcomponent in
-        "")
-          # Trailing empty path component, ignore it.
-          ;;
-        ..)
-          # Parent dir; strip last assembled component from result.
-          func_dirname "$func_normal_abspath_result"
-          func_normal_abspath_result=$func_dirname_result
-          ;;
-        *)
-          # Actual path component, append it.
-          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
-          ;;
-      esac
-    done
-    # Restore leading double-slash if one was found on entry.
-    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
-
-
-# func_notquiet ARG...
-# --------------------
-# Echo program name prefixed message only when not in quiet mode.
-func_notquiet ()
-{
-    $debug_cmd
-
-    $opt_quiet || func_echo ${1+"$@"}
-
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
-}
-
-
-# func_relative_path SRCDIR DSTDIR
-# --------------------------------
-# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
-func_relative_path ()
-{
-    $debug_cmd
-
-    func_relative_path_result=
-    func_normal_abspath "$1"
-    func_relative_path_tlibdir=$func_normal_abspath_result
-    func_normal_abspath "$2"
-    func_relative_path_tbindir=$func_normal_abspath_result
-
-    # Ascend the tree starting from libdir
-    while :; do
-      # check if we have found a prefix of bindir
-      case $func_relative_path_tbindir in
-        $func_relative_path_tlibdir)
-          # found an exact match
-          func_relative_path_tcancelled=
-          break
-          ;;
-        $func_relative_path_tlibdir*)
-          # found a matching prefix
-          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
-          func_relative_path_tcancelled=$func_stripname_result
-          if test -z "$func_relative_path_result"; then
-            func_relative_path_result=.
-          fi
-          break
-          ;;
-        *)
-          func_dirname $func_relative_path_tlibdir
-          func_relative_path_tlibdir=$func_dirname_result
-          if test -z "$func_relative_path_tlibdir"; then
-            # Have to descend all the way to the root!
-            func_relative_path_result=../$func_relative_path_result
-            func_relative_path_tcancelled=$func_relative_path_tbindir
-            break
-          fi
-          func_relative_path_result=../$func_relative_path_result
-          ;;
-      esac
-    done
-
-    # Now calculate path; take care to avoid doubling-up slashes.
-    func_stripname '' '/' "$func_relative_path_result"
-    func_relative_path_result=$func_stripname_result
-    func_stripname '/' '/' "$func_relative_path_tcancelled"
-    if test -n "$func_stripname_result"; then
-      func_append func_relative_path_result "/$func_stripname_result"
-    fi
-
-    # Normalisation. If bindir is libdir, return '.' else relative path.
-    if test -n "$func_relative_path_result"; then
-      func_stripname './' '' "$func_relative_path_result"
-      func_relative_path_result=$func_stripname_result
-    fi
-
-    test -n "$func_relative_path_result" || func_relative_path_result=.
-
-    :
-}
-
-
-# func_quote_portable EVAL ARG
-# ----------------------------
-# Internal function to portably implement func_quote_arg.  Note that we still
-# keep attention to performance here so we as much as possible try to avoid
-# calling sed binary (so far O(N) complexity as long as func_append is O(1)).
-func_quote_portable ()
-{
-    $debug_cmd
-
-    func_quote_portable_result=$2
-
-    # one-time-loop (easy break)
-    while true
-    do
-      if $1; then
-        func_quote_portable_result=`$ECHO "$2" | $SED \
-          -e "$sed_double_quote_subst" -e "$sed_double_backslash"`
-        break
-      fi
-
-      # Quote for eval.
-      case $func_quote_portable_result in
-        *[\\\`\"\$]*)
-          case $func_quote_portable_result in
-            *[\[\*\?]*)
-              func_quote_portable_result=`$ECHO "$func_quote_portable_result" \
-                  | $SED "$sed_quote_subst"`
-              break
-              ;;
-          esac
-
-          func_quote_portable_old_IFS=$IFS
-          for _G_char in '\' '`' '"' '$'
-          do
-            # STATE($1) PREV($2) SEPARATOR($3)
-            set start "" ""
-            func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy
-            IFS=$_G_char
-            for _G_part in $func_quote_portable_result
-            do
-              case $1 in
-              quote)
-                func_append func_quote_portable_result "$3$2"
-                set quote "$_G_part" "\\$_G_char"
-                ;;
-              start)
-                set first "" ""
-                func_quote_portable_result=
-                ;;
-              first)
-                set quote "$_G_part" ""
-                ;;
-              esac
-            done
-          done
-          IFS=$func_quote_portable_old_IFS
-          ;;
-        *) ;;
-      esac
-      break
-    done
-
-    func_quote_portable_unquoted_result=$func_quote_portable_result
-    case $func_quote_portable_result in
-      # double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and variable expansion
-      # for a subsequent eval.
-      # many bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
-        func_quote_portable_result=\"$func_quote_portable_result\"
-        ;;
-    esac
-}
-
-
-# func_quotefast_eval ARG
-# -----------------------
-# Quote one ARG (internal).  This is equivalent to 'func_quote_arg eval ARG',
-# but optimized for speed.  Result is stored in $func_quotefast_eval.
-if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then
-  printf -v _GL_test_printf_tilde %q '~'
-  if test '\~' = "$_GL_test_printf_tilde"; then
-    func_quotefast_eval ()
-    {
-      printf -v func_quotefast_eval_result %q "$1"
-    }
-  else
-    # Broken older Bash implementations.  Make those faster too if possible.
-    func_quotefast_eval ()
-    {
-      case $1 in
-        '~'*)
-          func_quote_portable false "$1"
-          func_quotefast_eval_result=$func_quote_portable_result
-          ;;
-        *)
-          printf -v func_quotefast_eval_result %q "$1"
-          ;;
-      esac
-    }
-  fi
-else
-  func_quotefast_eval ()
-  {
-    func_quote_portable false "$1"
-    func_quotefast_eval_result=$func_quote_portable_result
-  }
-fi
-
-
-# func_quote_arg MODEs ARG
-# ------------------------
-# Quote one ARG to be evaled later.  MODEs argument may contain zero or more
-# specifiers listed below separated by ',' character.  This function returns two
-# values:
-#   i) func_quote_arg_result
-#      double-quoted (when needed), suitable for a subsequent eval
-#  ii) func_quote_arg_unquoted_result
-#      has all characters that are still active within double
-#      quotes backslashified.  Available only if 'unquoted' is specified.
-#
-# Available modes:
-# ----------------
-# 'eval' (default)
-#       - escape shell special characters
-# 'expand'
-#       - the same as 'eval';  but do not quote variable references
-# 'pretty'
-#       - request aesthetic output, i.e. '"a b"' instead of 'a\ b'.  This might
-#         be used later in func_quote to get output like: 'echo "a b"' instead
-#         of 'echo a\ b'.  This is slower than default on some shells.
-# 'unquoted'
-#       - produce also $func_quote_arg_unquoted_result which does not contain
-#         wrapping double-quotes.
-#
-# Examples for 'func_quote_arg pretty,unquoted string':
-#
-#   string      | *_result              | *_unquoted_result
-#   ------------+-----------------------+-------------------
-#   "           | \"                    | \"
-#   a b         | "a b"                 | a b
-#   "a b"       | "\"a b\""             | \"a b\"
-#   *           | "*"                   | *
-#   z="${x-$y}" | "z=\"\${x-\$y}\""     | z=\"\${x-\$y}\"
-#
-# Examples for 'func_quote_arg pretty,unquoted,expand string':
-#
-#   string        |   *_result          |  *_unquoted_result
-#   --------------+---------------------+--------------------
-#   z="${x-$y}"   | "z=\"${x-$y}\""     | z=\"${x-$y}\"
-func_quote_arg ()
-{
-    _G_quote_expand=false
-    case ,$1, in
-      *,expand,*)
-        _G_quote_expand=:
-        ;;
-    esac
-
-    case ,$1, in
-      *,pretty,*|*,expand,*|*,unquoted,*)
-        func_quote_portable $_G_quote_expand "$2"
-        func_quote_arg_result=$func_quote_portable_result
-        func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result
-        ;;
-      *)
-        # Faster quote-for-eval for some shells.
-        func_quotefast_eval "$2"
-        func_quote_arg_result=$func_quotefast_eval_result
-        ;;
-    esac
-}
-
-
-# func_quote MODEs ARGs...
-# ------------------------
-# Quote all ARGs to be evaled later and join them into single command.  See
-# func_quote_arg's description for more info.
-func_quote ()
-{
-    $debug_cmd
-    _G_func_quote_mode=$1 ; shift
-    func_quote_result=
-    while test 0 -lt $#; do
-      func_quote_arg "$_G_func_quote_mode" "$1"
-      if test -n "$func_quote_result"; then
-        func_append func_quote_result " $func_quote_arg_result"
-      else
-        func_append func_quote_result "$func_quote_arg_result"
-      fi
-      shift
-    done
-}
-
-
-# func_stripname PREFIX SUFFIX NAME
-# ---------------------------------
-# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  eval 'func_stripname ()
-  {
-    $debug_cmd
-
-    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-    # positional parameters, so assign one to ordinary variable first.
-    func_stripname_result=$3
-    func_stripname_result=${func_stripname_result#"$1"}
-    func_stripname_result=${func_stripname_result%"$2"}
-  }'
-else
-  func_stripname ()
-  {
-    $debug_cmd
-
-    case $2 in
-      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
-      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
-    esac
-  }
-fi
-
-
-# func_show_eval CMD [FAIL_EXP]
-# -----------------------------
-# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
-    $debug_cmd
-
-    _G_cmd=$1
-    _G_fail_exp=${2-':'}
-
-    func_quote_arg pretty,expand "$_G_cmd"
-    eval "func_notquiet $func_quote_arg_result"
-
-    $opt_dry_run || {
-      eval "$_G_cmd"
-      _G_status=$?
-      if test 0 -ne "$_G_status"; then
-       eval "(exit $_G_status); $_G_fail_exp"
-      fi
-    }
-}
-
-
-# func_show_eval_locale CMD [FAIL_EXP]
-# ------------------------------------
-# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.  Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
-    $debug_cmd
-
-    _G_cmd=$1
-    _G_fail_exp=${2-':'}
-
-    $opt_quiet || {
-      func_quote_arg expand,pretty "$_G_cmd"
-      eval "func_echo $func_quote_arg_result"
-    }
-
-    $opt_dry_run || {
-      eval "$_G_user_locale
-           $_G_cmd"
-      _G_status=$?
-      eval "$_G_safe_locale"
-      if test 0 -ne "$_G_status"; then
-       eval "(exit $_G_status); $_G_fail_exp"
-      fi
-    }
-}
-
-
-# func_tr_sh
-# ----------
-# Turn $1 into a string suitable for a shell variable name.
-# Result is stored in $func_tr_sh_result.  All characters
-# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
-# if $1 begins with a digit, a '_' is prepended as well.
-func_tr_sh ()
-{
-    $debug_cmd
-
-    case $1 in
-    [0-9]* | *[!a-zA-Z0-9_]*)
-      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
-      ;;
-    * )
-      func_tr_sh_result=$1
-      ;;
-    esac
-}
-
-
-# func_verbose ARG...
-# -------------------
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $debug_cmd
-
-    $opt_verbose && func_echo "$*"
-
-    :
-}
-
-
-# func_warn_and_continue ARG...
-# -----------------------------
-# Echo program name prefixed warning message to standard error.
-func_warn_and_continue ()
-{
-    $debug_cmd
-
-    $require_term_colors
-
-    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
-}
-
-
-# func_warning CATEGORY ARG...
-# ----------------------------
-# Echo program name prefixed warning message to standard error. Warning
-# messages can be filtered according to CATEGORY, where this function
-# elides messages where CATEGORY is not listed in the global variable
-# 'opt_warning_types'.
-func_warning ()
-{
-    $debug_cmd
-
-    # CATEGORY must be in the warning_categories list!
-    case " $warning_categories " in
-      *" $1 "*) ;;
-      *) func_internal_error "invalid warning category '$1'" ;;
-    esac
-
-    _G_category=$1
-    shift
-
-    case " $opt_warning_types " in
-      *" $_G_category "*) $warning_func ${1+"$@"} ;;
-    esac
-}
-
-
-# func_sort_ver VER1 VER2
-# -----------------------
-# 'sort -V' is not generally available.
-# Note this deviates from the version comparison in automake
-# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
-# but this should suffice as we won't be specifying old
-# version formats or redundant trailing .0 in bootstrap.conf.
-# If we did want full compatibility then we should probably
-# use m4_version_compare from autoconf.
-func_sort_ver ()
-{
-    $debug_cmd
-
-    printf '%s\n%s\n' "$1" "$2" \
-      | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
-}
-
-# func_lt_ver PREV CURR
-# ---------------------
-# Return true if PREV and CURR are in the correct order according to
-# func_sort_ver, otherwise false.  Use it like this:
-#
-#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
-func_lt_ver ()
-{
-    $debug_cmd
-
-    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
-}
-
-
-# Local variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
-# time-stamp-time-zone: "UTC"
-# End:
-#! /bin/sh
-
-# A portable, pluggable option parser for Bourne shell.
-# Written by Gary V. Vaughan, 2010
-
-# This is free software.  There is NO warranty; not even for
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#
-# Copyright (C) 2010-2018 Bootstrap Authors
-#
-# This file is dual licensed under the terms of the MIT license
-# <https://opensource.org/license/MIT>, and GPL version 3 or later
-# <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of
-# these licenses when using or redistributing this software or any of
-# the files within it.  See the URLs above, or the file `LICENSE`
-# included in the Bootstrap distribution for the full license texts.
-
-# Please report bugs or propose patches to:
-# <https://github.com/gnulib-modules/bootstrap/issues>
-
-# Set a version string for this script.
-scriptversion=2018-07-24.06; # UTC
-
-
-## ------ ##
-## Usage. ##
-## ------ ##
-
-# This file is a library for parsing options in your shell scripts along
-# with assorted other useful supporting features that you can make use
-# of too.
-#
-# For the simplest scripts you might need only:
-#
-#   #!/bin/sh
-#   . relative/path/to/funclib.sh
-#   . relative/path/to/options-parser
-#   scriptversion=1.0
-#   func_options ${1+"$@"}
-#   eval set dummy "$func_options_result"; shift
-#   ...rest of your script...
-#
-# In order for the '--version' option to work, you will need to have a
-# suitably formatted comment like the one at the top of this file
-# starting with '# Written by ' and ending with '# Copyright'.
-#
-# For '-h' and '--help' to work, you will also need a one line
-# description of your script's purpose in a comment directly above the
-# '# Written by ' line, like the one at the top of this file.
-#
-# The default options also support '--debug', which will turn on shell
-# execution tracing (see the comment above debug_cmd below for another
-# use), and '--verbose' and the func_verbose function to allow your script
-# to display verbose messages only when your user has specified
-# '--verbose'.
-#
-# After sourcing this file, you can plug in processing for additional
-# options by amending the variables from the 'Configuration' section
-# below, and following the instructions in the 'Option parsing'
-# section further down.
-
-## -------------- ##
-## Configuration. ##
-## -------------- ##
-
-# You should override these variables in your script after sourcing this
-# file so that they reflect the customisations you have added to the
-# option parser.
-
-# The usage line for option parsing errors and the start of '-h' and
-# '--help' output messages. You can embed shell variables for delayed
-# expansion at the time the message is displayed, but you will need to
-# quote other shell meta-characters carefully to prevent them being
-# expanded when the contents are evaled.
-usage='$progpath [OPTION]...'
-
-# Short help message in response to '-h' and '--help'.  Add to this or
-# override it after sourcing this library to reflect the full set of
-# options your script accepts.
-usage_message="\
-       --debug        enable verbose shell tracing
-   -W, --warnings=CATEGORY
-                      report the warnings falling in CATEGORY [all]
-   -v, --verbose      verbosely report processing
-       --version      print version information and exit
-   -h, --help         print short or long help message and exit
-"
-
-# Additional text appended to 'usage_message' in response to '--help'.
-long_help_message="
-Warning categories include:
-       'all'          show all warnings
-       'none'         turn off all the warnings
-       'error'        warnings are treated as fatal errors"
-
-# Help message printed before fatal option parsing errors.
-fatal_help="Try '\$progname --help' for more information."
-
-
-
-## ------------------------- ##
-## Hook function management. ##
-## ------------------------- ##
-
-# This section contains functions for adding, removing, and running hooks
-# in the main code.  A hook is just a list of function names that can be
-# run in order later on.
-
-# func_hookable FUNC_NAME
-# -----------------------
-# Declare that FUNC_NAME will run hooks added with
-# 'func_add_hook FUNC_NAME ...'.
-func_hookable ()
-{
-    $debug_cmd
-
-    func_append hookable_fns " $1"
-}
-
-
-# func_add_hook FUNC_NAME HOOK_FUNC
-# ---------------------------------
-# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
-# first have been declared "hookable" by a call to 'func_hookable'.
-func_add_hook ()
-{
-    $debug_cmd
-
-    case " $hookable_fns " in
-      *" $1 "*) ;;
-      *) func_fatal_error "'$1' does not accept hook functions." ;;
-    esac
-
-    eval func_append ${1}_hooks '" $2"'
-}
-
-
-# func_remove_hook FUNC_NAME HOOK_FUNC
-# ------------------------------------
-# Remove HOOK_FUNC from the list of hook functions to be called by
-# FUNC_NAME.
-func_remove_hook ()
-{
-    $debug_cmd
-
-    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
-}
-
-
-# func_propagate_result FUNC_NAME_A FUNC_NAME_B
-# ---------------------------------------------
-# If the *_result variable of FUNC_NAME_A _is set_, assign its value to
-# *_result variable of FUNC_NAME_B.
-func_propagate_result ()
-{
-    $debug_cmd
-
-    func_propagate_result_result=:
-    if eval "test \"\${${1}_result+set}\" = set"
-    then
-      eval "${2}_result=\$${1}_result"
-    else
-      func_propagate_result_result=false
-    fi
-}
-
-
-# func_run_hooks FUNC_NAME [ARG]...
-# ---------------------------------
-# Run all hook functions registered to FUNC_NAME.
-# It's assumed that the list of hook functions contains nothing more
-# than a whitespace-delimited list of legal shell function names, and
-# no effort is wasted trying to catch shell meta-characters or preserve
-# whitespace.
-func_run_hooks ()
-{
-    $debug_cmd
-
-    case " $hookable_fns " in
-      *" $1 "*) ;;
-      *) func_fatal_error "'$1' does not support hook functions." ;;
-    esac
-
-    eval _G_hook_fns=\$$1_hooks; shift
-
-    for _G_hook in $_G_hook_fns; do
-      func_unset "${_G_hook}_result"
-      eval $_G_hook '${1+"$@"}'
-      func_propagate_result $_G_hook func_run_hooks
-      if $func_propagate_result_result; then
-        eval set dummy "$func_run_hooks_result"; shift
-      fi
-    done
-}
-
-
-
-## --------------- ##
-## Option parsing. ##
-## --------------- ##
-
-# In order to add your own option parsing hooks, you must accept the
-# full positional parameter list from your hook function.  You may remove
-# or edit any options that you action, and then pass back the remaining
-# unprocessed options in '<hooked_function_name>_result', escaped
-# suitably for 'eval'.
-#
-# The '<hooked_function_name>_result' variable is automatically unset
-# before your hook gets called; for best performance, only set the
-# *_result variable when necessary (i.e. don't call the 'func_quote'
-# function unnecessarily because it can be an expensive operation on some
-# machines).
-#
-# Like this:
-#
-#    my_options_prep ()
-#    {
-#        $debug_cmd
-#
-#        # Extend the existing usage message.
-#        usage_message=$usage_message'
-#      -s, --silent       don'\''t print informational messages
-#    '
-#        # No change in '$@' (ignored completely by this hook).  Leave
-#        # my_options_prep_result variable intact.
-#    }
-#    func_add_hook func_options_prep my_options_prep
-#
-#
-#    my_silent_option ()
-#    {
-#        $debug_cmd
-#
-#        args_changed=false
-#
-#        # Note that, for efficiency, we parse as many options as we can
-#        # recognise in a loop before passing the remainder back to the
-#        # caller on the first unrecognised argument we encounter.
-#        while test $# -gt 0; do
-#          opt=$1; shift
-#          case $opt in
-#            --silent|-s) opt_silent=:
-#                         args_changed=:
-#                         ;;
-#            # Separate non-argument short options:
-#            -s*)         func_split_short_opt "$_G_opt"
-#                         set dummy "$func_split_short_opt_name" \
-#                             "-$func_split_short_opt_arg" ${1+"$@"}
-#                         shift
-#                         args_changed=:
-#                         ;;
-#            *)           # Make sure the first unrecognised option "$_G_opt"
-#                         # is added back to "$@" in case we need it later,
-#                         # if $args_changed was set to 'true'.
-#                         set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
-#          esac
-#        done
-#
-#        # Only call 'func_quote' here if we processed at least one argument.
-#        if $args_changed; then
-#          func_quote eval ${1+"$@"}
-#          my_silent_option_result=$func_quote_result
-#        fi
-#    }
-#    func_add_hook func_parse_options my_silent_option
-#
-#
-#    my_option_validation ()
-#    {
-#        $debug_cmd
-#
-#        $opt_silent && $opt_verbose && func_fatal_help "\
-#    '--silent' and '--verbose' options are mutually exclusive."
-#    }
-#    func_add_hook func_validate_options my_option_validation
-#
-# You'll also need to manually amend $usage_message to reflect the extra
-# options you parse.  It's preferable to append if you can, so that
-# multiple option parsing hooks can be added safely.
-
-
-# func_options_finish [ARG]...
-# ----------------------------
-# Finishing the option parse loop (call 'func_options' hooks ATM).
-func_options_finish ()
-{
-    $debug_cmd
-
-    func_run_hooks func_options ${1+"$@"}
-    func_propagate_result func_run_hooks func_options_finish
-}
-
-
-# func_options [ARG]...
-# ---------------------
-# All the functions called inside func_options are hookable. See the
-# individual implementations for details.
-func_hookable func_options
-func_options ()
-{
-    $debug_cmd
-
-    _G_options_quoted=false
-
-    for my_func in options_prep parse_options validate_options options_finish
-    do
-      func_unset func_${my_func}_result
-      func_unset func_run_hooks_result
-      eval func_$my_func '${1+"$@"}'
-      func_propagate_result func_$my_func func_options
-      if $func_propagate_result_result; then
-        eval set dummy "$func_options_result"; shift
-        _G_options_quoted=:
-      fi
-    done
-
-    $_G_options_quoted || {
-      # As we (func_options) are top-level options-parser function and
-      # nobody quoted "$@" for us yet, we need to do it explicitly for
-      # caller.
-      func_quote eval ${1+"$@"}
-      func_options_result=$func_quote_result
-    }
-}
-
-
-# func_options_prep [ARG]...
-# --------------------------
-# All initialisations required before starting the option parse loop.
-# Note that when calling hook functions, we pass through the list of
-# positional parameters.  If a hook function modifies that list, and
-# needs to propagate that back to rest of this script, then the complete
-# modified list must be put in 'func_run_hooks_result' before returning.
-func_hookable func_options_prep
-func_options_prep ()
-{
-    $debug_cmd
-
-    # Option defaults:
-    opt_verbose=false
-    opt_warning_types=
-
-    func_run_hooks func_options_prep ${1+"$@"}
-    func_propagate_result func_run_hooks func_options_prep
-}
-
-
-# func_parse_options [ARG]...
-# ---------------------------
-# The main option parsing loop.
-func_hookable func_parse_options
-func_parse_options ()
-{
-    $debug_cmd
-
-    _G_parse_options_requote=false
-    # this just eases exit handling
-    while test $# -gt 0; do
-      # Defer to hook functions for initial option parsing, so they
-      # get priority in the event of reusing an option name.
-      func_run_hooks func_parse_options ${1+"$@"}
-      func_propagate_result func_run_hooks func_parse_options
-      if $func_propagate_result_result; then
-        eval set dummy "$func_parse_options_result"; shift
-        # Even though we may have changed "$@", we passed the "$@" array
-        # down into the hook and it quoted it for us (because we are in
-        # this if-branch).  No need to quote it again.
-        _G_parse_options_requote=false
-      fi
-
-      # Break out of the loop if we already parsed every option.
-      test $# -gt 0 || break
-
-      # We expect that one of the options parsed in this function matches
-      # and thus we remove _G_opt from "$@" and need to re-quote.
-      _G_match_parse_options=:
-      _G_opt=$1
-      shift
-      case $_G_opt in
-        --debug|-x)   debug_cmd='set -x'
-                      func_echo "enabling shell trace mode" >&2
-                      $debug_cmd
-                      ;;
-
-        --no-warnings|--no-warning|--no-warn)
-                      set dummy --warnings none ${1+"$@"}
-                      shift
-                     ;;
-
-        --warnings|--warning|-W)
-                      if test $# = 0 && func_missing_arg $_G_opt; then
-                        _G_parse_options_requote=:
-                        break
-                      fi
-                      case " $warning_categories $1" in
-                        *" $1 "*)
-                          # trailing space prevents matching last $1 above
-                          func_append_uniq opt_warning_types " $1"
-                          ;;
-                        *all)
-                          opt_warning_types=$warning_categories
-                          ;;
-                        *none)
-                          opt_warning_types=none
-                          warning_func=:
-                          ;;
-                        *error)
-                          opt_warning_types=$warning_categories
-                          warning_func=func_fatal_error
-                          ;;
-                        *)
-                          func_fatal_error \
-                             "unsupported warning category: '$1'"
-                          ;;
-                      esac
-                      shift
-                      ;;
-
-        --verbose|-v) opt_verbose=: ;;
-        --version)    func_version ;;
-        -\?|-h)       func_usage ;;
-        --help)       func_help ;;
-
-       # Separate optargs to long options (plugins may need this):
-       --*=*)        func_split_equals "$_G_opt"
-                     set dummy "$func_split_equals_lhs" \
-                          "$func_split_equals_rhs" ${1+"$@"}
-                      shift
-                      ;;
-
-       # Separate optargs to short options:
-        -W*)
-                      func_split_short_opt "$_G_opt"
-                      set dummy "$func_split_short_opt_name" \
-                          "$func_split_short_opt_arg" ${1+"$@"}
-                      shift
-                      ;;
-
-        # Separate non-argument short options:
-        -\?*|-h*|-v*|-x*)
-                      func_split_short_opt "$_G_opt"
-                      set dummy "$func_split_short_opt_name" \
-                          "-$func_split_short_opt_arg" ${1+"$@"}
-                      shift
-                      ;;
-
-        --)           _G_parse_options_requote=: ; break ;;
-        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
-        *)            set dummy "$_G_opt" ${1+"$@"}; shift
-                      _G_match_parse_options=false
-                      break
-                      ;;
-      esac
-
-      if $_G_match_parse_options; then
-        _G_parse_options_requote=:
-      fi
-    done
-
-    if $_G_parse_options_requote; then
-      # save modified positional parameters for caller
-      func_quote eval ${1+"$@"}
-      func_parse_options_result=$func_quote_result
-    fi
-}
-
-
-# func_validate_options [ARG]...
-# ------------------------------
-# Perform any sanity checks on option settings and/or unconsumed
-# arguments.
-func_hookable func_validate_options
-func_validate_options ()
-{
-    $debug_cmd
-
-    # Display all warnings if -W was not given.
-    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
-
-    func_run_hooks func_validate_options ${1+"$@"}
-    func_propagate_result func_run_hooks func_validate_options
-
-    # Bail if the options were screwed!
-    $exit_cmd $EXIT_FAILURE
-}
-
-
-
-## ----------------- ##
-## Helper functions. ##
-## ----------------- ##
-
-# This section contains the helper functions used by the rest of the
-# hookable option parser framework in ascii-betical order.
-
-
-# func_fatal_help ARG...
-# ----------------------
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    $debug_cmd
-
-    eval \$ECHO \""Usage: $usage"\"
-    eval \$ECHO \""$fatal_help"\"
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
-
-
-# func_help
-# ---------
-# Echo long help message to standard output and exit.
-func_help ()
-{
-    $debug_cmd
-
-    func_usage_message
-    $ECHO "$long_help_message"
-    exit 0
-}
-
-
-# func_missing_arg ARGNAME
-# ------------------------
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
-    $debug_cmd
-
-    func_error "Missing argument for '$1'."
-    exit_cmd=exit
-}
-
-
-# func_split_equals STRING
-# ------------------------
-# Set func_split_equals_lhs and func_split_equals_rhs shell variables
-# after splitting STRING at the '=' sign.
-test -z "$_G_HAVE_XSI_OPS" \
-    && (eval 'x=a/b/c;
-      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
-    && _G_HAVE_XSI_OPS=yes
-
-if test yes = "$_G_HAVE_XSI_OPS"
-then
-  # This is an XSI compatible shell, allowing a faster implementation...
-  eval 'func_split_equals ()
-  {
-      $debug_cmd
-
-      func_split_equals_lhs=${1%%=*}
-      func_split_equals_rhs=${1#*=}
-      if test "x$func_split_equals_lhs" = "x$1"; then
-        func_split_equals_rhs=
-      fi
-  }'
-else
-  # ...otherwise fall back to using expr, which is often a shell builtin.
-  func_split_equals ()
-  {
-      $debug_cmd
-
-      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
-      func_split_equals_rhs=
-      test "x$func_split_equals_lhs" = "x$1" \
-        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
-  }
-fi #func_split_equals
-
-
-# func_split_short_opt SHORTOPT
-# -----------------------------
-# Set func_split_short_opt_name and func_split_short_opt_arg shell
-# variables after splitting SHORTOPT after the 2nd character.
-if test yes = "$_G_HAVE_XSI_OPS"
-then
-  # This is an XSI compatible shell, allowing a faster implementation...
-  eval 'func_split_short_opt ()
-  {
-      $debug_cmd
-
-      func_split_short_opt_arg=${1#??}
-      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
-  }'
-else
-  # ...otherwise fall back to using expr, which is often a shell builtin.
-  func_split_short_opt ()
-  {
-      $debug_cmd
-
-      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
-      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
-  }
-fi #func_split_short_opt
-
-
-# func_usage
-# ----------
-# Echo short help message to standard output and exit.
-func_usage ()
-{
-    $debug_cmd
-
-    func_usage_message
-    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
-    exit 0
-}
-
-
-# func_usage_message
-# ------------------
-# Echo short help message to standard output.
-func_usage_message ()
-{
-    $debug_cmd
-
-    eval \$ECHO \""Usage: $usage"\"
-    echo
-    $SED -n 's|^# ||
-        /^Written by/{
-          x;p;x
-        }
-       h
-       /^Written by/q' < "$progpath"
-    echo
-    eval \$ECHO \""$usage_message"\"
-}
-
-
-# func_version
-# ------------
-# Echo version message to standard output and exit.
-# The version message is extracted from the calling file's header
-# comments, with leading '# ' stripped:
-#   1. First display the progname and version
-#   2. Followed by the header comment line matching  /^# Written by /
-#   3. Then a blank line followed by the first following line matching
-#      /^# Copyright /
-#   4. Immediately followed by any lines between the previous matches,
-#      except lines preceding the intervening completely blank line.
-# For example, see the header comments of this file.
-func_version ()
-{
-    $debug_cmd
-
-    printf '%s\n' "$progname $scriptversion"
-    $SED -n '
-        /^# Written by /!b
-        s|^# ||; p; n
-
-        :fwd2blnk
-        /./ {
-          n
-          b fwd2blnk
-        }
-        p; n
-
-        :holdwrnt
-        s|^# ||
-        s|^# *$||
-        /^Copyright /!{
-          /./H
-          n
-          b holdwrnt
-        }
-
-        s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
-        G
-        s|\(\n\)\n*|\1|g
-        p; q' < "$progpath"
-
-    exit $?
-}
-
-
-# Local variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC"
-# time-stamp-time-zone: "UTC"
-# End:
-
-# Set a version string.
-scriptversion='(GNU libtool) 2.4.6.42-b88ce-dirty'
-
-
-# func_echo ARG...
-# ----------------
-# Libtool also displays the current mode in messages, so override
-# funclib.sh func_echo with this custom definition.
-func_echo ()
-{
-    $debug_cmd
-
-    _G_message=$*
-
-    func_echo_IFS=$IFS
-    IFS=$nl
-    for _G_line in $_G_message; do
-      IFS=$func_echo_IFS
-      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
-    done
-    IFS=$func_echo_IFS
-}
-
-
-# func_warning ARG...
-# -------------------
-# Libtool warnings are not categorized, so override funclib.sh
-# func_warning with this simpler definition.
-func_warning ()
-{
-    $debug_cmd
-
-    $warning_func ${1+"$@"}
-}
-
-
-## ---------------- ##
-## Options parsing. ##
-## ---------------- ##
-
-# Hook in the functions to make sure our own options are parsed during
-# the option parsing loop.
-
-usage='$progpath [OPTION]... [MODE-ARG]...'
-
-# Short help message in response to '-h'.
-usage_message="Options:
-       --config             show all configuration variables
-       --debug              enable verbose shell tracing
-   -n, --dry-run            display commands without modifying any files
-       --features           display basic configuration information and exit
-       --mode=MODE          use operation mode MODE
-       --no-warnings        equivalent to '-Wnone'
-       --preserve-dup-deps  don't remove duplicate dependency libraries
-       --quiet, --silent    don't print informational messages
-       --tag=TAG            use configuration variables from tag TAG
-   -v, --verbose            print more informational messages than default
-       --version            print version information
-   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
-   -h, --help, --help-all   print short, long, or detailed help message
-"
-
-# Additional text appended to 'usage_message' in response to '--help'.
-func_help ()
-{
-    $debug_cmd
-
-    func_usage_message
-    $ECHO "$long_help_message
-
-MODE must be one of the following:
-
-       clean           remove files from the build directory
-       compile         compile a source file into a libtool object
-       execute         automatically set library path, then run a program
-       finish          complete the installation of libtool libraries
-       install         install libraries or executables
-       link            create a library or an executable
-       uninstall       remove libraries from an installed directory
-
-MODE-ARGS vary depending on the MODE.  When passed as first option,
-'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
-Try '$progname --help --mode=MODE' for a more detailed description of MODE.
-
-When reporting a bug, please describe a test case to reproduce it and
-include the following information:
-
-       host-triplet:   $host
-       shell:          $SHELL
-       compiler:       $LTCC
-       compiler flags: $LTCFLAGS
-       linker:         $LD (gnu? $with_gnu_ld)
-       version:        $progname (GNU libtool) 2.4.6.42-b88ce-dirty
-       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
-       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
-
-Report bugs to <bug-libtool@gnu.org>.
-GNU libtool home page: <http://www.gnu.org/s/libtool/>.
-General help using GNU software: <http://www.gnu.org/gethelp/>."
-    exit 0
-}
-
-
-# func_lo2o OBJECT-NAME
-# ---------------------
-# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
-# object suffix.
-
-lo2o=s/\\.lo\$/.$objext/
-o2lo=s/\\.$objext\$/.lo/
-
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  eval 'func_lo2o ()
-  {
-    case $1 in
-      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
-      *   ) func_lo2o_result=$1               ;;
-    esac
-  }'
-
-  # func_xform LIBOBJ-OR-SOURCE
-  # ---------------------------
-  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
-  # suffix to a '.lo' libtool-object suffix.
-  eval 'func_xform ()
-  {
-    func_xform_result=${1%.*}.lo
-  }'
-else
-  # ...otherwise fall back to using sed.
-  func_lo2o ()
-  {
-    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
-  }
-
-  func_xform ()
-  {
-    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
-  }
-fi
-
-
-# func_fatal_configuration ARG...
-# -------------------------------
-# Echo program name prefixed message to standard error, followed by
-# a configuration failure hint, and exit.
-func_fatal_configuration ()
-{
-    func_fatal_error ${1+"$@"} \
-      "See the $PACKAGE documentation for more information." \
-      "Fatal configuration error."
-}
-
-
-# func_config
-# -----------
-# Display the configuration for all the tags in this script.
-func_config ()
-{
-    re_begincf='^# ### BEGIN LIBTOOL'
-    re_endcf='^# ### END LIBTOOL'
-
-    # Default configuration.
-    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
-
-    # Now print the configurations for the tags.
-    for tagname in $taglist; do
-      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
-    done
-
-    exit $?
-}
-
-
-# func_features
-# -------------
-# Display the features supported by this script.
-func_features ()
-{
-    echo "host: $host"
-    if test yes = "$build_libtool_libs"; then
-      echo "enable shared libraries"
-    else
-      echo "disable shared libraries"
-    fi
-    if test yes = "$build_old_libs"; then
-      echo "enable static libraries"
-    else
-      echo "disable static libraries"
-    fi
-
-    exit $?
-}
-
-
-# func_enable_tag TAGNAME
-# -----------------------
-# Verify that TAGNAME is valid, and either flag an error and exit, or
-# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
-# variable here.
-func_enable_tag ()
-{
-    # Global variable:
-    tagname=$1
-
-    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-    sed_extractcf=/$re_begincf/,/$re_endcf/p
-
-    # Validate tagname.
-    case $tagname in
-      *[!-_A-Za-z0-9,/]*)
-        func_fatal_error "invalid tag name: $tagname"
-        ;;
-    esac
-
-    # Don't test for the "default" C tag, as we know it's
-    # there but not specially marked.
-    case $tagname in
-        CC) ;;
-    *)
-        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-         taglist="$taglist $tagname"
-
-         # Evaluate the configuration.  Be careful to quote the path
-         # and the sed script, to avoid splitting on whitespace, but
-         # also don't use non-portable quotes within backquotes within
-         # quotes we have to do it in 2 steps:
-         extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-         eval "$extractedcf"
-        else
-         func_error "ignoring unknown tag $tagname"
-        fi
-        ;;
-    esac
-}
-
-
-# func_check_version_match
-# ------------------------
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
-    if test "$package_revision" != "$macro_revision"; then
-      if test "$VERSION" != "$macro_version"; then
-        if test -z "$macro_version"; then
-          cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-        else
-          cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-        fi
-      else
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
-      fi
-
-      exit $EXIT_MISMATCH
-    fi
-}
-
-
-# libtool_options_prep [ARG]...
-# -----------------------------
-# Preparation for options parsed by libtool.
-libtool_options_prep ()
-{
-    $debug_mode
-
-    # Option defaults:
-    opt_config=false
-    opt_dlopen=
-    opt_dry_run=false
-    opt_help=false
-    opt_mode=
-    opt_preserve_dup_deps=false
-    opt_quiet=false
-
-    nonopt=
-    preserve_args=
-
-    _G_rc_lt_options_prep=:
-
-    # Shorthand for --mode=foo, only valid as the first argument
-    case $1 in
-    clean|clea|cle|cl)
-      shift; set dummy --mode clean ${1+"$@"}; shift
-      ;;
-    compile|compil|compi|comp|com|co|c)
-      shift; set dummy --mode compile ${1+"$@"}; shift
-      ;;
-    execute|execut|execu|exec|exe|ex|e)
-      shift; set dummy --mode execute ${1+"$@"}; shift
-      ;;
-    finish|finis|fini|fin|fi|f)
-      shift; set dummy --mode finish ${1+"$@"}; shift
-      ;;
-    install|instal|insta|inst|ins|in|i)
-      shift; set dummy --mode install ${1+"$@"}; shift
-      ;;
-    link|lin|li|l)
-      shift; set dummy --mode link ${1+"$@"}; shift
-      ;;
-    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-      shift; set dummy --mode uninstall ${1+"$@"}; shift
-      ;;
-    *)
-      _G_rc_lt_options_prep=false
-      ;;
-    esac
-
-    if $_G_rc_lt_options_prep; then
-      # Pass back the list of options.
-      func_quote eval ${1+"$@"}
-      libtool_options_prep_result=$func_quote_result
-    fi
-}
-func_add_hook func_options_prep libtool_options_prep
-
-
-# libtool_parse_options [ARG]...
-# ---------------------------------
-# Provide handling for libtool specific options.
-libtool_parse_options ()
-{
-    $debug_cmd
-
-    _G_rc_lt_parse_options=false
-
-    # Perform our own loop to consume as many options as possible in
-    # each iteration.
-    while test $# -gt 0; do
-      _G_match_lt_parse_options=:
-      _G_opt=$1
-      shift
-      case $_G_opt in
-        --dry-run|--dryrun|-n)
-                        opt_dry_run=:
-                        ;;
-
-        --config)       func_config ;;
-
-        --dlopen|-dlopen)
-                        opt_dlopen="${opt_dlopen+$opt_dlopen
-}$1"
-                        shift
-                        ;;
-
-        --preserve-dup-deps)
-                        opt_preserve_dup_deps=: ;;
-
-        --features)     func_features ;;
-
-        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
-
-        --help)         opt_help=: ;;
-
-        --help-all)     opt_help=': help-all' ;;
-
-        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
-                        opt_mode=$1
-                        case $1 in
-                          # Valid mode arguments:
-                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
-
-                          # Catch anything else as an error
-                          *) func_error "invalid argument for $_G_opt"
-                             exit_cmd=exit
-                             break
-                             ;;
-                        esac
-                        shift
-                        ;;
-
-        --no-silent|--no-quiet)
-                        opt_quiet=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --no-warnings|--no-warning|--no-warn)
-                        opt_warning=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --no-verbose)
-                        opt_verbose=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --silent|--quiet)
-                        opt_quiet=:
-                        opt_verbose=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
-                        opt_tag=$1
-                        func_append preserve_args " $_G_opt $1"
-                        func_enable_tag "$1"
-                        shift
-                        ;;
-
-        --verbose|-v)   opt_quiet=false
-                        opt_verbose=:
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        # An option not handled by this hook function:
-        *)              set dummy "$_G_opt" ${1+"$@"} ; shift
-                        _G_match_lt_parse_options=false
-                        break
-                        ;;
-      esac
-      $_G_match_lt_parse_options && _G_rc_lt_parse_options=:
-    done
-
-    if $_G_rc_lt_parse_options; then
-      # save modified positional parameters for caller
-      func_quote eval ${1+"$@"}
-      libtool_parse_options_result=$func_quote_result
-    fi
-}
-func_add_hook func_parse_options libtool_parse_options
-
-
-
-# libtool_validate_options [ARG]...
-# ---------------------------------
-# Perform any sanity checks on option settings and/or unconsumed
-# arguments.
-libtool_validate_options ()
-{
-    # save first non-option argument
-    if test 0 -lt $#; then
-      nonopt=$1
-      shift
-    fi
-
-    # preserve --debug
-    test : = "$debug_cmd" || func_append preserve_args " --debug"
-
-    case $host in
-      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
-      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
-      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
-        # don't eliminate duplications in $postdeps and $predeps
-        opt_duplicate_compiler_generated_deps=:
-        ;;
-      *)
-        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-        ;;
-    esac
-
-    $opt_help || {
-      # Sanity checks first:
-      func_check_version_match
-
-      test yes != "$build_libtool_libs" \
-        && test yes != "$build_old_libs" \
-        && func_fatal_configuration "not configured to build any kind of library"
-
-      # Darwin sucks
-      eval std_shrext=\"$shrext_cmds\"
-
-      # Only execute mode is allowed to have -dlopen flags.
-      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
-        func_error "unrecognized option '-dlopen'"
-        $ECHO "$help" 1>&2
-        exit $EXIT_FAILURE
-      fi
-
-      # Change the help message to a mode-specific one.
-      generic_help=$help
-      help="Try '$progname --help --mode=$opt_mode' for more information."
-    }
-
-    # Pass back the unparsed argument list
-    func_quote eval ${1+"$@"}
-    libtool_validate_options_result=$func_quote_result
-}
-func_add_hook func_validate_options libtool_validate_options
-
-
-# Process options as early as possible so that --help and --version
-# can return quickly.
-func_options ${1+"$@"}
-eval set dummy "$func_options_result"; shift
-
-
-
-## ----------- ##
-##    Main.    ##
-## ----------- ##
-
-magic='%%%MAGIC variable%%%'
-magic_exe='%%%MAGIC EXE variable%%%'
-
-# Global variables.
-extracted_archives=
-extracted_serial=0
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# func_generated_by_libtool
-# True iff stdin has been generated by Libtool. This function is only
-# a basic sanity check; it will hardly flush out determined imposters.
-func_generated_by_libtool_p ()
-{
-  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
-# func_lalib_p file
-# True iff FILE is a libtool '.la' library or '.lo' object file.
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_lalib_p ()
-{
-    test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
-}
-
-# func_lalib_unsafe_p file
-# True iff FILE is a libtool '.la' library or '.lo' object file.
-# This function implements the same check as func_lalib_p without
-# resorting to external programs.  To this end, it redirects stdin and
-# closes it afterwards, without saving the original file descriptor.
-# As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if 'file' does not exist.
-func_lalib_unsafe_p ()
-{
-    lalib_p=no
-    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
-       for lalib_p_l in 1 2 3 4
-       do
-           read lalib_p_line
-           case $lalib_p_line in
-               \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
-           esac
-       done
-       exec 0<&5 5<&-
-    fi
-    test yes = "$lalib_p"
-}
-
-# func_ltwrapper_script_p file
-# True iff FILE is a libtool wrapper script
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_script_p ()
-{
-    test -f "$1" &&
-      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
-}
-
-# func_ltwrapper_executable_p file
-# True iff FILE is a libtool wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_executable_p ()
-{
-    func_ltwrapper_exec_suffix=
-    case $1 in
-    *.exe) ;;
-    *) func_ltwrapper_exec_suffix=.exe ;;
-    esac
-    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
-}
-
-# func_ltwrapper_scriptname file
-# Assumes file is an ltwrapper_executable
-# uses $file to determine the appropriate filename for a
-# temporary ltwrapper_script.
-func_ltwrapper_scriptname ()
-{
-    func_dirname_and_basename "$1" "" "."
-    func_stripname '' '.exe' "$func_basename_result"
-    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
-}
-
-# func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script or wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_p ()
-{
-    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
-}
-
-
-# func_execute_cmds commands fail_cmd
-# Execute tilde-delimited COMMANDS.
-# If FAIL_CMD is given, eval that upon failure.
-# FAIL_CMD may read-access the current command in variable CMD!
-func_execute_cmds ()
-{
-    $debug_cmd
-
-    save_ifs=$IFS; IFS='~'
-    for cmd in $1; do
-      IFS=$sp$nl
-      eval cmd=\"$cmd\"
-      IFS=$save_ifs
-      func_show_eval "$cmd" "${2-:}"
-    done
-    IFS=$save_ifs
-}
-
-
-# func_source file
-# Source FILE, adding directory component if necessary.
-# Note that it is not necessary on cygwin/mingw to append a dot to
-# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
-# behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# 'FILE.' does not work on cygwin managed mounts.
-func_source ()
-{
-    $debug_cmd
-
-    case $1 in
-    */* | *\\*)        . "$1" ;;
-    *)         . "./$1" ;;
-    esac
-}
-
-
-# func_resolve_sysroot PATH
-# Replace a leading = in PATH with a sysroot.  Store the result into
-# func_resolve_sysroot_result
-func_resolve_sysroot ()
-{
-  func_resolve_sysroot_result=$1
-  case $func_resolve_sysroot_result in
-  =*)
-    func_stripname '=' '' "$func_resolve_sysroot_result"
-    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
-    ;;
-  esac
-}
-
-# func_replace_sysroot PATH
-# If PATH begins with the sysroot, replace it with = and
-# store the result into func_replace_sysroot_result.
-func_replace_sysroot ()
-{
-  case $lt_sysroot:$1 in
-  ?*:"$lt_sysroot"*)
-    func_stripname "$lt_sysroot" '' "$1"
-    func_replace_sysroot_result='='$func_stripname_result
-    ;;
-  *)
-    # Including no sysroot.
-    func_replace_sysroot_result=$1
-    ;;
-  esac
-}
-
-# func_infer_tag arg
-# Infer tagged configuration to use if any are available and
-# if one wasn't chosen via the "--tag" command line option.
-# Only attempt this if the compiler in the base compile
-# command doesn't match the default compiler.
-# arg is usually of the form 'gcc ...'
-func_infer_tag ()
-{
-    $debug_cmd
-
-    if test -n "$available_tags" && test -z "$tagname"; then
-      CC_quoted=
-      for arg in $CC; do
-       func_append_quoted CC_quoted "$arg"
-      done
-      CC_expanded=`func_echo_all $CC`
-      CC_quoted_expanded=`func_echo_all $CC_quoted`
-      case $@ in
-      # Blanks in the command may have been stripped by the calling shell,
-      # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
-      # Blanks at the start of $base_compile will cause this to fail
-      # if we don't check for them as well.
-      *)
-       for z in $available_tags; do
-         if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
-           # Evaluate the configuration.
-           eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
-           CC_quoted=
-           for arg in $CC; do
-             # Double-quote args containing other shell metacharacters.
-             func_append_quoted CC_quoted "$arg"
-           done
-           CC_expanded=`func_echo_all $CC`
-           CC_quoted_expanded=`func_echo_all $CC_quoted`
-           case "$@ " in
-           " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-           " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
-             # The compiler in the base compile command matches
-             # the one in the tagged configuration.
-             # Assume this is the tagged configuration we want.
-             tagname=$z
-             break
-             ;;
-           esac
-         fi
-       done
-       # If $tagname still isn't set, then no tagged configuration
-       # was found and let the user know that the "--tag" command
-       # line option must be used.
-       if test -z "$tagname"; then
-         func_echo "unable to infer tagged configuration"
-         func_fatal_error "specify a tag with '--tag'"
-#      else
-#        func_verbose "using $tagname tagged configuration"
-       fi
-       ;;
-      esac
-    fi
-}
-
-
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
-{
-    write_libobj=$1
-    if test yes = "$build_libtool_libs"; then
-      write_lobj=\'$2\'
-    else
-      write_lobj=none
-    fi
-
-    if test yes = "$build_old_libs"; then
-      write_oldobj=\'$3\'
-    else
-      write_oldobj=none
-    fi
-
-    $opt_dry_run || {
-      cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object=$write_lobj
-
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-
-EOF
-      $MV "${write_libobj}T" "$write_libobj"
-    }
-}
-
-
-##################################################
-# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
-##################################################
-
-# func_convert_core_file_wine_to_w32 ARG
-# Helper function used by file name conversion functions when $build is *nix,
-# and $host is mingw, cygwin, or some other w32 environment. Relies on a
-# correctly configured wine environment available, with the winepath program
-# in $build's $PATH.
-#
-# ARG is the $build file name to be converted to w32 format.
-# Result is available in $func_convert_core_file_wine_to_w32_result, and will
-# be empty on error (or when ARG is empty)
-func_convert_core_file_wine_to_w32 ()
-{
-  $debug_cmd
-
-  func_convert_core_file_wine_to_w32_result=$1
-  if test -n "$1"; then
-    # Unfortunately, winepath does not exit with a non-zero error code, so we
-    # are forced to check the contents of stdout. On the other hand, if the
-    # command is not found, the shell will set an exit code of 127 and print
-    # *an error message* to stdout. So we must check for both error code of
-    # zero AND non-empty stdout, which explains the odd construction:
-    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
-    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
-      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
-        $SED -e "$sed_naive_backslashify"`
-    else
-      func_convert_core_file_wine_to_w32_result=
-    fi
-  fi
-}
-# end: func_convert_core_file_wine_to_w32
-
-
-# func_convert_core_path_wine_to_w32 ARG
-# Helper function used by path conversion functions when $build is *nix, and
-# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
-# configured wine environment available, with the winepath program in $build's
-# $PATH. Assumes ARG has no leading or trailing path separator characters.
-#
-# ARG is path to be converted from $build format to win32.
-# Result is available in $func_convert_core_path_wine_to_w32_result.
-# Unconvertible file (directory) names in ARG are skipped; if no directory names
-# are convertible, then the result may be empty.
-func_convert_core_path_wine_to_w32 ()
-{
-  $debug_cmd
-
-  # unfortunately, winepath doesn't convert paths, only file names
-  func_convert_core_path_wine_to_w32_result=
-  if test -n "$1"; then
-    oldIFS=$IFS
-    IFS=:
-    for func_convert_core_path_wine_to_w32_f in $1; do
-      IFS=$oldIFS
-      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
-      if test -n "$func_convert_core_file_wine_to_w32_result"; then
-        if test -z "$func_convert_core_path_wine_to_w32_result"; then
-          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
-        else
-          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
-        fi
-      fi
-    done
-    IFS=$oldIFS
-  fi
-}
-# end: func_convert_core_path_wine_to_w32
-
-
-# func_cygpath ARGS...
-# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
-# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
-# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
-# (2), returns the Cygwin file name or path in func_cygpath_result (input
-# file name or path is assumed to be in w32 format, as previously converted
-# from $build's *nix or MSYS format). In case (3), returns the w32 file name
-# or path in func_cygpath_result (input file name or path is assumed to be in
-# Cygwin format). Returns an empty string on error.
-#
-# ARGS are passed to cygpath, with the last one being the file name or path to
-# be converted.
-#
-# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
-# environment variable; do not put it in $PATH.
-func_cygpath ()
-{
-  $debug_cmd
-
-  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
-    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
-    if test "$?" -ne 0; then
-      # on failure, ensure result is empty
-      func_cygpath_result=
-    fi
-  else
-    func_cygpath_result=
-    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
-  fi
-}
-#end: func_cygpath
-
-
-# func_convert_core_msys_to_w32 ARG
-# Convert file name or path ARG from MSYS format to w32 format.  Return
-# result in func_convert_core_msys_to_w32_result.
-func_convert_core_msys_to_w32 ()
-{
-  $debug_cmd
-
-  # awkward: cmd appends spaces to result
-  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
-    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
-}
-#end: func_convert_core_msys_to_w32
-
-
-# func_convert_file_check ARG1 ARG2
-# Verify that ARG1 (a file name in $build format) was converted to $host
-# format in ARG2. Otherwise, emit an error message, but continue (resetting
-# func_to_host_file_result to ARG1).
-func_convert_file_check ()
-{
-  $debug_cmd
-
-  if test -z "$2" && test -n "$1"; then
-    func_error "Could not determine host file name corresponding to"
-    func_error "  '$1'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback:
-    func_to_host_file_result=$1
-  fi
-}
-# end func_convert_file_check
-
-
-# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
-# Verify that FROM_PATH (a path in $build format) was converted to $host
-# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
-# func_to_host_file_result to a simplistic fallback value (see below).
-func_convert_path_check ()
-{
-  $debug_cmd
-
-  if test -z "$4" && test -n "$3"; then
-    func_error "Could not determine the host path corresponding to"
-    func_error "  '$3'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback.  This is a deliberately simplistic "conversion" and
-    # should not be "improved".  See libtool.info.
-    if test "x$1" != "x$2"; then
-      lt_replace_pathsep_chars="s|$1|$2|g"
-      func_to_host_path_result=`echo "$3" |
-        $SED -e "$lt_replace_pathsep_chars"`
-    else
-      func_to_host_path_result=$3
-    fi
-  fi
-}
-# end func_convert_path_check
-
-
-# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
-# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
-# and appending REPL if ORIG matches BACKPAT.
-func_convert_path_front_back_pathsep ()
-{
-  $debug_cmd
-
-  case $4 in
-  $1 ) func_to_host_path_result=$3$func_to_host_path_result
-    ;;
-  esac
-  case $4 in
-  $2 ) func_append func_to_host_path_result "$3"
-    ;;
-  esac
-}
-# end func_convert_path_front_back_pathsep
-
-
-##################################################
-# $build to $host FILE NAME CONVERSION FUNCTIONS #
-##################################################
-# invoked via '$to_host_file_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# Result will be available in $func_to_host_file_result.
-
-
-# func_to_host_file ARG
-# Converts the file name ARG from $build format to $host format. Return result
-# in func_to_host_file_result.
-func_to_host_file ()
-{
-  $debug_cmd
-
-  $to_host_file_cmd "$1"
-}
-# end func_to_host_file
-
-
-# func_to_tool_file ARG LAZY
-# converts the file name ARG from $build format to toolchain format. Return
-# result in func_to_tool_file_result.  If the conversion in use is listed
-# in (the comma separated) LAZY, no conversion takes place.
-func_to_tool_file ()
-{
-  $debug_cmd
-
-  case ,$2, in
-    *,"$to_tool_file_cmd",*)
-      func_to_tool_file_result=$1
-      ;;
-    *)
-      $to_tool_file_cmd "$1"
-      func_to_tool_file_result=$func_to_host_file_result
-      ;;
-  esac
-}
-# end func_to_tool_file
-
-
-# func_convert_file_noop ARG
-# Copy ARG to func_to_host_file_result.
-func_convert_file_noop ()
-{
-  func_to_host_file_result=$1
-}
-# end func_convert_file_noop
-
-
-# func_convert_file_msys_to_w32 ARG
-# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_file_result.
-func_convert_file_msys_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_file_result=$1
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_to_host_file_result=$func_convert_core_msys_to_w32_result
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_w32
-
-
-# func_convert_file_cygwin_to_w32 ARG
-# Convert file name ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_file_cygwin_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_file_result=$1
-  if test -n "$1"; then
-    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
-    # LT_CYGPATH in this case.
-    func_to_host_file_result=`cygpath -m "$1"`
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_cygwin_to_w32
-
-
-# func_convert_file_nix_to_w32 ARG
-# Convert file name ARG from *nix to w32 format.  Requires a wine environment
-# and a working winepath. Returns result in func_to_host_file_result.
-func_convert_file_nix_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_file_result=$1
-  if test -n "$1"; then
-    func_convert_core_file_wine_to_w32 "$1"
-    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_w32
-
-
-# func_convert_file_msys_to_cygwin ARG
-# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_file_msys_to_cygwin ()
-{
-  $debug_cmd
-
-  func_to_host_file_result=$1
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_msys_to_w32_result"
-    func_to_host_file_result=$func_cygpath_result
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_cygwin
-
-
-# func_convert_file_nix_to_cygwin ARG
-# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
-# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
-# in func_to_host_file_result.
-func_convert_file_nix_to_cygwin ()
-{
-  $debug_cmd
-
-  func_to_host_file_result=$1
-  if test -n "$1"; then
-    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
-    func_convert_core_file_wine_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
-    func_to_host_file_result=$func_cygpath_result
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_cygwin
-
-
-#############################################
-# $build to $host PATH CONVERSION FUNCTIONS #
-#############################################
-# invoked via '$to_host_path_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# The result will be available in $func_to_host_path_result.
-#
-# Path separators are also converted from $build format to $host format.  If
-# ARG begins or ends with a path separator character, it is preserved (but
-# converted to $host format) on output.
-#
-# All path conversion functions are named using the following convention:
-#   file name conversion function    : func_convert_file_X_to_Y ()
-#   path conversion function         : func_convert_path_X_to_Y ()
-# where, for any given $build/$host combination the 'X_to_Y' value is the
-# same.  If conversion functions are added for new $build/$host combinations,
-# the two new functions must follow this pattern, or func_init_to_host_path_cmd
-# will break.
-
-
-# func_init_to_host_path_cmd
-# Ensures that function "pointer" variable $to_host_path_cmd is set to the
-# appropriate value, based on the value of $to_host_file_cmd.
-to_host_path_cmd=
-func_init_to_host_path_cmd ()
-{
-  $debug_cmd
-
-  if test -z "$to_host_path_cmd"; then
-    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
-    to_host_path_cmd=func_convert_path_$func_stripname_result
-  fi
-}
-
-
-# func_to_host_path ARG
-# Converts the path ARG from $build format to $host format. Return result
-# in func_to_host_path_result.
-func_to_host_path ()
-{
-  $debug_cmd
-
-  func_init_to_host_path_cmd
-  $to_host_path_cmd "$1"
-}
-# end func_to_host_path
-
-
-# func_convert_path_noop ARG
-# Copy ARG to func_to_host_path_result.
-func_convert_path_noop ()
-{
-  func_to_host_path_result=$1
-}
-# end func_convert_path_noop
-
-
-# func_convert_path_msys_to_w32 ARG
-# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_path_result.
-func_convert_path_msys_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_path_result=$1
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from ARG.  MSYS
-    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
-    # and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result=$func_convert_core_msys_to_w32_result
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_msys_to_w32
-
-
-# func_convert_path_cygwin_to_w32 ARG
-# Convert path ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_path_cygwin_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_path_result=$1
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_cygwin_to_w32
-
-
-# func_convert_path_nix_to_w32 ARG
-# Convert path ARG from *nix to w32 format.  Requires a wine environment and
-# a working winepath.  Returns result in func_to_host_file_result.
-func_convert_path_nix_to_w32 ()
-{
-  $debug_cmd
-
-  func_to_host_path_result=$1
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_nix_to_w32
-
-
-# func_convert_path_msys_to_cygwin ARG
-# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_path_msys_to_cygwin ()
-{
-  $debug_cmd
-
-  func_to_host_path_result=$1
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
-    func_to_host_path_result=$func_cygpath_result
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_msys_to_cygwin
-
-
-# func_convert_path_nix_to_cygwin ARG
-# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
-# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
-# func_to_host_file_result.
-func_convert_path_nix_to_cygwin ()
-{
-  $debug_cmd
-
-  func_to_host_path_result=$1
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from
-    # ARG. msys behavior is inconsistent here, cygpath turns them
-    # into '.;' and ';.', and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
-    func_to_host_path_result=$func_cygpath_result
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_nix_to_cygwin
-
-
-# func_dll_def_p FILE
-# True iff FILE is a Windows DLL '.def' file.
-# Keep in sync with _LT_DLL_DEF_P in libtool.m4
-func_dll_def_p ()
-{
-  $debug_cmd
-
-  func_dll_def_p_tmp=`$SED -n \
-    -e 's/^[    ]*//' \
-    -e '/^\(;.*\)*$/d' \
-    -e 's/^\(EXPORTS\|LIBRARY\)\([      ].*\)*$/DEF/p' \
-    -e q \
-    "$1"`
-  test DEF = "$func_dll_def_p_tmp"
-}
-
-
-# func_mode_compile arg...
-func_mode_compile ()
-{
-    $debug_cmd
-
-    # Get the compilation command and the source file.
-    base_compile=
-    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
-    suppress_opt=yes
-    suppress_output=
-    arg_mode=normal
-    libobj=
-    later=
-    pie_flag=
-
-    for arg
-    do
-      case $arg_mode in
-      arg  )
-       # do not "continue".  Instead, add this to base_compile
-       lastarg=$arg
-       arg_mode=normal
-       ;;
-
-      target )
-       libobj=$arg
-       arg_mode=normal
-       continue
-       ;;
-
-      normal )
-       # Accept any command-line options.
-       case $arg in
-       -o)
-         test -n "$libobj" && \
-           func_fatal_error "you cannot specify '-o' more than once"
-         arg_mode=target
-         continue
-         ;;
-
-       -pie | -fpie | -fPIE)
-          func_append pie_flag " $arg"
-         continue
-         ;;
-
-       -shared | -static | -prefer-pic | -prefer-non-pic)
-         func_append later " $arg"
-         continue
-         ;;
-
-       -no-suppress)
-         suppress_opt=no
-         continue
-         ;;
-
-       -Xcompiler)
-         arg_mode=arg  #  the next one goes into the "base_compile" arg list
-         continue      #  The current "srcfile" will either be retained or
-         ;;            #  replaced later.  I would guess that would be a bug.
-
-       -Wc,*)
-         func_stripname '-Wc,' '' "$arg"
-         args=$func_stripname_result
-         lastarg=
-         save_ifs=$IFS; IFS=,
-         for arg in $args; do
-           IFS=$save_ifs
-           func_append_quoted lastarg "$arg"
-         done
-         IFS=$save_ifs
-         func_stripname ' ' '' "$lastarg"
-         lastarg=$func_stripname_result
-
-         # Add the arguments to base_compile.
-         func_append base_compile " $lastarg"
-         continue
-         ;;
-
-       *)
-         # Accept the current argument as the source file.
-         # The previous "srcfile" becomes the current argument.
-         #
-         lastarg=$srcfile
-         srcfile=$arg
-         ;;
-       esac  #  case $arg
-       ;;
-      esac    #  case $arg_mode
-
-      # Aesthetically quote the previous argument.
-      func_append_quoted base_compile "$lastarg"
-    done # for arg
-
-    case $arg_mode in
-    arg)
-      func_fatal_error "you must specify an argument for -Xcompile"
-      ;;
-    target)
-      func_fatal_error "you must specify a target with '-o'"
-      ;;
-    *)
-      # Get the name of the library object.
-      test -z "$libobj" && {
-       func_basename "$srcfile"
-       libobj=$func_basename_result
-      }
-      ;;
-    esac
-
-    # Recognize several different file suffixes.
-    # If the user specifies -o file.o, it is replaced with file.lo
-    case $libobj in
-    *.[cCFSifmso] | \
-    *.ada | *.adb | *.ads | *.asm | \
-    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
-      func_xform "$libobj"
-      libobj=$func_xform_result
-      ;;
-    esac
-
-    case $libobj in
-    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
-    *)
-      func_fatal_error "cannot determine name of library object from '$libobj'"
-      ;;
-    esac
-
-    func_infer_tag $base_compile
-
-    for arg in $later; do
-      case $arg in
-      -shared)
-       test yes = "$build_libtool_libs" \
-         || func_fatal_configuration "cannot build a shared library"
-       build_old_libs=no
-       continue
-       ;;
-
-      -static)
-       build_libtool_libs=no
-       build_old_libs=yes
-       continue
-       ;;
-
-      -prefer-pic)
-       pic_mode=yes
-       continue
-       ;;
-
-      -prefer-non-pic)
-       pic_mode=no
-       continue
-       ;;
-      esac
-    done
-
-    func_quote_arg pretty "$libobj"
-    test "X$libobj" != "X$func_quote_arg_result" \
-      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'   &()|`$[]' \
-      && func_warning "libobj name '$libobj' may not contain shell special characters."
-    func_dirname_and_basename "$obj" "/" ""
-    objname=$func_basename_result
-    xdir=$func_dirname_result
-    lobj=$xdir$objdir/$objname
-
-    test -z "$base_compile" && \
-      func_fatal_help "you must specify a compilation command"
-
-    # Delete any leftover library objects.
-    if test yes = "$build_old_libs"; then
-      removelist="$obj $lobj $libobj ${libobj}T"
-    else
-      removelist="$lobj $libobj ${libobj}T"
-    fi
-
-    # On Cygwin there's no "real" PIC flag so we must build both object types
-    case $host_os in
-    cygwin* | mingw* | pw32* | os2* | cegcc*)
-      pic_mode=default
-      ;;
-    esac
-    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
-      # non-PIC code in shared libraries is not supported
-      pic_mode=default
-    fi
-
-    # Calculate the filename of the output object if compiler does
-    # not support -o with -c
-    if test no = "$compiler_c_o"; then
-      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
-      lockfile=$output_obj.lock
-    else
-      output_obj=
-      need_locks=no
-      lockfile=
-    fi
-
-    # Lock this critical section if it is needed
-    # We use this script file to make the link, it avoids creating a new file
-    if test yes = "$need_locks"; then
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-       func_echo "Waiting for $lockfile to be removed"
-       sleep 2
-      done
-    elif test warn = "$need_locks"; then
-      if test -f "$lockfile"; then
-       $ECHO "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support '-c' and '-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-       $opt_dry_run || $RM $removelist
-       exit $EXIT_FAILURE
-      fi
-      func_append removelist " $output_obj"
-      $ECHO "$srcfile" > "$lockfile"
-    fi
-
-    $opt_dry_run || $RM $removelist
-    func_append removelist " $lockfile"
-    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
-    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
-    srcfile=$func_to_tool_file_result
-    func_quote_arg pretty "$srcfile"
-    qsrcfile=$func_quote_arg_result
-
-    # Only build a PIC object if we are building libtool libraries.
-    if test yes = "$build_libtool_libs"; then
-      # Without this assignment, base_compile gets emptied.
-      fbsd_hideous_sh_bug=$base_compile
-
-      if test no != "$pic_mode"; then
-       command="$base_compile $qsrcfile $pic_flag"
-      else
-       # Don't build PIC code
-       command="$base_compile $qsrcfile"
-      fi
-
-      func_mkdir_p "$xdir$objdir"
-
-      if test -z "$output_obj"; then
-       # Place PIC objects in $objdir
-       func_append command " -o $lobj"
-      fi
-
-      func_show_eval_locale "$command" \
-          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
-
-      if test warn = "$need_locks" &&
-        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-       $ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support '-c' and '-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-       $opt_dry_run || $RM $removelist
-       exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed, then go on to compile the next one
-      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
-       func_show_eval '$MV "$output_obj" "$lobj"' \
-         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-
-      # Allow error messages only from the first compilation.
-      if test yes = "$suppress_opt"; then
-       suppress_output=' >/dev/null 2>&1'
-      fi
-    fi
-
-    # Only build a position-dependent object if we build old libraries.
-    if test yes = "$build_old_libs"; then
-      if test yes != "$pic_mode"; then
-       # Don't build PIC code
-       command="$base_compile $qsrcfile$pie_flag"
-      else
-       command="$base_compile $qsrcfile $pic_flag"
-      fi
-      if test yes = "$compiler_c_o"; then
-       func_append command " -o $obj"
-      fi
-
-      # Suppress compiler output if we already did a PIC compilation.
-      func_append command "$suppress_output"
-      func_show_eval_locale "$command" \
-        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
-      if test warn = "$need_locks" &&
-        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-       $ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support '-c' and '-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-       $opt_dry_run || $RM $removelist
-       exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed
-      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
-       func_show_eval '$MV "$output_obj" "$obj"' \
-         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-    fi
-
-    $opt_dry_run || {
-      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
-
-      # Unlock the critical section if it was locked
-      if test no != "$need_locks"; then
-       removelist=$lockfile
-        $RM "$lockfile"
-      fi
-    }
-
-    exit $EXIT_SUCCESS
-}
-
-$opt_help || {
-  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
-    # We need to display help for each of the modes.
-    case $opt_mode in
-      "")
-        # Generic help is extracted from the usage comments
-        # at the start of this file.
-        func_help
-        ;;
-
-      clean)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      compile)
-      $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
-  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-  -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to build PIC objects only
-  -prefer-non-pic   try to build non-PIC objects only
-  -shared           do not build a '.o' file suitable for static linking
-  -static           only build a '.o' file suitable for static linking
-  -Wc,FLAG          pass FLAG directly to the compiler
-
-COMPILE-COMMAND is a command to be used in creating a 'standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix '.c' with the
-library object suffix, '.lo'."
-        ;;
-
-      execute)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
-  -dlopen FILE      add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to '-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
-        ;;
-
-      finish)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges.  Use
-the '--dry-run' option if you just want to see what would be executed."
-        ;;
-
-      install)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command.  The first component should be
-either the 'install' or 'cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
-  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
-        ;;
-
-      link)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
-  -all-static       do not do any dynamic linking at all
-  -avoid-version    do not add a version suffix if possible
-  -bindir BINDIR    specify path to binaries directory (for systems where
-                    libraries must be found in the PATH setting at runtime)
-  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
-  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-  -export-symbols SYMFILE
-                    try to export only the symbols listed in SYMFILE
-  -export-symbols-regex REGEX
-                    try to export only the symbols matching REGEX
-  -LLIBDIR          search LIBDIR for required installed libraries
-  -lNAME            OUTPUT-FILE requires the installed library libNAME
-  -module           build a library that can dlopened
-  -no-fast-install  disable the fast-install mode
-  -no-install       link a not-installable executable
-  -no-undefined     declare that a library does not refer to external symbols
-  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  use a list of object files found in FILE to specify objects
-  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
-  -precious-files-regex REGEX
-                    don't remove output files matching REGEX
-  -release RELEASE  specify package release information
-  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -shared           only do dynamic linking of libtool libraries
-  -shrext SUFFIX    override the standard shared library file extension
-  -static           do not do any dynamic linking of uninstalled libtool libraries
-  -static-libtool-libs
-                    do not do any dynamic linking of libtool libraries
-  -version-info CURRENT[:REVISION[:AGE]]
-                    specify library version info [each variable defaults to 0]
-  -weak LIBNAME     declare that the target provides the LIBNAME interface
-  -Wc,FLAG
-  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
-  -Wl,FLAG
-  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
-  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
-
-All other options (arguments beginning with '-') are ignored.
-
-Every other argument is treated as a filename.  Files ending in '.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in '.la', then a libtool library is created,
-only library objects ('.lo' files) may be specified, and '-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
-using 'ar' and 'ranlib', or on Windows using 'lib'.
-
-If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
-is created, otherwise an executable program is created."
-        ;;
-
-      uninstall)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      *)
-        func_fatal_help "invalid operation mode '$opt_mode'"
-        ;;
-    esac
-
-    echo
-    $ECHO "Try '$progname --help' for more information about other modes."
-}
-
-# Now that we've collected a possible --mode arg, show help if necessary
-if $opt_help; then
-  if test : = "$opt_help"; then
-    func_mode_help
-  else
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-       func_mode_help
-      done
-    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-       echo
-       func_mode_help
-      done
-    } |
-    $SED '1d
-      /^When reporting/,/^Report/{
-       H
-       d
-      }
-      $x
-      /information about other modes/d
-      /more detailed .*MODE/d
-      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
-  fi
-  exit $?
-fi
-
-
-# func_mode_execute arg...
-func_mode_execute ()
-{
-    $debug_cmd
-
-    # The first argument is the command name.
-    cmd=$nonopt
-    test -z "$cmd" && \
-      func_fatal_help "you must specify a COMMAND"
-
-    # Handle -dlopen flags immediately.
-    for file in $opt_dlopen; do
-      test -f "$file" \
-       || func_fatal_help "'$file' is not a file"
-
-      dir=
-      case $file in
-      *.la)
-       func_resolve_sysroot "$file"
-       file=$func_resolve_sysroot_result
-
-       # Check to see that this really is a libtool archive.
-       func_lalib_unsafe_p "$file" \
-         || func_fatal_help "'$lib' is not a valid libtool archive"
-
-       # Read the libtool library.
-       dlname=
-       library_names=
-       func_source "$file"
-
-       # Skip this library if it cannot be dlopened.
-       if test -z "$dlname"; then
-         # Warn if it was a shared library.
-         test -n "$library_names" && \
-           func_warning "'$file' was not linked with '-export-dynamic'"
-         continue
-       fi
-
-       func_dirname "$file" "" "."
-       dir=$func_dirname_result
-
-       if test -f "$dir/$objdir/$dlname"; then
-         func_append dir "/$objdir"
-       else
-         if test ! -f "$dir/$dlname"; then
-           func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
-         fi
-       fi
-       ;;
-
-      *.lo)
-       # Just add the directory containing the .lo file.
-       func_dirname "$file" "" "."
-       dir=$func_dirname_result
-       ;;
-
-      *)
-       func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
-       continue
-       ;;
-      esac
-
-      # Get the absolute pathname.
-      absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir=$absdir
-
-      # Now add the directory to shlibpath_var.
-      if eval "test -z \"\$$shlibpath_var\""; then
-       eval "$shlibpath_var=\"\$dir\""
-      else
-       eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
-      fi
-    done
-
-    # This variable tells wrapper scripts just to set shlibpath_var
-    # rather than running their programs.
-    libtool_execute_magic=$magic
-
-    # Check if any of the arguments is a wrapper script.
-    args=
-    for file
-    do
-      case $file in
-      -* | *.la | *.lo ) ;;
-      *)
-       # Do a test to see if this is really a libtool program.
-       if func_ltwrapper_script_p "$file"; then
-         func_source "$file"
-         # Transform arg to wrapped name.
-         file=$progdir/$program
-       elif func_ltwrapper_executable_p "$file"; then
-         func_ltwrapper_scriptname "$file"
-         func_source "$func_ltwrapper_scriptname_result"
-         # Transform arg to wrapped name.
-         file=$progdir/$program
-       fi
-       ;;
-      esac
-      # Quote arguments (to preserve shell metacharacters).
-      func_append_quoted args "$file"
-    done
-
-    if $opt_dry_run; then
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-       eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-       echo "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
-    else
-      if test -n "$shlibpath_var"; then
-       # Export the shlibpath_var.
-       eval "export $shlibpath_var"
-      fi
-
-      # Restore saved environment variables
-      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-      do
-       eval "if test \"\${save_$lt_var+set}\" = set; then
-                $lt_var=\$save_$lt_var; export $lt_var
-             else
-               $lt_unset $lt_var
-             fi"
-      done
-
-      # Now prepare to actually exec the command.
-      exec_cmd=\$cmd$args
-    fi
-}
-
-test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
-    $debug_cmd
-
-    libs=
-    libdirs=
-    admincmds=
-
-    for opt in "$nonopt" ${1+"$@"}
-    do
-      if test -d "$opt"; then
-       func_append libdirs " $opt"
-
-      elif test -f "$opt"; then
-       if func_lalib_unsafe_p "$opt"; then
-         func_append libs " $opt"
-       else
-         func_warning "'$opt' is not a valid libtool archive"
-       fi
-
-      else
-       func_fatal_error "invalid argument '$opt'"
-      fi
-    done
-
-    if test -n "$libs"; then
-      if test -n "$lt_sysroot"; then
-        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
-        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
-      else
-        sysroot_cmd=
-      fi
-
-      # Remove sysroot references
-      if $opt_dry_run; then
-        for lib in $libs; do
-          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
-        done
-      else
-        tmpdir=`func_mktempdir`
-        for lib in $libs; do
-         $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
-           > $tmpdir/tmp-la
-         mv -f $tmpdir/tmp-la $lib
-       done
-        ${RM}r "$tmpdir"
-      fi
-    fi
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for libdir in $libdirs; do
-       if test -n "$finish_cmds"; then
-         # Do each command in the finish commands.
-         func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
-'"$cmd"'"'
-       fi
-       if test -n "$finish_eval"; then
-         # Do the single finish_eval.
-         eval cmds=\"$finish_eval\"
-         $opt_dry_run || eval "$cmds" || func_append admincmds "
-       $cmds"
-       fi
-      done
-    fi
-
-    # Exit here if they wanted silent mode.
-    $opt_quiet && exit $EXIT_SUCCESS
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      echo "----------------------------------------------------------------------"
-      echo "Libraries have been installed in:"
-      for libdir in $libdirs; do
-       $ECHO "   $libdir"
-      done
-      echo
-      echo "If you ever happen to want to link against installed libraries"
-      echo "in a given directory, LIBDIR, you must either use libtool, and"
-      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
-      echo "flag during linking and do at least one of the following:"
-      if test -n "$shlibpath_var"; then
-       echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
-       echo "     during execution"
-      fi
-      if test -n "$runpath_var"; then
-       echo "   - add LIBDIR to the '$runpath_var' environment variable"
-       echo "     during linking"
-      fi
-      if test -n "$hardcode_libdir_flag_spec"; then
-       libdir=LIBDIR
-       eval flag=\"$hardcode_libdir_flag_spec\"
-
-       $ECHO "   - use the '$flag' linker flag"
-      fi
-      if test -n "$admincmds"; then
-       $ECHO "   - have your system administrator run these commands:$admincmds"
-      fi
-      if test -f /etc/ld.so.conf; then
-       echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
-      fi
-      echo
-
-      echo "See any operating system documentation about shared libraries for"
-      case $host in
-       solaris2.[6789]|solaris2.1[0-9])
-         echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-         echo "pages."
-         ;;
-       *)
-         echo "more information, such as the ld(1) and ld.so(8) manual pages."
-         ;;
-      esac
-      echo "----------------------------------------------------------------------"
-    fi
-    exit $EXIT_SUCCESS
-}
-
-test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
-
-
-# func_mode_install arg...
-func_mode_install ()
-{
-    $debug_cmd
-
-    # There may be an optional sh(1) argument at the beginning of
-    # install_prog (especially on Windows NT).
-    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
-       # Allow the use of GNU shtool's install command.
-       case $nonopt in *shtool*) :;; *) false;; esac
-    then
-      # Aesthetically quote it.
-      func_quote_arg pretty "$nonopt"
-      install_prog="$func_quote_arg_result "
-      arg=$1
-      shift
-    else
-      install_prog=
-      arg=$nonopt
-    fi
-
-    # The real first argument should be the name of the installation program.
-    # Aesthetically quote it.
-    func_quote_arg pretty "$arg"
-    func_append install_prog "$func_quote_arg_result"
-    install_shared_prog=$install_prog
-    case " $install_prog " in
-      *[\\\ /]cp\ *) install_cp=: ;;
-      *) install_cp=false ;;
-    esac
-
-    # We need to accept at least all the BSD install flags.
-    dest=
-    files=
-    opts=
-    prev=
-    install_type=
-    isdir=false
-    stripme=
-    no_mode=:
-    for arg
-    do
-      arg2=
-      if test -n "$dest"; then
-       func_append files " $dest"
-       dest=$arg
-       continue
-      fi
-
-      case $arg in
-      -d) isdir=: ;;
-      -f)
-       if $install_cp; then :; else
-         prev=$arg
-       fi
-       ;;
-      -g | -m | -o)
-       prev=$arg
-       ;;
-      -s)
-       stripme=" -s"
-       continue
-       ;;
-      -*)
-       ;;
-      *)
-       # If the previous option needed an argument, then skip it.
-       if test -n "$prev"; then
-         if test X-m = "X$prev" && test -n "$install_override_mode"; then
-           arg2=$install_override_mode
-           no_mode=false
-         fi
-         prev=
-       else
-         dest=$arg
-         continue
-       fi
-       ;;
-      esac
-
-      # Aesthetically quote the argument.
-      func_quote_arg pretty "$arg"
-      func_append install_prog " $func_quote_arg_result"
-      if test -n "$arg2"; then
-       func_quote_arg pretty "$arg2"
-      fi
-      func_append install_shared_prog " $func_quote_arg_result"
-    done
-
-    test -z "$install_prog" && \
-      func_fatal_help "you must specify an install program"
-
-    test -n "$prev" && \
-      func_fatal_help "the '$prev' option requires an argument"
-
-    if test -n "$install_override_mode" && $no_mode; then
-      if $install_cp; then :; else
-       func_quote_arg pretty "$install_override_mode"
-       func_append install_shared_prog " -m $func_quote_arg_result"
-      fi
-    fi
-
-    if test -z "$files"; then
-      if test -z "$dest"; then
-       func_fatal_help "no file or destination specified"
-      else
-       func_fatal_help "you must specify a destination"
-      fi
-    fi
-
-    # Strip any trailing slash from the destination.
-    func_stripname '' '/' "$dest"
-    dest=$func_stripname_result
-
-    # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=:
-    if $isdir; then
-      destdir=$dest
-      destname=
-    else
-      func_dirname_and_basename "$dest" "" "."
-      destdir=$func_dirname_result
-      destname=$func_basename_result
-
-      # Not a directory, so check to see that there is only one file specified.
-      set dummy $files; shift
-      test "$#" -gt 1 && \
-       func_fatal_help "'$dest' is not a directory"
-    fi
-    case $destdir in
-    [\\/]* | [A-Za-z]:[\\/]*) ;;
-    *)
-      for file in $files; do
-       case $file in
-       *.lo) ;;
-       *)
-         func_fatal_help "'$destdir' must be an absolute directory name"
-         ;;
-       esac
-      done
-      ;;
-    esac
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic=$magic
-
-    staticlibs=
-    future_libdirs=
-    current_libdirs=
-    for file in $files; do
-
-      # Do each installation.
-      case $file in
-      *.$libext)
-       # Do the static libraries later.
-       func_append staticlibs " $file"
-       ;;
-
-      *.la)
-       func_resolve_sysroot "$file"
-       file=$func_resolve_sysroot_result
-
-       # Check to see that this really is a libtool archive.
-       func_lalib_unsafe_p "$file" \
-         || func_fatal_help "'$file' is not a valid libtool archive"
-
-       library_names=
-       old_library=
-       relink_command=
-       func_source "$file"
-
-       # Add the libdir to current_libdirs if it is the destination.
-       if test "X$destdir" = "X$libdir"; then
-         case "$current_libdirs " in
-         *" $libdir "*) ;;
-         *) func_append current_libdirs " $libdir" ;;
-         esac
-       else
-         # Note the libdir as a future libdir.
-         case "$future_libdirs " in
-         *" $libdir "*) ;;
-         *) func_append future_libdirs " $libdir" ;;
-         esac
-       fi
-
-       func_dirname "$file" "/" ""
-       dir=$func_dirname_result
-       func_append dir "$objdir"
-
-       if test -n "$relink_command"; then
-         # Determine the prefix the user has applied to our future dir.
-         inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
-
-         # Don't allow the user to place us outside of our expected
-         # location b/c this prevents finding dependent libraries that
-         # are installed to the same prefix.
-         # At present, this check doesn't affect windows .dll's that
-         # are installed into $libdir/../bin (currently, that works fine)
-         # but it's something to keep an eye on.
-         test "$inst_prefix_dir" = "$destdir" && \
-           func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
-
-         if test -n "$inst_prefix_dir"; then
-           # Stick the inst_prefix_dir data into the link command.
-           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-         else
-           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
-         fi
-
-         func_warning "relinking '$file'"
-         func_show_eval "$relink_command" \
-           'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
-       fi
-
-       # See the names of the shared library.
-       set dummy $library_names; shift
-       if test -n "$1"; then
-         realname=$1
-         shift
-
-         srcname=$realname
-         test -n "$relink_command" && srcname=${realname}T
-
-         # Install the shared library and build the symlinks.
-         func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
-             'exit $?'
-         tstripme=$stripme
-         case $host_os in
-         cygwin* | mingw* | pw32* | cegcc*)
-           case $realname in
-           *.dll.a)
-             tstripme=
-             ;;
-           esac
-           ;;
-         os2*)
-           case $realname in
-           *_dll.a)
-             tstripme=
-             ;;
-           esac
-           ;;
-         esac
-         if test -n "$tstripme" && test -n "$striplib"; then
-           func_show_eval "$striplib $destdir/$realname" 'exit $?'
-         fi
-
-         if test "$#" -gt 0; then
-           # Delete the old symlinks, and create new ones.
-           # Try 'ln -sf' first, because the 'ln' binary might depend on
-           # the symlink we replace!  Solaris /bin/ln does not understand -f,
-           # so we also need to try rm && ln -s.
-           for linkname
-           do
-             test "$linkname" != "$realname" \
-               && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
-           done
-         fi
-
-         # Do each command in the postinstall commands.
-         lib=$destdir/$realname
-         func_execute_cmds "$postinstall_cmds" 'exit $?'
-       fi
-
-       # Install the pseudo-library for information purposes.
-       func_basename "$file"
-       name=$func_basename_result
-       instname=$dir/${name}i
-       func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
-       # Maybe install the static library, too.
-       test -n "$old_library" && func_append staticlibs " $dir/$old_library"
-       ;;
-
-      *.lo)
-       # Install (i.e. copy) a libtool object.
-
-       # Figure out destination file name, if it wasn't already specified.
-       if test -n "$destname"; then
-         destfile=$destdir/$destname
-       else
-         func_basename "$file"
-         destfile=$func_basename_result
-         destfile=$destdir/$destfile
-       fi
-
-       # Deduce the name of the destination old-style object file.
-       case $destfile in
-       *.lo)
-         func_lo2o "$destfile"
-         staticdest=$func_lo2o_result
-         ;;
-       *.$objext)
-         staticdest=$destfile
-         destfile=
-         ;;
-       *)
-         func_fatal_help "cannot copy a libtool object to '$destfile'"
-         ;;
-       esac
-
-       # Install the libtool object if requested.
-       test -n "$destfile" && \
-         func_show_eval "$install_prog $file $destfile" 'exit $?'
-
-       # Install the old object if enabled.
-       if test yes = "$build_old_libs"; then
-         # Deduce the name of the old-style object file.
-         func_lo2o "$file"
-         staticobj=$func_lo2o_result
-         func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
-       fi
-       exit $EXIT_SUCCESS
-       ;;
-
-      *)
-       # Figure out destination file name, if it wasn't already specified.
-       if test -n "$destname"; then
-         destfile=$destdir/$destname
-       else
-         func_basename "$file"
-         destfile=$func_basename_result
-         destfile=$destdir/$destfile
-       fi
-
-       # If the file is missing, and there is a .exe on the end, strip it
-       # because it is most likely a libtool script we actually want to
-       # install
-       stripped_ext=
-       case $file in
-         *.exe)
-           if test ! -f "$file"; then
-             func_stripname '' '.exe' "$file"
-             file=$func_stripname_result
-             stripped_ext=.exe
-           fi
-           ;;
-       esac
-
-       # Do a test to see if this is really a libtool program.
-       case $host in
-       *cygwin* | *mingw*)
-           if func_ltwrapper_executable_p "$file"; then
-             func_ltwrapper_scriptname "$file"
-             wrapper=$func_ltwrapper_scriptname_result
-           else
-             func_stripname '' '.exe' "$file"
-             wrapper=$func_stripname_result
-           fi
-           ;;
-       *)
-           wrapper=$file
-           ;;
-       esac
-       if func_ltwrapper_script_p "$wrapper"; then
-         notinst_deplibs=
-         relink_command=
-
-         func_source "$wrapper"
-
-         # Check the variables that should have been set.
-         test -z "$generated_by_libtool_version" && \
-           func_fatal_error "invalid libtool wrapper script '$wrapper'"
-
-         finalize=:
-         for lib in $notinst_deplibs; do
-           # Check to see that each library is installed.
-           libdir=
-           if test -f "$lib"; then
-             func_source "$lib"
-           fi
-           libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
-           if test -n "$libdir" && test ! -f "$libfile"; then
-             func_warning "'$lib' has not been installed in '$libdir'"
-             finalize=false
-           fi
-         done
-
-         relink_command=
-         func_source "$wrapper"
-
-         outputname=
-         if test no = "$fast_install" && test -n "$relink_command"; then
-           $opt_dry_run || {
-             if $finalize; then
-               tmpdir=`func_mktempdir`
-               func_basename "$file$stripped_ext"
-               file=$func_basename_result
-               outputname=$tmpdir/$file
-               # Replace the output file specification.
-               relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
-
-               $opt_quiet || {
-                 func_quote_arg expand,pretty "$relink_command"
-                 eval "func_echo $func_quote_arg_result"
-               }
-               if eval "$relink_command"; then :
-                 else
-                 func_error "error: relink '$file' with the above command before installing it"
-                 $opt_dry_run || ${RM}r "$tmpdir"
-                 continue
-               fi
-               file=$outputname
-             else
-               func_warning "cannot relink '$file'"
-             fi
-           }
-         else
-           # Install the binary that we compiled earlier.
-           file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
-         fi
-       fi
-
-       # remove .exe since cygwin /usr/bin/install will append another
-       # one anyway
-       case $install_prog,$host in
-       */usr/bin/install*,*cygwin*)
-         case $file:$destfile in
-         *.exe:*.exe)
-           # this is ok
-           ;;
-         *.exe:*)
-           destfile=$destfile.exe
-           ;;
-         *:*.exe)
-           func_stripname '' '.exe' "$destfile"
-           destfile=$func_stripname_result
-           ;;
-         esac
-         ;;
-       esac
-       func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
-       $opt_dry_run || if test -n "$outputname"; then
-         ${RM}r "$tmpdir"
-       fi
-       ;;
-      esac
-    done
-
-    for file in $staticlibs; do
-      func_basename "$file"
-      name=$func_basename_result
-
-      # Set up the ranlib parameters.
-      oldlib=$destdir/$name
-      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-      tool_oldlib=$func_to_tool_file_result
-
-      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-       func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
-      fi
-
-      # Do each command in the postinstall commands.
-      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
-    done
-
-    test -n "$future_libdirs" && \
-      func_warning "remember to run '$progname --finish$future_libdirs'"
-
-    if test -n "$current_libdirs"; then
-      # Maybe just do a dry run.
-      $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
-    else
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test install = "$opt_mode" && func_mode_install ${1+"$@"}
-
-
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
-{
-    $debug_cmd
-
-    my_outputname=$1
-    my_originator=$2
-    my_pic_p=${3-false}
-    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
-    my_dlsyms=
-
-    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
-      if test -n "$NM" && test -n "$global_symbol_pipe"; then
-       my_dlsyms=${my_outputname}S.c
-      else
-       func_error "not configured to extract global symbols from dlpreopened files"
-      fi
-    fi
-
-    if test -n "$my_dlsyms"; then
-      case $my_dlsyms in
-      "") ;;
-      *.c)
-       # Discover the nlist of each of the dlfiles.
-       nlist=$output_objdir/$my_outputname.nm
-
-       func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
-
-       # Parse the name list into a source file.
-       func_verbose "creating $output_objdir/$my_dlsyms"
-
-       $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
-#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
-#endif
-
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
-/* DATA imports from DLLs on WIN32 can't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined __osf__
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
-
-/* External symbol declarations for the compiler. */\
-"
-
-       if test yes = "$dlself"; then
-         func_verbose "generating symbol list for '$output'"
-
-         $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
-
-         # Add our own program objects to the symbol list.
-         progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-         for progfile in $progfiles; do
-           func_to_tool_file "$progfile" func_convert_file_msys_to_w32
-           func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
-           $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
-         done
-
-         if test -n "$exclude_expsyms"; then
-           $opt_dry_run || {
-             eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-           }
-         fi
-
-         if test -n "$export_symbols_regex"; then
-           $opt_dry_run || {
-             eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-           }
-         fi
-
-         # Prepare the list of exported symbols
-         if test -z "$export_symbols"; then
-           export_symbols=$output_objdir/$outputname.exp
-           $opt_dry_run || {
-             $RM $export_symbols
-             eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-             case $host in
-             *cygwin* | *mingw* | *cegcc* )
-                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
-               ;;
-             esac
-           }
-         else
-           $opt_dry_run || {
-             eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-             eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-             case $host in
-               *cygwin* | *mingw* | *cegcc* )
-                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
-                 ;;
-             esac
-           }
-         fi
-       fi
-
-       for dlprefile in $dlprefiles; do
-         func_verbose "extracting global C symbols from '$dlprefile'"
-         func_basename "$dlprefile"
-         name=$func_basename_result
-          case $host in
-           *cygwin* | *mingw* | *cegcc* )
-             # if an import library, we need to obtain dlname
-             if func_win32_import_lib_p "$dlprefile"; then
-               func_tr_sh "$dlprefile"
-               eval "curr_lafile=\$libfile_$func_tr_sh_result"
-               dlprefile_dlbasename=
-               if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
-                 # Use subshell, to avoid clobbering current variable values
-                 dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
-                 if test -n "$dlprefile_dlname"; then
-                   func_basename "$dlprefile_dlname"
-                   dlprefile_dlbasename=$func_basename_result
-                 else
-                   # no lafile. user explicitly requested -dlpreopen <import library>.
-                   $sharedlib_from_linklib_cmd "$dlprefile"
-                   dlprefile_dlbasename=$sharedlib_from_linklib_result
-                 fi
-               fi
-               $opt_dry_run || {
-                 if test -n "$dlprefile_dlbasename"; then
-                   eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
-                 else
-                   func_warning "Could not compute DLL name from $name"
-                   eval '$ECHO ": $name " >> "$nlist"'
-                 fi
-                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
-                   $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
-               }
-             else # not an import lib
-               $opt_dry_run || {
-                 eval '$ECHO ": $name " >> "$nlist"'
-                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-               }
-             fi
-           ;;
-           *)
-             $opt_dry_run || {
-               eval '$ECHO ": $name " >> "$nlist"'
-               func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-               eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-             }
-           ;;
-          esac
-       done
-
-       $opt_dry_run || {
-         # Make sure we have at least an empty file.
-         test -f "$nlist" || : > "$nlist"
-
-         if test -n "$exclude_expsyms"; then
-           $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-           $MV "$nlist"T "$nlist"
-         fi
-
-         # Try sorting and uniquifying the output.
-         if $GREP -v "^: " < "$nlist" |
-             if sort -k 3 </dev/null >/dev/null 2>&1; then
-               sort -k 3
-             else
-               sort +2
-             fi |
-             uniq > "$nlist"S; then
-           :
-         else
-           $GREP -v "^: " < "$nlist" > "$nlist"S
-         fi
-
-         if test -f "$nlist"S; then
-           eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
-         else
-           echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
-         fi
-
-         func_show_eval '$RM "${nlist}I"'
-         if test -n "$global_symbol_to_import"; then
-           eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
-         fi
-
-         echo >> "$output_objdir/$my_dlsyms" "\
-
-/* The mapping between symbol names and symbols.  */
-typedef struct {
-  const char *name;
-  void *address;
-} lt_dlsymlist;
-extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];\
-"
-
-         if test -s "$nlist"I; then
-           echo >> "$output_objdir/$my_dlsyms" "\
-static void lt_syminit(void)
-{
-  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
-  for (; symbol->name; ++symbol)
-    {"
-           $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
-           echo >> "$output_objdir/$my_dlsyms" "\
-    }
-}"
-         fi
-         echo >> "$output_objdir/$my_dlsyms" "\
-LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{ {\"$my_originator\", (void *) 0},"
-
-         if test -s "$nlist"I; then
-           echo >> "$output_objdir/$my_dlsyms" "\
-  {\"@INIT@\", (void *) &lt_syminit},"
-         fi
-
-         case $need_lib_prefix in
-         no)
-           eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
-           ;;
-         *)
-           eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
-           ;;
-         esac
-         echo >> "$output_objdir/$my_dlsyms" "\
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt_${my_prefix}_LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
-       } # !$opt_dry_run
-
-       pic_flag_for_symtable=
-       case "$compile_command " in
-       *" -static "*) ;;
-       *)
-         case $host in
-         # compiling the symbol table file with pic_flag works around
-         # a FreeBSD bug that causes programs to crash when -lm is
-         # linked before any other PIC object.  But we must not use
-         # pic_flag when linking with -static.  The problem exists in
-         # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-         *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-           pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
-         *-*-hpux*)
-           pic_flag_for_symtable=" $pic_flag"  ;;
-         *)
-           $my_pic_p && pic_flag_for_symtable=" $pic_flag"
-           ;;
-         esac
-         ;;
-       esac
-       symtab_cflags=
-       for arg in $LTCFLAGS; do
-         case $arg in
-         -pie | -fpie | -fPIE) ;;
-         *) func_append symtab_cflags " $arg" ;;
-         esac
-       done
-
-       # Now compile the dynamic symbol file.
-       func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
-
-       # Clean up the generated files.
-       func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
-
-       # Transform the symbol file into the correct name.
-       symfileobj=$output_objdir/${my_outputname}S.$objext
-       case $host in
-       *cygwin* | *mingw* | *cegcc* )
-         if test -f "$output_objdir/$my_outputname.def"; then
-           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-         else
-           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-         fi
-         ;;
-       *)
-         compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-         finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-         ;;
-       esac
-       ;;
-      *)
-       func_fatal_error "unknown suffix for '$my_dlsyms'"
-       ;;
-      esac
-    else
-      # We keep going just in case the user didn't refer to
-      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-      # really was required.
-
-      # Nullify the symbol file.
-      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
-    fi
-}
-
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
-  $debug_cmd
-
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
-  test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
-  $debug_cmd
-
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
-  test -n "$func_cygming_ms_implib_tmp"
-}
-
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-# Despite the name, also deal with 64 bit binaries.
-func_win32_libid ()
-{
-  $debug_cmd
-
-  win32_libid_type=unknown
-  win32_fileres=`file -L $1 2>/dev/null`
-  case $win32_fileres in
-  *ar\ archive\ import\ library*) # definitely import
-    win32_libid_type="x86 archive import"
-    ;;
-  *ar\ archive*) # could be an import, or static
-    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-      case $nm_interface in
-      "MS dumpbin")
-       if func_cygming_ms_implib_p "$1" ||
-          func_cygming_gnu_implib_p "$1"
-       then
-         win32_nmres=import
-       else
-         win32_nmres=
-       fi
-       ;;
-      *)
-       func_to_tool_file "$1" func_convert_file_msys_to_w32
-       win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
-         $SED -n -e '
-           1,100{
-               / I /{
-                   s|.*|import|
-                   p
-                   q
-               }
-           }'`
-       ;;
-      esac
-      case $win32_nmres in
-      import*)  win32_libid_type="x86 archive import";;
-      *)        win32_libid_type="x86 archive static";;
-      esac
-    fi
-    ;;
-  *DLL*)
-    win32_libid_type="x86 DLL"
-    ;;
-  *executable*) # but shell scripts are "executable" too...
-    case $win32_fileres in
-    *MS\ Windows\ PE\ Intel*)
-      win32_libid_type="x86 DLL"
-      ;;
-    esac
-    ;;
-  esac
-  $ECHO "$win32_libid_type"
-}
-
-# func_cygming_dll_for_implib ARG
-#
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib ()
-{
-  $debug_cmd
-
-  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
-}
-
-# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
-#
-# The is the core of a fallback implementation of a
-# platform-specific function to extract the name of the
-# DLL associated with the specified import library LIBNAME.
-#
-# SECTION_NAME is either .idata$6 or .idata$7, depending
-# on the platform and compiler that created the implib.
-#
-# Echos the name of the DLL associated with the
-# specified import library.
-func_cygming_dll_for_implib_fallback_core ()
-{
-  $debug_cmd
-
-  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
-  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
-    $SED '/^Contents of section '"$match_literal"':/{
-      # Place marker at beginning of archive member dllname section
-      s/.*/====MARK====/
-      p
-      d
-    }
-    # These lines can sometimes be longer than 43 characters, but
-    # are always uninteresting
-    /:[         ]*file format pe[i]\{,1\}-/d
-    /^In archive [^:]*:/d
-    # Ensure marker is printed
-    /^====MARK====/p
-    # Remove all lines with less than 43 characters
-    /^.\{43\}/!d
-    # From remaining lines, remove first 43 characters
-    s/^.\{43\}//' |
-    $SED -n '
-      # Join marker and all lines until next marker into a single line
-      /^====MARK====/ b para
-      H
-      $ b para
-      b
-      :para
-      x
-      s/\n//g
-      # Remove the marker
-      s/^====MARK====//
-      # Remove trailing dots and whitespace
-      s/[\. \t]*$//
-      # Print
-      /./p' |
-    # we now have a list, one entry per line, of the stringified
-    # contents of the appropriate section of all members of the
-    # archive that possess that section. Heuristic: eliminate
-    # all those that have a first or second character that is
-    # a '.' (that is, objdump's representation of an unprintable
-    # character.) This should work for all archives with less than
-    # 0x302f exports -- but will fail for DLLs whose name actually
-    # begins with a literal '.' or a single character followed by
-    # a '.'.
-    #
-    # Of those that remain, print the first one.
-    $SED -e '/^\./d;/^.\./d;q'
-}
-
-# func_cygming_dll_for_implib_fallback ARG
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-#
-# This fallback implementation is for use when $DLLTOOL
-# does not support the --identify-strict option.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib_fallback ()
-{
-  $debug_cmd
-
-  if func_cygming_gnu_implib_p "$1"; then
-    # binutils import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
-  elif func_cygming_ms_implib_p "$1"; then
-    # ms-generated import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
-  else
-    # unknown
-    sharedlib_from_linklib_result=
-  fi
-}
-
-
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
-    $debug_cmd
-
-    f_ex_an_ar_dir=$1; shift
-    f_ex_an_ar_oldlib=$1
-    if test yes = "$lock_old_archive_extraction"; then
-      lockfile=$f_ex_an_ar_oldlib.lock
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-       func_echo "Waiting for $lockfile to be removed"
-       sleep 2
-      done
-    fi
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
-                  'stat=$?; rm -f "$lockfile"; exit $stat'
-    if test yes = "$lock_old_archive_extraction"; then
-      $opt_dry_run || rm -f "$lockfile"
-    fi
-    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-     :
-    else
-      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
-    fi
-}
-
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
-    $debug_cmd
-
-    my_gentop=$1; shift
-    my_oldlibs=${1+"$@"}
-    my_oldobjs=
-    my_xlib=
-    my_xabs=
-    my_xdir=
-
-    for my_xlib in $my_oldlibs; do
-      # Extract the objects.
-      case $my_xlib in
-       [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
-       *) my_xabs=`pwd`"/$my_xlib" ;;
-      esac
-      func_basename "$my_xlib"
-      my_xlib=$func_basename_result
-      my_xlib_u=$my_xlib
-      while :; do
-        case " $extracted_archives " in
-       *" $my_xlib_u "*)
-         func_arith $extracted_serial + 1
-         extracted_serial=$func_arith_result
-         my_xlib_u=lt$extracted_serial-$my_xlib ;;
-       *) break ;;
-       esac
-      done
-      extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir=$my_gentop/$my_xlib_u
-
-      func_mkdir_p "$my_xdir"
-
-      case $host in
-      *-darwin*)
-       func_verbose "Extracting $my_xabs"
-       # Do not bother doing anything if just a dry run
-       $opt_dry_run || {
-         darwin_orig_dir=`pwd`
-         cd $my_xdir || exit $?
-         darwin_archive=$my_xabs
-         darwin_curdir=`pwd`
-         func_basename "$darwin_archive"
-         darwin_base_archive=$func_basename_result
-         darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
-         if test -n "$darwin_arches"; then
-           darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
-           darwin_arch=
-           func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-           for darwin_arch in  $darwin_arches; do
-             func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
-             $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
-             cd "unfat-$$/$darwin_base_archive-$darwin_arch"
-             func_extract_an_archive "`pwd`" "$darwin_base_archive"
-             cd "$darwin_curdir"
-             $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
-           done # $darwin_arches
-            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-           darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
-           darwin_file=
-           darwin_files=
-           for darwin_file in $darwin_filelist; do
-             darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
-             $LIPO -create -output "$darwin_file" $darwin_files
-           done # $darwin_filelist
-           $RM -rf unfat-$$
-           cd "$darwin_orig_dir"
-         else
-           cd $darwin_orig_dir
-           func_extract_an_archive "$my_xdir" "$my_xabs"
-         fi # $darwin_arches
-       } # !$opt_dry_run
-       ;;
-      *)
-        func_extract_an_archive "$my_xdir" "$my_xabs"
-       ;;
-      esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
-    done
-
-    func_extract_archives_result=$my_oldobjs
-}
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable.  Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take.  If 'yes', then the emitted script
-# will assume that the directory where it is stored is
-# the $objdir directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
-       func_emit_wrapper_arg1=${1-no}
-
-       $ECHO "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
-  # install mode needs the following variables:
-  generated_by_libtool_version='$macro_version'
-  notinst_deplibs='$notinst_deplibs'
-else
-  # When we are sourced in execute mode, \$file and \$ECHO are already set.
-  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    file=\"\$0\""
-
-    func_quote_arg pretty "$ECHO"
-    qECHO=$func_quote_arg_result
-    $ECHO "\
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-    ECHO=$qECHO
-  fi
-
-# Very basic option parsing. These options are (a) specific to
-# the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ that is used only on
-# windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options that match
-# this pattern).
-#
-# There are only two supported options: --lt-debug and
-# --lt-dump-script. There is, deliberately, no --lt-help.
-#
-# The first argument to this parsing function should be the
-# script's $0 value, followed by "$@".
-lt_option_debug=
-func_parse_lt_options ()
-{
-  lt_script_arg0=\$0
-  shift
-  for lt_opt
-  do
-    case \"\$lt_opt\" in
-    --lt-debug) lt_option_debug=1 ;;
-    --lt-dump-script)
-        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
-        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
-        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
-        cat \"\$lt_dump_D/\$lt_dump_F\"
-        exit 0
-      ;;
-    --lt-*)
-        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
-        exit 1
-      ;;
-    esac
-  done
-
-  # Print the debug banner immediately:
-  if test -n \"\$lt_option_debug\"; then
-    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
-  fi
-}
-
-# Used when --lt-debug. Prints its arguments to stdout
-# (redirection is the responsibility of the caller)
-func_lt_dump_args ()
-{
-  lt_dump_args_N=1;
-  for lt_arg
-  do
-    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
-    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
-  done
-}
-
-# Core function for launching the target application
-func_exec_program_core ()
-{
-"
-  case $host in
-  # Backslashes separate directories on plain windows
-  *-*-mingw | *-*-os2* | *-cegcc*)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-    ;;
-
-  *)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-    ;;
-  esac
-  $ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 1
-}
-
-# A function to encapsulate launching the target application
-# Strips options in the --lt-* namespace from \$@ and
-# launches target application with the remaining arguments.
-func_exec_program ()
-{
-  case \" \$* \" in
-  *\\ --lt-*)
-    for lt_wr_arg
-    do
-      case \$lt_wr_arg in
-      --lt-*) ;;
-      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-      esac
-      shift
-    done ;;
-  esac
-  func_exec_program_core \${1+\"\$@\"}
-}
-
-  # Parse options
-  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
-
-  # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
-  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
-  # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
-  while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
-
-    # If there was a directory component, then change thisdir.
-    if test \"x\$destdir\" != \"x\$file\"; then
-      case \"\$destdir\" in
-      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-      *) thisdir=\"\$thisdir/\$destdir\" ;;
-      esac
-    fi
-
-    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
-  done
-
-  # Usually 'no', except on cygwin/mingw when embedded into
-  # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
-  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
-    # special case for '.'
-    if test \"\$thisdir\" = \".\"; then
-      thisdir=\`pwd\`
-    fi
-    # remove .libs from thisdir
-    case \"\$thisdir\" in
-    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
-    $objdir )   thisdir=. ;;
-    esac
-  fi
-
-  # Try to get the absolute directory name.
-  absdir=\`cd \"\$thisdir\" && pwd\`
-  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
-       if test yes = "$fast_install"; then
-         $ECHO "\
-  program=lt-'$outputname'$exeext
-  progdir=\"\$thisdir/$objdir\"
-
-  if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
-       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
-    file=\"\$\$-\$program\"
-
-    if test ! -d \"\$progdir\"; then
-      $MKDIR \"\$progdir\"
-    else
-      $RM \"\$progdir/\$file\"
-    fi"
-
-         $ECHO "\
-
-    # relink executable if necessary
-    if test -n \"\$relink_command\"; then
-      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-      else
-       \$ECHO \"\$relink_command_output\" >&2
-       $RM \"\$progdir/\$file\"
-       exit 1
-      fi
-    fi
-
-    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-    { $RM \"\$progdir/\$program\";
-      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-    $RM \"\$progdir/\$file\"
-  fi"
-       else
-         $ECHO "\
-  program='$outputname'
-  progdir=\"\$thisdir/$objdir\"
-"
-       fi
-
-       $ECHO "\
-
-  if test -f \"\$progdir/\$program\"; then"
-
-       # fixup the dll searchpath if we need to.
-       #
-       # Fix the DLL searchpath if we need to.  Do this before prepending
-       # to shlibpath, because on Windows, both are PATH and uninstalled
-       # libraries must come first.
-       if test -n "$dllsearchpath"; then
-         $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-       fi
-
-       # Export our shlibpath_var if we have one.
-       if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-         $ECHO "\
-    # Add our own library path to $shlibpath_var
-    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
-    # Some systems cannot cope with colon-terminated $shlibpath_var
-    # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
-
-    export $shlibpath_var
-"
-       fi
-
-       $ECHO "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-      func_exec_program \${1+\"\$@\"}
-    fi
-  else
-    # The program doesn't exist.
-    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
-    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
-    exit 1
-  fi
-fi\
-"
-}
-
-
-# func_emit_cwrapperexe_src
-# emit the source code for a wrapper executable on stdout
-# Must ONLY be called from within func_mode_link because
-# it depends on a number of variable set therein.
-func_emit_cwrapperexe_src ()
-{
-       cat <<EOF
-
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
-
-   The $output program cannot be directly executed until all the libtool
-   libraries that it depends on are installed.
-
-   This wrapper executable should never be moved out of the build directory.
-   If it is, it will not operate correctly.
-*/
-EOF
-           cat <<"EOF"
-#ifdef _MSC_VER
-# define _CRT_SECURE_NO_DEPRECATE 1
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-#  include <io.h>
-# endif
-#endif
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
-
-/* declarations of non-ANSI functions */
-#if defined __MINGW32__
-# ifdef __STRICT_ANSI__
-int _putenv (const char *);
-# endif
-#elif defined __CYGWIN__
-# ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-# endif
-/* #elif defined other_platform || defined ... */
-#endif
-
-/* portability defines, excluding path handling macros */
-#if defined _MSC_VER
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-# define S_IXUSR _S_IEXEC
-#elif defined __MINGW32__
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-#elif defined __CYGWIN__
-# define HAVE_SETENV
-# define FOPEN_WB "wb"
-/* #elif defined other platforms ... */
-#endif
-
-#if defined PATH_MAX
-# define LT_PATHMAX PATH_MAX
-#elif defined MAXPATHLEN
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-
-/* path handling portability macros */
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
-  defined __OS2__
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# define FOPEN_WB "wb"
-# ifndef DIR_SEPARATOR_2
-#  define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-#  define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
-       (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#ifndef FOPEN_WB
-# define FOPEN_WB "w"
-#endif
-#ifndef _O_BINARY
-# define _O_BINARY 0
-#endif
-
-#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
-  if (stale) { free (stale); stale = 0; } \
-} while (0)
-
-#if defined LT_DEBUGWRAPPER
-static int lt_debug = 1;
-#else
-static int lt_debug = 0;
-#endif
-
-const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
-
-void *xmalloc (size_t num);
-char *xstrdup (const char *string);
-const char *base_name (const char *name);
-char *find_executable (const char *wrapper);
-char *chase_symlinks (const char *pathspec);
-int make_executable (const char *path);
-int check_executable (const char *path);
-char *strendzap (char *str, const char *pat);
-void lt_debugprintf (const char *file, int line, const char *fmt, ...);
-void lt_fatal (const char *file, int line, const char *message, ...);
-static const char *nonnull (const char *s);
-static const char *nonempty (const char *s);
-void lt_setenv (const char *name, const char *value);
-char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-char **prepare_spawn (char **argv);
-void lt_dump_script (FILE *f);
-EOF
-
-           cat <<EOF
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
-# define externally_visible volatile
-#else
-# define externally_visible __attribute__((externally_visible)) volatile
-#endif
-externally_visible const char * MAGIC_EXE = "$magic_exe";
-const char * LIB_PATH_VARNAME = "$shlibpath_var";
-EOF
-
-           if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-              func_to_host_path "$temp_rpath"
-             cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-           else
-             cat <<"EOF"
-const char * LIB_PATH_VALUE   = "";
-EOF
-           fi
-
-           if test -n "$dllsearchpath"; then
-              func_to_host_path "$dllsearchpath:"
-             cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-           else
-             cat <<"EOF"
-const char * EXE_PATH_VARNAME = "";
-const char * EXE_PATH_VALUE   = "";
-EOF
-           fi
-
-           if test yes = "$fast_install"; then
-             cat <<EOF
-const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
-EOF
-           else
-             cat <<EOF
-const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
-EOF
-           fi
-
-
-           cat <<"EOF"
-
-#define LTWRAPPER_OPTION_PREFIX         "--lt-"
-
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
-
-int
-main (int argc, char *argv[])
-{
-  char **newargz;
-  int  newargc;
-  char *tmp_pathspec;
-  char *actual_cwrapper_path;
-  char *actual_cwrapper_name;
-  char *target_name;
-  char *lt_argv_zero;
-  int rval = 127;
-
-  int i;
-
-  program_name = (char *) xstrdup (base_name (argv[0]));
-  newargz = XMALLOC (char *, (size_t) argc + 1);
-
-  /* very simple arg parsing; don't want to rely on getopt
-   * also, copy all non cwrapper options to newargz, except
-   * argz[0], which is handled differently
-   */
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (STREQ (argv[i], dumpscript_opt))
-       {
-EOF
-           case $host in
-             *mingw* | *cygwin* )
-               # make stdout use "unix" line endings
-               echo "          setmode(1,_O_BINARY);"
-               ;;
-             esac
-
-           cat <<"EOF"
-         lt_dump_script (stdout);
-         return 0;
-       }
-      if (STREQ (argv[i], debug_opt))
-       {
-          lt_debug = 1;
-          continue;
-       }
-      if (STREQ (argv[i], ltwrapper_option_prefix))
-        {
-          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-             namespace, but it is not one of the ones we know about and
-             have already dealt with, above (inluding dump-script), then
-             report an error. Otherwise, targets might begin to believe
-             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-             namespace. The first time any user complains about this, we'll
-             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-             or a configure.ac-settable value.
-           */
-          lt_fatal (__FILE__, __LINE__,
-                   "unrecognized %s option: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-EOF
-           cat <<EOF
-  /* The GNU banner must be the first non-error debug message */
-  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
-EOF
-           cat <<"EOF"
-  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
-
-  tmp_pathspec = find_executable (argv[0]);
-  if (tmp_pathspec == NULL)
-    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (before symlink chase) at: %s\n",
-                 tmp_pathspec);
-
-  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (after symlink chase) at: %s\n",
-                 actual_cwrapper_path);
-  XFREE (tmp_pathspec);
-
-  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
-  strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
-  /* wrapper name transforms */
-  strendzap (actual_cwrapper_name, ".exe");
-  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
-  XFREE (actual_cwrapper_name);
-  actual_cwrapper_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  /* target_name transforms -- use actual target program name; might have lt- prefix */
-  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
-  strendzap (target_name, ".exe");
-  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
-  XFREE (target_name);
-  target_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(main) libtool target name: %s\n",
-                 target_name);
-EOF
-
-           cat <<EOF
-  newargz[0] =
-    XMALLOC (char, (strlen (actual_cwrapper_path) +
-                   strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
-  strcpy (newargz[0], actual_cwrapper_path);
-  strcat (newargz[0], "$objdir");
-  strcat (newargz[0], "/");
-EOF
-
-           cat <<"EOF"
-  /* stop here, and copy so we don't have to do this twice */
-  tmp_pathspec = xstrdup (newargz[0]);
-
-  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
-  strcat (newargz[0], actual_cwrapper_name);
-
-  /* DO want the lt- prefix here if it exists, so use target_name */
-  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
-  XFREE (tmp_pathspec);
-  tmp_pathspec = NULL;
-EOF
-
-           case $host_os in
-             mingw*)
-           cat <<"EOF"
-  {
-    char* p;
-    while ((p = strchr (newargz[0], '\\')) != NULL)
-      {
-       *p = '/';
-      }
-    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
-      {
-       *p = '/';
-      }
-  }
-EOF
-           ;;
-           esac
-
-           cat <<"EOF"
-  XFREE (target_name);
-  XFREE (actual_cwrapper_path);
-  XFREE (actual_cwrapper_name);
-
-  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
-  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
-     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
-     because on Windows, both *_VARNAMEs are PATH but uninstalled
-     libraries must come first. */
-  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-
-  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
-                 nonnull (lt_argv_zero));
-  for (i = 0; i < newargc; i++)
-    {
-      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
-                     i, nonnull (newargz[i]));
-    }
-
-EOF
-
-           case $host_os in
-             mingw*)
-               cat <<"EOF"
-  /* execv doesn't actually work on mingw as expected on unix */
-  newargz = prepare_spawn (newargz);
-  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
-  if (rval == -1)
-    {
-      /* failed to start process */
-      lt_debugprintf (__FILE__, __LINE__,
-                     "(main) failed to launch target \"%s\": %s\n",
-                     lt_argv_zero, nonnull (strerror (errno)));
-      return 127;
-    }
-  return rval;
-EOF
-               ;;
-             *)
-               cat <<"EOF"
-  execv (lt_argv_zero, newargz);
-  return rval; /* =127, but avoids unused variable warning */
-EOF
-               ;;
-           esac
-
-           cat <<"EOF"
-}
-
-void *
-xmalloc (size_t num)
-{
-  void *p = (void *) malloc (num);
-  if (!p)
-    lt_fatal (__FILE__, __LINE__, "memory exhausted");
-
-  return p;
-}
-
-char *
-xstrdup (const char *string)
-{
-  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
-                         string) : NULL;
-}
-
-const char *
-base_name (const char *name)
-{
-  const char *base;
-
-#if defined HAVE_DOS_BASED_FILE_SYSTEM
-  /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
-    name += 2;
-#endif
-
-  for (base = name; *name; name++)
-    if (IS_DIR_SEPARATOR (*name))
-      base = name + 1;
-  return base;
-}
-
-int
-check_executable (const char *path)
-{
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if ((stat (path, &st) >= 0)
-      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
-    return 1;
-  else
-    return 0;
-}
-
-int
-make_executable (const char *path)
-{
-  int rval = 0;
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if (stat (path, &st) >= 0)
-    {
-      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
-    }
-  return rval;
-}
-
-/* Searches for the full path of the wrapper.  Returns
-   newly allocated full path name if found, NULL otherwise
-   Does not chase symlinks, even on platforms that support them.
-*/
-char *
-find_executable (const char *wrapper)
-{
-  int has_slash = 0;
-  const char *p;
-  const char *p_next;
-  /* static buffer for getcwd */
-  char tmp[LT_PATHMAX + 1];
-  size_t tmp_len;
-  char *concat_name;
-
-  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
-                  nonempty (wrapper));
-
-  if ((wrapper == NULL) || (*wrapper == '\0'))
-    return NULL;
-
-  /* Absolute path? */
-#if defined HAVE_DOS_BASED_FILE_SYSTEM
-  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
-    {
-      concat_name = xstrdup (wrapper);
-      if (check_executable (concat_name))
-       return concat_name;
-      XFREE (concat_name);
-    }
-  else
-    {
-#endif
-      if (IS_DIR_SEPARATOR (wrapper[0]))
-       {
-         concat_name = xstrdup (wrapper);
-         if (check_executable (concat_name))
-           return concat_name;
-         XFREE (concat_name);
-       }
-#if defined HAVE_DOS_BASED_FILE_SYSTEM
-    }
-#endif
-
-  for (p = wrapper; *p; p++)
-    if (*p == '/')
-      {
-       has_slash = 1;
-       break;
-      }
-  if (!has_slash)
-    {
-      /* no slashes; search PATH */
-      const char *path = getenv ("PATH");
-      if (path != NULL)
-       {
-         for (p = path; *p; p = p_next)
-           {
-             const char *q;
-             size_t p_len;
-             for (q = p; *q; q++)
-               if (IS_PATH_SEPARATOR (*q))
-                 break;
-             p_len = (size_t) (q - p);
-             p_next = (*q == '\0' ? q : q + 1);
-             if (p_len == 0)
-               {
-                 /* empty path: current directory */
-                 if (getcwd (tmp, LT_PATHMAX) == NULL)
-                   lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-                              nonnull (strerror (errno)));
-                 tmp_len = strlen (tmp);
-                 concat_name =
-                   XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-                 memcpy (concat_name, tmp, tmp_len);
-                 concat_name[tmp_len] = '/';
-                 strcpy (concat_name + tmp_len + 1, wrapper);
-               }
-             else
-               {
-                 concat_name =
-                   XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
-                 memcpy (concat_name, p, p_len);
-                 concat_name[p_len] = '/';
-                 strcpy (concat_name + p_len + 1, wrapper);
-               }
-             if (check_executable (concat_name))
-               return concat_name;
-             XFREE (concat_name);
-           }
-       }
-      /* not found in PATH; assume curdir */
-    }
-  /* Relative path | not found in path: prepend cwd */
-  if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-              nonnull (strerror (errno)));
-  tmp_len = strlen (tmp);
-  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-  memcpy (concat_name, tmp, tmp_len);
-  concat_name[tmp_len] = '/';
-  strcpy (concat_name + tmp_len + 1, wrapper);
-
-  if (check_executable (concat_name))
-    return concat_name;
-  XFREE (concat_name);
-  return NULL;
-}
-
-char *
-chase_symlinks (const char *pathspec)
-{
-#ifndef S_ISLNK
-  return xstrdup (pathspec);
-#else
-  char buf[LT_PATHMAX];
-  struct stat s;
-  char *tmp_pathspec = xstrdup (pathspec);
-  char *p;
-  int has_symlinks = 0;
-  while (strlen (tmp_pathspec) && !has_symlinks)
-    {
-      lt_debugprintf (__FILE__, __LINE__,
-                     "checking path component for symlinks: %s\n",
-                     tmp_pathspec);
-      if (lstat (tmp_pathspec, &s) == 0)
-       {
-         if (S_ISLNK (s.st_mode) != 0)
-           {
-             has_symlinks = 1;
-             break;
-           }
-
-         /* search backwards for last DIR_SEPARATOR */
-         p = tmp_pathspec + strlen (tmp_pathspec) - 1;
-         while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-           p--;
-         if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-           {
-             /* no more DIR_SEPARATORS left */
-             break;
-           }
-         *p = '\0';
-       }
-      else
-       {
-         lt_fatal (__FILE__, __LINE__,
-                   "error accessing file \"%s\": %s",
-                   tmp_pathspec, nonnull (strerror (errno)));
-       }
-    }
-  XFREE (tmp_pathspec);
-
-  if (!has_symlinks)
-    {
-      return xstrdup (pathspec);
-    }
-
-  tmp_pathspec = realpath (pathspec, buf);
-  if (tmp_pathspec == 0)
-    {
-      lt_fatal (__FILE__, __LINE__,
-               "could not follow symlinks for %s", pathspec);
-    }
-  return xstrdup (tmp_pathspec);
-#endif
-}
-
-char *
-strendzap (char *str, const char *pat)
-{
-  size_t len, patlen;
-
-  assert (str != NULL);
-  assert (pat != NULL);
-
-  len = strlen (str);
-  patlen = strlen (pat);
-
-  if (patlen <= len)
-    {
-      str += len - patlen;
-      if (STREQ (str, pat))
-       *str = '\0';
-    }
-  return str;
-}
-
-void
-lt_debugprintf (const char *file, int line, const char *fmt, ...)
-{
-  va_list args;
-  if (lt_debug)
-    {
-      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
-      va_start (args, fmt);
-      (void) vfprintf (stderr, fmt, args);
-      va_end (args);
-    }
-}
-
-static void
-lt_error_core (int exit_status, const char *file,
-              int line, const char *mode,
-              const char *message, va_list ap)
-{
-  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
-
-  if (exit_status >= 0)
-    exit (exit_status);
-}
-
-void
-lt_fatal (const char *file, int line, const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
-  va_end (ap);
-}
-
-static const char *
-nonnull (const char *s)
-{
-  return s ? s : "(null)";
-}
-
-static const char *
-nonempty (const char *s)
-{
-  return (s && !*s) ? "(empty)" : nonnull (s);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(lt_setenv) setting '%s' to '%s'\n",
-                  nonnull (name), nonnull (value));
-  {
-#ifdef HAVE_SETENV
-    /* always make a copy, for consistency with !HAVE_SETENV */
-    char *str = xstrdup (value);
-    setenv (name, str, 1);
-#else
-    size_t len = strlen (name) + 1 + strlen (value) + 1;
-    char *str = XMALLOC (char, len);
-    sprintf (str, "%s=%s", name, value);
-    if (putenv (str) != EXIT_SUCCESS)
-      {
-        XFREE (str);
-      }
-#endif
-  }
-}
-
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
-  char *new_value;
-  if (orig_value && *orig_value)
-    {
-      size_t orig_value_len = strlen (orig_value);
-      size_t add_len = strlen (add);
-      new_value = XMALLOC (char, add_len + orig_value_len + 1);
-      if (to_end)
-        {
-          strcpy (new_value, orig_value);
-          strcpy (new_value + orig_value_len, add);
-        }
-      else
-        {
-          strcpy (new_value, add);
-          strcpy (new_value + add_len, orig_value);
-        }
-    }
-  else
-    {
-      new_value = xstrdup (add);
-    }
-  return new_value;
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      /* some systems can't cope with a ':'-terminated path #' */
-      size_t len = strlen (new_value);
-      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
-        {
-          new_value[--len] = '\0';
-        }
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-void
-lt_update_lib_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-EOF
-           case $host_os in
-             mingw*)
-               cat <<"EOF"
-
-/* Prepares an argument vector before calling spawn().
-   Note that spawn() does not by itself call the command interpreter
-     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
-      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-         GetVersionEx(&v);
-         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
-      }) ? "cmd.exe" : "command.com").
-   Instead it simply concatenates the arguments, separated by ' ', and calls
-   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
-   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
-   special way:
-   - Space and tab are interpreted as delimiters. They are not treated as
-     delimiters if they are surrounded by double quotes: "...".
-   - Unescaped double quotes are removed from the input. Their only effect is
-     that within double quotes, space and tab are treated like normal
-     characters.
-   - Backslashes not followed by double quotes are not special.
-   - But 2*n+1 backslashes followed by a double quote become
-     n backslashes followed by a double quote (n >= 0):
-       \" -> "
-       \\\" -> \"
-       \\\\\" -> \\"
- */
-#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-char **
-prepare_spawn (char **argv)
-{
-  size_t argc;
-  char **new_argv;
-  size_t i;
-
-  /* Count number of arguments.  */
-  for (argc = 0; argv[argc] != NULL; argc++)
-    ;
-
-  /* Allocate new argument vector.  */
-  new_argv = XMALLOC (char *, argc + 1);
-
-  /* Put quoted arguments into the new argument vector.  */
-  for (i = 0; i < argc; i++)
-    {
-      const char *string = argv[i];
-
-      if (string[0] == '\0')
-       new_argv[i] = xstrdup ("\"\"");
-      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
-       {
-         int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
-         size_t length;
-         unsigned int backslashes;
-         const char *s;
-         char *quoted_string;
-         char *p;
-
-         length = 0;
-         backslashes = 0;
-         if (quote_around)
-           length++;
-         for (s = string; *s != '\0'; s++)
-           {
-             char c = *s;
-             if (c == '"')
-               length += backslashes + 1;
-             length++;
-             if (c == '\\')
-               backslashes++;
-             else
-               backslashes = 0;
-           }
-         if (quote_around)
-           length += backslashes + 1;
-
-         quoted_string = XMALLOC (char, length + 1);
-
-         p = quoted_string;
-         backslashes = 0;
-         if (quote_around)
-           *p++ = '"';
-         for (s = string; *s != '\0'; s++)
-           {
-             char c = *s;
-             if (c == '"')
-               {
-                 unsigned int j;
-                 for (j = backslashes + 1; j > 0; j--)
-                   *p++ = '\\';
-               }
-             *p++ = c;
-             if (c == '\\')
-               backslashes++;
-             else
-               backslashes = 0;
-           }
-         if (quote_around)
-           {
-             unsigned int j;
-             for (j = backslashes; j > 0; j--)
-               *p++ = '\\';
-             *p++ = '"';
-           }
-         *p = '\0';
-
-         new_argv[i] = quoted_string;
-       }
-      else
-       new_argv[i] = (char *) string;
-    }
-  new_argv[argc] = NULL;
-
-  return new_argv;
-}
-EOF
-               ;;
-           esac
-
-            cat <<"EOF"
-void lt_dump_script (FILE* f)
-{
-EOF
-           func_emit_wrapper yes |
-             $SED -n -e '
-s/^\(.\{79\}\)\(..*\)/\1\
-\2/
-h
-s/\([\\"]\)/\\\1/g
-s/$/\\n/
-s/\([^\n]*\).*/  fputs ("\1", f);/p
-g
-D'
-            cat <<"EOF"
-}
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# func_win32_import_lib_p ARG
-# True if ARG is an import lib, as indicated by $file_magic_cmd
-func_win32_import_lib_p ()
-{
-    $debug_cmd
-
-    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
-    *import*) : ;;
-    *) false ;;
-    esac
-}
-
-# func_suncc_cstd_abi
-# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
-# Several compiler flags select an ABI that is incompatible with the
-# Cstd library. Avoid specifying it if any are in CXXFLAGS.
-func_suncc_cstd_abi ()
-{
-    $debug_cmd
-
-    case " $compile_command " in
-    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
-      suncc_use_cstd_abi=no
-      ;;
-    *)
-      suncc_use_cstd_abi=yes
-      ;;
-    esac
-}
-
-# func_mode_link arg...
-func_mode_link ()
-{
-    $debug_cmd
-
-    case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-      # It is impossible to link a dll without this setting, and
-      # we shouldn't force the makefile maintainer to figure out
-      # what system we are compiling for in order to pass an extra
-      # flag for every libtool invocation.
-      # allow_undefined=no
-
-      # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll that has undefined symbols, in which case not
-      # even a static library is built.  For now, we need to specify
-      # -no-undefined on the libtool link line when we can be certain
-      # that all symbols are satisfied, otherwise we get a static library.
-      allow_undefined=yes
-      ;;
-    *)
-      allow_undefined=yes
-      ;;
-    esac
-    libtool_args=$nonopt
-    base_compile="$nonopt $@"
-    compile_command=$nonopt
-    finalize_command=$nonopt
-
-    compile_rpath=
-    finalize_rpath=
-    compile_shlibpath=
-    finalize_shlibpath=
-    convenience=
-    old_convenience=
-    deplibs=
-    old_deplibs=
-    compiler_flags=
-    linker_flags=
-    dllsearchpath=
-    lib_search_path=`pwd`
-    inst_prefix_dir=
-    new_inherited_linker_flags=
-
-    avoid_version=no
-    bindir=
-    dlfiles=
-    dlprefiles=
-    dlself=no
-    export_dynamic=no
-    export_symbols=
-    export_symbols_regex=
-    generated=
-    libobjs=
-    ltlibs=
-    module=no
-    no_install=no
-    objs=
-    os2dllname=
-    non_pic_objects=
-    precious_files_regex=
-    prefer_static_libs=no
-    preload=false
-    prev=
-    prevarg=
-    release=
-    rpath=
-    xrpath=
-    perm_rpath=
-    temp_rpath=
-    thread_safe=no
-    vinfo=
-    vinfo_number=no
-    weak_libs=
-    single_module=$wl-single_module
-    func_infer_tag $base_compile
-
-    # We need to know -static, to get the right output filenames.
-    for arg
-    do
-      case $arg in
-      -shared)
-       test yes != "$build_libtool_libs" \
-         && func_fatal_configuration "cannot build a shared library"
-       build_old_libs=no
-       break
-       ;;
-      -all-static | -static | -static-libtool-libs)
-       case $arg in
-       -all-static)
-         if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
-           func_warning "complete static linking is impossible in this configuration"
-         fi
-         if test -n "$link_static_flag"; then
-           dlopen_self=$dlopen_self_static
-         fi
-         prefer_static_libs=yes
-         ;;
-       -static)
-         if test -z "$pic_flag" && test -n "$link_static_flag"; then
-           dlopen_self=$dlopen_self_static
-         fi
-         prefer_static_libs=built
-         ;;
-       -static-libtool-libs)
-         if test -z "$pic_flag" && test -n "$link_static_flag"; then
-           dlopen_self=$dlopen_self_static
-         fi
-         prefer_static_libs=yes
-         ;;
-       esac
-       build_libtool_libs=no
-       build_old_libs=yes
-       break
-       ;;
-      esac
-    done
-
-    # See if our shared archives depend on static archives.
-    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
-    # Go through the arguments, transforming them on the way.
-    while test "$#" -gt 0; do
-      arg=$1
-      shift
-      func_quote_arg pretty,unquoted "$arg"
-      qarg=$func_quote_arg_unquoted_result
-      func_append libtool_args " $func_quote_arg_result"
-
-      # If the previous option needs an argument, assign it.
-      if test -n "$prev"; then
-       case $prev in
-       output)
-         func_append compile_command " @OUTPUT@"
-         func_append finalize_command " @OUTPUT@"
-         ;;
-       esac
-
-       case $prev in
-       bindir)
-         bindir=$arg
-         prev=
-         continue
-         ;;
-       dlfiles|dlprefiles)
-         $preload || {
-           # Add the symbol object into the linking commands.
-           func_append compile_command " @SYMFILE@"
-           func_append finalize_command " @SYMFILE@"
-           preload=:
-         }
-         case $arg in
-         *.la | *.lo) ;;  # We handle these cases below.
-         force)
-           if test no = "$dlself"; then
-             dlself=needless
-             export_dynamic=yes
-           fi
-           prev=
-           continue
-           ;;
-         self)
-           if test dlprefiles = "$prev"; then
-             dlself=yes
-           elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
-             dlself=yes
-           else
-             dlself=needless
-             export_dynamic=yes
-           fi
-           prev=
-           continue
-           ;;
-         *)
-           if test dlfiles = "$prev"; then
-             func_append dlfiles " $arg"
-           else
-             func_append dlprefiles " $arg"
-           fi
-           prev=
-           continue
-           ;;
-         esac
-         ;;
-       expsyms)
-         export_symbols=$arg
-         test -f "$arg" \
-           || func_fatal_error "symbol file '$arg' does not exist"
-         prev=
-         continue
-         ;;
-       expsyms_regex)
-         export_symbols_regex=$arg
-         prev=
-         continue
-         ;;
-       framework)
-         case $host in
-           *-*-darwin*)
-             case "$deplibs " in
-               *" $qarg.ltframework "*) ;;
-               *) func_append deplibs " $qarg.ltframework" # this is fixed later
-                  ;;
-             esac
-             ;;
-         esac
-         prev=
-         continue
-         ;;
-       inst_prefix)
-         inst_prefix_dir=$arg
-         prev=
-         continue
-         ;;
-       mllvm)
-         # Clang does not use LLVM to link, so we can simply discard any
-         # '-mllvm $arg' options when doing the link step.
-         prev=
-         continue
-         ;;
-       objectlist)
-         if test -f "$arg"; then
-           save_arg=$arg
-           moreargs=
-           for fil in `cat "$save_arg"`
-           do
-#            func_append moreargs " $fil"
-             arg=$fil
-             # A libtool-controlled object.
-
-             # Check to see that this really is a libtool object.
-             if func_lalib_unsafe_p "$arg"; then
-               pic_object=
-               non_pic_object=
-
-               # Read the .lo file
-               func_source "$arg"
-
-               if test -z "$pic_object" ||
-                  test -z "$non_pic_object" ||
-                  test none = "$pic_object" &&
-                  test none = "$non_pic_object"; then
-                 func_fatal_error "cannot find name of object for '$arg'"
-               fi
-
-               # Extract subdirectory from the argument.
-               func_dirname "$arg" "/" ""
-               xdir=$func_dirname_result
-
-               if test none != "$pic_object"; then
-                 # Prepend the subdirectory the object is found in.
-                 pic_object=$xdir$pic_object
-
-                 if test dlfiles = "$prev"; then
-                   if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
-                     func_append dlfiles " $pic_object"
-                     prev=
-                     continue
-                   else
-                     # If libtool objects are unsupported, then we need to preload.
-                     prev=dlprefiles
-                   fi
-                 fi
-
-                 # CHECK ME:  I think I busted this.  -Ossama
-                 if test dlprefiles = "$prev"; then
-                   # Preload the old-style object.
-                   func_append dlprefiles " $pic_object"
-                   prev=
-                 fi
-
-                 # A PIC object.
-                 func_append libobjs " $pic_object"
-                 arg=$pic_object
-               fi
-
-               # Non-PIC object.
-               if test none != "$non_pic_object"; then
-                 # Prepend the subdirectory the object is found in.
-                 non_pic_object=$xdir$non_pic_object
-
-                 # A standard non-PIC object
-                 func_append non_pic_objects " $non_pic_object"
-                 if test -z "$pic_object" || test none = "$pic_object"; then
-                   arg=$non_pic_object
-                 fi
-               else
-                 # If the PIC object exists, use it instead.
-                 # $xdir was prepended to $pic_object above.
-                 non_pic_object=$pic_object
-                 func_append non_pic_objects " $non_pic_object"
-               fi
-             else
-               # Only an error if not doing a dry-run.
-               if $opt_dry_run; then
-                 # Extract subdirectory from the argument.
-                 func_dirname "$arg" "/" ""
-                 xdir=$func_dirname_result
-
-                 func_lo2o "$arg"
-                 pic_object=$xdir$objdir/$func_lo2o_result
-                 non_pic_object=$xdir$func_lo2o_result
-                 func_append libobjs " $pic_object"
-                 func_append non_pic_objects " $non_pic_object"
-               else
-                 func_fatal_error "'$arg' is not a valid libtool object"
-               fi
-             fi
-           done
-         else
-           func_fatal_error "link input file '$arg' does not exist"
-         fi
-         arg=$save_arg
-         prev=
-         continue
-         ;;
-       os2dllname)
-         os2dllname=$arg
-         prev=
-         continue
-         ;;
-       precious_regex)
-         precious_files_regex=$arg
-         prev=
-         continue
-         ;;
-       release)
-         release=-$arg
-         prev=
-         continue
-         ;;
-       rpath | xrpath)
-         # We need an absolute path.
-         case $arg in
-         [\\/]* | [A-Za-z]:[\\/]*) ;;
-         *)
-           func_fatal_error "only absolute run-paths are allowed"
-           ;;
-         esac
-         if test rpath = "$prev"; then
-           case "$rpath " in
-           *" $arg "*) ;;
-           *) func_append rpath " $arg" ;;
-           esac
-         else
-           case "$xrpath " in
-           *" $arg "*) ;;
-           *) func_append xrpath " $arg" ;;
-           esac
-         fi
-         prev=
-         continue
-         ;;
-       shrext)
-         shrext_cmds=$arg
-         prev=
-         continue
-         ;;
-       weak)
-         func_append weak_libs " $arg"
-         prev=
-         continue
-         ;;
-       xcclinker)
-         func_append linker_flags " $qarg"
-         func_append compiler_flags " $qarg"
-         prev=
-         func_append compile_command " $qarg"
-         func_append finalize_command " $qarg"
-         continue
-         ;;
-       xcompiler)
-         func_append compiler_flags " $qarg"
-         prev=
-         func_append compile_command " $qarg"
-         func_append finalize_command " $qarg"
-         continue
-         ;;
-       xlinker)
-         func_append linker_flags " $qarg"
-         func_append compiler_flags " $wl$qarg"
-         prev=
-         func_append compile_command " $wl$qarg"
-         func_append finalize_command " $wl$qarg"
-         continue
-         ;;
-       *)
-         eval "$prev=\"\$arg\""
-         prev=
-         continue
-         ;;
-       esac
-      fi # test -n "$prev"
-
-      prevarg=$arg
-
-      case $arg in
-      -all-static)
-       if test -n "$link_static_flag"; then
-         # See comment for -static flag below, for more details.
-         func_append compile_command " $link_static_flag"
-         func_append finalize_command " $link_static_flag"
-       fi
-       continue
-       ;;
-
-      -allow-undefined)
-       # FIXME: remove this flag sometime in the future.
-       func_fatal_error "'-allow-undefined' must not be used because it is the default"
-       ;;
-
-      -avoid-version)
-       avoid_version=yes
-       continue
-       ;;
-
-      -bindir)
-       prev=bindir
-       continue
-       ;;
-
-      -dlopen)
-       prev=dlfiles
-       continue
-       ;;
-
-      -dlpreopen)
-       prev=dlprefiles
-       continue
-       ;;
-
-      -export-dynamic)
-       export_dynamic=yes
-       continue
-       ;;
-
-      -export-symbols | -export-symbols-regex)
-       if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-         func_fatal_error "more than one -exported-symbols argument is not allowed"
-       fi
-       if test X-export-symbols = "X$arg"; then
-         prev=expsyms
-       else
-         prev=expsyms_regex
-       fi
-       continue
-       ;;
-
-      -framework)
-       prev=framework
-       continue
-       ;;
-
-      -inst-prefix-dir)
-       prev=inst_prefix
-       continue
-       ;;
-
-      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
-      # so, if we see these flags be careful not to treat them like -L
-      -L[A-Z][A-Z]*:*)
-       case $with_gcc/$host in
-       no/*-*-irix* | /*-*-irix*)
-         func_append compile_command " $arg"
-         func_append finalize_command " $arg"
-         ;;
-       esac
-       continue
-       ;;
-
-      -L*)
-       func_stripname "-L" '' "$arg"
-       if test -z "$func_stripname_result"; then
-         if test "$#" -gt 0; then
-           func_fatal_error "require no space between '-L' and '$1'"
-         else
-           func_fatal_error "need path for '-L' option"
-         fi
-       fi
-       func_resolve_sysroot "$func_stripname_result"
-       dir=$func_resolve_sysroot_result
-       # We need an absolute path.
-       case $dir in
-       [\\/]* | [A-Za-z]:[\\/]*) ;;
-       *)
-         absdir=`cd "$dir" && pwd`
-         test -z "$absdir" && \
-           func_fatal_error "cannot determine absolute directory name of '$dir'"
-         dir=$absdir
-         ;;
-       esac
-       case "$deplibs " in
-       *" -L$dir "* | *" $arg "*)
-         # Will only happen for absolute or sysroot arguments
-         ;;
-       *)
-         # Preserve sysroot, but never include relative directories
-         case $dir in
-           [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
-           *) func_append deplibs " -L$dir" ;;
-         esac
-         func_append lib_search_path " $dir"
-         ;;
-       esac
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-         testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
-         case :$dllsearchpath: in
-         *":$dir:"*) ;;
-         ::) dllsearchpath=$dir;;
-         *) func_append dllsearchpath ":$dir";;
-         esac
-         case :$dllsearchpath: in
-         *":$testbindir:"*) ;;
-         ::) dllsearchpath=$testbindir;;
-         *) func_append dllsearchpath ":$testbindir";;
-         esac
-         ;;
-       esac
-       continue
-       ;;
-
-      -l*)
-       if test X-lc = "X$arg" || test X-lm = "X$arg"; then
-         case $host in
-         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
-           # These systems don't actually have a C or math library (as such)
-           continue
-           ;;
-         *-*-os2*)
-           # These systems don't actually have a C library (as such)
-           test X-lc = "X$arg" && continue
-           ;;
-         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
-           # Do not include libc due to us having libc/libc_r.
-           test X-lc = "X$arg" && continue
-           ;;
-         *-*-rhapsody* | *-*-darwin1.[012])
-           # Rhapsody C and math libraries are in the System framework
-           func_append deplibs " System.ltframework"
-           continue
-           ;;
-         *-*-sco3.2v5* | *-*-sco5v6*)
-           # Causes problems with __ctype
-           test X-lc = "X$arg" && continue
-           ;;
-         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-           # Compiler inserts libc in the correct place for threads to work
-           test X-lc = "X$arg" && continue
-           ;;
-         esac
-       elif test X-lc_r = "X$arg"; then
-        case $host in
-        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
-          # Do not include libc_r directly, use -pthread flag.
-          continue
-          ;;
-        esac
-       fi
-       func_append deplibs " $arg"
-       continue
-       ;;
-
-      -mllvm)
-       prev=mllvm
-       continue
-       ;;
-
-      -module)
-       module=yes
-       continue
-       ;;
-
-      # Tru64 UNIX uses -model [arg] to determine the layout of C++
-      # classes, name mangling, and exception handling.
-      # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot|--sysroot)
-       func_append compiler_flags " $arg"
-       func_append compile_command " $arg"
-       func_append finalize_command " $arg"
-       prev=xcompiler
-       continue
-       ;;
-
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-       func_append compiler_flags " $arg"
-       func_append compile_command " $arg"
-       func_append finalize_command " $arg"
-       case "$new_inherited_linker_flags " in
-           *" $arg "*) ;;
-           * ) func_append new_inherited_linker_flags " $arg" ;;
-       esac
-       continue
-       ;;
-
-      -multi_module)
-       single_module=$wl-multi_module
-       continue
-       ;;
-
-      -no-fast-install)
-       fast_install=no
-       continue
-       ;;
-
-      -no-install)
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
-         # The PATH hackery in wrapper scripts is required on Windows
-         # and Darwin in order for the loader to find any dlls it needs.
-         func_warning "'-no-install' is ignored for $host"
-         func_warning "assuming '-no-fast-install' instead"
-         fast_install=no
-         ;;
-       *) no_install=yes ;;
-       esac
-       continue
-       ;;
-
-      -no-undefined)
-       allow_undefined=no
-       continue
-       ;;
-
-      -objectlist)
-       prev=objectlist
-       continue
-       ;;
-
-      -os2dllname)
-       prev=os2dllname
-       continue
-       ;;
-
-      -o) prev=output ;;
-
-      -precious-files-regex)
-       prev=precious_regex
-       continue
-       ;;
-
-      -release)
-       prev=release
-       continue
-       ;;
-
-      -rpath)
-       prev=rpath
-       continue
-       ;;
-
-      -R)
-       prev=xrpath
-       continue
-       ;;
-
-      -R*)
-       func_stripname '-R' '' "$arg"
-       dir=$func_stripname_result
-       # We need an absolute path.
-       case $dir in
-       [\\/]* | [A-Za-z]:[\\/]*) ;;
-       =*)
-         func_stripname '=' '' "$dir"
-         dir=$lt_sysroot$func_stripname_result
-         ;;
-       *)
-         func_fatal_error "only absolute run-paths are allowed"
-         ;;
-       esac
-       case "$xrpath " in
-       *" $dir "*) ;;
-       *) func_append xrpath " $dir" ;;
-       esac
-       continue
-       ;;
-
-      -shared)
-       # The effects of -shared are defined in a previous loop.
-       continue
-       ;;
-
-      -shrext)
-       prev=shrext
-       continue
-       ;;
-
-      -static | -static-libtool-libs)
-       # The effects of -static are defined in a previous loop.
-       # We used to do the same as -all-static on platforms that
-       # didn't have a PIC flag, but the assumption that the effects
-       # would be equivalent was wrong.  It would break on at least
-       # Digital Unix and AIX.
-       continue
-       ;;
-
-      -thread-safe)
-       thread_safe=yes
-       continue
-       ;;
-
-      -version-info)
-       prev=vinfo
-       continue
-       ;;
-
-      -version-number)
-       prev=vinfo
-       vinfo_number=yes
-       continue
-       ;;
-
-      -weak)
-        prev=weak
-       continue
-       ;;
-
-      -Wc,*)
-       func_stripname '-Wc,' '' "$arg"
-       args=$func_stripname_result
-       arg=
-       save_ifs=$IFS; IFS=,
-       for flag in $args; do
-         IFS=$save_ifs
-          func_quote_arg pretty "$flag"
-         func_append arg " $func_quote_arg_result"
-         func_append compiler_flags " $func_quote_arg_result"
-       done
-       IFS=$save_ifs
-       func_stripname ' ' '' "$arg"
-       arg=$func_stripname_result
-       ;;
-
-      -Wl,*)
-       func_stripname '-Wl,' '' "$arg"
-       args=$func_stripname_result
-       arg=
-       save_ifs=$IFS; IFS=,
-       for flag in $args; do
-         IFS=$save_ifs
-          func_quote_arg pretty "$flag"
-         func_append arg " $wl$func_quote_arg_result"
-         func_append compiler_flags " $wl$func_quote_arg_result"
-         func_append linker_flags " $func_quote_arg_result"
-       done
-       IFS=$save_ifs
-       func_stripname ' ' '' "$arg"
-       arg=$func_stripname_result
-       ;;
-
-      -Xcompiler)
-       prev=xcompiler
-       continue
-       ;;
-
-      -Xlinker)
-       prev=xlinker
-       continue
-       ;;
-
-      -XCClinker)
-       prev=xcclinker
-       continue
-       ;;
-
-      # -msg_* for osf cc
-      -msg_*)
-       func_quote_arg pretty "$arg"
-       arg=$func_quote_arg_result
-       ;;
-
-      # Flags to be passed through unchanged, with rationale:
-      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
-      # -r[0-9][0-9]*        specify processor for the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
-      # +DA*, +DD*           enable 64-bit mode for the HP compiler
-      # -q*                  compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
-      # -F/path              path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
-      # -fstack-protector*   stack protector flags for GCC
-      # @file                GCC response files
-      # -tp=*                Portland pgcc target processor selection
-      # --sysroot=*          for sysroot support
-      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
-      # -specs=*             GCC specs files
-      # -stdlib=*            select c++ std lib with clang
-      # -fsanitize=*         Clang/GCC memory and address sanitizer
-      # -fuse-ld=*           Linker select flags for GCC
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
-      -specs=*|-fsanitize=*|-fuse-ld=*)
-        func_quote_arg pretty "$arg"
-       arg=$func_quote_arg_result
-        func_append compile_command " $arg"
-        func_append finalize_command " $arg"
-        func_append compiler_flags " $arg"
-        continue
-        ;;
-
-      -Z*)
-        if test os2 = "`expr $host : '.*\(os2\)'`"; then
-          # OS/2 uses -Zxxx to specify OS/2-specific options
-         compiler_flags="$compiler_flags $arg"
-         func_append compile_command " $arg"
-         func_append finalize_command " $arg"
-         case $arg in
-         -Zlinker | -Zstack)
-           prev=xcompiler
-           ;;
-         esac
-         continue
-        else
-         # Otherwise treat like 'Some other compiler flag' below
-         func_quote_arg pretty "$arg"
-         arg=$func_quote_arg_result
-        fi
-       ;;
-
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_arg pretty "$arg"
-       arg=$func_quote_arg_result
-       ;;
-
-      *.$objext)
-       # A standard object.
-       func_append objs " $arg"
-       ;;
-
-      *.lo)
-       # A libtool-controlled object.
-
-       # Check to see that this really is a libtool object.
-       if func_lalib_unsafe_p "$arg"; then
-         pic_object=
-         non_pic_object=
-
-         # Read the .lo file
-         func_source "$arg"
-
-         if test -z "$pic_object" ||
-            test -z "$non_pic_object" ||
-            test none = "$pic_object" &&
-            test none = "$non_pic_object"; then
-           func_fatal_error "cannot find name of object for '$arg'"
-         fi
-
-         # Extract subdirectory from the argument.
-         func_dirname "$arg" "/" ""
-         xdir=$func_dirname_result
-
-         test none = "$pic_object" || {
-           # Prepend the subdirectory the object is found in.
-           pic_object=$xdir$pic_object
-
-           if test dlfiles = "$prev"; then
-             if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
-               func_append dlfiles " $pic_object"
-               prev=
-               continue
-             else
-               # If libtool objects are unsupported, then we need to preload.
-               prev=dlprefiles
-             fi
-           fi
-
-           # CHECK ME:  I think I busted this.  -Ossama
-           if test dlprefiles = "$prev"; then
-             # Preload the old-style object.
-             func_append dlprefiles " $pic_object"
-             prev=
-           fi
-
-           # A PIC object.
-           func_append libobjs " $pic_object"
-           arg=$pic_object
-         }
-
-         # Non-PIC object.
-         if test none != "$non_pic_object"; then
-           # Prepend the subdirectory the object is found in.
-           non_pic_object=$xdir$non_pic_object
-
-           # A standard non-PIC object
-           func_append non_pic_objects " $non_pic_object"
-           if test -z "$pic_object" || test none = "$pic_object"; then
-             arg=$non_pic_object
-           fi
-         else
-           # If the PIC object exists, use it instead.
-           # $xdir was prepended to $pic_object above.
-           non_pic_object=$pic_object
-           func_append non_pic_objects " $non_pic_object"
-         fi
-       else
-         # Only an error if not doing a dry-run.
-         if $opt_dry_run; then
-           # Extract subdirectory from the argument.
-           func_dirname "$arg" "/" ""
-           xdir=$func_dirname_result
-
-           func_lo2o "$arg"
-           pic_object=$xdir$objdir/$func_lo2o_result
-           non_pic_object=$xdir$func_lo2o_result
-           func_append libobjs " $pic_object"
-           func_append non_pic_objects " $non_pic_object"
-         else
-           func_fatal_error "'$arg' is not a valid libtool object"
-         fi
-       fi
-       ;;
-
-      *.$libext)
-       # An archive.
-       func_append deplibs " $arg"
-       func_append old_deplibs " $arg"
-       continue
-       ;;
-
-      *.la)
-       # A libtool-controlled library.
-
-       func_resolve_sysroot "$arg"
-       if test dlfiles = "$prev"; then
-         # This library was specified with -dlopen.
-         func_append dlfiles " $func_resolve_sysroot_result"
-         prev=
-       elif test dlprefiles = "$prev"; then
-         # The library was specified with -dlpreopen.
-         func_append dlprefiles " $func_resolve_sysroot_result"
-         prev=
-       else
-         func_append deplibs " $func_resolve_sysroot_result"
-       fi
-       continue
-       ;;
-
-      # Some other compiler argument.
-      *)
-       # Unknown arguments in both finalize_command and compile_command need
-       # to be aesthetically quoted because they are evaled later.
-       func_quote_arg pretty "$arg"
-       arg=$func_quote_arg_result
-       ;;
-      esac # arg
-
-      # Now actually substitute the argument into the commands.
-      if test -n "$arg"; then
-       func_append compile_command " $arg"
-       func_append finalize_command " $arg"
-      fi
-    done # argument parsing loop
-
-    test -n "$prev" && \
-      func_fatal_help "the '$prevarg' option requires an argument"
-
-    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
-      eval arg=\"$export_dynamic_flag_spec\"
-      func_append compile_command " $arg"
-      func_append finalize_command " $arg"
-    fi
-
-    oldlibs=
-    # calculate the name of the file, without its directory
-    func_basename "$output"
-    outputname=$func_basename_result
-    libobjs_save=$libobjs
-
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
-    else
-      shlib_search_path=
-    fi
-    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
-    # Definition is injected by LT_CONFIG during libtool generation.
-    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
-
-    func_dirname "$output" "/" ""
-    output_objdir=$func_dirname_result$objdir
-    func_to_tool_file "$output_objdir/"
-    tool_output_objdir=$func_to_tool_file_result
-    # Create the object directory.
-    func_mkdir_p "$output_objdir"
-
-    # Determine the type of output
-    case $output in
-    "")
-      func_fatal_help "you must specify an output file"
-      ;;
-    *.$libext) linkmode=oldlib ;;
-    *.lo | *.$objext) linkmode=obj ;;
-    *.la) linkmode=lib ;;
-    *) linkmode=prog ;; # Anything else should be a program.
-    esac
-
-    specialdeplibs=
-
-    libs=
-    # Find all interdependent deplibs by searching for libraries
-    # that are linked more than once (e.g. -la -lb -la)
-    for deplib in $deplibs; do
-      if $opt_preserve_dup_deps; then
-       case "$libs " in
-       *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-       esac
-      fi
-      func_append libs " $deplib"
-    done
-
-    if test lib = "$linkmode"; then
-      libs="$predeps $libs $compiler_lib_search_path $postdeps"
-
-      # Compute libraries that are listed more than once in $predeps
-      # $postdeps and mark them as special (i.e., whose duplicates are
-      # not to be eliminated).
-      pre_post_deps=
-      if $opt_duplicate_compiler_generated_deps; then
-       for pre_post_dep in $predeps $postdeps; do
-         case "$pre_post_deps " in
-         *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
-         esac
-         func_append pre_post_deps " $pre_post_dep"
-       done
-      fi
-      pre_post_deps=
-    fi
-
-    deplibs=
-    newdependency_libs=
-    newlib_search_path=
-    need_relink=no # whether we're linking any uninstalled libtool libraries
-    notinst_deplibs= # not-installed libtool libraries
-    notinst_path= # paths that contain not-installed libtool libraries
-
-    case $linkmode in
-    lib)
-       passes="conv dlpreopen link"
-       for file in $dlfiles $dlprefiles; do
-         case $file in
-         *.la) ;;
-         *)
-           func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
-           ;;
-         esac
-       done
-       ;;
-    prog)
-       compile_deplibs=
-       finalize_deplibs=
-       alldeplibs=false
-       newdlfiles=
-       newdlprefiles=
-       passes="conv scan dlopen dlpreopen link"
-       ;;
-    *)  passes="conv"
-       ;;
-    esac
-
-    for pass in $passes; do
-      # The preopen pass in lib mode reverses $deplibs; put it back here
-      # so that -L comes before libs that need it for instance...
-      if test lib,link = "$linkmode,$pass"; then
-       ## FIXME: Find the place where the list is rebuilt in the wrong
-       ##        order, and fix it there properly
-        tmp_deplibs=
-       for deplib in $deplibs; do
-         tmp_deplibs="$deplib $tmp_deplibs"
-       done
-       deplibs=$tmp_deplibs
-      fi
-
-      if test lib,link = "$linkmode,$pass" ||
-        test prog,scan = "$linkmode,$pass"; then
-       libs=$deplibs
-       deplibs=
-      fi
-      if test prog = "$linkmode"; then
-       case $pass in
-       dlopen) libs=$dlfiles ;;
-       dlpreopen) libs=$dlprefiles ;;
-       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
-       esac
-      fi
-      if test lib,dlpreopen = "$linkmode,$pass"; then
-       # Collect and forward deplibs of preopened libtool libs
-       for lib in $dlprefiles; do
-         # Ignore non-libtool-libs
-         dependency_libs=
-         func_resolve_sysroot "$lib"
-         case $lib in
-         *.la) func_source "$func_resolve_sysroot_result" ;;
-         esac
-
-         # Collect preopened libtool deplibs, except any this library
-         # has declared as weak libs
-         for deplib in $dependency_libs; do
-           func_basename "$deplib"
-            deplib_base=$func_basename_result
-           case " $weak_libs " in
-           *" $deplib_base "*) ;;
-           *) func_append deplibs " $deplib" ;;
-           esac
-         done
-       done
-       libs=$dlprefiles
-      fi
-      if test dlopen = "$pass"; then
-       # Collect dlpreopened libraries
-       save_deplibs=$deplibs
-       deplibs=
-      fi
-
-      for deplib in $libs; do
-       lib=
-       found=false
-       case $deplib in
-       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-         if test prog,link = "$linkmode,$pass"; then
-           compile_deplibs="$deplib $compile_deplibs"
-           finalize_deplibs="$deplib $finalize_deplibs"
-         else
-           func_append compiler_flags " $deplib"
-           if test lib = "$linkmode"; then
-               case "$new_inherited_linker_flags " in
-                   *" $deplib "*) ;;
-                   * ) func_append new_inherited_linker_flags " $deplib" ;;
-               esac
-           fi
-         fi
-         continue
-         ;;
-       -l*)
-         if test lib != "$linkmode" && test prog != "$linkmode"; then
-           func_warning "'-l' is ignored for archives/objects"
-           continue
-         fi
-         func_stripname '-l' '' "$deplib"
-         name=$func_stripname_result
-         if test lib = "$linkmode"; then
-           searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
-         else
-           searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
-         fi
-         for searchdir in $searchdirs; do
-           for search_ext in .la $std_shrext .so .a; do
-             # Search the libtool library
-             lib=$searchdir/lib$name$search_ext
-             if test -f "$lib"; then
-               if test .la = "$search_ext"; then
-                 found=:
-               else
-                 found=false
-               fi
-               break 2
-             fi
-           done
-         done
-         if $found; then
-           # deplib is a libtool library
-           # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
-           # We need to do some special things here, and not later.
-           if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-             case " $predeps $postdeps " in
-             *" $deplib "*)
-               if func_lalib_p "$lib"; then
-                 library_names=
-                 old_library=
-                 func_source "$lib"
-                 for l in $old_library $library_names; do
-                   ll=$l
-                 done
-                 if test "X$ll" = "X$old_library"; then # only static version available
-                   found=false
-                   func_dirname "$lib" "" "."
-                   ladir=$func_dirname_result
-                   lib=$ladir/$old_library
-                   if test prog,link = "$linkmode,$pass"; then
-                     compile_deplibs="$deplib $compile_deplibs"
-                     finalize_deplibs="$deplib $finalize_deplibs"
-                   else
-                     deplibs="$deplib $deplibs"
-                     test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
-                   fi
-                   continue
-                 fi
-               fi
-               ;;
-             *) ;;
-             esac
-           fi
-         else
-           # deplib doesn't seem to be a libtool library
-           if test prog,link = "$linkmode,$pass"; then
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           else
-             deplibs="$deplib $deplibs"
-             test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
-           fi
-           continue
-         fi
-         ;; # -l
-       *.ltframework)
-         if test prog,link = "$linkmode,$pass"; then
-           compile_deplibs="$deplib $compile_deplibs"
-           finalize_deplibs="$deplib $finalize_deplibs"
-         else
-           deplibs="$deplib $deplibs"
-           if test lib = "$linkmode"; then
-               case "$new_inherited_linker_flags " in
-                   *" $deplib "*) ;;
-                   * ) func_append new_inherited_linker_flags " $deplib" ;;
-               esac
-           fi
-         fi
-         continue
-         ;;
-       -L*)
-         case $linkmode in
-         lib)
-           deplibs="$deplib $deplibs"
-           test conv = "$pass" && continue
-           newdependency_libs="$deplib $newdependency_libs"
-           func_stripname '-L' '' "$deplib"
-           func_resolve_sysroot "$func_stripname_result"
-           func_append newlib_search_path " $func_resolve_sysroot_result"
-           ;;
-         prog)
-           if test conv = "$pass"; then
-             deplibs="$deplib $deplibs"
-             continue
-           fi
-           if test scan = "$pass"; then
-             deplibs="$deplib $deplibs"
-           else
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           fi
-           func_stripname '-L' '' "$deplib"
-           func_resolve_sysroot "$func_stripname_result"
-           func_append newlib_search_path " $func_resolve_sysroot_result"
-           ;;
-         *)
-           func_warning "'-L' is ignored for archives/objects"
-           ;;
-         esac # linkmode
-         continue
-         ;; # -L
-       -R*)
-         if test link = "$pass"; then
-           func_stripname '-R' '' "$deplib"
-           func_resolve_sysroot "$func_stripname_result"
-           dir=$func_resolve_sysroot_result
-           # Make sure the xrpath contains only unique directories.
-           case "$xrpath " in
-           *" $dir "*) ;;
-           *) func_append xrpath " $dir" ;;
-           esac
-         fi
-         deplibs="$deplib $deplibs"
-         continue
-         ;;
-       *.la)
-         func_resolve_sysroot "$deplib"
-         lib=$func_resolve_sysroot_result
-         ;;
-       *.$libext)
-         if test conv = "$pass"; then
-           deplibs="$deplib $deplibs"
-           continue
-         fi
-         case $linkmode in
-         lib)
-           # Linking convenience modules into shared libraries is allowed,
-           # but linking other static libraries is non-portable.
-           case " $dlpreconveniencelibs " in
-           *" $deplib "*) ;;
-           *)
-             valid_a_lib=false
-             case $deplibs_check_method in
-               match_pattern*)
-                 set dummy $deplibs_check_method; shift
-                 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-                 if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
-                   | $EGREP "$match_pattern_regex" > /dev/null; then
-                   valid_a_lib=:
-                 fi
-               ;;
-               pass_all)
-                 valid_a_lib=:
-               ;;
-             esac
-             if $valid_a_lib; then
-               echo
-               $ECHO "*** Warning: Linking the shared library $output against the"
-               $ECHO "*** static library $deplib is not portable!"
-               deplibs="$deplib $deplibs"
-             else
-               echo
-               $ECHO "*** Warning: Trying to link with static lib archive $deplib."
-               echo "*** I have the capability to make that library automatically link in when"
-               echo "*** you link to this library.  But I can only do this if you have a"
-               echo "*** shared version of the library, which you do not appear to have"
-               echo "*** because the file extensions .$libext of this argument makes me believe"
-               echo "*** that it is just a static archive that I should not use here."
-             fi
-             ;;
-           esac
-           continue
-           ;;
-         prog)
-           if test link != "$pass"; then
-             deplibs="$deplib $deplibs"
-           else
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           fi
-           continue
-           ;;
-         esac # linkmode
-         ;; # *.$libext
-       *.lo | *.$objext)
-         if test conv = "$pass"; then
-           deplibs="$deplib $deplibs"
-         elif test prog = "$linkmode"; then
-           if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
-             # If there is no dlopen support or we're linking statically,
-             # we need to preload.
-             func_append newdlprefiles " $deplib"
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           else
-             func_append newdlfiles " $deplib"
-           fi
-         fi
-         continue
-         ;;
-       %DEPLIBS%)
-         alldeplibs=:
-         continue
-         ;;
-       esac # case $deplib
-
-       $found || test -f "$lib" \
-         || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
-
-       # Check to see that this really is a libtool archive.
-       func_lalib_unsafe_p "$lib" \
-         || func_fatal_error "'$lib' is not a valid libtool archive"
-
-       func_dirname "$lib" "" "."
-       ladir=$func_dirname_result
-
-       dlname=
-       dlopen=
-       dlpreopen=
-       libdir=
-       library_names=
-       old_library=
-       inherited_linker_flags=
-       # If the library was installed with an old release of libtool,
-       # it will not redefine variables installed, or shouldnotlink
-       installed=yes
-       shouldnotlink=no
-       avoidtemprpath=
-
-
-       # Read the .la file
-       func_source "$lib"
-
-       # Convert "-framework foo" to "foo.ltframework"
-       if test -n "$inherited_linker_flags"; then
-         tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
-         for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
-           case " $new_inherited_linker_flags " in
-             *" $tmp_inherited_linker_flag "*) ;;
-             *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
-           esac
-         done
-       fi
-       dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       if test lib,link = "$linkmode,$pass" ||
-          test prog,scan = "$linkmode,$pass" ||
-          { test prog != "$linkmode" && test lib != "$linkmode"; }; then
-         test -n "$dlopen" && func_append dlfiles " $dlopen"
-         test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
-       fi
-
-       if test conv = "$pass"; then
-         # Only check for convenience libraries
-         deplibs="$lib $deplibs"
-         if test -z "$libdir"; then
-           if test -z "$old_library"; then
-             func_fatal_error "cannot find name of link library for '$lib'"
-           fi
-           # It is a libtool convenience library, so add in its objects.
-           func_append convenience " $ladir/$objdir/$old_library"
-           func_append old_convenience " $ladir/$objdir/$old_library"
-         elif test prog != "$linkmode" && test lib != "$linkmode"; then
-           func_fatal_error "'$lib' is not a convenience library"
-         fi
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           deplibs="$deplib $deplibs"
-           if $opt_preserve_dup_deps; then
-             case "$tmp_libs " in
-             *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-             esac
-           fi
-           func_append tmp_libs " $deplib"
-         done
-         continue
-       fi # $pass = conv
-
-
-       # Get the name of the library we link against.
-       linklib=
-       if test -n "$old_library" &&
-          { test yes = "$prefer_static_libs" ||
-            test built,no = "$prefer_static_libs,$installed"; }; then
-         linklib=$old_library
-       else
-         for l in $old_library $library_names; do
-           linklib=$l
-         done
-       fi
-       if test -z "$linklib"; then
-         func_fatal_error "cannot find name of link library for '$lib'"
-       fi
-
-       # This library was specified with -dlopen.
-       if test dlopen = "$pass"; then
-         test -z "$libdir" \
-           && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
-         if test -z "$dlname" ||
-            test yes != "$dlopen_support" ||
-            test no = "$build_libtool_libs"
-         then
-           # If there is no dlname, no dlopen support or we're linking
-           # statically, we need to preload.  We also need to preload any
-           # dependent libraries so libltdl's deplib preloader doesn't
-           # bomb out in the load deplibs phase.
-           func_append dlprefiles " $lib $dependency_libs"
-         else
-           func_append newdlfiles " $lib"
-         fi
-         continue
-       fi # $pass = dlopen
-
-       # We need an absolute path.
-       case $ladir in
-       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
-       *)
-         abs_ladir=`cd "$ladir" && pwd`
-         if test -z "$abs_ladir"; then
-           func_warning "cannot determine absolute directory name of '$ladir'"
-           func_warning "passing it literally to the linker, although it might fail"
-           abs_ladir=$ladir
-         fi
-         ;;
-       esac
-       func_basename "$lib"
-       laname=$func_basename_result
-
-       # Find the relevant object directory and library name.
-       if test yes = "$installed"; then
-         if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-           func_warning "library '$lib' was moved."
-           dir=$ladir
-           absdir=$abs_ladir
-           libdir=$abs_ladir
-         else
-           dir=$lt_sysroot$libdir
-           absdir=$lt_sysroot$libdir
-         fi
-         test yes = "$hardcode_automatic" && avoidtemprpath=yes
-       else
-         if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-           dir=$ladir
-           absdir=$abs_ladir
-           # Remove this search path later
-           func_append notinst_path " $abs_ladir"
-         else
-           dir=$ladir/$objdir
-           absdir=$abs_ladir/$objdir
-           # Remove this search path later
-           func_append notinst_path " $abs_ladir"
-         fi
-       fi # $installed = yes
-       func_stripname 'lib' '.la' "$laname"
-       name=$func_stripname_result
-
-       # This library was specified with -dlpreopen.
-       if test dlpreopen = "$pass"; then
-         if test -z "$libdir" && test prog = "$linkmode"; then
-           func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
-         fi
-         case $host in
-           # special handling for platforms with PE-DLLs.
-           *cygwin* | *mingw* | *cegcc* )
-             # Linker will automatically link against shared library if both
-             # static and shared are present.  Therefore, ensure we extract
-             # symbols from the import library if a shared library is present
-             # (otherwise, the dlopen module name will be incorrect).  We do
-             # this by putting the import library name into $newdlprefiles.
-             # We recover the dlopen module name by 'saving' the la file
-             # name in a special purpose variable, and (later) extracting the
-             # dlname from the la file.
-             if test -n "$dlname"; then
-               func_tr_sh "$dir/$linklib"
-               eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
-               func_append newdlprefiles " $dir/$linklib"
-             else
-               func_append newdlprefiles " $dir/$old_library"
-               # Keep a list of preopened convenience libraries to check
-               # that they are being used correctly in the link pass.
-               test -z "$libdir" && \
-                 func_append dlpreconveniencelibs " $dir/$old_library"
-             fi
-           ;;
-           * )
-             # Prefer using a static library (so that no silly _DYNAMIC symbols
-             # are required to link).
-             if test -n "$old_library"; then
-               func_append newdlprefiles " $dir/$old_library"
-               # Keep a list of preopened convenience libraries to check
-               # that they are being used correctly in the link pass.
-               test -z "$libdir" && \
-                 func_append dlpreconveniencelibs " $dir/$old_library"
-             # Otherwise, use the dlname, so that lt_dlopen finds it.
-             elif test -n "$dlname"; then
-               func_append newdlprefiles " $dir/$dlname"
-             else
-               func_append newdlprefiles " $dir/$linklib"
-             fi
-           ;;
-         esac
-       fi # $pass = dlpreopen
-
-       if test -z "$libdir"; then
-         # Link the convenience library
-         if test lib = "$linkmode"; then
-           deplibs="$dir/$old_library $deplibs"
-         elif test prog,link = "$linkmode,$pass"; then
-           compile_deplibs="$dir/$old_library $compile_deplibs"
-           finalize_deplibs="$dir/$old_library $finalize_deplibs"
-         else
-           deplibs="$lib $deplibs" # used for prog,scan pass
-         fi
-         continue
-       fi
-
-
-       if test prog = "$linkmode" && test link != "$pass"; then
-         func_append newlib_search_path " $ladir"
-         deplibs="$lib $deplibs"
-
-         linkalldeplibs=false
-         if test no != "$link_all_deplibs" || test -z "$library_names" ||
-            test no = "$build_libtool_libs"; then
-           linkalldeplibs=:
-         fi
-
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           case $deplib in
-           -L*) func_stripname '-L' '' "$deplib"
-                func_resolve_sysroot "$func_stripname_result"
-                func_append newlib_search_path " $func_resolve_sysroot_result"
-                ;;
-           esac
-           # Need to link against all dependency_libs?
-           if $linkalldeplibs; then
-             deplibs="$deplib $deplibs"
-           else
-             # Need to hardcode shared library paths
-             # or/and link against static libraries
-             newdependency_libs="$deplib $newdependency_libs"
-           fi
-           if $opt_preserve_dup_deps; then
-             case "$tmp_libs " in
-             *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-             esac
-           fi
-           func_append tmp_libs " $deplib"
-         done # for deplib
-         continue
-       fi # $linkmode = prog...
-
-       if test prog,link = "$linkmode,$pass"; then
-         if test -n "$library_names" &&
-            { { test no = "$prefer_static_libs" ||
-                test built,yes = "$prefer_static_libs,$installed"; } ||
-              test -z "$old_library"; }; then
-           # We need to hardcode the library path
-           if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
-             # Make sure the rpath contains only unique directories.
-             case $temp_rpath: in
-             *"$absdir:"*) ;;
-             *) func_append temp_rpath "$absdir:" ;;
-             esac
-           fi
-
-           # Hardcode the library path.
-           # Skip directories that are in the system default run-time
-           # search path.
-           case " $sys_lib_dlsearch_path " in
-           *" $absdir "*) ;;
-           *)
-             case "$compile_rpath " in
-             *" $absdir "*) ;;
-             *) func_append compile_rpath " $absdir" ;;
-             esac
-             ;;
-           esac
-           case " $sys_lib_dlsearch_path " in
-           *" $libdir "*) ;;
-           *)
-             case "$finalize_rpath " in
-             *" $libdir "*) ;;
-             *) func_append finalize_rpath " $libdir" ;;
-             esac
-             ;;
-           esac
-         fi # $linkmode,$pass = prog,link...
-
-         if $alldeplibs &&
-            { test pass_all = "$deplibs_check_method" ||
-              { test yes = "$build_libtool_libs" &&
-                test -n "$library_names"; }; }; then
-           # We only need to search for static libraries
-           continue
-         fi
-       fi
-
-       link_static=no # Whether the deplib will be linked statically
-       use_static_libs=$prefer_static_libs
-       if test built = "$use_static_libs" && test yes = "$installed"; then
-         use_static_libs=no
-       fi
-       if test -n "$library_names" &&
-          { test no = "$use_static_libs" || test -z "$old_library"; }; then
-         case $host in
-         *cygwin* | *mingw* | *cegcc* | *os2*)
-             # No point in relinking DLLs because paths are not encoded
-             func_append notinst_deplibs " $lib"
-             need_relink=no
-           ;;
-         *)
-           if test no = "$installed"; then
-             func_append notinst_deplibs " $lib"
-             need_relink=yes
-           fi
-           ;;
-         esac
-         # This is a shared library
-
-         # Warn about portability, can't link against -module's on some
-         # systems (darwin).  Don't bleat about dlopened modules though!
-         dlopenmodule=
-         for dlpremoduletest in $dlprefiles; do
-           if test "X$dlpremoduletest" = "X$lib"; then
-             dlopenmodule=$dlpremoduletest
-             break
-           fi
-         done
-         if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
-           echo
-           if test prog = "$linkmode"; then
-             $ECHO "*** Warning: Linking the executable $output against the loadable module"
-           else
-             $ECHO "*** Warning: Linking the shared library $output against the loadable module"
-           fi
-           $ECHO "*** $linklib is not portable!"
-         fi
-         if test lib = "$linkmode" &&
-            test yes = "$hardcode_into_libs"; then
-           # Hardcode the library path.
-           # Skip directories that are in the system default run-time
-           # search path.
-           case " $sys_lib_dlsearch_path " in
-           *" $absdir "*) ;;
-           *)
-             case "$compile_rpath " in
-             *" $absdir "*) ;;
-             *) func_append compile_rpath " $absdir" ;;
-             esac
-             ;;
-           esac
-           case " $sys_lib_dlsearch_path " in
-           *" $libdir "*) ;;
-           *)
-             case "$finalize_rpath " in
-             *" $libdir "*) ;;
-             *) func_append finalize_rpath " $libdir" ;;
-             esac
-             ;;
-           esac
-         fi
-
-         if test -n "$old_archive_from_expsyms_cmds"; then
-           # figure out the soname
-           set dummy $library_names
-           shift
-           realname=$1
-           shift
-           libname=`eval "\\$ECHO \"$libname_spec\""`
-           # use dlname if we got it. it's perfectly good, no?
-           if test -n "$dlname"; then
-             soname=$dlname
-           elif test -n "$soname_spec"; then
-             # bleh windows
-             case $host in
-             *cygwin* | mingw* | *cegcc* | *os2*)
-               func_arith $current - $age
-               major=$func_arith_result
-               versuffix=-$major
-               ;;
-             esac
-             eval soname=\"$soname_spec\"
-           else
-             soname=$realname
-           fi
-
-           # Make a new name for the extract_expsyms_cmds to use
-           soroot=$soname
-           func_basename "$soroot"
-           soname=$func_basename_result
-           func_stripname 'lib' '.dll' "$soname"
-           newlib=libimp-$func_stripname_result.a
-
-           # If the library has no export list, then create one now
-           if test -f "$output_objdir/$soname-def"; then :
-           else
-             func_verbose "extracting exported symbol list from '$soname'"
-             func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
-           fi
-
-           # Create $newlib
-           if test -f "$output_objdir/$newlib"; then :; else
-             func_verbose "generating import library for '$soname'"
-             func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
-           fi
-           # make sure the library variables are pointing to the new library
-           dir=$output_objdir
-           linklib=$newlib
-         fi # test -n "$old_archive_from_expsyms_cmds"
-
-         if test prog = "$linkmode" || test relink != "$opt_mode"; then
-           add_shlibpath=
-           add_dir=
-           add=
-           lib_linked=yes
-           case $hardcode_action in
-           immediate | unsupported)
-             if test no = "$hardcode_direct"; then
-               add=$dir/$linklib
-               case $host in
-                 *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
-                 *-*-sysv4*uw2*) add_dir=-L$dir ;;
-                 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-                   *-*-unixware7*) add_dir=-L$dir ;;
-                 *-*-darwin* )
-                   # if the lib is a (non-dlopened) module then we cannot
-                   # link against it, someone is ignoring the earlier warnings
-                   if /usr/bin/file -L $add 2> /dev/null |
-                        $GREP ": [^:]* bundle" >/dev/null; then
-                     if test "X$dlopenmodule" != "X$lib"; then
-                       $ECHO "*** Warning: lib $linklib is a module, not a shared library"
-                       if test -z "$old_library"; then
-                         echo
-                         echo "*** And there doesn't seem to be a static archive available"
-                         echo "*** The link will probably fail, sorry"
-                       else
-                         add=$dir/$old_library
-                       fi
-                     elif test -n "$old_library"; then
-                       add=$dir/$old_library
-                     fi
-                   fi
-               esac
-             elif test no = "$hardcode_minus_L"; then
-               case $host in
-               *-*-sunos*) add_shlibpath=$dir ;;
-               esac
-               add_dir=-L$dir
-               add=-l$name
-             elif test no = "$hardcode_shlibpath_var"; then
-               add_shlibpath=$dir
-               add=-l$name
-             else
-               lib_linked=no
-             fi
-             ;;
-           relink)
-             if test yes = "$hardcode_direct" &&
-                test no = "$hardcode_direct_absolute"; then
-               add=$dir/$linklib
-             elif test yes = "$hardcode_minus_L"; then
-               add_dir=-L$absdir
-               # Try looking first in the location we're being installed to.
-               if test -n "$inst_prefix_dir"; then
-                 case $libdir in
-                   [\\/]*)
-                     func_append add_dir " -L$inst_prefix_dir$libdir"
-                     ;;
-                 esac
-               fi
-               add=-l$name
-             elif test yes = "$hardcode_shlibpath_var"; then
-               add_shlibpath=$dir
-               add=-l$name
-             else
-               lib_linked=no
-             fi
-             ;;
-           *) lib_linked=no ;;
-           esac
-
-           if test yes != "$lib_linked"; then
-             func_fatal_configuration "unsupported hardcode properties"
-           fi
-
-           if test -n "$add_shlibpath"; then
-             case :$compile_shlibpath: in
-             *":$add_shlibpath:"*) ;;
-             *) func_append compile_shlibpath "$add_shlibpath:" ;;
-             esac
-           fi
-           if test prog = "$linkmode"; then
-             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-             test -n "$add" && compile_deplibs="$add $compile_deplibs"
-           else
-             test -n "$add_dir" && deplibs="$add_dir $deplibs"
-             test -n "$add" && deplibs="$add $deplibs"
-             if test yes != "$hardcode_direct" &&
-                test yes != "$hardcode_minus_L" &&
-                test yes = "$hardcode_shlibpath_var"; then
-               case :$finalize_shlibpath: in
-               *":$libdir:"*) ;;
-               *) func_append finalize_shlibpath "$libdir:" ;;
-               esac
-             fi
-           fi
-         fi
-
-         if test prog = "$linkmode" || test relink = "$opt_mode"; then
-           add_shlibpath=
-           add_dir=
-           add=
-           # Finalize command for both is simple: just hardcode it.
-           if test yes = "$hardcode_direct" &&
-              test no = "$hardcode_direct_absolute"; then
-             add=$libdir/$linklib
-           elif test yes = "$hardcode_minus_L"; then
-             add_dir=-L$libdir
-             add=-l$name
-           elif test yes = "$hardcode_shlibpath_var"; then
-             case :$finalize_shlibpath: in
-             *":$libdir:"*) ;;
-             *) func_append finalize_shlibpath "$libdir:" ;;
-             esac
-             add=-l$name
-           elif test yes = "$hardcode_automatic"; then
-             if test -n "$inst_prefix_dir" &&
-                test -f "$inst_prefix_dir$libdir/$linklib"; then
-               add=$inst_prefix_dir$libdir/$linklib
-             else
-               add=$libdir/$linklib
-             fi
-           else
-             # We cannot seem to hardcode it, guess we'll fake it.
-             add_dir=-L$libdir
-             # Try looking first in the location we're being installed to.
-             if test -n "$inst_prefix_dir"; then
-               case $libdir in
-                 [\\/]*)
-                   func_append add_dir " -L$inst_prefix_dir$libdir"
-                   ;;
-               esac
-             fi
-             add=-l$name
-           fi
-
-           if test prog = "$linkmode"; then
-             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
-           else
-             test -n "$add_dir" && deplibs="$add_dir $deplibs"
-             test -n "$add" && deplibs="$add $deplibs"
-           fi
-         fi
-       elif test prog = "$linkmode"; then
-         # Here we assume that one of hardcode_direct or hardcode_minus_L
-         # is not unsupported.  This is valid on all known static and
-         # shared platforms.
-         if test unsupported != "$hardcode_direct"; then
-           test -n "$old_library" && linklib=$old_library
-           compile_deplibs="$dir/$linklib $compile_deplibs"
-           finalize_deplibs="$dir/$linklib $finalize_deplibs"
-         else
-           compile_deplibs="-l$name -L$dir $compile_deplibs"
-           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
-         fi
-       elif test yes = "$build_libtool_libs"; then
-         # Not a shared library
-         if test pass_all != "$deplibs_check_method"; then
-           # We're trying link a shared library against a static one
-           # but the system doesn't support it.
-
-           # Just print a warning and add the library to dependency_libs so
-           # that the program can be linked against the static library.
-           echo
-           $ECHO "*** Warning: This system cannot link to static lib archive $lib."
-           echo "*** I have the capability to make that library automatically link in when"
-           echo "*** you link to this library.  But I can only do this if you have a"
-           echo "*** shared version of the library, which you do not appear to have."
-           if test yes = "$module"; then
-             echo "*** But as you try to build a module library, libtool will still create "
-             echo "*** a static module, that should work as long as the dlopening application"
-             echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
-             if test -z "$global_symbol_pipe"; then
-               echo
-               echo "*** However, this would only work if libtool was able to extract symbol"
-               echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
-               echo "*** not find such a program.  So, this module is probably useless."
-               echo "*** 'nm' from GNU binutils and a full rebuild may help."
-             fi
-             if test no = "$build_old_libs"; then
-               build_libtool_libs=module
-               build_old_libs=yes
-             else
-               build_libtool_libs=no
-             fi
-           fi
-         else
-           deplibs="$dir/$old_library $deplibs"
-           link_static=yes
-         fi
-       fi # link shared/static library?
-
-       if test lib = "$linkmode"; then
-         if test -n "$dependency_libs" &&
-            { test yes != "$hardcode_into_libs" ||
-              test yes = "$build_old_libs" ||
-              test yes = "$link_static"; }; then
-           # Extract -R from dependency_libs
-           temp_deplibs=
-           for libdir in $dependency_libs; do
-             case $libdir in
-             -R*) func_stripname '-R' '' "$libdir"
-                  temp_xrpath=$func_stripname_result
-                  case " $xrpath " in
-                  *" $temp_xrpath "*) ;;
-                  *) func_append xrpath " $temp_xrpath";;
-                  esac;;
-             *) func_append temp_deplibs " $libdir";;
-             esac
-           done
-           dependency_libs=$temp_deplibs
-         fi
-
-         func_append newlib_search_path " $absdir"
-         # Link against this library
-         test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
-         # ... and its dependency_libs
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           newdependency_libs="$deplib $newdependency_libs"
-           case $deplib in
-              -L*) func_stripname '-L' '' "$deplib"
-                   func_resolve_sysroot "$func_stripname_result";;
-              *) func_resolve_sysroot "$deplib" ;;
-            esac
-           if $opt_preserve_dup_deps; then
-             case "$tmp_libs " in
-             *" $func_resolve_sysroot_result "*)
-                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
-             esac
-           fi
-           func_append tmp_libs " $func_resolve_sysroot_result"
-         done
-
-         if test no != "$link_all_deplibs"; then
-           # Add the search paths of all dependency libraries
-           for deplib in $dependency_libs; do
-             path=
-             case $deplib in
-             -L*) path=$deplib ;;
-             *.la)
-               func_resolve_sysroot "$deplib"
-               deplib=$func_resolve_sysroot_result
-               func_dirname "$deplib" "" "."
-               dir=$func_dirname_result
-               # We need an absolute path.
-               case $dir in
-               [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
-               *)
-                 absdir=`cd "$dir" && pwd`
-                 if test -z "$absdir"; then
-                   func_warning "cannot determine absolute directory name of '$dir'"
-                   absdir=$dir
-                 fi
-                 ;;
-               esac
-               if $GREP "^installed=no" $deplib > /dev/null; then
-               case $host in
-               *-*-darwin*)
-                 depdepl=
-                 eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-                 if test -n "$deplibrary_names"; then
-                   for tmp in $deplibrary_names; do
-                     depdepl=$tmp
-                   done
-                   if test -f "$absdir/$objdir/$depdepl"; then
-                     depdepl=$absdir/$objdir/$depdepl
-                     darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
-                      if test -z "$darwin_install_name"; then
-                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
-                      fi
-                     func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
-                     func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
-                     path=
-                   fi
-                 fi
-                 ;;
-               *)
-                 path=-L$absdir/$objdir
-                 ;;
-               esac
-               else
-                 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-                 test -z "$libdir" && \
-                   func_fatal_error "'$deplib' is not a valid libtool archive"
-                 test "$absdir" != "$libdir" && \
-                   func_warning "'$deplib' seems to be moved"
-
-                 path=-L$absdir
-               fi
-               ;;
-             esac
-             case " $deplibs " in
-             *" $path "*) ;;
-             *) deplibs="$path $deplibs" ;;
-             esac
-           done
-         fi # link_all_deplibs != no
-       fi # linkmode = lib
-      done # for deplib in $libs
-      if test link = "$pass"; then
-       if test prog = "$linkmode"; then
-         compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
-         finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
-       else
-         compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       fi
-      fi
-      dependency_libs=$newdependency_libs
-      if test dlpreopen = "$pass"; then
-       # Link the dlpreopened libraries before other libraries
-       for deplib in $save_deplibs; do
-         deplibs="$deplib $deplibs"
-       done
-      fi
-      if test dlopen != "$pass"; then
-       test conv = "$pass" || {
-         # Make sure lib_search_path contains only unique directories.
-         lib_search_path=
-         for dir in $newlib_search_path; do
-           case "$lib_search_path " in
-           *" $dir "*) ;;
-           *) func_append lib_search_path " $dir" ;;
-           esac
-         done
-         newlib_search_path=
-       }
-
-       if test prog,link = "$linkmode,$pass"; then
-         vars="compile_deplibs finalize_deplibs"
-       else
-         vars=deplibs
-       fi
-       for var in $vars dependency_libs; do
-         # Add libraries to $var in reverse order
-         eval tmp_libs=\"\$$var\"
-         new_libs=
-         for deplib in $tmp_libs; do
-           # FIXME: Pedantically, this is the right thing to do, so
-           #        that some nasty dependency loop isn't accidentally
-           #        broken:
-           #new_libs="$deplib $new_libs"
-           # Pragmatically, this seems to cause very few problems in
-           # practice:
-           case $deplib in
-           -L*) new_libs="$deplib $new_libs" ;;
-           -R*) ;;
-           *)
-             # And here is the reason: when a library appears more
-             # than once as an explicit dependence of a library, or
-             # is implicitly linked in more than once by the
-             # compiler, it is considered special, and multiple
-             # occurrences thereof are not removed.  Compare this
-             # with having the same library being listed as a
-             # dependency of multiple other libraries: in this case,
-             # we know (pedantically, we assume) the library does not
-             # need to be listed more than once, so we keep only the
-             # last copy.  This is not always right, but it is rare
-             # enough that we require users that really mean to play
-             # such unportable linking tricks to link the library
-             # using -Wl,-lname, so that libtool does not consider it
-             # for duplicate removal.
-             case " $specialdeplibs " in
-             *" $deplib "*) new_libs="$deplib $new_libs" ;;
-             *)
-               case " $new_libs " in
-               *" $deplib "*) ;;
-               *) new_libs="$deplib $new_libs" ;;
-               esac
-               ;;
-             esac
-             ;;
-           esac
-         done
-         tmp_libs=
-         for deplib in $new_libs; do
-           case $deplib in
-           -L*)
-             case " $tmp_libs " in
-             *" $deplib "*) ;;
-             *) func_append tmp_libs " $deplib" ;;
-             esac
-             ;;
-           *) func_append tmp_libs " $deplib" ;;
-           esac
-         done
-         eval $var=\"$tmp_libs\"
-       done # for var
-      fi
-
-      # Add Sun CC postdeps if required:
-      test CXX = "$tagname" && {
-        case $host_os in
-        linux*)
-          case `$CC -V 2>&1 | sed 5q` in
-          *Sun\ C*) # Sun C++ 5.9
-            func_suncc_cstd_abi
-
-            if test no != "$suncc_use_cstd_abi"; then
-              func_append postdeps ' -library=Cstd -library=Crun'
-            fi
-            ;;
-          esac
-          ;;
-
-        solaris*)
-          func_cc_basename "$CC"
-          case $func_cc_basename_result in
-          CC* | sunCC*)
-            func_suncc_cstd_abi
-
-            if test no != "$suncc_use_cstd_abi"; then
-              func_append postdeps ' -library=Cstd -library=Crun'
-            fi
-            ;;
-          esac
-          ;;
-        esac
-      }
-
-      # Last step: remove runtime libs from dependency_libs
-      # (they stay in deplibs)
-      tmp_libs=
-      for i in $dependency_libs; do
-       case " $predeps $postdeps $compiler_lib_search_path " in
-       *" $i "*)
-         i=
-         ;;
-       esac
-       if test -n "$i"; then
-         func_append tmp_libs " $i"
-       fi
-      done
-      dependency_libs=$tmp_libs
-    done # for pass
-    if test prog = "$linkmode"; then
-      dlfiles=$newdlfiles
-    fi
-    if test prog = "$linkmode" || test lib = "$linkmode"; then
-      dlprefiles=$newdlprefiles
-    fi
-
-    case $linkmode in
-    oldlib)
-      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
-       func_warning "'-dlopen' is ignored for archives"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-       func_warning "'-l' and '-L' are ignored for archives" ;;
-      esac
-
-      test -n "$rpath" && \
-       func_warning "'-rpath' is ignored for archives"
-
-      test -n "$xrpath" && \
-       func_warning "'-R' is ignored for archives"
-
-      test -n "$vinfo" && \
-       func_warning "'-version-info/-version-number' is ignored for archives"
-
-      test -n "$release" && \
-       func_warning "'-release' is ignored for archives"
-
-      test -n "$export_symbols$export_symbols_regex" && \
-       func_warning "'-export-symbols' is ignored for archives"
-
-      # Now set the variables for building old libraries.
-      build_libtool_libs=no
-      oldlibs=$output
-      func_append objs "$old_deplibs"
-      ;;
-
-    lib)
-      # Make sure we only generate libraries of the form 'libNAME.la'.
-      case $outputname in
-      lib*)
-       func_stripname 'lib' '.la' "$outputname"
-       name=$func_stripname_result
-       eval shared_ext=\"$shrext_cmds\"
-       eval libname=\"$libname_spec\"
-       ;;
-      *)
-       test no = "$module" \
-         && func_fatal_help "libtool library '$output' must begin with 'lib'"
-
-       if test no != "$need_lib_prefix"; then
-         # Add the "lib" prefix for modules if required
-         func_stripname '' '.la' "$outputname"
-         name=$func_stripname_result
-         eval shared_ext=\"$shrext_cmds\"
-         eval libname=\"$libname_spec\"
-       else
-         func_stripname '' '.la' "$outputname"
-         libname=$func_stripname_result
-       fi
-       ;;
-      esac
-
-      if test -n "$objs"; then
-       if test pass_all != "$deplibs_check_method"; then
-         func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
-       else
-         echo
-         $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
-         $ECHO "*** objects $objs is not portable!"
-         func_append libobjs " $objs"
-       fi
-      fi
-
-      test no = "$dlself" \
-       || func_warning "'-dlopen self' is ignored for libtool libraries"
-
-      set dummy $rpath
-      shift
-      test 1 -lt "$#" \
-       && func_warning "ignoring multiple '-rpath's for a libtool library"
-
-      install_libdir=$1
-
-      oldlibs=
-      if test -z "$rpath"; then
-       if test yes = "$build_libtool_libs"; then
-         # Building a libtool convenience library.
-         # Some compilers have problems with a '.al' extension so
-         # convenience libraries should have the same extension an
-         # archive normally would.
-         oldlibs="$output_objdir/$libname.$libext $oldlibs"
-         build_libtool_libs=convenience
-         build_old_libs=yes
-       fi
-
-       test -n "$vinfo" && \
-         func_warning "'-version-info/-version-number' is ignored for convenience libraries"
-
-       test -n "$release" && \
-         func_warning "'-release' is ignored for convenience libraries"
-      else
-
-       # Parse the version information argument.
-       save_ifs=$IFS; IFS=:
-       set dummy $vinfo 0 0 0
-       shift
-       IFS=$save_ifs
-
-       test -n "$7" && \
-         func_fatal_help "too many parameters to '-version-info'"
-
-       # convert absolute version numbers to libtool ages
-       # this retains compatibility with .la files and attempts
-       # to make the code below a bit more comprehensible
-
-       case $vinfo_number in
-       yes)
-         number_major=$1
-         number_minor=$2
-         number_revision=$3
-         #
-         # There are really only two kinds -- those that
-         # use the current revision as the major version
-         # and those that subtract age and use age as
-         # a minor version.  But, then there is irix
-         # that has an extra 1 added just for fun
-         #
-         case $version_type in
-         # correct linux to gnu/linux during the next big refactor
-         darwin|freebsd-elf|linux|osf|windows|none)
-           func_arith $number_major + $number_minor
-           current=$func_arith_result
-           age=$number_minor
-           revision=$number_revision
-           ;;
-         freebsd-aout|qnx|sunos)
-           current=$number_major
-           revision=$number_minor
-           age=0
-           ;;
-         irix|nonstopux)
-           func_arith $number_major + $number_minor
-           current=$func_arith_result
-           age=$number_minor
-           revision=$number_minor
-           lt_irix_increment=no
-           ;;
-         esac
-         ;;
-       no)
-         current=$1
-         revision=$2
-         age=$3
-         ;;
-       esac
-
-       # Check that each of the things are valid numbers.
-       case $current in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "CURRENT '$current' must be a nonnegative integer"
-         func_fatal_error "'$vinfo' is not valid version information"
-         ;;
-       esac
-
-       case $revision in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "REVISION '$revision' must be a nonnegative integer"
-         func_fatal_error "'$vinfo' is not valid version information"
-         ;;
-       esac
-
-       case $age in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "AGE '$age' must be a nonnegative integer"
-         func_fatal_error "'$vinfo' is not valid version information"
-         ;;
-       esac
-
-       if test "$age" -gt "$current"; then
-         func_error "AGE '$age' is greater than the current interface number '$current'"
-         func_fatal_error "'$vinfo' is not valid version information"
-       fi
-
-       # Calculate the version variables.
-       major=
-       versuffix=
-       verstring=
-       case $version_type in
-       none) ;;
-
-       darwin)
-         # Like Linux, but with the current version available in
-         # verstring for coding it into the library header
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix=$major.$age.$revision
-         # Darwin ld doesn't like 0 for these options...
-         func_arith $current + 1
-         minor_current=$func_arith_result
-         xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
-         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-          # On Darwin other compilers
-          case $CC in
-              nagfor*)
-                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
-                  ;;
-              *)
-                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-                  ;;
-          esac
-         ;;
-
-       freebsd-aout)
-         major=.$current
-         versuffix=.$current.$revision
-         ;;
-
-       freebsd-elf)
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix=$major.$age.$revision
-         ;;
-
-       irix | nonstopux)
-         if test no = "$lt_irix_increment"; then
-           func_arith $current - $age
-         else
-           func_arith $current - $age + 1
-         fi
-         major=$func_arith_result
-
-         case $version_type in
-           nonstopux) verstring_prefix=nonstopux ;;
-           *)         verstring_prefix=sgi ;;
-         esac
-         verstring=$verstring_prefix$major.$revision
-
-         # Add in all the interfaces that we are compatible with.
-         loop=$revision
-         while test 0 -ne "$loop"; do
-           func_arith $revision - $loop
-           iface=$func_arith_result
-           func_arith $loop - 1
-           loop=$func_arith_result
-           verstring=$verstring_prefix$major.$iface:$verstring
-         done
-
-         # Before this point, $major must not contain '.'.
-         major=.$major
-         versuffix=$major.$revision
-         ;;
-
-       linux) # correct to gnu/linux during the next big refactor
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix=$major.$age.$revision
-         ;;
-
-       osf)
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix=.$current.$age.$revision
-         verstring=$current.$age.$revision
-
-         # Add in all the interfaces that we are compatible with.
-         loop=$age
-         while test 0 -ne "$loop"; do
-           func_arith $current - $loop
-           iface=$func_arith_result
-           func_arith $loop - 1
-           loop=$func_arith_result
-           verstring=$verstring:$iface.0
-         done
-
-         # Make executables depend on our current version.
-         func_append verstring ":$current.0"
-         ;;
-
-       qnx)
-         major=.$current
-         versuffix=.$current
-         ;;
-
-       sco)
-         major=.$current
-         versuffix=.$current
-         ;;
-
-       sunos)
-         major=.$current
-         versuffix=.$current.$revision
-         ;;
-
-       windows)
-         # Use '-' rather than '.', since we only want one
-         # extension on DOS 8.3 file systems.
-         func_arith $current - $age
-         major=$func_arith_result
-         versuffix=-$major
-         ;;
-
-       *)
-         func_fatal_configuration "unknown library version type '$version_type'"
-         ;;
-       esac
-
-       # Clear the version info if we defaulted, and they specified a release.
-       if test -z "$vinfo" && test -n "$release"; then
-         major=
-         case $version_type in
-         darwin)
-           # we can't check for "0.0" in archive_cmds due to quoting
-           # problems, so we reset it completely
-           verstring=
-           ;;
-         *)
-           verstring=0.0
-           ;;
-         esac
-         if test no = "$need_version"; then
-           versuffix=
-         else
-           versuffix=.0.0
-         fi
-       fi
-
-       # Remove version info from name if versioning should be avoided
-       if test yes,no = "$avoid_version,$need_version"; then
-         major=
-         versuffix=
-         verstring=
-       fi
-
-       # Check to see if the archive will have undefined symbols.
-       if test yes = "$allow_undefined"; then
-         if test unsupported = "$allow_undefined_flag"; then
-           if test yes = "$build_old_libs"; then
-             func_warning "undefined symbols not allowed in $host shared libraries; building static only"
-             build_libtool_libs=no
-           else
-             func_fatal_error "can't build $host shared library unless -no-undefined is specified"
-           fi
-         fi
-       else
-         # Don't allow undefined symbols.
-         allow_undefined_flag=$no_undefined_flag
-       fi
-
-      fi
-
-      func_generate_dlsyms "$libname" "$libname" :
-      func_append libobjs " $symfileobj"
-      test " " = "$libobjs" && libobjs=
-
-      if test relink != "$opt_mode"; then
-       # Remove our outputs, but don't remove object files since they
-       # may have been created when compiling PIC objects.
-       removelist=
-       tempremovelist=`$ECHO "$output_objdir/*"`
-       for p in $tempremovelist; do
-         case $p in
-           *.$objext | *.gcno)
-              ;;
-           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
-              if test -n "$precious_files_regex"; then
-                if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
-                then
-                  continue
-                fi
-              fi
-              func_append removelist " $p"
-              ;;
-           *) ;;
-         esac
-       done
-       test -n "$removelist" && \
-         func_show_eval "${RM}r \$removelist"
-      fi
-
-      # Now set the variables for building old libraries.
-      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
-       func_append oldlibs " $output_objdir/$libname.$libext"
-
-       # Transform .lo files to .o files.
-       oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
-      fi
-
-      # Eliminate all temporary directories.
-      #for path in $notinst_path; do
-      #        lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
-      #        deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
-      #        dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
-      #done
-
-      if test -n "$xrpath"; then
-       # If the user specified any rpath flags, then add them.
-       temp_xrpath=
-       for libdir in $xrpath; do
-         func_replace_sysroot "$libdir"
-         func_append temp_xrpath " -R$func_replace_sysroot_result"
-         case "$finalize_rpath " in
-         *" $libdir "*) ;;
-         *) func_append finalize_rpath " $libdir" ;;
-         esac
-       done
-       if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
-         dependency_libs="$temp_xrpath $dependency_libs"
-       fi
-      fi
-
-      # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles=$dlfiles
-      dlfiles=
-      for lib in $old_dlfiles; do
-       case " $dlprefiles $dlfiles " in
-       *" $lib "*) ;;
-       *) func_append dlfiles " $lib" ;;
-       esac
-      done
-
-      # Make sure dlprefiles contains only unique files
-      old_dlprefiles=$dlprefiles
-      dlprefiles=
-      for lib in $old_dlprefiles; do
-       case "$dlprefiles " in
-       *" $lib "*) ;;
-       *) func_append dlprefiles " $lib" ;;
-       esac
-      done
-
-      if test yes = "$build_libtool_libs"; then
-       if test -n "$rpath"; then
-         case $host in
-         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
-           # these systems don't actually have a c library (as such)!
-           ;;
-         *-*-rhapsody* | *-*-darwin1.[012])
-           # Rhapsody C library is in the System framework
-           func_append deplibs " System.ltframework"
-           ;;
-         *-*-netbsd*)
-           # Don't link with libc until the a.out ld.so is fixed.
-           ;;
-         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-           # Do not include libc due to us having libc/libc_r.
-           ;;
-         *-*-sco3.2v5* | *-*-sco5v6*)
-           # Causes problems with __ctype
-           ;;
-         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-           # Compiler inserts libc in the correct place for threads to work
-           ;;
-         *)
-           # Add libc to deplibs on all other systems if necessary.
-           if test yes = "$build_libtool_need_lc"; then
-             func_append deplibs " -lc"
-           fi
-           ;;
-         esac
-       fi
-
-       # Transform deplibs into only deplibs that can be linked in shared.
-       name_save=$name
-       libname_save=$libname
-       release_save=$release
-       versuffix_save=$versuffix
-       major_save=$major
-       # I'm not sure if I'm treating the release correctly.  I think
-       # release should show up in the -l (ie -lgmp5) so we don't want to
-       # add it in twice.  Is that correct?
-       release=
-       versuffix=
-       major=
-       newdeplibs=
-       droppeddeps=no
-       case $deplibs_check_method in
-       pass_all)
-         # Don't check for shared/static.  Everything works.
-         # This might be a little naive.  We might want to check
-         # whether the library exists or not.  But this is on
-         # osf3 & osf4 and I'm not really sure... Just
-         # implementing what was already the behavior.
-         newdeplibs=$deplibs
-         ;;
-       test_compile)
-         # This code stresses the "libraries are programs" paradigm to its
-         # limits. Maybe even breaks it.  We compile a program, linking it
-         # against the deplibs as a proxy for the library.  Then we can check
-         # whether they linked in statically or dynamically with ldd.
-         $opt_dry_run || $RM conftest.c
-         cat > conftest.c <<EOF
-         int main() { return 0; }
-EOF
-         $opt_dry_run || $RM conftest
-         if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
-           ldd_output=`ldd conftest`
-           for i in $deplibs; do
-             case $i in
-             -l*)
-               func_stripname -l '' "$i"
-               name=$func_stripname_result
-               if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-                 case " $predeps $postdeps " in
-                 *" $i "*)
-                   func_append newdeplibs " $i"
-                   i=
-                   ;;
-                 esac
-               fi
-               if test -n "$i"; then
-                 libname=`eval "\\$ECHO \"$libname_spec\""`
-                 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-                 set dummy $deplib_matches; shift
-                 deplib_match=$1
-                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
-                   func_append newdeplibs " $i"
-                 else
-                   droppeddeps=yes
-                   echo
-                   $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-                   echo "*** I have the capability to make that library automatically link in when"
-                   echo "*** you link to this library.  But I can only do this if you have a"
-                   echo "*** shared version of the library, which I believe you do not have"
-                   echo "*** because a test_compile did reveal that the linker did not use it for"
-                   echo "*** its dynamic dependency list that programs get resolved with at runtime."
-                 fi
-               fi
-               ;;
-             *)
-               func_append newdeplibs " $i"
-               ;;
-             esac
-           done
-         else
-           # Error occurred in the first compile.  Let's try to salvage
-           # the situation: Compile a separate program for each library.
-           for i in $deplibs; do
-             case $i in
-             -l*)
-               func_stripname -l '' "$i"
-               name=$func_stripname_result
-               $opt_dry_run || $RM conftest
-               if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
-                 ldd_output=`ldd conftest`
-                 if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-                   case " $predeps $postdeps " in
-                   *" $i "*)
-                     func_append newdeplibs " $i"
-                     i=
-                     ;;
-                   esac
-                 fi
-                 if test -n "$i"; then
-                   libname=`eval "\\$ECHO \"$libname_spec\""`
-                   deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-                   set dummy $deplib_matches; shift
-                   deplib_match=$1
-                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
-                     func_append newdeplibs " $i"
-                   else
-                     droppeddeps=yes
-                     echo
-                     $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-                     echo "*** I have the capability to make that library automatically link in when"
-                     echo "*** you link to this library.  But I can only do this if you have a"
-                     echo "*** shared version of the library, which you do not appear to have"
-                     echo "*** because a test_compile did reveal that the linker did not use this one"
-                     echo "*** as a dynamic dependency that programs can get resolved with at runtime."
-                   fi
-                 fi
-               else
-                 droppeddeps=yes
-                 echo
-                 $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-                 echo "*** make it link in!  You will probably need to install it or some"
-                 echo "*** library that it depends on before this library will be fully"
-                 echo "*** functional.  Installing it before continuing would be even better."
-               fi
-               ;;
-             *)
-               func_append newdeplibs " $i"
-               ;;
-             esac
-           done
-         fi
-         ;;
-       file_magic*)
-         set dummy $deplibs_check_method; shift
-         file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-         for a_deplib in $deplibs; do
-           case $a_deplib in
-           -l*)
-             func_stripname -l '' "$a_deplib"
-             name=$func_stripname_result
-             if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-               case " $predeps $postdeps " in
-               *" $a_deplib "*)
-                 func_append newdeplibs " $a_deplib"
-                 a_deplib=
-                 ;;
-               esac
-             fi
-             if test -n "$a_deplib"; then
-               libname=`eval "\\$ECHO \"$libname_spec\""`
-               if test -n "$file_magic_glob"; then
-                 libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
-               else
-                 libnameglob=$libname
-               fi
-               test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
-               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-                 if test yes = "$want_nocaseglob"; then
-                   shopt -s nocaseglob
-                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-                   $nocaseglob
-                 else
-                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-                 fi
-                 for potent_lib in $potential_libs; do
-                     # Follow soft links.
-                     if ls -lLd "$potent_lib" 2>/dev/null |
-                        $GREP " -> " >/dev/null; then
-                       continue
-                     fi
-                     # The statement above tries to avoid entering an
-                     # endless loop below, in case of cyclic links.
-                     # We might still enter an endless loop, since a link
-                     # loop can be closed while we follow links,
-                     # but so what?
-                     potlib=$potent_lib
-                     while test -h "$potlib" 2>/dev/null; do
-                       potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
-                       case $potliblink in
-                       [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
-                       *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
-                       esac
-                     done
-                     if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
-                        $SED -e 10q |
-                        $EGREP "$file_magic_regex" > /dev/null; then
-                       func_append newdeplibs " $a_deplib"
-                       a_deplib=
-                       break 2
-                     fi
-                 done
-               done
-             fi
-             if test -n "$a_deplib"; then
-               droppeddeps=yes
-               echo
-               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-               echo "*** I have the capability to make that library automatically link in when"
-               echo "*** you link to this library.  But I can only do this if you have a"
-               echo "*** shared version of the library, which you do not appear to have"
-               echo "*** because I did check the linker path looking for a file starting"
-               if test -z "$potlib"; then
-                 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
-               else
-                 $ECHO "*** with $libname and none of the candidates passed a file format test"
-                 $ECHO "*** using a file magic. Last file checked: $potlib"
-               fi
-             fi
-             ;;
-           *)
-             # Add a -L argument.
-             func_append newdeplibs " $a_deplib"
-             ;;
-           esac
-         done # Gone through all deplibs.
-         ;;
-       match_pattern*)
-         set dummy $deplibs_check_method; shift
-         match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-         for a_deplib in $deplibs; do
-           case $a_deplib in
-           -l*)
-             func_stripname -l '' "$a_deplib"
-             name=$func_stripname_result
-             if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-               case " $predeps $postdeps " in
-               *" $a_deplib "*)
-                 func_append newdeplibs " $a_deplib"
-                 a_deplib=
-                 ;;
-               esac
-             fi
-             if test -n "$a_deplib"; then
-               libname=`eval "\\$ECHO \"$libname_spec\""`
-               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-                 for potent_lib in $potential_libs; do
-                   potlib=$potent_lib # see symlink-check above in file_magic test
-                   if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
-                      $EGREP "$match_pattern_regex" > /dev/null; then
-                     func_append newdeplibs " $a_deplib"
-                     a_deplib=
-                     break 2
-                   fi
-                 done
-               done
-             fi
-             if test -n "$a_deplib"; then
-               droppeddeps=yes
-               echo
-               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-               echo "*** I have the capability to make that library automatically link in when"
-               echo "*** you link to this library.  But I can only do this if you have a"
-               echo "*** shared version of the library, which you do not appear to have"
-               echo "*** because I did check the linker path looking for a file starting"
-               if test -z "$potlib"; then
-                 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
-               else
-                 $ECHO "*** with $libname and none of the candidates passed a file format test"
-                 $ECHO "*** using a regex pattern. Last file checked: $potlib"
-               fi
-             fi
-             ;;
-           *)
-             # Add a -L argument.
-             func_append newdeplibs " $a_deplib"
-             ;;
-           esac
-         done # Gone through all deplibs.
-         ;;
-       none | unknown | *)
-         newdeplibs=
-         tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
-         if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-           for i in $predeps $postdeps; do
-             # can't use Xsed below, because $i might contain '/'
-             tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
-           done
-         fi
-         case $tmp_deplibs in
-         *[!\  \ ]*)
-           echo
-           if test none = "$deplibs_check_method"; then
-             echo "*** Warning: inter-library dependencies are not supported in this platform."
-           else
-             echo "*** Warning: inter-library dependencies are not known to be supported."
-           fi
-           echo "*** All declared inter-library dependencies are being dropped."
-           droppeddeps=yes
-           ;;
-         esac
-         ;;
-       esac
-       versuffix=$versuffix_save
-       major=$major_save
-       release=$release_save
-       libname=$libname_save
-       name=$name_save
-
-       case $host in
-       *-*-rhapsody* | *-*-darwin1.[012])
-         # On Rhapsody replace the C library with the System framework
-         newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
-         ;;
-       esac
-
-       if test yes = "$droppeddeps"; then
-         if test yes = "$module"; then
-           echo
-           echo "*** Warning: libtool could not satisfy all declared inter-library"
-           $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-           echo "*** a static module, that should work as long as the dlopening"
-           echo "*** application is linked with the -dlopen flag."
-           if test -z "$global_symbol_pipe"; then
-             echo
-             echo "*** However, this would only work if libtool was able to extract symbol"
-             echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
-             echo "*** not find such a program.  So, this module is probably useless."
-             echo "*** 'nm' from GNU binutils and a full rebuild may help."
-           fi
-           if test no = "$build_old_libs"; then
-             oldlibs=$output_objdir/$libname.$libext
-             build_libtool_libs=module
-             build_old_libs=yes
-           else
-             build_libtool_libs=no
-           fi
-         else
-           echo "*** The inter-library dependencies that have been dropped here will be"
-           echo "*** automatically added whenever a program is linked with this library"
-           echo "*** or is declared to -dlopen it."
-
-           if test no = "$allow_undefined"; then
-             echo
-             echo "*** Since this library must not contain undefined symbols,"
-             echo "*** because either the platform does not support them or"
-             echo "*** it was explicitly requested with -no-undefined,"
-             echo "*** libtool will only create a static version of it."
-             if test no = "$build_old_libs"; then
-               oldlibs=$output_objdir/$libname.$libext
-               build_libtool_libs=module
-               build_old_libs=yes
-             else
-               build_libtool_libs=no
-             fi
-           fi
-         fi
-       fi
-       # Done checking deplibs!
-       deplibs=$newdeplibs
-      fi
-      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-      case $host in
-       *-*-darwin*)
-         newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-         new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-         deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-         ;;
-      esac
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-       case " $new_libs " in
-       *" -L$path/$objdir "*) ;;
-       *)
-         case " $deplibs " in
-         *" -L$path/$objdir "*)
-           func_append new_libs " -L$path/$objdir" ;;
-         esac
-         ;;
-       esac
-      done
-      for deplib in $deplibs; do
-       case $deplib in
-       -L*)
-         case " $new_libs " in
-         *" $deplib "*) ;;
-         *) func_append new_libs " $deplib" ;;
-         esac
-         ;;
-       *) func_append new_libs " $deplib" ;;
-       esac
-      done
-      deplibs=$new_libs
-
-      # All the library-specific variables (install_libdir is set above).
-      library_names=
-      old_library=
-      dlname=
-
-      # Test again, we may have decided not to build it any more
-      if test yes = "$build_libtool_libs"; then
-       # Remove $wl instances when linking with ld.
-       # FIXME: should test the right _cmds variable.
-       case $archive_cmds in
-         *\$LD\ *) wl= ;;
-        esac
-       if test yes = "$hardcode_into_libs"; then
-         # Hardcode the library paths
-         hardcode_libdirs=
-         dep_rpath=
-         rpath=$finalize_rpath
-         test relink = "$opt_mode" || rpath=$compile_rpath$rpath
-         for libdir in $rpath; do
-           if test -n "$hardcode_libdir_flag_spec"; then
-             if test -n "$hardcode_libdir_separator"; then
-               func_replace_sysroot "$libdir"
-               libdir=$func_replace_sysroot_result
-               if test -z "$hardcode_libdirs"; then
-                 hardcode_libdirs=$libdir
-               else
-                 # Just accumulate the unique libdirs.
-                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-                   ;;
-                 *)
-                   func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-                   ;;
-                 esac
-               fi
-             else
-               eval flag=\"$hardcode_libdir_flag_spec\"
-               func_append dep_rpath " $flag"
-             fi
-           elif test -n "$runpath_var"; then
-             case "$perm_rpath " in
-             *" $libdir "*) ;;
-             *) func_append perm_rpath " $libdir" ;;
-             esac
-           fi
-         done
-         # Substitute the hardcoded libdirs into the rpath.
-         if test -n "$hardcode_libdir_separator" &&
-            test -n "$hardcode_libdirs"; then
-           libdir=$hardcode_libdirs
-           eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
-         fi
-         if test -n "$runpath_var" && test -n "$perm_rpath"; then
-           # We should set the runpath_var.
-           rpath=
-           for dir in $perm_rpath; do
-             func_append rpath "$dir:"
-           done
-           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
-         fi
-         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
-       fi
-
-       shlibpath=$finalize_shlibpath
-       test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
-       if test -n "$shlibpath"; then
-         eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
-       fi
-
-       # Get the real and link names of the library.
-       eval shared_ext=\"$shrext_cmds\"
-       eval library_names=\"$library_names_spec\"
-       set dummy $library_names
-       shift
-       realname=$1
-       shift
-
-       if test -n "$soname_spec"; then
-         eval soname=\"$soname_spec\"
-       else
-         soname=$realname
-       fi
-       if test -z "$dlname"; then
-         dlname=$soname
-       fi
-
-       lib=$output_objdir/$realname
-       linknames=
-       for link
-       do
-         func_append linknames " $link"
-       done
-
-       # Use standard objects if they are pic
-       test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-       test "X$libobjs" = "X " && libobjs=
-
-       delfiles=
-       if test -n "$export_symbols" && test -n "$include_expsyms"; then
-         $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-         export_symbols=$output_objdir/$libname.uexp
-         func_append delfiles " $export_symbols"
-       fi
-
-       orig_export_symbols=
-       case $host_os in
-       cygwin* | mingw* | cegcc*)
-         if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
-           # exporting using user supplied symfile
-           func_dll_def_p "$export_symbols" || {
-             # and it's NOT already a .def file. Must figure out
-             # which of the given symbols are data symbols and tag
-             # them as such. So, trigger use of export_symbols_cmds.
-             # export_symbols gets reassigned inside the "prepare
-             # the list of exported symbols" if statement, so the
-             # include_expsyms logic still works.
-             orig_export_symbols=$export_symbols
-             export_symbols=
-             always_export_symbols=yes
-           }
-         fi
-         ;;
-       esac
-
-       # Prepare the list of exported symbols
-       if test -z "$export_symbols"; then
-         if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
-           func_verbose "generating symbol list for '$libname.la'"
-           export_symbols=$output_objdir/$libname.exp
-           $opt_dry_run || $RM $export_symbols
-           cmds=$export_symbols_cmds
-           save_ifs=$IFS; IFS='~'
-           for cmd1 in $cmds; do
-             IFS=$save_ifs
-             # Take the normal branch if the nm_file_list_spec branch
-             # doesn't work or if tool conversion is not needed.
-             case $nm_file_list_spec~$to_tool_file_cmd in
-               *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
-                 try_normal_branch=yes
-                 eval cmd=\"$cmd1\"
-                 func_len " $cmd"
-                 len=$func_len_result
-                 ;;
-               *)
-                 try_normal_branch=no
-                 ;;
-             esac
-             if test yes = "$try_normal_branch" \
-                && { test "$len" -lt "$max_cmd_len" \
-                     || test "$max_cmd_len" -le -1; }
-             then
-               func_show_eval "$cmd" 'exit $?'
-               skipped_export=false
-             elif test -n "$nm_file_list_spec"; then
-               func_basename "$output"
-               output_la=$func_basename_result
-               save_libobjs=$libobjs
-               save_output=$output
-               output=$output_objdir/$output_la.nm
-               func_to_tool_file "$output"
-               libobjs=$nm_file_list_spec$func_to_tool_file_result
-               func_append delfiles " $output"
-               func_verbose "creating $NM input file list: $output"
-               for obj in $save_libobjs; do
-                 func_to_tool_file "$obj"
-                 $ECHO "$func_to_tool_file_result"
-               done > "$output"
-               eval cmd=\"$cmd1\"
-               func_show_eval "$cmd" 'exit $?'
-               output=$save_output
-               libobjs=$save_libobjs
-               skipped_export=false
-             else
-               # The command line is too long to execute in one step.
-               func_verbose "using reloadable object file for export list..."
-               skipped_export=:
-               # Break out early, otherwise skipped_export may be
-               # set to false by a later but shorter cmd.
-               break
-             fi
-           done
-           IFS=$save_ifs
-           if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
-             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-           fi
-         fi
-       fi
-
-       if test -n "$export_symbols" && test -n "$include_expsyms"; then
-         tmp_export_symbols=$export_symbols
-         test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
-         $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-       fi
-
-       if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
-         # The given exports_symbols file has to be filtered, so filter it.
-         func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
-         # FIXME: $output_objdir/$libname.filter potentially contains lots of
-         # 's' commands, which not all seds can handle. GNU sed should be fine
-         # though. Also, the filter scales superlinearly with the number of
-         # global variables. join(1) would be nice here, but unfortunately
-         # isn't a blessed tool.
-         $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-         func_append delfiles " $export_symbols $output_objdir/$libname.filter"
-         export_symbols=$output_objdir/$libname.def
-         $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-       fi
-
-       tmp_deplibs=
-       for test_deplib in $deplibs; do
-         case " $convenience " in
-         *" $test_deplib "*) ;;
-         *)
-           func_append tmp_deplibs " $test_deplib"
-           ;;
-         esac
-       done
-       deplibs=$tmp_deplibs
-
-       if test -n "$convenience"; then
-         if test -n "$whole_archive_flag_spec" &&
-           test yes = "$compiler_needs_object" &&
-           test -z "$libobjs"; then
-           # extract the archives, so we have objects to list.
-           # TODO: could optimize this to just extract one archive.
-           whole_archive_flag_spec=
-         fi
-         if test -n "$whole_archive_flag_spec"; then
-           save_libobjs=$libobjs
-           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-           test "X$libobjs" = "X " && libobjs=
-         else
-           gentop=$output_objdir/${outputname}x
-           func_append generated " $gentop"
-
-           func_extract_archives $gentop $convenience
-           func_append libobjs " $func_extract_archives_result"
-           test "X$libobjs" = "X " && libobjs=
-         fi
-       fi
-
-       if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
-         eval flag=\"$thread_safe_flag_spec\"
-         func_append linker_flags " $flag"
-       fi
-
-       # Make a backup of the uninstalled library when relinking
-       if test relink = "$opt_mode"; then
-         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
-       fi
-
-       # Do each of the archive commands.
-       if test yes = "$module" && test -n "$module_cmds"; then
-         if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-           eval test_cmds=\"$module_expsym_cmds\"
-           cmds=$module_expsym_cmds
-         else
-           eval test_cmds=\"$module_cmds\"
-           cmds=$module_cmds
-         fi
-       else
-         if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-           eval test_cmds=\"$archive_expsym_cmds\"
-           cmds=$archive_expsym_cmds
-         else
-           eval test_cmds=\"$archive_cmds\"
-           cmds=$archive_cmds
-         fi
-       fi
-
-       if test : != "$skipped_export" &&
-          func_len " $test_cmds" &&
-          len=$func_len_result &&
-          test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-         :
-       else
-         # The command line is too long to link in one step, link piecewise
-         # or, if using GNU ld and skipped_export is not :, use a linker
-         # script.
-
-         # Save the value of $output and $libobjs because we want to
-         # use them later.  If we have whole_archive_flag_spec, we
-         # want to use save_libobjs as it was before
-         # whole_archive_flag_spec was expanded, because we can't
-         # assume the linker understands whole_archive_flag_spec.
-         # This may have to be revisited, in case too many
-         # convenience libraries get linked in and end up exceeding
-         # the spec.
-         if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
-           save_libobjs=$libobjs
-         fi
-         save_output=$output
-         func_basename "$output"
-         output_la=$func_basename_result
-
-         # Clear the reloadable object creation command queue and
-         # initialize k to one.
-         test_cmds=
-         concat_cmds=
-         objlist=
-         last_robj=
-         k=1
-
-         if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
-           output=$output_objdir/$output_la.lnkscript
-           func_verbose "creating GNU ld script: $output"
-           echo 'INPUT (' > $output
-           for obj in $save_libobjs
-           do
-             func_to_tool_file "$obj"
-             $ECHO "$func_to_tool_file_result" >> $output
-           done
-           echo ')' >> $output
-           func_append delfiles " $output"
-           func_to_tool_file "$output"
-           output=$func_to_tool_file_result
-         elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
-           output=$output_objdir/$output_la.lnk
-           func_verbose "creating linker input file list: $output"
-           : > $output
-           set x $save_libobjs
-           shift
-           firstobj=
-           if test yes = "$compiler_needs_object"; then
-             firstobj="$1 "
-             shift
-           fi
-           for obj
-           do
-             func_to_tool_file "$obj"
-             $ECHO "$func_to_tool_file_result" >> $output
-           done
-           func_append delfiles " $output"
-           func_to_tool_file "$output"
-           output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
-         else
-           if test -n "$save_libobjs"; then
-             func_verbose "creating reloadable object files..."
-             output=$output_objdir/$output_la-$k.$objext
-             eval test_cmds=\"$reload_cmds\"
-             func_len " $test_cmds"
-             len0=$func_len_result
-             len=$len0
-
-             # Loop over the list of objects to be linked.
-             for obj in $save_libobjs
-             do
-               func_len " $obj"
-               func_arith $len + $func_len_result
-               len=$func_arith_result
-               if test -z "$objlist" ||
-                  test "$len" -lt "$max_cmd_len"; then
-                 func_append objlist " $obj"
-               else
-                 # The command $test_cmds is almost too long, add a
-                 # command to the queue.
-                 if test 1 -eq "$k"; then
-                   # The first file doesn't have a previous command to add.
-                   reload_objs=$objlist
-                   eval concat_cmds=\"$reload_cmds\"
-                 else
-                   # All subsequent reloadable object files will link in
-                   # the last one created.
-                   reload_objs="$objlist $last_robj"
-                   eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
-                 fi
-                 last_robj=$output_objdir/$output_la-$k.$objext
-                 func_arith $k + 1
-                 k=$func_arith_result
-                 output=$output_objdir/$output_la-$k.$objext
-                 objlist=" $obj"
-                 func_len " $last_robj"
-                 func_arith $len0 + $func_len_result
-                 len=$func_arith_result
-               fi
-             done
-             # Handle the remaining objects by creating one last
-             # reloadable object file.  All subsequent reloadable object
-             # files will link in the last one created.
-             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-             reload_objs="$objlist $last_robj"
-             eval concat_cmds=\"\$concat_cmds$reload_cmds\"
-             if test -n "$last_robj"; then
-               eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
-             fi
-             func_append delfiles " $output"
-
-           else
-             output=
-           fi
-
-           ${skipped_export-false} && {
-             func_verbose "generating symbol list for '$libname.la'"
-             export_symbols=$output_objdir/$libname.exp
-             $opt_dry_run || $RM $export_symbols
-             libobjs=$output
-             # Append the command to create the export file.
-             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-             eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
-             if test -n "$last_robj"; then
-               eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
-             fi
-           }
-
-           test -n "$save_libobjs" &&
-             func_verbose "creating a temporary reloadable object file: $output"
-
-           # Loop through the commands generated above and execute them.
-           save_ifs=$IFS; IFS='~'
-           for cmd in $concat_cmds; do
-             IFS=$save_ifs
-             $opt_quiet || {
-                 func_quote_arg expand,pretty "$cmd"
-                 eval "func_echo $func_quote_arg_result"
-             }
-             $opt_dry_run || eval "$cmd" || {
-               lt_exit=$?
-
-               # Restore the uninstalled library and exit
-               if test relink = "$opt_mode"; then
-                 ( cd "$output_objdir" && \
-                   $RM "${realname}T" && \
-                   $MV "${realname}U" "$realname" )
-               fi
-
-               exit $lt_exit
-             }
-           done
-           IFS=$save_ifs
-
-           if test -n "$export_symbols_regex" && ${skipped_export-false}; then
-             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-           fi
-         fi
-
-          ${skipped_export-false} && {
-           if test -n "$export_symbols" && test -n "$include_expsyms"; then
-             tmp_export_symbols=$export_symbols
-             test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
-             $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-           fi
-
-           if test -n "$orig_export_symbols"; then
-             # The given exports_symbols file has to be filtered, so filter it.
-             func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
-             # FIXME: $output_objdir/$libname.filter potentially contains lots of
-             # 's' commands, which not all seds can handle. GNU sed should be fine
-             # though. Also, the filter scales superlinearly with the number of
-             # global variables. join(1) would be nice here, but unfortunately
-             # isn't a blessed tool.
-             $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-             func_append delfiles " $export_symbols $output_objdir/$libname.filter"
-             export_symbols=$output_objdir/$libname.def
-             $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-           fi
-         }
-
-         libobjs=$output
-         # Restore the value of output.
-         output=$save_output
-
-         if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
-           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-           test "X$libobjs" = "X " && libobjs=
-         fi
-         # Expand the library linking commands again to reset the
-         # value of $libobjs for piecewise linking.
-
-         # Do each of the archive commands.
-         if test yes = "$module" && test -n "$module_cmds"; then
-           if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-             cmds=$module_expsym_cmds
-           else
-             cmds=$module_cmds
-           fi
-         else
-           if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-             cmds=$archive_expsym_cmds
-           else
-             cmds=$archive_cmds
-           fi
-         fi
-       fi
-
-       if test -n "$delfiles"; then
-         # Append the command to remove temporary files to $cmds.
-         eval cmds=\"\$cmds~\$RM $delfiles\"
-       fi
-
-       # Add any objects from preloaded convenience libraries
-       if test -n "$dlprefiles"; then
-         gentop=$output_objdir/${outputname}x
-         func_append generated " $gentop"
-
-         func_extract_archives $gentop $dlprefiles
-         func_append libobjs " $func_extract_archives_result"
-         test "X$libobjs" = "X " && libobjs=
-       fi
-
-       save_ifs=$IFS; IFS='~'
-       for cmd in $cmds; do
-         IFS=$sp$nl
-         eval cmd=\"$cmd\"
-         IFS=$save_ifs
-         $opt_quiet || {
-           func_quote_arg expand,pretty "$cmd"
-           eval "func_echo $func_quote_arg_result"
-         }
-         $opt_dry_run || eval "$cmd" || {
-           lt_exit=$?
-
-           # Restore the uninstalled library and exit
-           if test relink = "$opt_mode"; then
-             ( cd "$output_objdir" && \
-               $RM "${realname}T" && \
-               $MV "${realname}U" "$realname" )
-           fi
-
-           exit $lt_exit
-         }
-       done
-       IFS=$save_ifs
-
-       # Restore the uninstalled library and exit
-       if test relink = "$opt_mode"; then
-         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
-         if test -n "$convenience"; then
-           if test -z "$whole_archive_flag_spec"; then
-             func_show_eval '${RM}r "$gentop"'
-           fi
-         fi
-
-         exit $EXIT_SUCCESS
-       fi
-
-       # Create links to the real library.
-       for linkname in $linknames; do
-         if test "$realname" != "$linkname"; then
-           func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
-         fi
-       done
-
-       # If -module or -export-dynamic was specified, set the dlname.
-       if test yes = "$module" || test yes = "$export_dynamic"; then
-         # On all known operating systems, these are identical.
-         dlname=$soname
-       fi
-      fi
-      ;;
-
-    obj)
-      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
-       func_warning "'-dlopen' is ignored for objects"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-       func_warning "'-l' and '-L' are ignored for objects" ;;
-      esac
-
-      test -n "$rpath" && \
-       func_warning "'-rpath' is ignored for objects"
-
-      test -n "$xrpath" && \
-       func_warning "'-R' is ignored for objects"
-
-      test -n "$vinfo" && \
-       func_warning "'-version-info' is ignored for objects"
-
-      test -n "$release" && \
-       func_warning "'-release' is ignored for objects"
-
-      case $output in
-      *.lo)
-       test -n "$objs$old_deplibs" && \
-         func_fatal_error "cannot build library object '$output' from non-libtool objects"
-
-       libobj=$output
-       func_lo2o "$libobj"
-       obj=$func_lo2o_result
-       ;;
-      *)
-       libobj=
-       obj=$output
-       ;;
-      esac
-
-      # Delete the old objects.
-      $opt_dry_run || $RM $obj $libobj
-
-      # Objects from convenience libraries.  This assumes
-      # single-version convenience libraries.  Whenever we create
-      # different ones for PIC/non-PIC, this we'll have to duplicate
-      # the extraction.
-      reload_conv_objs=
-      gentop=
-      # if reload_cmds runs $LD directly, get rid of -Wl from
-      # whole_archive_flag_spec and hope we can get by with turning comma
-      # into space.
-      case $reload_cmds in
-        *\$LD[\ \$]*) wl= ;;
-      esac
-      if test -n "$convenience"; then
-       if test -n "$whole_archive_flag_spec"; then
-         eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-         test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
-         reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
-       else
-         gentop=$output_objdir/${obj}x
-         func_append generated " $gentop"
-
-         func_extract_archives $gentop $convenience
-         reload_conv_objs="$reload_objs $func_extract_archives_result"
-       fi
-      fi
-
-      # If we're not building shared, we need to use non_pic_objs
-      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
-
-      # Create the old-style object.
-      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
-
-      output=$obj
-      func_execute_cmds "$reload_cmds" 'exit $?'
-
-      # Exit if we aren't doing a library object file.
-      if test -z "$libobj"; then
-       if test -n "$gentop"; then
-         func_show_eval '${RM}r "$gentop"'
-       fi
-
-       exit $EXIT_SUCCESS
-      fi
-
-      test yes = "$build_libtool_libs" || {
-       if test -n "$gentop"; then
-         func_show_eval '${RM}r "$gentop"'
-       fi
-
-       # Create an invalid libtool object if no PIC, so that we don't
-       # accidentally link it into a program.
-       # $show "echo timestamp > $libobj"
-       # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
-       exit $EXIT_SUCCESS
-      }
-
-      if test -n "$pic_flag" || test default != "$pic_mode"; then
-       # Only do commands if we really have different PIC objects.
-       reload_objs="$libobjs $reload_conv_objs"
-       output=$libobj
-       func_execute_cmds "$reload_cmds" 'exit $?'
-      fi
-
-      if test -n "$gentop"; then
-       func_show_eval '${RM}r "$gentop"'
-      fi
-
-      exit $EXIT_SUCCESS
-      ;;
-
-    prog)
-      case $host in
-       *cygwin*) func_stripname '' '.exe' "$output"
-                 output=$func_stripname_result.exe;;
-      esac
-      test -n "$vinfo" && \
-       func_warning "'-version-info' is ignored for programs"
-
-      test -n "$release" && \
-       func_warning "'-release' is ignored for programs"
-
-      $preload \
-       && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
-       && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
-
-      case $host in
-      *-*-rhapsody* | *-*-darwin1.[012])
-       # On Rhapsody replace the C library is the System framework
-       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
-       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
-       ;;
-      esac
-
-      case $host in
-      *-*-darwin*)
-       # Don't allow lazy linking, it breaks C++ global constructors
-       # But is supposedly fixed on 10.4 or later (yay!).
-       if test CXX = "$tagname"; then
-         case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-           10.[0123])
-             func_append compile_command " $wl-bind_at_load"
-             func_append finalize_command " $wl-bind_at_load"
-           ;;
-         esac
-       fi
-       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       ;;
-      esac
-
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-       case " $new_libs " in
-       *" -L$path/$objdir "*) ;;
-       *)
-         case " $compile_deplibs " in
-         *" -L$path/$objdir "*)
-           func_append new_libs " -L$path/$objdir" ;;
-         esac
-         ;;
-       esac
-      done
-      for deplib in $compile_deplibs; do
-       case $deplib in
-       -L*)
-         case " $new_libs " in
-         *" $deplib "*) ;;
-         *) func_append new_libs " $deplib" ;;
-         esac
-         ;;
-       *) func_append new_libs " $deplib" ;;
-       esac
-      done
-      compile_deplibs=$new_libs
-
-
-      func_append compile_command " $compile_deplibs"
-      func_append finalize_command " $finalize_deplibs"
-
-      if test -n "$rpath$xrpath"; then
-       # If the user specified any rpath flags, then add them.
-       for libdir in $rpath $xrpath; do
-         # This is the magic to use -rpath.
-         case "$finalize_rpath " in
-         *" $libdir "*) ;;
-         *) func_append finalize_rpath " $libdir" ;;
-         esac
-       done
-      fi
-
-      # Now hardcode the library paths
-      rpath=
-      hardcode_libdirs=
-      for libdir in $compile_rpath $finalize_rpath; do
-       if test -n "$hardcode_libdir_flag_spec"; then
-         if test -n "$hardcode_libdir_separator"; then
-           if test -z "$hardcode_libdirs"; then
-             hardcode_libdirs=$libdir
-           else
-             # Just accumulate the unique libdirs.
-             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-               ;;
-             *)
-               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-               ;;
-             esac
-           fi
-         else
-           eval flag=\"$hardcode_libdir_flag_spec\"
-           func_append rpath " $flag"
-         fi
-       elif test -n "$runpath_var"; then
-         case "$perm_rpath " in
-         *" $libdir "*) ;;
-         *) func_append perm_rpath " $libdir" ;;
-         esac
-       fi
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-         testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
-         case :$dllsearchpath: in
-         *":$libdir:"*) ;;
-         ::) dllsearchpath=$libdir;;
-         *) func_append dllsearchpath ":$libdir";;
-         esac
-         case :$dllsearchpath: in
-         *":$testbindir:"*) ;;
-         ::) dllsearchpath=$testbindir;;
-         *) func_append dllsearchpath ":$testbindir";;
-         esac
-         ;;
-       esac
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-        test -n "$hardcode_libdirs"; then
-       libdir=$hardcode_libdirs
-       eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      compile_rpath=$rpath
-
-      rpath=
-      hardcode_libdirs=
-      for libdir in $finalize_rpath; do
-       if test -n "$hardcode_libdir_flag_spec"; then
-         if test -n "$hardcode_libdir_separator"; then
-           if test -z "$hardcode_libdirs"; then
-             hardcode_libdirs=$libdir
-           else
-             # Just accumulate the unique libdirs.
-             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-               ;;
-             *)
-               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-               ;;
-             esac
-           fi
-         else
-           eval flag=\"$hardcode_libdir_flag_spec\"
-           func_append rpath " $flag"
-         fi
-       elif test -n "$runpath_var"; then
-         case "$finalize_perm_rpath " in
-         *" $libdir "*) ;;
-         *) func_append finalize_perm_rpath " $libdir" ;;
-         esac
-       fi
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-        test -n "$hardcode_libdirs"; then
-       libdir=$hardcode_libdirs
-       eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      finalize_rpath=$rpath
-
-      if test -n "$libobjs" && test yes = "$build_old_libs"; then
-       # Transform all the library objects into standard objects.
-       compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-       finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-      fi
-
-      func_generate_dlsyms "$outputname" "@PROGRAM@" false
-
-      # template prelinking step
-      if test -n "$prelink_cmds"; then
-       func_execute_cmds "$prelink_cmds" 'exit $?'
-      fi
-
-      wrappers_required=:
-      case $host in
-      *cegcc* | *mingw32ce*)
-        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
-        wrappers_required=false
-        ;;
-      *cygwin* | *mingw* )
-        test yes = "$build_libtool_libs" || wrappers_required=false
-        ;;
-      *)
-        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
-          wrappers_required=false
-        fi
-        ;;
-      esac
-      $wrappers_required || {
-       # Replace the output file specification.
-       compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-       link_command=$compile_command$compile_rpath
-
-       # We have no uninstalled library dependencies, so finalize right now.
-       exit_status=0
-       func_show_eval "$link_command" 'exit_status=$?'
-
-       if test -n "$postlink_cmds"; then
-         func_to_tool_file "$output"
-         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-         func_execute_cmds "$postlink_cmds" 'exit $?'
-       fi
-
-       # Delete the generated files.
-       if test -f "$output_objdir/${outputname}S.$objext"; then
-         func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
-       fi
-
-       exit $exit_status
-      }
-
-      if test -n "$compile_shlibpath$finalize_shlibpath"; then
-       compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
-      fi
-      if test -n "$finalize_shlibpath"; then
-       finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
-      fi
-
-      compile_var=
-      finalize_var=
-      if test -n "$runpath_var"; then
-       if test -n "$perm_rpath"; then
-         # We should set the runpath_var.
-         rpath=
-         for dir in $perm_rpath; do
-           func_append rpath "$dir:"
-         done
-         compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
-       fi
-       if test -n "$finalize_perm_rpath"; then
-         # We should set the runpath_var.
-         rpath=
-         for dir in $finalize_perm_rpath; do
-           func_append rpath "$dir:"
-         done
-         finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
-       fi
-      fi
-
-      if test yes = "$no_install"; then
-       # We don't need to create a wrapper script.
-       link_command=$compile_var$compile_command$compile_rpath
-       # Replace the output file specification.
-       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-       # Delete the old output file.
-       $opt_dry_run || $RM $output
-       # Link the executable and exit
-       func_show_eval "$link_command" 'exit $?'
-
-       if test -n "$postlink_cmds"; then
-         func_to_tool_file "$output"
-         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-         func_execute_cmds "$postlink_cmds" 'exit $?'
-       fi
-
-       exit $EXIT_SUCCESS
-      fi
-
-      case $hardcode_action,$fast_install in
-        relink,*)
-         # Fast installation is not supported
-         link_command=$compile_var$compile_command$compile_rpath
-         relink_command=$finalize_var$finalize_command$finalize_rpath
-
-         func_warning "this platform does not like uninstalled shared libraries"
-         func_warning "'$output' will be relinked during installation"
-         ;;
-        *,yes)
-         link_command=$finalize_var$compile_command$finalize_rpath
-         relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
-          ;;
-       *,no)
-         link_command=$compile_var$compile_command$compile_rpath
-         relink_command=$finalize_var$finalize_command$finalize_rpath
-          ;;
-       *,needless)
-         link_command=$finalize_var$compile_command$finalize_rpath
-         relink_command=
-          ;;
-      esac
-
-      # Replace the output file specification.
-      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
-      # Delete the old output files.
-      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
-      func_show_eval "$link_command" 'exit $?'
-
-      if test -n "$postlink_cmds"; then
-       func_to_tool_file "$output_objdir/$outputname"
-       postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-       func_execute_cmds "$postlink_cmds" 'exit $?'
-      fi
-
-      # Now create the wrapper script.
-      func_verbose "creating $output"
-
-      # Quote the relink command for shipping.
-      if test -n "$relink_command"; then
-       # Preserve any variables that may affect compiler behavior
-       for var in $variables_saved_for_relink; do
-         if eval test -z \"\${$var+set}\"; then
-           relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-         elif eval var_value=\$$var; test -z "$var_value"; then
-           relink_command="$var=; export $var; $relink_command"
-         else
-           func_quote_arg pretty "$var_value"
-           relink_command="$var=$func_quote_arg_result; export $var; $relink_command"
-         fi
-       done
-       func_quote eval cd "`pwd`"
-       func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)"
-       relink_command=$func_quote_arg_unquoted_result
-      fi
-
-      # Only actually do things if not in dry run mode.
-      $opt_dry_run || {
-       # win32 will think the script is a binary if it has
-       # a .exe suffix, so we strip it off here.
-       case $output in
-         *.exe) func_stripname '' '.exe' "$output"
-                output=$func_stripname_result ;;
-       esac
-       # test for cygwin because mv fails w/o .exe extensions
-       case $host in
-         *cygwin*)
-           exeext=.exe
-           func_stripname '' '.exe' "$outputname"
-           outputname=$func_stripname_result ;;
-         *) exeext= ;;
-       esac
-       case $host in
-         *cygwin* | *mingw* )
-           func_dirname_and_basename "$output" "" "."
-           output_name=$func_basename_result
-           output_path=$func_dirname_result
-           cwrappersource=$output_path/$objdir/lt-$output_name.c
-           cwrapper=$output_path/$output_name.exe
-           $RM $cwrappersource $cwrapper
-           trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
-
-           func_emit_cwrapperexe_src > $cwrappersource
-
-           # The wrapper executable is built using the $host compiler,
-           # because it contains $host paths and files. If cross-
-           # compiling, it, like the target executable, must be
-           # executed on the $host or under an emulation environment.
-           $opt_dry_run || {
-             $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
-             $STRIP $cwrapper
-           }
-
-           # Now, create the wrapper script for func_source use:
-           func_ltwrapper_scriptname $cwrapper
-           $RM $func_ltwrapper_scriptname_result
-           trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
-           $opt_dry_run || {
-             # note: this script will not be executed, so do not chmod.
-             if test "x$build" = "x$host"; then
-               $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
-             else
-               func_emit_wrapper no > $func_ltwrapper_scriptname_result
-             fi
-           }
-         ;;
-         * )
-           $RM $output
-           trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
-           func_emit_wrapper no > $output
-           chmod +x $output
-         ;;
-       esac
-      }
-      exit $EXIT_SUCCESS
-      ;;
-    esac
-
-    # See if we need to build an old-fashioned archive.
-    for oldlib in $oldlibs; do
-
-      case $build_libtool_libs in
-        convenience)
-         oldobjs="$libobjs_save $symfileobj"
-         addlibs=$convenience
-         build_libtool_libs=no
-         ;;
-       module)
-         oldobjs=$libobjs_save
-         addlibs=$old_convenience
-         build_libtool_libs=no
-          ;;
-       *)
-         oldobjs="$old_deplibs $non_pic_objects"
-         $preload && test -f "$symfileobj" \
-           && func_append oldobjs " $symfileobj"
-         addlibs=$old_convenience
-         ;;
-      esac
-
-      if test -n "$addlibs"; then
-       gentop=$output_objdir/${outputname}x
-       func_append generated " $gentop"
-
-       func_extract_archives $gentop $addlibs
-       func_append oldobjs " $func_extract_archives_result"
-      fi
-
-      # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
-       cmds=$old_archive_from_new_cmds
-      else
-
-       # Add any objects from preloaded convenience libraries
-       if test -n "$dlprefiles"; then
-         gentop=$output_objdir/${outputname}x
-         func_append generated " $gentop"
-
-         func_extract_archives $gentop $dlprefiles
-         func_append oldobjs " $func_extract_archives_result"
-       fi
-
-       # POSIX demands no paths to be encoded in archives.  We have
-       # to avoid creating archives with duplicate basenames if we
-       # might have to extract them afterwards, e.g., when creating a
-       # static archive out of a convenience library, or when linking
-       # the entirety of a libtool archive into another (currently
-       # not supported by libtool).
-       if (for obj in $oldobjs
-           do
-             func_basename "$obj"
-             $ECHO "$func_basename_result"
-           done | sort | sort -uc >/dev/null 2>&1); then
-         :
-       else
-         echo "copying selected object files to avoid basename conflicts..."
-         gentop=$output_objdir/${outputname}x
-         func_append generated " $gentop"
-         func_mkdir_p "$gentop"
-         save_oldobjs=$oldobjs
-         oldobjs=
-         counter=1
-         for obj in $save_oldobjs
-         do
-           func_basename "$obj"
-           objbase=$func_basename_result
-           case " $oldobjs " in
-           " ") oldobjs=$obj ;;
-           *[\ /]"$objbase "*)
-             while :; do
-               # Make sure we don't pick an alternate name that also
-               # overlaps.
-               newobj=lt$counter-$objbase
-               func_arith $counter + 1
-               counter=$func_arith_result
-               case " $oldobjs " in
-               *[\ /]"$newobj "*) ;;
-               *) if test ! -f "$gentop/$newobj"; then break; fi ;;
-               esac
-             done
-             func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-             func_append oldobjs " $gentop/$newobj"
-             ;;
-           *) func_append oldobjs " $obj" ;;
-           esac
-         done
-       fi
-       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-       tool_oldlib=$func_to_tool_file_result
-       eval cmds=\"$old_archive_cmds\"
-
-       func_len " $cmds"
-       len=$func_len_result
-       if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-         cmds=$old_archive_cmds
-       elif test -n "$archiver_list_spec"; then
-         func_verbose "using command file archive linking..."
-         for obj in $oldobjs
-         do
-           func_to_tool_file "$obj"
-           $ECHO "$func_to_tool_file_result"
-         done > $output_objdir/$libname.libcmd
-         func_to_tool_file "$output_objdir/$libname.libcmd"
-         oldobjs=" $archiver_list_spec$func_to_tool_file_result"
-         cmds=$old_archive_cmds
-       else
-         # the command line is too long to link in one step, link in parts
-         func_verbose "using piecewise archive linking..."
-         save_RANLIB=$RANLIB
-         RANLIB=:
-         objlist=
-         concat_cmds=
-         save_oldobjs=$oldobjs
-         oldobjs=
-         # Is there a better way of finding the last object in the list?
-         for obj in $save_oldobjs
-         do
-           last_oldobj=$obj
-         done
-         eval test_cmds=\"$old_archive_cmds\"
-         func_len " $test_cmds"
-         len0=$func_len_result
-         len=$len0
-         for obj in $save_oldobjs
-         do
-           func_len " $obj"
-           func_arith $len + $func_len_result
-           len=$func_arith_result
-           func_append objlist " $obj"
-           if test "$len" -lt "$max_cmd_len"; then
-             :
-           else
-             # the above command should be used before it gets too long
-             oldobjs=$objlist
-             if test "$obj" = "$last_oldobj"; then
-               RANLIB=$save_RANLIB
-             fi
-             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-             eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
-             objlist=
-             len=$len0
-           fi
-         done
-         RANLIB=$save_RANLIB
-         oldobjs=$objlist
-         if test -z "$oldobjs"; then
-           eval cmds=\"\$concat_cmds\"
-         else
-           eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
-         fi
-       fi
-      fi
-      func_execute_cmds "$cmds" 'exit $?'
-    done
-
-    test -n "$generated" && \
-      func_show_eval "${RM}r$generated"
-
-    # Now create the libtool archive.
-    case $output in
-    *.la)
-      old_library=
-      test yes = "$build_old_libs" && old_library=$libname.$libext
-      func_verbose "creating $output"
-
-      # Preserve any variables that may affect compiler behavior
-      for var in $variables_saved_for_relink; do
-       if eval test -z \"\${$var+set}\"; then
-         relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-       elif eval var_value=\$$var; test -z "$var_value"; then
-         relink_command="$var=; export $var; $relink_command"
-       else
-         func_quote_arg pretty,unquoted "$var_value"
-         relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command"
-       fi
-      done
-      # Quote the link command for shipping.
-      func_quote eval cd "`pwd`"
-      relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      func_quote_arg pretty,unquoted "$relink_command"
-      relink_command=$func_quote_arg_unquoted_result
-      if test yes = "$hardcode_automatic"; then
-       relink_command=
-      fi
-
-      # Only create the output if not a dry run.
-      $opt_dry_run || {
-       for installed in no yes; do
-         if test yes = "$installed"; then
-           if test -z "$install_libdir"; then
-             break
-           fi
-           output=$output_objdir/${outputname}i
-           # Replace all uninstalled libtool libraries with the installed ones
-           newdependency_libs=
-           for deplib in $dependency_libs; do
-             case $deplib in
-             *.la)
-               func_basename "$deplib"
-               name=$func_basename_result
-               func_resolve_sysroot "$deplib"
-               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
-               test -z "$libdir" && \
-                 func_fatal_error "'$deplib' is not a valid libtool archive"
-               func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
-               ;;
-             -L*)
-               func_stripname -L '' "$deplib"
-               func_replace_sysroot "$func_stripname_result"
-               func_append newdependency_libs " -L$func_replace_sysroot_result"
-               ;;
-             -R*)
-               func_stripname -R '' "$deplib"
-               func_replace_sysroot "$func_stripname_result"
-               func_append newdependency_libs " -R$func_replace_sysroot_result"
-               ;;
-             *) func_append newdependency_libs " $deplib" ;;
-             esac
-           done
-           dependency_libs=$newdependency_libs
-           newdlfiles=
-
-           for lib in $dlfiles; do
-             case $lib in
-             *.la)
-               func_basename "$lib"
-               name=$func_basename_result
-               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-               test -z "$libdir" && \
-                 func_fatal_error "'$lib' is not a valid libtool archive"
-               func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
-               ;;
-             *) func_append newdlfiles " $lib" ;;
-             esac
-           done
-           dlfiles=$newdlfiles
-           newdlprefiles=
-           for lib in $dlprefiles; do
-             case $lib in
-             *.la)
-               # Only pass preopened files to the pseudo-archive (for
-               # eventual linking with the app. that links it) if we
-               # didn't already link the preopened objects directly into
-               # the library:
-               func_basename "$lib"
-               name=$func_basename_result
-               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-               test -z "$libdir" && \
-                 func_fatal_error "'$lib' is not a valid libtool archive"
-               func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
-               ;;
-             esac
-           done
-           dlprefiles=$newdlprefiles
-         else
-           newdlfiles=
-           for lib in $dlfiles; do
-             case $lib in
-               [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
-               *) abs=`pwd`"/$lib" ;;
-             esac
-             func_append newdlfiles " $abs"
-           done
-           dlfiles=$newdlfiles
-           newdlprefiles=
-           for lib in $dlprefiles; do
-             case $lib in
-               [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
-               *) abs=`pwd`"/$lib" ;;
-             esac
-             func_append newdlprefiles " $abs"
-           done
-           dlprefiles=$newdlprefiles
-         fi
-         $RM $output
-         # place dlname in correct position for cygwin
-         # In fact, it would be nice if we could use this code for all target
-         # systems that can't hard-code library paths into their executables
-         # and that have no shared library path variable independent of PATH,
-         # but it turns out we can't easily determine that from inspecting
-         # libtool variables, so we have to hard-code the OSs to which it
-         # applies here; at the moment, that means platforms that use the PE
-         # object format with DLL files.  See the long comment at the top of
-         # tests/bindir.at for full details.
-         tdlname=$dlname
-         case $host,$output,$installed,$module,$dlname in
-           *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
-             # If a -bindir argument was supplied, place the dll there.
-             if test -n "$bindir"; then
-               func_relative_path "$install_libdir" "$bindir"
-               tdlname=$func_relative_path_result/$dlname
-             else
-               # Otherwise fall back on heuristic.
-               tdlname=../bin/$dlname
-             fi
-             ;;
-         esac
-         $ECHO > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Linker flags that cannot go in dependency_libs.
-inherited_linker_flags='$new_inherited_linker_flags'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Names of additional weak libraries provided by this library
-weak_library_names='$weak_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=$module
-
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
-         if test no,yes = "$installed,$need_relink"; then
-           $ECHO >> $output "\
-relink_command=\"$relink_command\""
-         fi
-       done
-      }
-
-      # Do a symbolic link so that the libtool archive can be found in
-      # LD_LIBRARY_PATH before the program is installed.
-      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
-      ;;
-    esac
-    exit $EXIT_SUCCESS
-}
-
-if test link = "$opt_mode" || test relink = "$opt_mode"; then
-  func_mode_link ${1+"$@"}
-fi
-
-
-# func_mode_uninstall arg...
-func_mode_uninstall ()
-{
-    $debug_cmd
-
-    RM=$nonopt
-    files=
-    rmforce=false
-    exit_status=0
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic=$magic
-
-    for arg
-    do
-      case $arg in
-      -f) func_append RM " $arg"; rmforce=: ;;
-      -*) func_append RM " $arg" ;;
-      *) func_append files " $arg" ;;
-      esac
-    done
-
-    test -z "$RM" && \
-      func_fatal_help "you must specify an RM program"
-
-    rmdirs=
-
-    for file in $files; do
-      func_dirname "$file" "" "."
-      dir=$func_dirname_result
-      if test . = "$dir"; then
-       odir=$objdir
-      else
-       odir=$dir/$objdir
-      fi
-      func_basename "$file"
-      name=$func_basename_result
-      test uninstall = "$opt_mode" && odir=$dir
-
-      # Remember odir for removal later, being careful to avoid duplicates
-      if test clean = "$opt_mode"; then
-       case " $rmdirs " in
-         *" $odir "*) ;;
-         *) func_append rmdirs " $odir" ;;
-       esac
-      fi
-
-      # Don't error if the file doesn't exist and rm -f was used.
-      if { test -L "$file"; } >/dev/null 2>&1 ||
-        { test -h "$file"; } >/dev/null 2>&1 ||
-        test -f "$file"; then
-       :
-      elif test -d "$file"; then
-       exit_status=1
-       continue
-      elif $rmforce; then
-       continue
-      fi
-
-      rmfiles=$file
-
-      case $name in
-      *.la)
-       # Possibly a libtool archive, so verify it.
-       if func_lalib_p "$file"; then
-         func_source $dir/$name
-
-         # Delete the libtool libraries and symlinks.
-         for n in $library_names; do
-           func_append rmfiles " $odir/$n"
-         done
-         test -n "$old_library" && func_append rmfiles " $odir/$old_library"
-
-         case $opt_mode in
-         clean)
-           case " $library_names " in
-           *" $dlname "*) ;;
-           *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
-           esac
-           test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
-           ;;
-         uninstall)
-           if test -n "$library_names"; then
-             # Do each command in the postuninstall commands.
-             func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
-           fi
-
-           if test -n "$old_library"; then
-             # Do each command in the old_postuninstall commands.
-             func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
-           fi
-           # FIXME: should reinstall the best remaining shared library.
-           ;;
-         esac
-       fi
-       ;;
-
-      *.lo)
-       # Possibly a libtool object, so verify it.
-       if func_lalib_p "$file"; then
-
-         # Read the .lo file
-         func_source $dir/$name
-
-         # Add PIC object to the list of files to remove.
-         if test -n "$pic_object" && test none != "$pic_object"; then
-           func_append rmfiles " $dir/$pic_object"
-         fi
-
-         # Add non-PIC object to the list of files to remove.
-         if test -n "$non_pic_object" && test none != "$non_pic_object"; then
-           func_append rmfiles " $dir/$non_pic_object"
-         fi
-       fi
-       ;;
-
-      *)
-       if test clean = "$opt_mode"; then
-         noexename=$name
-         case $file in
-         *.exe)
-           func_stripname '' '.exe' "$file"
-           file=$func_stripname_result
-           func_stripname '' '.exe' "$name"
-           noexename=$func_stripname_result
-           # $file with .exe has already been added to rmfiles,
-           # add $file without .exe
-           func_append rmfiles " $file"
-           ;;
-         esac
-         # Do a test to see if this is a libtool program.
-         if func_ltwrapper_p "$file"; then
-           if func_ltwrapper_executable_p "$file"; then
-             func_ltwrapper_scriptname "$file"
-             relink_command=
-             func_source $func_ltwrapper_scriptname_result
-             func_append rmfiles " $func_ltwrapper_scriptname_result"
-           else
-             relink_command=
-             func_source $dir/$noexename
-           fi
-
-           # note $name still contains .exe if it was in $file originally
-           # as does the version of $file that was added into $rmfiles
-           func_append rmfiles " $odir/$name $odir/${name}S.$objext"
-           if test yes = "$fast_install" && test -n "$relink_command"; then
-             func_append rmfiles " $odir/lt-$name"
-           fi
-           if test "X$noexename" != "X$name"; then
-             func_append rmfiles " $odir/lt-$noexename.c"
-           fi
-         fi
-       fi
-       ;;
-      esac
-      func_show_eval "$RM $rmfiles" 'exit_status=1'
-    done
-
-    # Try to remove the $objdir's in the directories where we deleted files
-    for dir in $rmdirs; do
-      if test -d "$dir"; then
-       func_show_eval "rmdir $dir >/dev/null 2>&1"
-      fi
-    done
-
-    exit $exit_status
-}
-
-if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
-  func_mode_uninstall ${1+"$@"}
-fi
-
-test -z "$opt_mode" && {
-  help=$generic_help
-  func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode '$opt_mode'"
-
-if test -n "$exec_cmd"; then
-  eval exec "$exec_cmd"
-  exit $EXIT_FAILURE
-fi
-
-exit $exit_status
-
-
-# The TAGs below are defined such that we never get into a situation
-# where we disable both kinds of libraries.  Given conflicting
-# choices, we go for a static library, that is the most portable,
-# since we can't tell whether shared libraries were disabled because
-# the user asked for that or because the platform doesn't support
-# them.  This is particularly important on AIX, because we don't
-# support having both static and shared libraries enabled at the same
-# time on that platform, so we default to a shared-only configuration.
-# If a disable-shared tag is given, we'll fallback to a static-only
-# configuration.  But we'll never go from static-only to shared-only.
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
-# ### END LIBTOOL TAG CONFIG: disable-shared
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-# ### END LIBTOOL TAG CONFIG: disable-static
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
diff --git a/polly/lib/External/isl/m4/ax_c___attribute__.m4 b/polly/lib/External/isl/m4/ax_c___attribute__.m4
deleted file mode 100644 (file)
index cf3d62b..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-# ===========================================================================
-#    http://www.gnu.org/software/autoconf-archive/ax_c___attribute__.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_C___ATTRIBUTE__
-#
-# DESCRIPTION
-#
-#   Provides a test for the compiler support of __attribute__ extensions.
-#   Defines HAVE___ATTRIBUTE__ if it is found.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Stepan Kasal <skasal@redhat.com>
-#   Copyright (c) 2008 Christian Haggstrom
-#   Copyright (c) 2008 Ryan McCabe <ryan@numb.org>
-#
-#   This program is free software; you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation; either version 2 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 8
-
-AC_DEFUN([AX_C___ATTRIBUTE__], [
-  AC_CACHE_CHECK([for __attribute__], [ax_cv___attribute__],
-    [AC_COMPILE_IFELSE(
-      [AC_LANG_PROGRAM(
-       [[#include <stdlib.h>
-         static void foo(void) __attribute__ ((unused));
-         static void
-         foo(void) {
-             exit(1);
-         }
-        ]], [])],
-      [ax_cv___attribute__=yes],
-      [ax_cv___attribute__=no]
-    )
-  ])
-  if test "$ax_cv___attribute__" = "yes"; then
-    AC_DEFINE([HAVE___ATTRIBUTE__], 1, [define if your compiler has __attribute__])
-  fi
-])
diff --git a/polly/lib/External/isl/m4/ax_cc_maxopt.m4 b/polly/lib/External/isl/m4/ax_cc_maxopt.m4
deleted file mode 100644 (file)
index 92d522d..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-# ===========================================================================
-#          http://www.nongnu.org/autoconf-archive/ax_cc_maxopt.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_CC_MAXOPT
-#
-# DESCRIPTION
-#
-#   Try to turn on "good" C optimization flags for various compilers and
-#   architectures, for some definition of "good". (In our case, good for
-#   FFTW and hopefully for other scientific codes. Modify as needed.)
-#
-#   The user can override the flags by setting the CFLAGS environment
-#   variable. The user can also specify --enable-portable-binary in order to
-#   disable any optimization flags that might result in a binary that only
-#   runs on the host architecture.
-#
-#   Note also that the flags assume that ANSI C aliasing rules are followed
-#   by the code (e.g. for gcc's -fstrict-aliasing), and that floating-point
-#   computations can be re-ordered as needed.
-#
-#   Requires macros: AX_CHECK_COMPILER_FLAGS, AX_COMPILER_VENDOR,
-#   AX_GCC_ARCHFLAG, AX_GCC_X86_CPUID.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
-#   Copyright (c) 2008 Matteo Frigo
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-AC_DEFUN([AX_CC_MAXOPT],
-[
-AC_REQUIRE([AC_PROG_CC])
-AC_REQUIRE([AX_COMPILER_VENDOR])
-AC_REQUIRE([AC_CANONICAL_HOST])
-
-AC_ARG_ENABLE(portable-binary, [AC_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])],
-       acx_maxopt_portable=$withval, acx_maxopt_portable=no)
-
-# Try to determine "good" native compiler flags if none specified via CFLAGS
-if test "$ac_test_CFLAGS" != "set"; then
-  CFLAGS=""
-  case $ax_cv_c_compiler_vendor in
-    dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host"
-        if test "x$acx_maxopt_portable" = xno; then
-           CFLAGS="$CFLAGS -arch host"
-         fi;;
-
-    sun) CFLAGS="-native -fast -xO5 -dalign"
-        if test "x$acx_maxopt_portable" = xyes; then
-          CFLAGS="$CFLAGS -xarch=generic"
-         fi;;
-
-    hp)  CFLAGS="+Oall +Optrs_ansi +DSnative"
-        if test "x$acx_maxopt_portable" = xyes; then
-          CFLAGS="$CFLAGS +DAportable"
-        fi;;
-
-    ibm) if test "x$acx_maxopt_portable" = xno; then
-           xlc_opt="-qarch=auto -qtune=auto"
-        else
-           xlc_opt="-qtune=auto"
-        fi
-         AX_CHECK_COMPILER_FLAGS($xlc_opt,
-               CFLAGS="-O3 -qansialias -w $xlc_opt",
-               [CFLAGS="-O3 -qansialias -w"
-                echo "******************************************************"
-                echo "*  You seem to have the IBM  C compiler.  It is      *"
-                echo "*  recommended for best performance that you use:    *"
-                echo "*                                                    *"
-                echo "*    CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *"
-                echo "*                      ^^^        ^^^                *"
-                echo "*  where xxx is pwr2, pwr3, 604, or whatever kind of *"
-                echo "*  CPU you have.  (Set the CFLAGS environment var.   *"
-                echo "*  and re-run configure.)  For more info, man cc.    *"
-                echo "******************************************************"])
-         ;;
-
-    intel) CFLAGS="-O3 -ansi_alias"
-       if test "x$acx_maxopt_portable" = xno; then
-         icc_archflag=unknown
-         icc_flags=""
-         case $host_cpu in
-           i686*|x86_64*)
-              # icc accepts gcc assembly syntax, so these should work:
-             AX_GCC_X86_CPUID(0)
-              AX_GCC_X86_CPUID(1)
-             case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG
-                *:756e6547:*:*) # Intel
-                  case $ax_cv_gcc_x86_cpuid_1 in
-                    *6a?:*[[234]]:*:*|*6[[789b]]?:*:*:*) icc_flags="-xK";;
-                    *f3[[347]]:*:*:*|*f4[1347]:*:*:*) icc_flags="-xP -xN -xW -xK";;
-                    *f??:*:*:*) icc_flags="-xN -xW -xK";;
-                  esac ;;
-              esac ;;
-          esac
-          if test "x$icc_flags" != x; then
-            for flag in $icc_flags; do
-              AX_CHECK_COMPILER_FLAGS($flag, [icc_archflag=$flag; break])
-            done
-          fi
-          AC_MSG_CHECKING([for icc architecture flag])
-         AC_MSG_RESULT($icc_archflag)
-          if test "x$icc_archflag" != xunknown; then
-            CFLAGS="$CFLAGS $icc_archflag"
-          fi
-        fi
-       ;;
-
-    gnu)
-     # default optimization flags for gcc on all systems
-     CFLAGS="-O3 -fomit-frame-pointer"
-
-     # -malign-double for x86 systems
-     AX_CHECK_COMPILER_FLAGS(-malign-double, CFLAGS="$CFLAGS -malign-double")
-
-     #  -fstrict-aliasing for gcc-2.95+
-     AX_CHECK_COMPILER_FLAGS(-fstrict-aliasing,
-       CFLAGS="$CFLAGS -fstrict-aliasing")
-
-     # note that we enable "unsafe" fp optimization with other compilers, too
-     AX_CHECK_COMPILER_FLAGS(-ffast-math, CFLAGS="$CFLAGS -ffast-math")
-
-     AX_GCC_ARCHFLAG($acx_maxopt_portable)
-
-     # drop to -O1 for gcc 4.2
-     $CC --version |
-       sed -e 's/.* \(@<:@0-9@:>@@<:@0-9@:>@*\)\.\(@<:@0-9@:>@@<:@0-9@:>@*\).*/\1 \2/' |
-       (read major minor
-           if test $major -eq 4 -a $minor -eq 2; then
-                               exit 0
-           fi
-           exit 1
-       ) && CFLAGS="-O1"
-     ;;
-  esac
-
-  if test -z "$CFLAGS"; then
-       echo ""
-       echo "********************************************************"
-        echo "* WARNING: Don't know the best CFLAGS for this system  *"
-        echo "* Use ./configure CFLAGS=... to specify your own flags *"
-       echo "* (otherwise, a default of CFLAGS=-O3 will be used)    *"
-       echo "********************************************************"
-       echo ""
-        CFLAGS="-O3"
-  fi
-
-  AX_CHECK_COMPILER_FLAGS($CFLAGS, [], [
-       echo ""
-        echo "********************************************************"
-        echo "* WARNING: The guessed CFLAGS don't seem to work with  *"
-        echo "* your compiler.                                       *"
-        echo "* Use ./configure CFLAGS=... to specify your own flags *"
-        echo "********************************************************"
-        echo ""
-        CFLAGS=""
-  ])
-
-fi
-])
diff --git a/polly/lib/External/isl/m4/ax_check_compiler_flags.m4 b/polly/lib/External/isl/m4/ax_check_compiler_flags.m4
deleted file mode 100644 (file)
index 7da8324..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# ===========================================================================
-#     http://www.nongnu.org/autoconf-archive/ax_check_compiler_flags.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_CHECK_COMPILER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE])
-#
-# DESCRIPTION
-#
-#   Check whether the given compiler FLAGS work with the current language's
-#   compiler, or whether they give an error. (Warnings, however, are
-#   ignored.)
-#
-#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
-#   success/failure.
-#
-# LICENSE
-#
-#   Copyright (c) 2009 Steven G. Johnson <stevenj@alum.mit.edu>
-#   Copyright (c) 2009 Matteo Frigo
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-AC_DEFUN([AX_CHECK_COMPILER_FLAGS],
-[AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX
-AC_MSG_CHECKING([whether _AC_LANG compiler accepts $1])
-dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
-AS_LITERAL_IF([$1],
-  [AC_CACHE_VAL(AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1]), [
-      ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
-      _AC_LANG_PREFIX[]FLAGS="$1"
-      AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
-        AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=yes,
-        AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=no)
-      _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])],
-  [ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
-   _AC_LANG_PREFIX[]FLAGS="$1"
-   AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
-     eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=yes,
-     eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=no)
-   _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])
-eval ax_check_compiler_flags=$AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])
-AC_MSG_RESULT($ax_check_compiler_flags)
-if test "x$ax_check_compiler_flags" = xyes; then
-       m4_default([$2], :)
-else
-       m4_default([$3], :)
-fi
-])dnl AX_CHECK_COMPILER_FLAGS
diff --git a/polly/lib/External/isl/m4/ax_compiler_vendor.m4 b/polly/lib/External/isl/m4/ax_compiler_vendor.m4
deleted file mode 100644 (file)
index 3214706..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-# ===========================================================================
-#    http://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_COMPILER_VENDOR
-#
-# DESCRIPTION
-#
-#   Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun,
-#   hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft,
-#   watcom, etc. The vendor is returned in the cache variable
-#   $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
-#   Copyright (c) 2008 Matteo Frigo
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 9
-
-AC_DEFUN([AX_COMPILER_VENDOR],
-[
-AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
- [ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=unknown
-  # note: don't check for gcc first since some other compilers define __GNUC__
-  for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale:__PATHCC__,__PATHSCALE__ clang:__clang__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
-    vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
-#if !($vencpp)
-      thisisanerror;
-#endif
-])], [ax_cv_]_AC_LANG_ABBREV[_compiler_vendor=`echo $ventest | cut -d: -f1`; break])
-  done
- ])
-])
diff --git a/polly/lib/External/isl/m4/ax_create_pkgconfig_info.m4 b/polly/lib/External/isl/m4/ax_create_pkgconfig_info.m4
deleted file mode 100644 (file)
index 308e64f..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-# ============================================================================
-#  http://www.gnu.org/software/autoconf-archive/ax_create_pkgconfig_info.html
-# ============================================================================
-#
-# SYNOPSIS
-#
-#   AX_CREATE_PKGCONFIG_INFO [(outputfile, [requires [,libs [,summary [,cflags [, ldflags]]]]])]
-#
-# DESCRIPTION
-#
-#   Defaults:
-#
-#     $1 = $PACKAGE_NAME.pc
-#     $2 = (empty)
-#     $3 = $PACKAGE_LIBS $LIBS (as set at that point in configure.ac)
-#     $4 = $PACKAGE_SUMMARY (or $1 Library)
-#     $5 = $PACKAGE_CFLAGS (as set at the point in configure.ac)
-#     $6 = $PACKAGE_LDFLAGS (as set at the point in configure.ac)
-#
-#     PACKAGE_NAME defaults to $PACKAGE if not set.
-#     PACKAGE_LIBS defaults to -l$PACKAGE_NAME if not set.
-#
-#   The resulting file is called $PACKAGE.pc.in / $PACKAGE.pc
-#
-#   You will find this macro most useful in conjunction with
-#   ax_spec_defaults that can read good initializers from the .spec file. In
-#   consequencd, most of the generatable installable stuff can be made from
-#   information being updated in a single place for the whole project.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-#   Copyright (c) 2008 Sven Verdoolaege <skimo@kotnet.org>
-#
-#   This program is free software; you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation; either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 12
-
-AC_DEFUN([AX_CREATE_PKGCONFIG_INFO],[dnl
-AS_VAR_PUSHDEF([PKGCONFIG_suffix],[ax_create_pkgconfig_suffix])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_libdir],[ax_create_pkgconfig_libdir])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_libfile],[ax_create_pkgconfig_libfile])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_libname],[ax_create_pkgconfig_libname])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_version],[ax_create_pkgconfig_version])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_description],[ax_create_pkgconfig_description])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_requires],[ax_create_pkgconfig_requires])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_pkglibs],[ax_create_pkgconfig_pkglibs])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_libs],[ax_create_pkgconfig_libs])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_ldflags],[ax_create_pkgconfig_ldflags])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_cppflags],[ax_create_pkgconfig_cppflags])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_generate],[ax_create_pkgconfig_generate])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_src_libdir],[ax_create_pkgconfig_src_libdir])dnl
-AS_VAR_PUSHDEF([PKGCONFIG_src_headers],[ax_create_pkgconfig_src_headers])dnl
-
-# we need the expanded forms...
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-AC_MSG_CHECKING(our pkgconfig libname)
-test ".$PKGCONFIG_libname" != "." || \
-PKGCONFIG_libname="ifelse($1,,${PACKAGE_NAME},`basename $1 .pc`)"
-test ".$PKGCONFIG_libname" != "." || \
-PKGCONFIG_libname="$PACKAGE"
-PKGCONFIG_libname=`eval echo "$PKGCONFIG_libname"`
-PKGCONFIG_libname=`eval echo "$PKGCONFIG_libname"`
-AC_MSG_RESULT($PKGCONFIG_libname)
-
-AC_MSG_CHECKING(our pkgconfig version)
-test ".$PKGCONFIG_version" != "." || \
-PKGCONFIG_version="${PACKAGE_VERSION}"
-test ".$PKGCONFIG_version" != "." || \
-PKGCONFIG_version="$VERSION"
-PKGCONFIG_version=`eval echo "$PKGCONFIG_version"`
-PKGCONFIG_version=`eval echo "$PKGCONFIG_version"`
-AC_MSG_RESULT($PKGCONFIG_version)
-
-AC_MSG_CHECKING(our pkgconfig_libdir)
-test ".$pkgconfig_libdir" = "." && \
-pkgconfig_libdir='${libdir}/pkgconfig'
-PKGCONFIG_libdir=`eval echo "$pkgconfig_libdir"`
-PKGCONFIG_libdir=`eval echo "$PKGCONFIG_libdir"`
-PKGCONFIG_libdir=`eval echo "$PKGCONFIG_libdir"`
-AC_MSG_RESULT($pkgconfig_libdir)
-test "$pkgconfig_libdir" != "$PKGCONFIG_libdir" && (
-AC_MSG_RESULT(expanded our pkgconfig_libdir... $PKGCONFIG_libdir))
-AC_SUBST([pkgconfig_libdir])
-
-AC_MSG_CHECKING(our pkgconfig_libfile)
-test ".$pkgconfig_libfile" != "." || \
-pkgconfig_libfile="ifelse($1,,$PKGCONFIG_libname.pc,`basename $1`)"
-PKGCONFIG_libfile=`eval echo "$pkgconfig_libfile"`
-PKGCONFIG_libfile=`eval echo "$PKGCONFIG_libfile"`
-AC_MSG_RESULT($pkgconfig_libfile)
-test "$pkgconfig_libfile" != "$PKGCONFIG_libfile" && (
-AC_MSG_RESULT(expanded our pkgconfig_libfile... $PKGCONFIG_libfile))
-AC_SUBST([pkgconfig_libfile])
-
-AC_MSG_CHECKING(our package / suffix)
-PKGCONFIG_suffix="$program_suffix"
-test ".$PKGCONFIG_suffix" != .NONE || PKGCONFIG_suffix=""
-AC_MSG_RESULT(${PACKAGE_NAME} / ${PKGCONFIG_suffix})
-
-AC_MSG_CHECKING(our pkgconfig description)
-PKGCONFIG_description="ifelse($4,,$PACKAGE_SUMMARY,$4)"
-test ".$PKGCONFIG_description" != "." || \
-PKGCONFIG_description="$PKGCONFIG_libname Library"
-PKGCONFIG_description=`eval echo "$PKGCONFIG_description"`
-PKGCONFIG_description=`eval echo "$PKGCONFIG_description"`
-AC_MSG_RESULT($PKGCONFIG_description)
-
-AC_MSG_CHECKING(our pkgconfig requires)
-PKGCONFIG_requires="ifelse($2,,$PACKAGE_REQUIRES,$2)"
-PKGCONFIG_requires=`eval echo "$PKGCONFIG_requires"`
-PKGCONFIG_requires=`eval echo "$PKGCONFIG_requires"`
-AC_MSG_RESULT($PKGCONFIG_requires)
-
-AC_MSG_CHECKING(our pkgconfig ext libs)
-PKGCONFIG_pkglibs="$PACKAGE_LIBS"
-test ".$PKGCONFIG_pkglibs" != "." || PKGCONFIG_pkglibs="-l$PKGCONFIG_libname"
-PKGCONFIG_libs="ifelse($3,,$PKGCONFIG_pkglibs $LIBS,$3)"
-PKGCONFIG_libs=`eval echo "$PKGCONFIG_libs"`
-PKGCONFIG_libs=`eval echo "$PKGCONFIG_libs"`
-AC_MSG_RESULT($PKGCONFIG_libs)
-
-AC_MSG_CHECKING(our pkgconfig cppflags)
-PKGCONFIG_cppflags="ifelse($5,,$PACKAGE_CFLAGS,$5)"
-PKGCONFIG_cppflags=`eval echo "$PKGCONFIG_cppflags"`
-PKGCONFIG_cppflags=`eval echo "$PKGCONFIG_cppflags"`
-AC_MSG_RESULT($PKGCONFIG_cppflags)
-
-AC_MSG_CHECKING(our pkgconfig ldflags)
-PKGCONFIG_ldflags="ifelse($6,,$PACKAGE_LDFLAGS,$5)"
-PKGCONFIG_ldflags=`eval echo "$PKGCONFIG_ldflags"`
-PKGCONFIG_ldflags=`eval echo "$PKGCONFIG_ldflags"`
-AC_MSG_RESULT($PKGCONFIG_ldflags)
-
-test ".$PKGCONFIG_generate" != "." || \
-PKGCONFIG_generate="ifelse($1,,$PKGCONFIG_libname.pc,$1)"
-PKGCONFIG_generate=`eval echo "$PKGCONFIG_generate"`
-PKGCONFIG_generate=`eval echo "$PKGCONFIG_generate"`
-test "$pkgconfig_libfile" != "$PKGCONFIG_generate" && (
-AC_MSG_RESULT(generate the pkgconfig later... $PKGCONFIG_generate))
-
-if test ".$PKGCONFIG_src_libdir" = "." ; then
-PKGCONFIG_src_libdir=`pwd`
-PKGCONFIG_src_libdir=`AS_DIRNAME("$PKGCONFIG_src_libdir/$PKGCONFIG_generate")`
-test ! -d $PKGCONFIG_src_libdir/src || \
-PKGCONFIG_src_libdir="$PKGCONFIG_src_libdir/src"
-case ".$objdir" in
-*libs) PKGCONFIG_src_libdir="$PKGCONFIG_src_libdir/$objdir" ;; esac
-AC_MSG_RESULT(noninstalled pkgconfig -L $PKGCONFIG_src_libdir)
-fi
-
-if test ".$PKGCONFIG_src_headers" = "." ; then
-PKGCONFIG_src_headers=`pwd`
-v="$ac_top_srcdir" ;
-test ".$v" != "." || v="$ax_spec_dir"
-test ".$v" != "." || v="$srcdir"
-case "$v" in /*) PKGCONFIG_src_headers="" ;; esac
-PKGCONFIG_src_headers=`AS_DIRNAME("$PKGCONFIG_src_headers/$v/x")`
-test ! -d $PKGCONFIG_src_headers/incl[]ude || \
-PKGCONFIG_src_headers="$PKGCONFIG_src_headers/incl[]ude"
-AC_MSG_RESULT(noninstalled pkgconfig -I $PKGCONFIG_src_headers)
-fi
-
-
-dnl AC_CONFIG_COMMANDS crap disallows to use $PKGCONFIG_libfile here...
-AC_CONFIG_COMMANDS([$ax_create_pkgconfig_generate],[
-pkgconfig_generate="$ax_create_pkgconfig_generate"
-if test ! -f "$pkgconfig_generate.in"
-then generate="true"
-elif grep ' generated by configure ' $pkgconfig_generate.in >/dev/null
-then generate="true"
-else generate="false";
-fi
-if $generate ; then
-AC_MSG_NOTICE(creating $pkgconfig_generate.in)
-cat > $pkgconfig_generate.in <<AXEOF
-# generated by configure / remove this line to disable regeneration
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-bindir=@bindir@
-libdir=@libdir@
-datarootdir=@datarootdir@
-datadir=@datadir@
-sysconfdir=@sysconfdir@
-includedir=@includedir@
-package=@PACKAGE@
-suffix=@suffix@
-
-Name: @PACKAGE_NAME@
-Description: @PACKAGE_DESCRIPTION@
-Version: @PACKAGE_VERSION@
-Requires: @PACKAGE_REQUIRES@
-Libs: -L\${libdir} @LDFLAGS@ @LIBS@
-Cflags: -I\${includedir} @CPPFLAGS@
-AXEOF
-fi # DONE generate $pkgconfig_generate.in
-AC_MSG_NOTICE(creating $pkgconfig_generate)
-cat >conftest.sed <<AXEOF
-s|@prefix@|${pkgconfig_prefix}|
-s|@exec_prefix@|${pkgconfig_execprefix}|
-s|@bindir@|${pkgconfig_bindir}|
-s|@libdir@|${pkgconfig_libdir}|
-s|@datarootdir@|${pkgconfig_datarootdir}|
-s|@datadir@|${pkgconfig_datadir}|
-s|@sysconfdir@|${pkgconfig_sysconfdir}|
-s|@includedir@|${pkgconfig_includedir}|
-s|@suffix@|${pkgconfig_suffix}|
-s|@PACKAGE@|${pkgconfig_package}|
-s|@PACKAGE_NAME@|${pkgconfig_libname}|
-s|@PACKAGE_DESCRIPTION@|${pkgconfig_description}|
-s|@PACKAGE_VERSION@|${pkgconfig_version}|
-s|@PACKAGE_REQUIRES@|${pkgconfig_requires}|
-s|@LIBS@|${pkgconfig_libs}|
-s|@LDFLAGS@|${pkgconfig_ldflags}|
-s|@CPPFLAGS@|${pkgconfig_cppflags}|
-AXEOF
-sed -f conftest.sed  $pkgconfig_generate.in > $pkgconfig_generate
-if test ! -s $pkgconfig_generate ; then
-    AC_MSG_ERROR([$pkgconfig_generate is empty])
-fi ; rm conftest.sed # DONE generate $pkgconfig_generate
-pkgconfig_uninstalled=`echo $pkgconfig_generate |sed 's/.pc$/-uninstalled.pc/'`
-AC_MSG_NOTICE(creating $pkgconfig_uninstalled)
-cat >conftest.sed <<AXEOF
-s|@prefix@|${pkgconfig_prefix}|
-s|@exec_prefix@|${pkgconfig_execprefix}|
-s|@bindir@|${pkgconfig_bindir}|
-s|@libdir@|${pkgconfig_src_libdir}|
-s|@datarootdir@|${pkgconfig_datarootdir}|
-s|@datadir@|${pkgconfig_datadir}|
-s|@sysconfdir@|${pkgconfig_sysconfdir}|
-s|@includedir@|${pkgconfig_src_headers}|
-s|@suffix@|${pkgconfig_suffix}|
-s|@PACKAGE@|${pkgconfig_package}|
-s|@PACKAGE_NAME@|${pkgconfig_libname}|
-s|@PACKAGE_DESCRIPTION@|${pkgconfig_description}|
-s|@PACKAGE_VERSION@|${pkgconfig_version}|
-s|@PACKAGE_REQUIRES@|${pkgconfig_requires}|
-s|@LIBS@|${pkgconfig_libs}|
-s|@LDFLAGS@|${pkgconfig_ldflags}|
-s|@CPPFLAGS@|${pkgconfig_cppflags}|
-AXEOF
-sed -f conftest.sed $pkgconfig_generate.in > $pkgconfig_uninstalled
-if test ! -s $pkgconfig_uninstalled ; then
-    AC_MSG_ERROR([$pkgconfig_uninstalled is empty])
-fi ; rm conftest.sed # DONE generate $pkgconfig_uninstalled
-           pkgconfig_requires_add=`echo ${pkgconfig_requires}`
-if test ".$pkgconfig_requires_add" != "." ; then
-           pkgconfig_requires_add="pkg-config $pkgconfig_requires_add"
-    else   pkgconfig_requires_add=":" ; fi
-pkgconfig_uninstalled=`echo $pkgconfig_generate |sed 's/.pc$/-uninstalled.sh/'`
-AC_MSG_NOTICE(creating $pkgconfig_uninstalled)
-cat >conftest.sed <<AXEOF
-s|@prefix@|\"${pkgconfig_prefix}\"|
-s|@exec_prefix@|\"${pkgconfig_execprefix}\"|
-s|@bindir@|\"${pkgconfig_bindir}\"|
-s|@libdir@|\"${pkgconfig_src_libdir}\"|
-s|@datarootdir@|\"${pkgconfig_datarootdir}\"|
-s|@datadir@|\"${pkgconfig_datadir}\"|
-s|@sysconfdir@|\"${pkgconfig_sysconfdir}\"|
-s|@includedir@|\"${pkgconfig_src_headers}\"|
-s|@suffix@|\"${pkgconfig_suffix}\"|
-s|@PACKAGE@|\"${pkgconfig_package}\"|
-s|@PACKAGE_NAME@|\"${pkgconfig_libname}\"|
-s|@PACKAGE_DESCRIPTION@|\"${pkgconfig_description}\"|
-s|@PACKAGE_VERSION@|\"${pkgconfig_version}\"|
-s|@PACKAGE_REQUIRES@|\"${pkgconfig_requires}\"|
-s|@LIBS@|\"${pkgconfig_libs}\"|
-s|@LDFLAGS@|\"${pkgconfig_ldflags}\"|
-s|@CPPFLAGS@|\"${pkgconfig_cppflags}\"|
-s>Name:>for option\\; do case \"\$option\" in --list-all|--name) echo >
-s>Description: *>\\;\\; --help) pkg-config --help \\; echo Buildscript Of >
-s>Version: *>\\;\\; --modversion|--version) echo >
-s>Requires:>\\;\\; --requires) echo $pkgconfig_requires_add>
-s>Libs: *>\\;\\; --libs) echo >
-s>Cflags: *>\\;\\; --cflags) echo >
-/--libs)/a\\
-       $pkgconfig_requires_add
-/--cflags)/a\\
-       $pkgconfig_requires_add\\
-;; --variable=*) eval echo '\$'\`echo \$option | sed -e 's/.*=//'\`\\
-;; --uninstalled) exit 0 \\
-;; *) ;; esac done
-AXEOF
-sed -f conftest.sed  $pkgconfig_generate.in > $pkgconfig_uninstalled
-if test ! -s $pkgconfig_uninstalled ; then
-    AC_MSG_ERROR([$pkgconfig_uninstalled is empty])
-fi ; rm conftest.sed # DONE generate $pkgconfig_uninstalled
-],[
-dnl AC_CONFIG_COMMANDS crap, the AS_PUSHVAR defines are invalid here...
-ax_create_pkgconfig_generate="$ax_create_pkgconfig_generate"
-pkgconfig_prefix='$prefix'
-pkgconfig_execprefix='$exec_prefix'
-pkgconfig_bindir='$bindir'
-pkgconfig_libdir='$libdir'
-pkgconfig_includedir='$includedir'
-pkgconfig_datarootdir='$datarootdir'
-pkgconfig_datadir='$datadir'
-pkgconfig_sysconfdir='$sysconfdir'
-pkgconfig_suffix='$ax_create_pkgconfig_suffix'
-pkgconfig_package='$PACKAGE_NAME'
-pkgconfig_libname='$ax_create_pkgconfig_libname'
-pkgconfig_description='$ax_create_pkgconfig_description'
-pkgconfig_version='$ax_create_pkgconfig_version'
-pkgconfig_requires='$ax_create_pkgconfig_requires'
-pkgconfig_libs='$ax_create_pkgconfig_libs'
-pkgconfig_ldflags='$ax_create_pkgconfig_ldflags'
-pkgconfig_cppflags='$ax_create_pkgconfig_cppflags'
-pkgconfig_src_libdir='$ax_create_pkgconfig_src_libdir'
-pkgconfig_src_headers='$ax_create_pkgconfig_src_headers'
-])dnl
-AS_VAR_POPDEF([PKGCONFIG_suffix])dnl
-AS_VAR_POPDEF([PKGCONFIG_libdir])dnl
-AS_VAR_POPDEF([PKGCONFIG_libfile])dnl
-AS_VAR_POPDEF([PKGCONFIG_libname])dnl
-AS_VAR_POPDEF([PKGCONFIG_version])dnl
-AS_VAR_POPDEF([PKGCONFIG_description])dnl
-AS_VAR_POPDEF([PKGCONFIG_requires])dnl
-AS_VAR_POPDEF([PKGCONFIG_pkglibs])dnl
-AS_VAR_POPDEF([PKGCONFIG_libs])dnl
-AS_VAR_POPDEF([PKGCONFIG_ldflags])dnl
-AS_VAR_POPDEF([PKGCONFIG_cppflags])dnl
-AS_VAR_POPDEF([PKGCONFIG_generate])dnl
-AS_VAR_POPDEF([PKGCONFIG_src_libdir])dnl
-AS_VAR_POPDEF([PKGCONFIG_src_headers])dnl
-])
diff --git a/polly/lib/External/isl/m4/ax_create_stdint_h.m4 b/polly/lib/External/isl/m4/ax_create_stdint_h.m4
deleted file mode 100644 (file)
index 7b82165..0000000
+++ /dev/null
@@ -1,739 +0,0 @@
-# ===========================================================================
-#           http://autoconf-archive.cryp.to/ax_create_stdint_h.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_CREATE_STDINT_H [( HEADER-TO-GENERATE [, HEDERS-TO-CHECK])]
-#
-# DESCRIPTION
-#
-#   the "ISO C9X: 7.18 Integer types <stdint.h>" section requires the
-#   existence of an include file <stdint.h> that defines a set of typedefs,
-#   especially uint8_t,int32_t,uintptr_t. Many older installations will not
-#   provide this file, but some will have the very same definitions in
-#   <inttypes.h>. In other enviroments we can use the inet-types in
-#   <sys/types.h> which would define the typedefs int8_t and u_int8_t
-#   respectivly.
-#
-#   This macros will create a local "_stdint.h" or the headerfile given as
-#   an argument. In many cases that file will just "#include <stdint.h>" or
-#   "#include <inttypes.h>", while in other environments it will provide the
-#   set of basic 'stdint's definitions/typedefs:
-#
-#     int8_t,uint8_t,int16_t,uint16_t,int32_t,uint32_t,intptr_t,uintptr_t
-#     int_least32_t.. int_fast32_t.. intmax_t
-#
-#   which may or may not rely on the definitions of other files, or using
-#   the AC_CHECK_SIZEOF macro to determine the actual sizeof each type.
-#
-#   if your header files require the stdint-types you will want to create an
-#   installable file mylib-int.h that all your other installable header may
-#   include. So if you have a library package named "mylib", just use
-#
-#        AX_CREATE_STDINT_H(mylib-int.h)
-#
-#   in configure.ac and go to install that very header file in Makefile.am
-#   along with the other headers (mylib.h) - and the mylib-specific headers
-#   can simply use "#include <mylib-int.h>" to obtain the stdint-types.
-#
-#   Remember, if the system already had a valid <stdint.h>, the generated
-#   file will include it directly. No need for fuzzy HAVE_STDINT_H things...
-#   (oops, GCC 4.2.x has deliberatly disabled its stdint.h for non-c99
-#   compilation and the c99-mode is not the default. Therefore this macro
-#   will not use the compiler's stdint.h - please complain to the GCC
-#   developers).
-#
-# LAST MODIFICATION
-#
-#   2008-04-12
-#
-# COPYLEFT
-#
-#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-#
-#   This program is free software; you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation; either version 2 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Macro Archive. When you make and
-#   distribute a modified version of the Autoconf Macro, you may extend this
-#   special exception to the GPL to apply to your modified version as well.
-
-AC_DEFUN([AX_CHECK_DATA_MODEL],[
-   AC_CHECK_SIZEOF(char)
-   AC_CHECK_SIZEOF(short)
-   AC_CHECK_SIZEOF(int)
-   AC_CHECK_SIZEOF(long)
-   AC_CHECK_SIZEOF(void*)
-   ac_cv_char_data_model=""
-   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_char"
-   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_short"
-   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_int"
-   ac_cv_long_data_model=""
-   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_int"
-   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_long"
-   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_voidp"
-   AC_MSG_CHECKING([data model])
-   case "$ac_cv_char_data_model/$ac_cv_long_data_model" in
-    122/242)     ac_cv_data_model="IP16"  ; n="standard 16bit machine" ;;
-    122/244)     ac_cv_data_model="LP32"  ; n="standard 32bit machine" ;;
-    122/*)       ac_cv_data_model="i16"   ; n="unusual int16 model" ;;
-    124/444)     ac_cv_data_model="ILP32" ; n="standard 32bit unixish" ;;
-    124/488)     ac_cv_data_model="LP64"  ; n="standard 64bit unixish" ;;
-    124/448)     ac_cv_data_model="LLP64" ; n="unusual 64bit unixish" ;;
-    124/*)       ac_cv_data_model="i32"   ; n="unusual int32 model" ;;
-    128/888)     ac_cv_data_model="ILP64" ; n="unusual 64bit numeric" ;;
-    128/*)       ac_cv_data_model="i64"   ; n="unusual int64 model" ;;
-    222/*2)      ac_cv_data_model="DSP16" ; n="strict 16bit dsptype" ;;
-    333/*3)      ac_cv_data_model="DSP24" ; n="strict 24bit dsptype" ;;
-    444/*4)      ac_cv_data_model="DSP32" ; n="strict 32bit dsptype" ;;
-    666/*6)      ac_cv_data_model="DSP48" ; n="strict 48bit dsptype" ;;
-    888/*8)      ac_cv_data_model="DSP64" ; n="strict 64bit dsptype" ;;
-    222/*|333/*|444/*|666/*|888/*) :
-                 ac_cv_data_model="iDSP"  ; n="unusual dsptype" ;;
-     *)          ac_cv_data_model="none"  ; n="very unusual model" ;;
-   esac
-   AC_MSG_RESULT([$ac_cv_data_model ($ac_cv_long_data_model, $n)])
-])
-
-dnl AX_CHECK_HEADER_STDINT_X([HEADERLIST][,ACTION-IF])
-AC_DEFUN([AX_CHECK_HEADER_STDINT_X],[
-AC_CACHE_CHECK([for stdint uintptr_t], [ac_cv_header_stdint_x],[
- ac_cv_header_stdint_x="" # the 1997 typedefs (inttypes.h)
-  AC_MSG_RESULT([(..)])
-  for i in m4_ifval([$1],[$1],[stdint.h inttypes.h sys/inttypes.h sys/types.h])
-  do
-   unset ac_cv_type_uintptr_t
-   unset ac_cv_type_uint64_t
-   AC_CHECK_TYPE(uintptr_t,[ac_cv_header_stdint_x=$i],continue,[#include <$i>])
-   AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>])
-   m4_ifvaln([$2],[$2]) break
-  done
-  AC_MSG_CHECKING([for stdint uintptr_t])
- ])
-])
-
-AC_DEFUN([AX_CHECK_HEADER_STDINT_O],[
-AC_CACHE_CHECK([for stdint uint32_t], [ac_cv_header_stdint_o],[
- ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h)
-  AC_MSG_RESULT([(..)])
-  for i in m4_ifval([$1],[$1],[inttypes.h sys/inttypes.h sys/types.h stdint.h])
-  do
-   unset ac_cv_type_uint32_t
-   unset ac_cv_type_uint64_t
-   AC_CHECK_TYPE(uint32_t,[ac_cv_header_stdint_o=$i],continue,[#include <$i>])
-   AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>])
-   m4_ifvaln([$2],[$2]) break
-   break;
-  done
-  AC_MSG_CHECKING([for stdint uint32_t])
- ])
-])
-
-AC_DEFUN([AX_CHECK_HEADER_STDINT_U],[
-AC_CACHE_CHECK([for stdint u_int32_t], [ac_cv_header_stdint_u],[
- ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h)
-  AC_MSG_RESULT([(..)])
-  for i in m4_ifval([$1],[$1],[sys/types.h inttypes.h sys/inttypes.h]) ; do
-   unset ac_cv_type_u_int32_t
-   unset ac_cv_type_u_int64_t
-   AC_CHECK_TYPE(u_int32_t,[ac_cv_header_stdint_u=$i],continue,[#include <$i>])
-   AC_CHECK_TYPE(u_int64_t,[and64="/u_int64_t"],[and64=""],[#include<$i>])
-   m4_ifvaln([$2],[$2]) break
-   break;
-  done
-  AC_MSG_CHECKING([for stdint u_int32_t])
- ])
-])
-
-AC_DEFUN([AX_CREATE_STDINT_H],
-[# ------ AX CREATE STDINT H -------------------------------------
-AC_MSG_CHECKING([for stdint types])
-ac_stdint_h=`echo ifelse($1, , _stdint.h, $1)`
-# try to shortcircuit - if the default include path of the compiler
-# can find a "stdint.h" header then we assume that all compilers can.
-AC_CACHE_VAL([ac_cv_header_stdint_t],[
-old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS=""
-old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS=""
-old_CFLAGS="$CFLAGS"     ; CFLAGS=""
-AC_TRY_COMPILE([#include <stdint.h>],[int_least32_t v = 0;],
-[ac_cv_stdint_result="(assuming C99 compatible system)"
- ac_cv_header_stdint_t="stdint.h"; ],
-[ac_cv_header_stdint_t=""])
-if test "$GCC" = "yes" && test ".$ac_cv_header_stdint_t" = "."; then
-CFLAGS="-std=c99"
-AC_TRY_COMPILE([#include <stdint.h>],[int_least32_t v = 0;],
-[AC_MSG_WARN(your GCC compiler has a defunct stdint.h for its default-mode)])
-fi
-CXXFLAGS="$old_CXXFLAGS"
-CPPFLAGS="$old_CPPFLAGS"
-CFLAGS="$old_CFLAGS" ])
-
-v="... $ac_cv_header_stdint_h"
-if test "$ac_stdint_h" = "stdint.h" ; then
- AC_MSG_RESULT([(are you sure you want them in ./stdint.h?)])
-elif test "$ac_stdint_h" = "inttypes.h" ; then
- AC_MSG_RESULT([(are you sure you want them in ./inttypes.h?)])
-elif test "_$ac_cv_header_stdint_t" = "_" ; then
- AC_MSG_RESULT([(putting them into $ac_stdint_h)$v])
-else
- ac_cv_header_stdint="$ac_cv_header_stdint_t"
- AC_MSG_RESULT([$ac_cv_header_stdint (shortcircuit)])
-fi
-
-if test "_$ac_cv_header_stdint_t" = "_" ; then # can not shortcircuit..
-
-dnl .....intro message done, now do a few system checks.....
-dnl btw, all old CHECK_TYPE macros do automatically "DEFINE" a type,
-dnl therefore we use the autoconf implementation detail CHECK_TYPE_NEW
-dnl instead that is triggered with 3 or more arguments (see types.m4)
-
-inttype_headers=`echo $2 | sed -e 's/,/ /g'`
-
-ac_cv_stdint_result="(no helpful system typedefs seen)"
-AX_CHECK_HEADER_STDINT_X(dnl
-   stdint.h inttypes.h sys/inttypes.h $inttype_headers,
-   ac_cv_stdint_result="(seen uintptr_t$and64 in $i)")
-
-if test "_$ac_cv_header_stdint_x" = "_" ; then
-AX_CHECK_HEADER_STDINT_O(dnl,
-   inttypes.h sys/inttypes.h stdint.h $inttype_headers,
-   ac_cv_stdint_result="(seen uint32_t$and64 in $i)")
-fi
-
-if test "_$ac_cv_header_stdint_x" = "_" ; then
-if test "_$ac_cv_header_stdint_o" = "_" ; then
-AX_CHECK_HEADER_STDINT_U(dnl,
-   sys/types.h inttypes.h sys/inttypes.h $inttype_headers,
-   ac_cv_stdint_result="(seen u_int32_t$and64 in $i)")
-fi fi
-
-dnl if there was no good C99 header file, do some typedef checks...
-if test "_$ac_cv_header_stdint_x" = "_" ; then
-   AC_MSG_CHECKING([for stdint datatype model])
-   AC_MSG_RESULT([(..)])
-   AX_CHECK_DATA_MODEL
-fi
-
-if test "_$ac_cv_header_stdint_x" != "_" ; then
-   ac_cv_header_stdint="$ac_cv_header_stdint_x"
-elif  test "_$ac_cv_header_stdint_o" != "_" ; then
-   ac_cv_header_stdint="$ac_cv_header_stdint_o"
-elif  test "_$ac_cv_header_stdint_u" != "_" ; then
-   ac_cv_header_stdint="$ac_cv_header_stdint_u"
-else
-   ac_cv_header_stdint="stddef.h"
-fi
-
-AC_MSG_CHECKING([for extra inttypes in chosen header])
-AC_MSG_RESULT([($ac_cv_header_stdint)])
-dnl see if int_least and int_fast types are present in _this_ header.
-unset ac_cv_type_int_least32_t
-unset ac_cv_type_int_fast32_t
-AC_CHECK_TYPE(int_least32_t,,,[#include <$ac_cv_header_stdint>])
-AC_CHECK_TYPE(int_fast32_t,,,[#include<$ac_cv_header_stdint>])
-AC_CHECK_TYPE(intmax_t,,,[#include <$ac_cv_header_stdint>])
-
-fi # shortcircut to system "stdint.h"
-# ------------------ PREPARE VARIABLES ------------------------------
-if test "$GCC" = "yes" ; then
-ac_cv_stdint_message="using gnu compiler "`$CC --version | head -1`
-else
-ac_cv_stdint_message="using $CC"
-fi
-
-AC_MSG_RESULT([make use of $ac_cv_header_stdint in $ac_stdint_h dnl
-$ac_cv_stdint_result])
-
-dnl -----------------------------------------------------------------
-# ----------------- DONE inttypes.h checks START header -------------
-AC_CONFIG_COMMANDS([$ac_stdint_h],[
-AC_MSG_NOTICE(creating $ac_stdint_h : $_ac_stdint_h)
-ac_stdint=$tmp/_stdint.h
-
-echo "#ifndef" $_ac_stdint_h >$ac_stdint
-echo "#define" $_ac_stdint_h "1" >>$ac_stdint
-echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint
-echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint
-echo "/* generated $ac_cv_stdint_message */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_t" != "_" ; then
-echo "#define _STDINT_HAVE_STDINT_H" "1" >>$ac_stdint
-echo "#include <stdint.h>" >>$ac_stdint
-echo "#endif" >>$ac_stdint
-echo "#endif" >>$ac_stdint
-else
-
-cat >>$ac_stdint <<STDINT_EOF
-
-/* ................... shortcircuit part ........................... */
-
-#if defined HAVE_STDINT_H || defined _STDINT_HAVE_STDINT_H
-#include <stdint.h>
-#else
-#include <stddef.h>
-
-/* .................... configured part ............................ */
-
-STDINT_EOF
-
-echo "/* whether we have a C99 compatible stdint header file */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_x" != "_" ; then
-  ac_header="$ac_cv_header_stdint_x"
-  echo "#define _STDINT_HEADER_INTPTR" '"'"$ac_header"'"' >>$ac_stdint
-else
-  echo "/* #undef _STDINT_HEADER_INTPTR */" >>$ac_stdint
-fi
-
-echo "/* whether we have a C96 compatible inttypes header file */" >>$ac_stdint
-if  test "_$ac_cv_header_stdint_o" != "_" ; then
-  ac_header="$ac_cv_header_stdint_o"
-  echo "#define _STDINT_HEADER_UINT32" '"'"$ac_header"'"' >>$ac_stdint
-else
-  echo "/* #undef _STDINT_HEADER_UINT32 */" >>$ac_stdint
-fi
-
-echo "/* whether we have a BSD compatible inet types header */" >>$ac_stdint
-if  test "_$ac_cv_header_stdint_u" != "_" ; then
-  ac_header="$ac_cv_header_stdint_u"
-  echo "#define _STDINT_HEADER_U_INT32" '"'"$ac_header"'"' >>$ac_stdint
-else
-  echo "/* #undef _STDINT_HEADER_U_INT32 */" >>$ac_stdint
-fi
-
-echo "" >>$ac_stdint
-
-if test "_$ac_header" != "_" ; then if test "$ac_header" != "stddef.h" ; then
-  echo "#include <$ac_header>" >>$ac_stdint
-  echo "" >>$ac_stdint
-fi fi
-
-echo "/* which 64bit typedef has been found */" >>$ac_stdint
-if test "$ac_cv_type_uint64_t" = "yes" ; then
-echo "#define   _STDINT_HAVE_UINT64_T" "1"  >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_UINT64_T */" >>$ac_stdint
-fi
-if test "$ac_cv_type_u_int64_t" = "yes" ; then
-echo "#define   _STDINT_HAVE_U_INT64_T" "1"  >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_U_INT64_T */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
-echo "/* which type model has been detected */" >>$ac_stdint
-if test "_$ac_cv_char_data_model" != "_" ; then
-echo "#define   _STDINT_CHAR_MODEL" "$ac_cv_char_data_model" >>$ac_stdint
-echo "#define   _STDINT_LONG_MODEL" "$ac_cv_long_data_model" >>$ac_stdint
-else
-echo "/* #undef _STDINT_CHAR_MODEL // skipped */" >>$ac_stdint
-echo "/* #undef _STDINT_LONG_MODEL // skipped */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
-echo "/* whether int_least types were detected */" >>$ac_stdint
-if test "$ac_cv_type_int_least32_t" = "yes"; then
-echo "#define   _STDINT_HAVE_INT_LEAST32_T" "1"  >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INT_LEAST32_T */" >>$ac_stdint
-fi
-echo "/* whether int_fast types were detected */" >>$ac_stdint
-if test "$ac_cv_type_int_fast32_t" = "yes"; then
-echo "#define   _STDINT_HAVE_INT_FAST32_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INT_FAST32_T */" >>$ac_stdint
-fi
-echo "/* whether intmax_t type was detected */" >>$ac_stdint
-if test "$ac_cv_type_intmax_t" = "yes"; then
-echo "#define   _STDINT_HAVE_INTMAX_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INTMAX_T */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
-  cat >>$ac_stdint <<STDINT_EOF
-/* .................... detections part ............................ */
-
-/* whether we need to define bitspecific types from compiler base types */
-#ifndef _STDINT_HEADER_INTPTR
-#ifndef _STDINT_HEADER_UINT32
-#ifndef _STDINT_HEADER_U_INT32
-#define _STDINT_NEED_INT_MODEL_T
-#else
-#define _STDINT_HAVE_U_INT_TYPES
-#endif
-#endif
-#endif
-
-#ifdef _STDINT_HAVE_U_INT_TYPES
-#undef _STDINT_NEED_INT_MODEL_T
-#endif
-
-#ifdef  _STDINT_CHAR_MODEL
-#if     _STDINT_CHAR_MODEL+0 == 122 || _STDINT_CHAR_MODEL+0 == 124
-#ifndef _STDINT_BYTE_MODEL
-#define _STDINT_BYTE_MODEL 12
-#endif
-#endif
-#endif
-
-#ifndef _STDINT_HAVE_INT_LEAST32_T
-#define _STDINT_NEED_INT_LEAST_T
-#endif
-
-#ifndef _STDINT_HAVE_INT_FAST32_T
-#define _STDINT_NEED_INT_FAST_T
-#endif
-
-#ifndef _STDINT_HEADER_INTPTR
-#define _STDINT_NEED_INTPTR_T
-#ifndef _STDINT_HAVE_INTMAX_T
-#define _STDINT_NEED_INTMAX_T
-#endif
-#endif
-
-
-/* .................... definition part ............................ */
-
-/* some system headers have good uint64_t */
-#ifndef _HAVE_UINT64_T
-#if     defined _STDINT_HAVE_UINT64_T  || defined HAVE_UINT64_T
-#define _HAVE_UINT64_T
-#elif   defined _STDINT_HAVE_U_INT64_T || defined HAVE_U_INT64_T
-#define _HAVE_UINT64_T
-typedef u_int64_t uint64_t;
-#endif
-#endif
-
-#ifndef _HAVE_UINT64_T
-/* .. here are some common heuristics using compiler runtime specifics */
-#if defined __STDC_VERSION__ && defined __STDC_VERSION__ >= 199901L
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef long long int64_t;
-typedef unsigned long long uint64_t;
-
-#elif !defined __STRICT_ANSI__
-#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
-#define _HAVE_UINT64_T
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-
-#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__
-/* note: all ELF-systems seem to have loff-support which needs 64-bit */
-#if !defined _NO_LONGLONG
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef long long int64_t;
-typedef unsigned long long uint64_t;
-#endif
-
-#elif defined __alpha || (defined __mips && defined _ABIN32)
-#if !defined _NO_LONGLONG
-typedef long int64_t;
-typedef unsigned long uint64_t;
-#endif
-  /* compiler/cpu type to define int64_t */
-#endif
-#endif
-#endif
-
-#if defined _STDINT_HAVE_U_INT_TYPES
-/* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */
-typedef u_int8_t uint8_t;
-typedef u_int16_t uint16_t;
-typedef u_int32_t uint32_t;
-
-/* glibc compatibility */
-#ifndef __int8_t_defined
-#define __int8_t_defined
-#endif
-#endif
-
-#ifdef _STDINT_NEED_INT_MODEL_T
-/* we must guess all the basic types. Apart from byte-adressable system, */
-/* there a few 32-bit-only dsp-systems that we guard with BYTE_MODEL 8-} */
-/* (btw, those nibble-addressable systems are way off, or so we assume) */
-
-dnl   /* have a look at "64bit and data size neutrality" at */
-dnl   /* http://unix.org/version2/whatsnew/login_64bit.html */
-dnl   /* (the shorthand "ILP" types always have a "P" part) */
-
-#if defined _STDINT_BYTE_MODEL
-#if _STDINT_LONG_MODEL+0 == 242
-/* 2:4:2 =  IP16 = a normal 16-bit system                */
-typedef unsigned char   uint8_t;
-typedef unsigned short  uint16_t;
-typedef unsigned long   uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef          char    int8_t;
-typedef          short   int16_t;
-typedef          long    int32_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL == 444
-/* 2:4:4 =  LP32 = a 32-bit system derived from a 16-bit */
-/* 4:4:4 = ILP32 = a normal 32-bit system                */
-typedef unsigned char   uint8_t;
-typedef unsigned short  uint16_t;
-typedef unsigned int    uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef          char    int8_t;
-typedef          short   int16_t;
-typedef          int     int32_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 484 || _STDINT_LONG_MODEL+0 == 488
-/* 4:8:4 =  IP32 = a 32-bit system prepared for 64-bit    */
-/* 4:8:8 =  LP64 = a normal 64-bit system                 */
-typedef unsigned char   uint8_t;
-typedef unsigned short  uint16_t;
-typedef unsigned int    uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef          char    int8_t;
-typedef          short   int16_t;
-typedef          int     int32_t;
-#endif
-/* this system has a "long" of 64bit */
-#ifndef _HAVE_UINT64_T
-#define _HAVE_UINT64_T
-typedef unsigned long   uint64_t;
-typedef          long    int64_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 448
-/*      LLP64   a 64-bit system derived from a 32-bit system */
-typedef unsigned char   uint8_t;
-typedef unsigned short  uint16_t;
-typedef unsigned int    uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef          char    int8_t;
-typedef          short   int16_t;
-typedef          int     int32_t;
-#endif
-/* assuming the system has a "long long" */
-#ifndef _HAVE_UINT64_T
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef unsigned long long uint64_t;
-typedef          long long  int64_t;
-#endif
-#else
-#define _STDINT_NO_INT32_T
-#endif
-#else
-#define _STDINT_NO_INT8_T
-#define _STDINT_NO_INT32_T
-#endif
-#endif
-
-/*
- * quote from SunOS-5.8 sys/inttypes.h:
- * Use at your own risk.  As of February 1996, the committee is squarely
- * behind the fixed sized types; the "least" and "fast" types are still being
- * discussed.  The probability that the "fast" types may be removed before
- * the standard is finalized is high enough that they are not currently
- * implemented.
- */
-
-#if defined _STDINT_NEED_INT_LEAST_T
-typedef  int8_t    int_least8_t;
-typedef  int16_t   int_least16_t;
-typedef  int32_t   int_least32_t;
-#ifdef _HAVE_UINT64_T
-typedef  int64_t   int_least64_t;
-#endif
-
-typedef uint8_t   uint_least8_t;
-typedef uint16_t  uint_least16_t;
-typedef uint32_t  uint_least32_t;
-#ifdef _HAVE_UINT64_T
-typedef uint64_t  uint_least64_t;
-#endif
-  /* least types */
-#endif
-
-#if defined _STDINT_NEED_INT_FAST_T
-typedef  int8_t    int_fast8_t;
-typedef  int       int_fast16_t;
-typedef  int32_t   int_fast32_t;
-#ifdef _HAVE_UINT64_T
-typedef  int64_t   int_fast64_t;
-#endif
-
-typedef uint8_t   uint_fast8_t;
-typedef unsigned  uint_fast16_t;
-typedef uint32_t  uint_fast32_t;
-#ifdef _HAVE_UINT64_T
-typedef uint64_t  uint_fast64_t;
-#endif
-  /* fast types */
-#endif
-
-#ifdef _STDINT_NEED_INTMAX_T
-#ifdef _HAVE_UINT64_T
-typedef  int64_t       intmax_t;
-typedef uint64_t      uintmax_t;
-#else
-typedef          long  intmax_t;
-typedef unsigned long uintmax_t;
-#endif
-#endif
-
-#ifdef _STDINT_NEED_INTPTR_T
-#ifndef __intptr_t_defined
-#define __intptr_t_defined
-/* we encourage using "long" to store pointer values, never use "int" ! */
-#if   _STDINT_LONG_MODEL+0 == 242 || _STDINT_LONG_MODEL+0 == 484
-typedef  unsigned int   uintptr_t;
-typedef           int    intptr_t;
-#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL+0 == 444
-typedef  unsigned long  uintptr_t;
-typedef           long   intptr_t;
-#elif _STDINT_LONG_MODEL+0 == 448 && defined _HAVE_UINT64_T
-typedef        uint64_t uintptr_t;
-typedef         int64_t  intptr_t;
-#else /* matches typical system types ILP32 and LP64 - but not IP16 or LLP64 */
-typedef  unsigned long  uintptr_t;
-typedef           long   intptr_t;
-#endif
-#endif
-#endif
-
-/* The ISO C99 standard specifies that in C++ implementations these
-   should only be defined if explicitly requested.  */
-#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
-#ifndef UINT32_C
-
-/* Signed.  */
-# define INT8_C(c)      c
-# define INT16_C(c)     c
-# define INT32_C(c)     c
-# ifdef _HAVE_LONGLONG_UINT64_T
-#  define INT64_C(c)    c ## L
-# else
-#  define INT64_C(c)    c ## LL
-# endif
-
-/* Unsigned.  */
-# define UINT8_C(c)     c ## U
-# define UINT16_C(c)    c ## U
-# define UINT32_C(c)    c ## U
-# ifdef _HAVE_LONGLONG_UINT64_T
-#  define UINT64_C(c)   c ## UL
-# else
-#  define UINT64_C(c)   c ## ULL
-# endif
-
-/* Maximal type.  */
-# ifdef _HAVE_LONGLONG_UINT64_T
-#  define INTMAX_C(c)   c ## L
-#  define UINTMAX_C(c)  c ## UL
-# else
-#  define INTMAX_C(c)   c ## LL
-#  define UINTMAX_C(c)  c ## ULL
-# endif
-
-  /* literalnumbers */
-#endif
-#endif
-
-/* These limits are merily those of a two complement byte-oriented system */
-
-/* Minimum of signed integral types.  */
-# define INT8_MIN               (-128)
-# define INT16_MIN              (-32767-1)
-# define INT32_MIN              (-2147483647-1)
-#ifndef INT64_MIN
-# define INT64_MIN              (-__INT64_C(9223372036854775807)-1)
-#endif
-/* Maximum of signed integral types.  */
-# define INT8_MAX               (127)
-# define INT16_MAX              (32767)
-# define INT32_MAX              (2147483647)
-#ifndef INT64_MAX
-# define INT64_MAX              (__INT64_C(9223372036854775807))
-#endif
-
-/* Maximum of unsigned integral types.  */
-#ifndef UINT8_MAX
-# define UINT8_MAX              (255)
-#endif
-#ifndef UINT16_MAX
-# define UINT16_MAX             (65535)
-#endif
-# define UINT32_MAX             (4294967295U)
-#ifndef UINT64_MAX
-# define UINT64_MAX             (__UINT64_C(18446744073709551615))
-#endif
-
-/* Minimum of signed integral types having a minimum size.  */
-# define INT_LEAST8_MIN         INT8_MIN
-# define INT_LEAST16_MIN        INT16_MIN
-# define INT_LEAST32_MIN        INT32_MIN
-# define INT_LEAST64_MIN        INT64_MIN
-/* Maximum of signed integral types having a minimum size.  */
-# define INT_LEAST8_MAX         INT8_MAX
-# define INT_LEAST16_MAX        INT16_MAX
-# define INT_LEAST32_MAX        INT32_MAX
-# define INT_LEAST64_MAX        INT64_MAX
-
-/* Maximum of unsigned integral types having a minimum size.  */
-# define UINT_LEAST8_MAX        UINT8_MAX
-# define UINT_LEAST16_MAX       UINT16_MAX
-# define UINT_LEAST32_MAX       UINT32_MAX
-# define UINT_LEAST64_MAX       UINT64_MAX
-
-  /* shortcircuit*/
-#endif
-  /* once */
-#endif
-#endif
-STDINT_EOF
-fi
-    if cmp -s $ac_stdint_h $ac_stdint 2>/dev/null; then
-      AC_MSG_NOTICE([$ac_stdint_h is unchanged])
-    else
-      ac_dir=`AS_DIRNAME(["$ac_stdint_h"])`
-      AS_MKDIR_P(["$ac_dir"])
-      rm -f $ac_stdint_h
-      mv $ac_stdint $ac_stdint_h
-    fi
-],[# variables for create stdint.h replacement
-PACKAGE="$PACKAGE"
-VERSION="$VERSION"
-ac_stdint_h="$ac_stdint_h"
-_ac_stdint_h=AS_TR_CPP(_$PACKAGE-$ac_stdint_h)
-ac_cv_stdint_message="$ac_cv_stdint_message"
-ac_cv_header_stdint_t="$ac_cv_header_stdint_t"
-ac_cv_header_stdint_x="$ac_cv_header_stdint_x"
-ac_cv_header_stdint_o="$ac_cv_header_stdint_o"
-ac_cv_header_stdint_u="$ac_cv_header_stdint_u"
-ac_cv_type_uint64_t="$ac_cv_type_uint64_t"
-ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t"
-ac_cv_char_data_model="$ac_cv_char_data_model"
-ac_cv_long_data_model="$ac_cv_long_data_model"
-ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t"
-ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t"
-ac_cv_type_intmax_t="$ac_cv_type_intmax_t"
-])
-])
diff --git a/polly/lib/External/isl/m4/ax_cxx_compile_stdcxx.m4 b/polly/lib/External/isl/m4/ax_cxx_compile_stdcxx.m4
deleted file mode 100644 (file)
index 5032bba..0000000
+++ /dev/null
@@ -1,982 +0,0 @@
-# ===========================================================================
-#  https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
-#
-# DESCRIPTION
-#
-#   Check for baseline language coverage in the compiler for the specified
-#   version of the C++ standard.  If necessary, add switches to CXX and
-#   CXXCPP to enable support.  VERSION may be '11' (for the C++11 standard)
-#   or '14' (for the C++14 standard).
-#
-#   The second argument, if specified, indicates whether you insist on an
-#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
-#   -std=c++11).  If neither is specified, you get whatever works, with
-#   preference for an extended mode.
-#
-#   The third argument, if specified 'mandatory' or if left unspecified,
-#   indicates that baseline support for the specified C++ standard is
-#   required and that the macro should error out if no mode with that
-#   support is found.  If specified 'optional', then configuration proceeds
-#   regardless, after defining HAVE_CXX${VERSION} if and only if a
-#   supporting mode is found.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
-#   Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
-#   Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
-#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
-#   Copyright (c) 2015 Paul Norman <penorman@mac.com>
-#   Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
-#   Copyright (c) 2016 Krzesimir Nowak <qdlacz@gmail.com>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved.  This file is offered as-is, without any
-#   warranty.
-
-#serial 7
-
-dnl  This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
-dnl  (serial version number 13).
-
-AX_REQUIRE_DEFINED([AC_MSG_WARN])
-AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
-  m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
-        [$1], [14], [ax_cxx_compile_alternatives="14 1y"],
-        [$1], [17], [ax_cxx_compile_alternatives="17 1z"],
-        [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
-  m4_if([$2], [], [],
-        [$2], [ext], [],
-        [$2], [noext], [],
-        [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
-  m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
-        [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
-        [$3], [optional], [ax_cxx_compile_cxx$1_required=false],
-        [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
-  AC_LANG_PUSH([C++])dnl
-  ac_success=no
-  AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
-  ax_cv_cxx_compile_cxx$1,
-  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
-    [ax_cv_cxx_compile_cxx$1=yes],
-    [ax_cv_cxx_compile_cxx$1=no])])
-  if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
-    ac_success=yes
-  fi
-
-  m4_if([$2], [noext], [], [dnl
-  if test x$ac_success = xno; then
-    for alternative in ${ax_cxx_compile_alternatives}; do
-      switch="-std=gnu++${alternative}"
-      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
-      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
-                     $cachevar,
-        [ac_save_CXX="$CXX"
-         CXX="$CXX $switch"
-         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
-          [eval $cachevar=yes],
-          [eval $cachevar=no])
-         CXX="$ac_save_CXX"])
-      if eval test x\$$cachevar = xyes; then
-        CXX="$CXX $switch"
-        if test -n "$CXXCPP" ; then
-          CXXCPP="$CXXCPP $switch"
-        fi
-        ac_success=yes
-        break
-      fi
-    done
-  fi])
-
-  m4_if([$2], [ext], [], [dnl
-  if test x$ac_success = xno; then
-    dnl HP's aCC needs +std=c++11 according to:
-    dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
-    dnl Cray's crayCC needs "-h std=c++11"
-    for alternative in ${ax_cxx_compile_alternatives}; do
-      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
-        cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
-        AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
-                       $cachevar,
-          [ac_save_CXX="$CXX"
-           CXX="$CXX $switch"
-           AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
-            [eval $cachevar=yes],
-            [eval $cachevar=no])
-           CXX="$ac_save_CXX"])
-        if eval test x\$$cachevar = xyes; then
-          CXX="$CXX $switch"
-          if test -n "$CXXCPP" ; then
-            CXXCPP="$CXXCPP $switch"
-          fi
-          ac_success=yes
-          break
-        fi
-      done
-      if test x$ac_success = xyes; then
-        break
-      fi
-    done
-  fi])
-  AC_LANG_POP([C++])
-  if test x$ax_cxx_compile_cxx$1_required = xtrue; then
-    if test x$ac_success = xno; then
-      AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
-    fi
-  fi
-  if test x$ac_success = xno; then
-    HAVE_CXX$1=0
-    AC_MSG_NOTICE([No compiler with C++$1 support was found])
-  else
-    HAVE_CXX$1=1
-    AC_DEFINE(HAVE_CXX$1,1,
-              [define if the compiler supports basic C++$1 syntax])
-  fi
-  AC_SUBST(HAVE_CXX$1)
-  m4_if([$1], [17], [AC_MSG_WARN([C++17 is not yet standardized, so the checks may change in incompatible ways anytime])])
-])
-
-
-dnl  Test body for checking C++11 support
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
-)
-
-
-dnl  Test body for checking C++14 support
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
-)
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_17
-)
-
-dnl  Tests for new features in C++11
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201103L
-
-#error "This is not a C++11 compiler"
-
-#else
-
-namespace cxx11
-{
-
-  namespace test_static_assert
-  {
-
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-  }
-
-  namespace test_final_override
-  {
-
-    struct Base
-    {
-      virtual void f() {}
-    };
-
-    struct Derived : public Base
-    {
-      virtual void f() override {}
-    };
-
-  }
-
-  namespace test_double_right_angle_brackets
-  {
-
-    template < typename T >
-    struct check {};
-
-    typedef check<void> single_type;
-    typedef check<check<void>> double_type;
-    typedef check<check<check<void>>> triple_type;
-    typedef check<check<check<check<void>>>> quadruple_type;
-
-  }
-
-  namespace test_decltype
-  {
-
-    int
-    f()
-    {
-      int a = 1;
-      decltype(a) b = 2;
-      return a + b;
-    }
-
-  }
-
-  namespace test_type_deduction
-  {
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static const bool value = true;
-    };
-
-    template < typename T1, typename T2 >
-    auto
-    add(T1 a1, T2 a2) -> decltype(a1 + a2)
-    {
-      return a1 + a2;
-    }
-
-    int
-    test(const int c, volatile int v)
-    {
-      static_assert(is_same<int, decltype(0)>::value == true, "");
-      static_assert(is_same<int, decltype(c)>::value == false, "");
-      static_assert(is_same<int, decltype(v)>::value == false, "");
-      auto ac = c;
-      auto av = v;
-      auto sumi = ac + av + 'x';
-      auto sumf = ac + av + 1.0;
-      static_assert(is_same<int, decltype(ac)>::value == true, "");
-      static_assert(is_same<int, decltype(av)>::value == true, "");
-      static_assert(is_same<int, decltype(sumi)>::value == true, "");
-      static_assert(is_same<int, decltype(sumf)>::value == false, "");
-      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-      return (sumf > 0.0) ? sumi : add(c, v);
-    }
-
-  }
-
-  namespace test_noexcept
-  {
-
-    int f() { return 0; }
-    int g() noexcept { return 0; }
-
-    static_assert(noexcept(f()) == false, "");
-    static_assert(noexcept(g()) == true, "");
-
-  }
-
-  namespace test_constexpr
-  {
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-    {
-      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-    }
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
-
-  }
-
-  namespace test_rvalue_references
-  {
-
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
-
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
-
-    void
-    test()
-    {
-      int i = 0;
-      const int c = 0;
-      static_assert(decltype(f(i))::value == 1, "");
-      static_assert(decltype(f(c))::value == 2, "");
-      static_assert(decltype(f(0))::value == 3, "");
-    }
-
-  }
-
-  namespace test_uniform_initialization
-  {
-
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
-
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
-
-  }
-
-  namespace test_lambdas
-  {
-
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
-
-    int
-    test2()
-    {
-      auto a = [](int i, int j){ return i + j; }(1, 2);
-      auto b = []() -> int { return '0'; }();
-      auto c = [=](){ return a + b; }();
-      auto d = [&](){ return c; }();
-      auto e = [a, &b](int x) mutable {
-        const auto identity = [](int y){ return y; };
-        for (auto i = 0; i < a; ++i)
-          a += b--;
-        return x + identity(a + b);
-      }(0);
-      return a + b + c + d + e;
-    }
-
-    int
-    test3()
-    {
-      const auto nullary = [](){ return 0; };
-      const auto unary = [](int x){ return x; };
-      using nullary_t = decltype(nullary);
-      using unary_t = decltype(unary);
-      const auto higher1st = [](nullary_t f){ return f(); };
-      const auto higher2nd = [unary](nullary_t f1){
-        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-      };
-      return higher1st(nullary) + higher2nd(nullary)(unary);
-    }
-
-  }
-
-  namespace test_variadic_templates
-  {
-
-    template <int...>
-    struct sum;
-
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
-
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
-
-    static_assert(sum<>::value == 0, "");
-    static_assert(sum<1>::value == 1, "");
-    static_assert(sum<23>::value == 23, "");
-    static_assert(sum<1, 2>::value == 3, "");
-    static_assert(sum<5, 5, 11>::value == 21, "");
-    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-
-  }
-
-  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-  // because of this.
-  namespace test_template_alias_sfinae
-  {
-
-    struct foo {};
-
-    template<typename T>
-    using member = typename T::member_type;
-
-    template<typename T>
-    void func(...) {}
-
-    template<typename T>
-    void func(member<T>*) {}
-
-    void test();
-
-    void test() { func<foo>(0); }
-
-  }
-
-}  // namespace cxx11
-
-#endif  // __cplusplus >= 201103L
-
-]])
-
-
-dnl  Tests for new features in C++14
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
-
-// If the compiler admits that it is not ready for C++14, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201402L
-
-#error "This is not a C++14 compiler"
-
-#else
-
-namespace cxx14
-{
-
-  namespace test_polymorphic_lambdas
-  {
-
-    int
-    test()
-    {
-      const auto lambda = [](auto&&... args){
-        const auto istiny = [](auto x){
-          return (sizeof(x) == 1UL) ? 1 : 0;
-        };
-        const int aretiny[] = { istiny(args)... };
-        return aretiny[0];
-      };
-      return lambda(1, 1L, 1.0f, '1');
-    }
-
-  }
-
-  namespace test_binary_literals
-  {
-
-    constexpr auto ivii = 0b0000000000101010;
-    static_assert(ivii == 42, "wrong value");
-
-  }
-
-  namespace test_generalized_constexpr
-  {
-
-    template < typename CharT >
-    constexpr unsigned long
-    strlen_c(const CharT *const s) noexcept
-    {
-      auto length = 0UL;
-      for (auto p = s; *p; ++p)
-        ++length;
-      return length;
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("x") == 1UL, "");
-    static_assert(strlen_c("test") == 4UL, "");
-    static_assert(strlen_c("another\0test") == 7UL, "");
-
-  }
-
-  namespace test_lambda_init_capture
-  {
-
-    int
-    test()
-    {
-      auto x = 0;
-      const auto lambda1 = [a = x](int b){ return a + b; };
-      const auto lambda2 = [a = lambda1(x)](){ return a; };
-      return lambda2();
-    }
-
-  }
-
-  namespace test_digit_separators
-  {
-
-    constexpr auto ten_million = 100'000'000;
-    static_assert(ten_million == 100000000, "");
-
-  }
-
-  namespace test_return_type_deduction
-  {
-
-    auto f(int& x) { return x; }
-    decltype(auto) g(int& x) { return x; }
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static constexpr auto value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static constexpr auto value = true;
-    };
-
-    int
-    test()
-    {
-      auto x = 0;
-      static_assert(is_same<int, decltype(f(x))>::value, "");
-      static_assert(is_same<int&, decltype(g(x))>::value, "");
-      return x;
-    }
-
-  }
-
-}  // namespace cxx14
-
-#endif  // __cplusplus >= 201402L
-
-]])
-
-
-dnl  Tests for new features in C++17
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
-
-// If the compiler admits that it is not ready for C++17, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus <= 201402L
-
-#error "This is not a C++17 compiler"
-
-#else
-
-#if defined(__clang__)
-  #define REALLY_CLANG
-#else
-  #if defined(__GNUC__)
-    #define REALLY_GCC
-  #endif
-#endif
-
-#include <initializer_list>
-#include <utility>
-#include <type_traits>
-
-namespace cxx17
-{
-
-#if !defined(REALLY_CLANG)
-  namespace test_constexpr_lambdas
-  {
-
-    // TODO: test it with clang++ from git
-
-    constexpr int foo = [](){return 42;}();
-
-  }
-#endif // !defined(REALLY_CLANG)
-
-  namespace test::nested_namespace::definitions
-  {
-
-  }
-
-  namespace test_fold_expression
-  {
-
-    template<typename... Args>
-    int multiply(Args... args)
-    {
-      return (args * ... * 1);
-    }
-
-    template<typename... Args>
-    bool all(Args... args)
-    {
-      return (args && ...);
-    }
-
-  }
-
-  namespace test_extended_static_assert
-  {
-
-    static_assert (true);
-
-  }
-
-  namespace test_auto_brace_init_list
-  {
-
-    auto foo = {5};
-    auto bar {5};
-
-    static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
-    static_assert(std::is_same<int, decltype(bar)>::value);
-  }
-
-  namespace test_typename_in_template_template_parameter
-  {
-
-    template<template<typename> typename X> struct D;
-
-  }
-
-  namespace test_fallthrough_nodiscard_maybe_unused_attributes
-  {
-
-    int f1()
-    {
-      return 42;
-    }
-
-    [[nodiscard]] int f2()
-    {
-      [[maybe_unused]] auto unused = f1();
-
-      switch (f1())
-      {
-      case 17:
-        f1();
-        [[fallthrough]];
-      case 42:
-        f1();
-      }
-      return f1();
-    }
-
-  }
-
-  namespace test_extended_aggregate_initialization
-  {
-
-    struct base1
-    {
-      int b1, b2 = 42;
-    };
-
-    struct base2
-    {
-      base2() {
-        b3 = 42;
-      }
-      int b3;
-    };
-
-    struct derived : base1, base2
-    {
-        int d;
-    };
-
-    derived d1 {{1, 2}, {}, 4};  // full initialization
-    derived d2 {{}, {}, 4};      // value-initialized bases
-
-  }
-
-  namespace test_general_range_based_for_loop
-  {
-
-    struct iter
-    {
-      int i;
-
-      int& operator* ()
-      {
-        return i;
-      }
-
-      const int& operator* () const
-      {
-        return i;
-      }
-
-      iter& operator++()
-      {
-        ++i;
-        return *this;
-      }
-    };
-
-    struct sentinel
-    {
-      int i;
-    };
-
-    bool operator== (const iter& i, const sentinel& s)
-    {
-      return i.i == s.i;
-    }
-
-    bool operator!= (const iter& i, const sentinel& s)
-    {
-      return !(i == s);
-    }
-
-    struct range
-    {
-      iter begin() const
-      {
-        return {0};
-      }
-
-      sentinel end() const
-      {
-        return {5};
-      }
-    };
-
-    void f()
-    {
-      range r {};
-
-      for (auto i : r)
-      {
-        [[maybe_unused]] auto v = i;
-      }
-    }
-
-  }
-
-  namespace test_lambda_capture_asterisk_this_by_value
-  {
-
-    struct t
-    {
-      int i;
-      int foo()
-      {
-        return [*this]()
-        {
-          return i;
-        }();
-      }
-    };
-
-  }
-
-  namespace test_enum_class_construction
-  {
-
-    enum class byte : unsigned char
-    {};
-
-    byte foo {42};
-
-  }
-
-  namespace test_constexpr_if
-  {
-
-    template <bool cond>
-    int f ()
-    {
-      if constexpr(cond)
-      {
-        return 13;
-      }
-      else
-      {
-        return 42;
-      }
-    }
-
-  }
-
-  namespace test_selection_statement_with_initializer
-  {
-
-    int f()
-    {
-      return 13;
-    }
-
-    int f2()
-    {
-      if (auto i = f(); i > 0)
-      {
-        return 3;
-      }
-
-      switch (auto i = f(); i + 4)
-      {
-      case 17:
-        return 2;
-
-      default:
-        return 1;
-      }
-    }
-
-  }
-
-#if !defined(REALLY_CLANG)
-  namespace test_template_argument_deduction_for_class_templates
-  {
-
-    // TODO: test it with clang++ from git
-
-    template <typename T1, typename T2>
-    struct pair
-    {
-      pair (T1 p1, T2 p2)
-        : m1 {p1},
-          m2 {p2}
-      {}
-
-      T1 m1;
-      T2 m2;
-    };
-
-    void f()
-    {
-      [[maybe_unused]] auto p = pair{13, 42u};
-    }
-
-  }
-#endif // !defined(REALLY_CLANG)
-
-  namespace test_non_type_auto_template_parameters
-  {
-
-    template <auto n>
-    struct B
-    {};
-
-    B<5> b1;
-    B<'a'> b2;
-
-  }
-
-#if !defined(REALLY_CLANG)
-  namespace test_structured_bindings
-  {
-
-    // TODO: test it with clang++ from git
-
-    int arr[2] = { 1, 2 };
-    std::pair<int, int> pr = { 1, 2 };
-
-    auto f1() -> int(&)[2]
-    {
-      return arr;
-    }
-
-    auto f2() -> std::pair<int, int>&
-    {
-      return pr;
-    }
-
-    struct S
-    {
-      int x1 : 2;
-      volatile double y1;
-    };
-
-    S f3()
-    {
-      return {};
-    }
-
-    auto [ x1, y1 ] = f1();
-    auto& [ xr1, yr1 ] = f1();
-    auto [ x2, y2 ] = f2();
-    auto& [ xr2, yr2 ] = f2();
-    const auto [ x3, y3 ] = f3();
-
-  }
-#endif // !defined(REALLY_CLANG)
-
-#if !defined(REALLY_CLANG)
-  namespace test_exception_spec_type_system
-  {
-
-    // TODO: test it with clang++ from git
-
-    struct Good {};
-    struct Bad {};
-
-    void g1() noexcept;
-    void g2();
-
-    template<typename T>
-    Bad
-    f(T*, T*);
-
-    template<typename T1, typename T2>
-    Good
-    f(T1*, T2*);
-
-    static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
-
-  }
-#endif // !defined(REALLY_CLANG)
-
-  namespace test_inline_variables
-  {
-
-    template<class T> void f(T)
-    {}
-
-    template<class T> inline T g(T)
-    {
-      return T{};
-    }
-
-    template<> inline void f<>(int)
-    {}
-
-    template<> int g<>(int)
-    {
-      return 5;
-    }
-
-  }
-
-}  // namespace cxx17
-
-#endif  // __cplusplus <= 201402L
-
-]])
diff --git a/polly/lib/External/isl/m4/ax_cxx_compile_stdcxx_11.m4 b/polly/lib/External/isl/m4/ax_cxx_compile_stdcxx_11.m4
deleted file mode 100644 (file)
index 0aadeaf..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# ============================================================================
-#  http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
-# ============================================================================
-#
-# SYNOPSIS
-#
-#   AX_CXX_COMPILE_STDCXX_11([ext|noext], [mandatory|optional])
-#
-# DESCRIPTION
-#
-#   Check for baseline language coverage in the compiler for the C++11
-#   standard; if necessary, add switches to CXX and CXXCPP to enable
-#   support.
-#
-#   This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX
-#   macro with the version set to C++11.  The two optional arguments are
-#   forwarded literally as the second and third argument respectively.
-#   Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for
-#   more information.  If you want to use this macro, you also need to
-#   download the ax_cxx_compile_stdcxx.m4 file.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
-#   Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
-#   Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
-#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
-#   Copyright (c) 2015 Paul Norman <penorman@mac.com>
-#   Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved. This file is offered as-is, without any
-#   warranty.
-
-#serial 17
-
-AX_REQUIRE_DEFINED([AX_CXX_COMPILE_STDCXX])
-AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX([11], [$1], [$2])])
diff --git a/polly/lib/External/isl/m4/ax_cxx_compile_stdcxx_11_no_override.m4 b/polly/lib/External/isl/m4/ax_cxx_compile_stdcxx_11_no_override.m4
deleted file mode 100644 (file)
index d8235f7..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-# Check if $CXX does or can be made to support C++11 by adding switches.
-# If $CXX explicitly selects a language standard, then
-# refrain from overriding this choice.
-AC_DEFUN([AX_CXX_COMPILE_STDCXX_11_NO_OVERRIDE], [dnl
-       AC_PROG_GREP
-       echo $CXX | $GREP -e "-std=" > /dev/null 2> /dev/null
-       if test $? -eq 0; then
-               _AX_CXX_COMPILE_STDCXX_11_DEFAULT
-       else
-               AX_CXX_COMPILE_STDCXX_11([noext], [optional])
-       fi
-])
-
-# Check if $CXX supports C++11 by default (without adding switches).
-# This is a trimmed down version of AX_CXX_COMPILE_STDCXX_11
-# that reuses its _AX_CXX_COMPILE_STDCXX_testbody_11.
-AC_DEFUN([_AX_CXX_COMPILE_STDCXX_11_DEFAULT], [dnl
-  AC_LANG_PUSH([C++])dnl
-  ac_success=no
-  AC_CACHE_CHECK(whether $CXX supports C++11 features by default,
-  ax_cv_cxx_compile_cxx11,
-  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_11])],
-    [ax_cv_cxx_compile_cxx11=yes],
-    [ax_cv_cxx_compile_cxx11=no])])
-  if test x$ax_cv_cxx_compile_cxx11 = xyes; then
-    ac_success=yes
-  fi
-  AC_LANG_POP([C++])
-  if test x$ac_success = xno; then
-    HAVE_CXX11=0
-  else
-    HAVE_CXX11=1
-    AC_DEFINE(HAVE_CXX11,1,
-              [define if the compiler supports basic C++11 syntax])
-  fi
-  AC_SUBST(HAVE_CXX11)
-])
diff --git a/polly/lib/External/isl/m4/ax_detect_clang.m4 b/polly/lib/External/isl/m4/ax_detect_clang.m4
deleted file mode 100644 (file)
index e5cc7aa..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-AC_DEFUN([AX_DETECT_CLANG], [
-AC_SUBST(CLANG_CXXFLAGS)
-AC_SUBST(CLANG_LDFLAGS)
-AC_SUBST(CLANG_RFLAG)
-AC_SUBST(CLANG_LIBS)
-AC_PROG_GREP
-AC_PROG_SED
-if test "x$with_clang_prefix" != "x"; then
-       LLVM_CONFIG="$with_clang_prefix/bin/llvm-config"
-fi
-AC_PATH_PROG([LLVM_CONFIG], ["llvm-config"])
-if test -z "$LLVM_CONFIG" || test ! -x "$LLVM_CONFIG"; then
-       AC_MSG_ERROR([llvm-config not found])
-fi
-CLANG_CXXFLAGS=`$LLVM_CONFIG --cxxflags | \
-       $SED -e 's/-Wcovered-switch-default//;s/-gsplit-dwarf//'`
-CLANG_LDFLAGS=`$LLVM_CONFIG --ldflags`
-# Construct a -R argument for libtool.
-# This is needed in case some of the clang libraries are shared libraries.
-CLANG_RFLAG=`echo "$CLANG_LDFLAGS" | $SED -e 's/-L/-R/g'`
-targets=`$LLVM_CONFIG --targets-built`
-components="$targets asmparser bitreader support mc"
-# Link in option and frontendopenmp components when available
-# since they may be used by the clang libraries.
-for c in option frontendopenmp; do
-       $LLVM_CONFIG --components | $GREP $c > /dev/null 2> /dev/null
-       if test $? -eq 0; then
-               components="$components $c"
-       fi
-done
-CLANG_LIBS=`$LLVM_CONFIG --libs $components`
-systemlibs=`$LLVM_CONFIG --system-libs 2> /dev/null | tail -1`
-if test $? -eq 0; then
-       CLANG_LIBS="$CLANG_LIBS $systemlibs"
-fi
-CLANG_PREFIX=`$LLVM_CONFIG --prefix`
-AC_DEFINE_UNQUOTED(CLANG_PREFIX, ["$CLANG_PREFIX"], [Clang installation prefix])
-
-# If $CLANG_PREFIX/bin/clang cannot find the standard include files,
-# then see if setting sysroot to `xcode-select -p`/SDKs/MacOSX.sdk helps.
-# This may be required on some versions of OS X since they lack /usr/include.
-# If so, set CLANG_SYSROOT accordingly.
-SAVE_CC="$CC"
-CC="$CLANG_PREFIX/bin/clang"
-AC_MSG_CHECKING(
-       [whether $CLANG_PREFIX/bin/clang can find standard include files])
-found_header=no
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[]])],
-       [found_header=yes])
-AC_MSG_RESULT([$found_header])
-if test "x$found_header" != "xyes"; then
-       AC_CHECK_PROG(XCODE_SELECT, xcode-select, xcode-select, [])
-       if test -z "$XCODE_SELECT"; then
-               AC_MSG_ERROR([Cannot find xcode-select])
-       fi
-       sysroot=`$XCODE_SELECT -p`/SDKs/MacOSX.sdk
-       SAVE_CPPFLAGS="$CPPFLAGS"
-       CPPFLAGS="$CPPFLAGS -isysroot $sysroot"
-       AC_MSG_CHECKING(
-               [whether standard include files can be found with sysroot set])
-       found_header=no
-       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[]])],
-               [found_header=yes])
-       AC_MSG_RESULT([$found_header])
-       CPPFLAGS="$SAVE_CPPFLAGS"
-       if test "x$found_header" != "xyes"; then
-               AC_MSG_ERROR([Cannot find standard include files])
-       else
-               AC_DEFINE_UNQUOTED([CLANG_SYSROOT], ["$sysroot"],
-                       [Define to sysroot if needed])
-       fi
-fi
-CC="$SAVE_CC"
-
-AC_LANG_PUSH(C++)
-
-SAVE_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CLANG_CXXFLAGS -I$srcdir $CPPFLAGS"
-AC_CHECK_HEADER([clang/Basic/SourceLocation.h], [],
-       [AC_ERROR([clang header file not found])])
-AC_EGREP_HEADER([getDefaultTargetTriple], [llvm/Support/Host.h], [],
-       [AC_DEFINE([getDefaultTargetTriple], [getHostTriple],
-       [Define to getHostTriple for older versions of clang])])
-AC_EGREP_HEADER([getExpansionLineNumber], [clang/Basic/SourceLocation.h], [],
-       [AC_DEFINE([getExpansionLineNumber], [getInstantiationLineNumber],
-       [Define to getInstantiationLineNumber for older versions of clang])])
-AC_EGREP_HEADER([getImmediateExpansionRange], [clang/Basic/SourceManager.h],
-       [],
-       [AC_DEFINE([getImmediateExpansionRange],
-       [getImmediateInstantiationRange],
-       [Define to getImmediateInstantiationRange for older versions of clang])]
-)
-AC_EGREP_HEADER([DiagnosticsEngine], [clang/Basic/Diagnostic.h], [],
-       [AC_DEFINE([DiagnosticsEngine], [Diagnostic],
-       [Define to Diagnostic for older versions of clang])])
-AC_EGREP_HEADER([ArrayRef], [clang/Driver/Driver.h],
-       [AC_DEFINE([USE_ARRAYREF], [],
-               [Define if Driver::BuildCompilation takes ArrayRef])
-       AC_EGREP_HEADER([ArrayRef.*CommandLineArgs],
-               [clang/Frontend/CompilerInvocation.h],
-               [AC_DEFINE([CREATE_FROM_ARGS_TAKES_ARRAYREF], [],
-                       [Define if CompilerInvocation::CreateFromArgs takes
-                        ArrayRef])
-               ])
-       ])
-AC_EGREP_HEADER([CXXIsProduction], [clang/Driver/Driver.h],
-       [AC_DEFINE([HAVE_CXXISPRODUCTION], [],
-               [Define if Driver constructor takes CXXIsProduction argument])])
-AC_EGREP_HEADER([ IsProduction], [clang/Driver/Driver.h],
-       [AC_DEFINE([HAVE_ISPRODUCTION], [],
-               [Define if Driver constructor takes IsProduction argument])])
-AC_TRY_COMPILE([#include <clang/Driver/Driver.h>], [
-       using namespace clang;
-       DiagnosticsEngine *Diags;
-       new driver::Driver("", "", "", *Diags);
-], [AC_DEFINE([DRIVER_CTOR_TAKES_DEFAULTIMAGENAME], [],
-             [Define if Driver constructor takes default image name])])
-AC_EGREP_HEADER([void HandleTopLevelDecl\(], [clang/AST/ASTConsumer.h],
-       [AC_DEFINE([HandleTopLevelDeclReturn], [void],
-                  [Return type of HandleTopLevelDeclReturn])
-        AC_DEFINE([HandleTopLevelDeclContinue], [],
-                  [Return type of HandleTopLevelDeclReturn])],
-       [AC_DEFINE([HandleTopLevelDeclReturn], [bool],
-                  [Return type of HandleTopLevelDeclReturn])
-        AC_DEFINE([HandleTopLevelDeclContinue], [true],
-                  [Return type of HandleTopLevelDeclReturn])])
-AC_CHECK_HEADER([clang/Basic/DiagnosticOptions.h],
-       [AC_DEFINE([HAVE_BASIC_DIAGNOSTICOPTIONS_H], [],
-                  [Define if clang/Basic/DiagnosticOptions.h exists])])
-AC_CHECK_HEADER([clang/Lex/PreprocessorOptions.h],
-       [AC_DEFINE([HAVE_LEX_PREPROCESSOROPTIONS_H], [],
-                  [Define if clang/Lex/PreprocessorOptions.h exists])], [],
-       [#include <clang/Basic/LLVM.h>])
-AC_TRY_COMPILE([#include <clang/Basic/TargetInfo.h>], [
-       using namespace clang;
-       std::shared_ptr<TargetOptions> TO;
-       DiagnosticsEngine *Diags;
-       TargetInfo::CreateTargetInfo(*Diags, TO);
-], [AC_DEFINE([CREATETARGETINFO_TAKES_SHARED_PTR], [],
-             [Define if TargetInfo::CreateTargetInfo takes shared_ptr])])
-AC_TRY_COMPILE([#include <clang/Basic/TargetInfo.h>], [
-       using namespace clang;
-       TargetOptions *TO;
-       DiagnosticsEngine *Diags;
-       TargetInfo::CreateTargetInfo(*Diags, TO);
-], [AC_DEFINE([CREATETARGETINFO_TAKES_POINTER], [],
-             [Define if TargetInfo::CreateTargetInfo takes pointer])])
-AC_TRY_COMPILE([#include <clang/Frontend/CompilerInstance.h>], [
-       using namespace clang;
-       DiagnosticConsumer *client;
-       CompilerInstance *Clang;
-       Clang->createDiagnostics(client);
-], [], [AC_DEFINE([CREATEDIAGNOSTICS_TAKES_ARG], [],
-       [Define if CompilerInstance::createDiagnostics takes argc and argv])])
-AC_TRY_COMPILE([#include <clang/Lex/HeaderSearchOptions.h>], [
-       using namespace clang;
-       HeaderSearchOptions HSO;
-       HSO.AddPath("", frontend::Angled, false, false);
-], [AC_DEFINE([ADDPATH_TAKES_4_ARGUMENTS], [],
-       [Define if HeaderSearchOptions::AddPath takes 4 arguments])])
-AC_EGREP_HEADER([getNumParams],
-       [clang/AST/CanonicalType.h],
-       [AC_DEFINE([getNumArgs], [getNumParams],
-           [Define to getNumParams for newer versions of clang])
-        AC_DEFINE([getArgType], [getParamType],
-           [Define to getParamType for newer versions of clang])])
-AC_EGREP_HEADER([getReturnType],
-       [clang/AST/CanonicalType.h], [],
-       [AC_DEFINE([getReturnType], [getResultType],
-           [Define to getResultType for older versions of clang])])
-AC_TRY_COMPILE([#include <clang/Frontend/CompilerInstance.h>], [
-       using namespace clang;
-       CompilerInstance *Clang;
-       Clang->createPreprocessor(TU_Complete);
-], [AC_DEFINE([CREATEPREPROCESSOR_TAKES_TUKIND], [],
-[Define if CompilerInstance::createPreprocessor takes TranslationUnitKind])])
-AC_EGREP_HEADER([setMainFileID], [clang/Basic/SourceManager.h],
-       [AC_DEFINE([HAVE_SETMAINFILEID], [],
-       [Define if SourceManager has a setMainFileID method])])
-AC_CHECK_HEADER([llvm/ADT/OwningPtr.h],
-       [AC_DEFINE([HAVE_ADT_OWNINGPTR_H], [],
-                  [Define if llvm/ADT/OwningPtr.h exists])])
-AC_EGREP_HEADER([initializeBuiltins],
-       [clang/Basic/Builtins.h], [],
-       [AC_DEFINE([initializeBuiltins], [InitializeBuiltins],
-               [Define to InitializeBuiltins for older versions of clang])])
-AC_EGREP_HEADER([IK_C], [clang/Frontend/FrontendOptions.h], [],
-       [AC_CHECK_HEADER([clang/Basic/LangStandard.h],
-               [IK_C=Language::C], [IK_C=InputKind::C])
-        AC_DEFINE_UNQUOTED([IK_C], [$IK_C],
-        [Define to Language::C or InputKind::C for newer versions of clang])
-       ])
-AC_TRY_COMPILE([
-       #include <clang/Basic/TargetOptions.h>
-       #include <clang/Lex/PreprocessorOptions.h>
-       #include <clang/Frontend/CompilerInstance.h>
-
-       #include "set_lang_defaults_arg4.h"
-], [
-       using namespace clang;
-       CompilerInstance *Clang;
-       TargetOptions TO;
-       llvm::Triple T(TO.Triple);
-       PreprocessorOptions PO;
-       CompilerInvocation::setLangDefaults(Clang->getLangOpts(), IK_C,
-                       T, setLangDefaultsArg4(PO),
-                       LangStandard::lang_unspecified);
-], [AC_DEFINE([SETLANGDEFAULTS_TAKES_5_ARGUMENTS], [],
-       [Define if CompilerInvocation::setLangDefaults takes 5 arguments])])
-AC_TRY_COMPILE([
-       #include <clang/Frontend/CompilerInstance.h>
-       #include <clang/Frontend/CompilerInvocation.h>
-], [
-       using namespace clang;
-       CompilerInvocation *invocation;
-       CompilerInstance *Clang;
-       Clang->setInvocation(std::make_shared<CompilerInvocation>(*invocation));
-], [AC_DEFINE([SETINVOCATION_TAKES_SHARED_PTR], [],
-       [Defined if CompilerInstance::setInvocation takes a shared_ptr])])
-AC_CHECK_HEADER([llvm/Option/Arg.h],
-       [AC_DEFINE([HAVE_LLVM_OPTION_ARG_H], [],
-                  [Define if llvm/Option/Arg.h exists])])
-CPPFLAGS="$SAVE_CPPFLAGS"
-
-SAVE_LDFLAGS="$LDFLAGS"
-LDFLAGS="$CLANG_LDFLAGS $LDFLAGS"
-
-# Use single libclang-cpp shared library when available.
-# Otherwise, use a selection of clang libraries that appears to work.
-AC_CHECK_LIB([clang-cpp], [main], [have_lib_clang=yes], [have_lib_clang=no])
-if test "$have_lib_clang" = yes; then
-       CLANG_LIBS="-lclang-cpp $CLANG_LIBS"
-else
-       CLANG_LIBS="-lclangBasic -lclangDriver $CLANG_LIBS"
-       CLANG_LIBS="-lclangAnalysis -lclangAST -lclangLex $CLANG_LIBS"
-       LDFLAGS="$CLANG_LDFLAGS $CLANG_LIBS $SAVE_LDFLAGS"
-       AC_CHECK_LIB([clangEdit], [main], [LIB_CLANG_EDIT=-lclangEdit], [])
-       CLANG_LIBS="$LIB_CLANG_EDIT $CLANG_LIBS"
-       CLANG_LIBS="-lclangParse -lclangSema $CLANG_LIBS"
-       CLANG_LIBS="-lclangFrontend -lclangSerialization $CLANG_LIBS"
-fi
-
-LDFLAGS="$SAVE_LDFLAGS"
-
-AC_LANG_POP
-])
diff --git a/polly/lib/External/isl/m4/ax_detect_git_head.m4 b/polly/lib/External/isl/m4/ax_detect_git_head.m4
deleted file mode 100644 (file)
index 31a6fe3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-AC_DEFUN([AX_DETECT_GIT_HEAD], [
-       AC_SUBST(GIT_HEAD_ID)
-       AC_SUBST(GIT_HEAD)
-       AC_SUBST(GIT_HEAD_VERSION)
-       if test -f $srcdir/.git; then
-               gitdir=`GIT_DIR=$srcdir/.git git rev-parse --git-dir`
-               GIT_HEAD="$gitdir/index"
-               GIT_REPO="$gitdir"
-               GIT_HEAD_ID=`GIT_DIR=$GIT_REPO git describe --always`
-       elif test -f $srcdir/.git/HEAD; then
-               GIT_HEAD="$srcdir/.git/index"
-               GIT_REPO="$srcdir/.git"
-               GIT_HEAD_ID=`GIT_DIR=$GIT_REPO git describe --always`
-       elif test -f $srcdir/GIT_HEAD_ID; then
-               GIT_HEAD_ID=`cat $srcdir/GIT_HEAD_ID`
-       else
-               mysrcdir=`(cd $srcdir; pwd)`
-               head=`basename $mysrcdir | sed -e 's/.*-//'`
-               head2=`echo $head | sed -e 's/[^0-9a-f]//'`
-               head3=`echo $head2 | sed -e 's/........................................//'`
-               if test "x$head3" = "x" -a "x$head" = "x$head2"; then
-                       GIT_HEAD_ID="$head"
-               else
-                       GIT_HEAD_ID="UNKNOWN"
-               fi
-       fi
-       if test -z "$GIT_REPO" ; then
-               GIT_HEAD_VERSION="$GIT_HEAD_ID"
-       else
-           GIT_HEAD_VERSION="\`GIT_DIR=$GIT_REPO git describe --always\`"
-       fi
-])
diff --git a/polly/lib/External/isl/m4/ax_detect_gmp.m4 b/polly/lib/External/isl/m4/ax_detect_gmp.m4
deleted file mode 100644 (file)
index e8534d1..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-AC_DEFUN([AX_DETECT_GMP], [
-AC_DEFINE([USE_GMP_FOR_MP], [], [use gmp to implement isl_int])
-AX_SUBMODULE(gmp,system|build,system)
-case "$with_gmp" in
-system)
-       if test "x$with_gmp_prefix" != "x"; then
-               MP_CPPFLAGS="-I$with_gmp_prefix/include"
-               MP_LDFLAGS="-L$with_gmp_prefix/lib"
-       fi
-       MP_LIBS=-lgmp
-       SAVE_CPPFLAGS="$CPPFLAGS"
-       SAVE_LDFLAGS="$LDFLAGS"
-       SAVE_LIBS="$LIBS"
-       CPPFLAGS="$MP_CPPFLAGS $CPPFLAGS"
-       LDFLAGS="$MP_LDFLAGS $LDFLAGS"
-       LIBS="$MP_LIBS $LIBS"
-       AC_CHECK_HEADER([gmp.h], [], [AC_ERROR([gmp.h header not found])])
-       AC_CHECK_LIB([gmp], [main], [], [AC_ERROR([gmp library not found])])
-       AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gmp.h>]], [[
-               mpz_t n, d;
-               if (mpz_divisible_p(n, d))
-                       mpz_divexact_ui(n, n, 4);
-       ]])], [], [AC_ERROR([gmp library too old])])
-       CPPFLAGS="$SAVE_CPPFLAGS"
-       LDFLAGS="$SAVE_LDFLAGS"
-       LIBS="$SAVE_LIBS"
-       ;;
-build)
-       MP_CPPFLAGS="-I$gmp_srcdir -I$with_gmp_builddir"
-       MP_LIBS="$with_gmp_builddir/libgmp.la"
-       ;;
-esac
-SAVE_CPPFLAGS="$CPPFLAGS"
-SAVE_LDFLAGS="$LDFLAGS"
-SAVE_LIBS="$LIBS"
-CPPFLAGS="$MP_CPPFLAGS $CPPFLAGS"
-LDFLAGS="$MP_LDFLAGS $LDFLAGS"
-LIBS="$MP_LIBS $LIBS"
-need_get_memory_functions=false
-AC_CHECK_DECLS(mp_get_memory_functions,[],[
-       need_get_memory_functions=true
-],[#include <gmp.h>])
-CPPFLAGS="$SAVE_CPPFLAGS"
-LDFLAGS="$SAVE_LDFLAGS"
-LIBS="$SAVE_LIBS"
-AM_CONDITIONAL(NEED_GET_MEMORY_FUNCTIONS, test x$need_get_memory_functions = xtrue)
-])
diff --git a/polly/lib/External/isl/m4/ax_detect_imath.m4 b/polly/lib/External/isl/m4/ax_detect_imath.m4
deleted file mode 100644 (file)
index 9c30a61..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-AC_DEFUN([AX_DETECT_IMATH], [
-AC_DEFINE([USE_IMATH_FOR_MP], [], [use imath to implement isl_int])
-
-MP_CPPFLAGS="-I$srcdir/imath_wrap"
-MP_LDFLAGS=""
-MP_LIBS=""
-
-SAVE_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$MP_CPPFLAGS $CPPFLAGS"
-AC_CHECK_HEADER([imath.h], [], [AC_ERROR([imath.h header not found])])
-AC_CHECK_HEADER([gmp_compat.h], [], [AC_ERROR([gmp_compat.h header not found])])
-CPPFLAGS="$SAVE_CPPFLAGS"
-
-AM_CONDITIONAL(NEED_GET_MEMORY_FUNCTIONS, test x = xfalse)
-])
diff --git a/polly/lib/External/isl/m4/ax_gcc_archflag.m4 b/polly/lib/External/isl/m4/ax_gcc_archflag.m4
deleted file mode 100644 (file)
index dedeef4..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-# ===========================================================================
-#         http://www.nongnu.org/autoconf-archive/ax_gcc_archflag.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_GCC_ARCHFLAG([PORTABLE?], [ACTION-SUCCESS], [ACTION-FAILURE])
-#
-# DESCRIPTION
-#
-#   This macro tries to guess the "native" arch corresponding to the target
-#   architecture for use with gcc's -march=arch or -mtune=arch flags. If
-#   found, the cache variable $ax_cv_gcc_archflag is set to this flag and
-#   ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is is set to
-#   "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is
-#   to add $ax_cv_gcc_archflag to the end of $CFLAGS.
-#
-#   PORTABLE? should be either [yes] (default) or [no]. In the former case,
-#   the flag is set to -mtune (or equivalent) so that the architecture is
-#   only used for tuning, but the instruction set used is still portable. In
-#   the latter case, the flag is set to -march (or equivalent) so that
-#   architecture-specific instructions are enabled.
-#
-#   The user can specify --with-gcc-arch=<arch> in order to override the
-#   macro's choice of architecture, or --without-gcc-arch to disable this.
-#
-#   When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is
-#   called unless the user specified --with-gcc-arch manually.
-#
-#   Requires macros: AX_CHECK_COMPILER_FLAGS, AX_GCC_X86_CPUID
-#
-#   (The main emphasis here is on recent CPUs, on the principle that doing
-#   high-performance computing on old hardware is uncommon.)
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
-#   Copyright (c) 2008 Matteo Frigo
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-AC_DEFUN([AX_GCC_ARCHFLAG],
-[AC_REQUIRE([AC_PROG_CC])
-AC_REQUIRE([AC_CANONICAL_HOST])
-
-AC_ARG_WITH(gcc-arch, [AC_HELP_STRING([--with-gcc-arch=<arch>], [use architecture <arch> for gcc -march/-mtune, instead of guessing])],
-       ax_gcc_arch=$withval, ax_gcc_arch=yes)
-
-AC_MSG_CHECKING([for gcc architecture flag])
-AC_MSG_RESULT([])
-AC_CACHE_VAL(ax_cv_gcc_archflag,
-[
-ax_cv_gcc_archflag="unknown"
-
-if test "$GCC" = yes; then
-
-if test "x$ax_gcc_arch" = xyes; then
-ax_gcc_arch=""
-if test "$cross_compiling" = no; then
-case $host_cpu in
-  i[[3456]]86*|x86_64*) # use cpuid codes, in part from x86info-1.7 by D. Jones
-     AX_GCC_X86_CPUID(0)
-     AX_GCC_X86_CPUID(1)
-     case $ax_cv_gcc_x86_cpuid_0 in
-       *:756e6547:*:*) # Intel
-          case $ax_cv_gcc_x86_cpuid_1 in
-           *5[[48]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
-           *5??:*:*:*) ax_gcc_arch=pentium ;;
-           *6[[3456]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
-           *6a?:*[[01]]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
-           *6a?:*[[234]]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
-           *6[[9d]]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
-           *6[[78b]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
-           *6??:*:*:*) ax_gcc_arch=pentiumpro ;;
-            *f3[[347]]:*:*:*|*f4[1347]:*:*:*)
-               case $host_cpu in
-                  x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
-                  *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
-                esac ;;
-            *f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
-          esac ;;
-       *:68747541:*:*) # AMD
-          case $ax_cv_gcc_x86_cpuid_1 in
-           *5[[67]]?:*:*:*) ax_gcc_arch=k6 ;;
-           *5[[8d]]?:*:*:*) ax_gcc_arch="k6-2 k6" ;;
-           *5[[9]]?:*:*:*) ax_gcc_arch="k6-3 k6" ;;
-           *60?:*:*:*) ax_gcc_arch=k7 ;;
-           *6[[12]]?:*:*:*) ax_gcc_arch="athlon k7" ;;
-           *6[[34]]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;;
-           *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;;
-           *6[[68a]]?:*:*:*)
-              AX_GCC_X86_CPUID(0x80000006) # L2 cache size
-              case $ax_cv_gcc_x86_cpuid_0x80000006 in
-                 *:*:*[[1-9a-f]]??????:*) # (L2 = ecx >> 16) >= 256
-                       ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
-                 *) ax_gcc_arch="athlon-4 athlon k7" ;;
-              esac ;;
-           *f[[4cef8b]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
-           *f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
-           *f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
-           *f??:*:*:*) ax_gcc_arch="k8" ;;
-          esac ;;
-       *:746e6543:*:*) # IDT
-          case $ax_cv_gcc_x86_cpuid_1 in
-            *54?:*:*:*) ax_gcc_arch=winchip-c6 ;;
-            *58?:*:*:*) ax_gcc_arch=winchip2 ;;
-            *6[[78]]?:*:*:*) ax_gcc_arch=c3 ;;
-            *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;;
-          esac ;;
-     esac
-     if test x"$ax_gcc_arch" = x; then # fallback
-       case $host_cpu in
-         i586*) ax_gcc_arch=pentium ;;
-         i686*) ax_gcc_arch=pentiumpro ;;
-        esac
-     fi
-     ;;
-
-  sparc*)
-     AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/])
-     cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
-     cputype=`echo "$cputype" | tr -d ' -' |tr $as_cr_LETTERS $as_cr_letters`
-     case $cputype in
-         *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
-         *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
-         *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;;
-         *supersparc*|*tms390z5[[05]]*) ax_gcc_arch="supersparc v8" ;;
-         *hypersparc*|*rt62[[056]]*) ax_gcc_arch="hypersparc v8" ;;
-         *cypress*) ax_gcc_arch=cypress ;;
-     esac ;;
-
-  alphaev5) ax_gcc_arch=ev5 ;;
-  alphaev56) ax_gcc_arch=ev56 ;;
-  alphapca56) ax_gcc_arch="pca56 ev56" ;;
-  alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;;
-  alphaev6) ax_gcc_arch=ev6 ;;
-  alphaev67) ax_gcc_arch=ev67 ;;
-  alphaev68) ax_gcc_arch="ev68 ev67" ;;
-  alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;;
-  alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;;
-  alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;;
-
-  powerpc*)
-     cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null`
-     cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'`
-     case $cputype in
-       *750*) ax_gcc_arch="750 G3" ;;
-       *740[[0-9]]*) ax_gcc_arch="$cputype 7400 G4" ;;
-       *74[[4-5]][[0-9]]*) ax_gcc_arch="$cputype 7450 G4" ;;
-       *74[[0-9]][[0-9]]*) ax_gcc_arch="$cputype G4" ;;
-       *970*) ax_gcc_arch="970 G5 power4";;
-       *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";;
-       *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";;
-       603ev|8240) ax_gcc_arch="$cputype 603e 603";;
-       *) ax_gcc_arch=$cputype ;;
-     esac
-     ax_gcc_arch="$ax_gcc_arch powerpc"
-     ;;
-esac
-fi # not cross-compiling
-fi # guess arch
-
-if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
-for arch in $ax_gcc_arch; do
-  if test "x[]m4_default([$1],yes)" = xyes; then # if we require portable code
-    flags="-mtune=$arch"
-    # -mcpu=$arch and m$arch generate nonportable code on every arch except
-    # x86.  And some other arches (e.g. Alpha) don't accept -mtune.  Grrr.
-    case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac
-  else
-    flags="-march=$arch -mcpu=$arch -m$arch"
-  fi
-  for flag in $flags; do
-    AX_CHECK_COMPILER_FLAGS($flag, [ax_cv_gcc_archflag=$flag; break])
-  done
-  test "x$ax_cv_gcc_archflag" = xunknown || break
-done
-fi
-
-fi # $GCC=yes
-])
-AC_MSG_CHECKING([for gcc architecture flag])
-AC_MSG_RESULT($ax_cv_gcc_archflag)
-if test "x$ax_cv_gcc_archflag" = xunknown; then
-  m4_default([$3],:)
-else
-  m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_gcc_archflag"])
-fi
-])
diff --git a/polly/lib/External/isl/m4/ax_gcc_warn_unused_result.m4 b/polly/lib/External/isl/m4/ax_gcc_warn_unused_result.m4
deleted file mode 100644 (file)
index a957f8f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-# ===========================================================================
-#    http://www.nongnu.org/autoconf-archive/ax_gcc_warn_unused_result.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_GCC_WARN_UNUSED_RESULT
-#
-# DESCRIPTION
-#
-#   The macro will compile a test program to see whether the compiler does
-#   understand the per-function postfix pragma.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-#
-#   This program is free software; you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation; either version 2 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-AC_DEFUN([AX_GCC_WARN_UNUSED_RESULT],[dnl
-AC_CACHE_CHECK(
- [whether the compiler supports function __attribute__((__warn_unused_result__))],
- ax_cv_gcc_warn_unused_result,[
- AC_TRY_COMPILE([__attribute__((__warn_unused_result__))
- int f(int i) { return i; }],
- [],
- ax_cv_gcc_warn_unused_result=yes, ax_cv_gcc_warn_unused_result=no)])
- if test "$ax_cv_gcc_warn_unused_result" = yes; then
-   AC_DEFINE([GCC_WARN_UNUSED_RESULT],[__attribute__((__warn_unused_result__))],
-    [most gcc compilers know a function __attribute__((__warn_unused_result__))])
- fi
-])
diff --git a/polly/lib/External/isl/m4/ax_gcc_x86_cpuid.m4 b/polly/lib/External/isl/m4/ax_gcc_x86_cpuid.m4
deleted file mode 100644 (file)
index 5420b09..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-# ===========================================================================
-#        http://www.nongnu.org/autoconf-archive/ax_gcc_x86_cpuid.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_GCC_X86_CPUID(OP)
-#
-# DESCRIPTION
-#
-#   On Pentium and later x86 processors, with gcc or a compiler that has a
-#   compatible syntax for inline assembly instructions, run a small program
-#   that executes the cpuid instruction with input OP. This can be used to
-#   detect the CPU type.
-#
-#   On output, the values of the eax, ebx, ecx, and edx registers are stored
-#   as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable
-#   ax_cv_gcc_x86_cpuid_OP.
-#
-#   If the cpuid instruction fails (because you are running a
-#   cross-compiler, or because you are not using gcc, or because you are on
-#   a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP
-#   is set to the string "unknown".
-#
-#   This macro mainly exists to be used in AX_GCC_ARCHFLAG.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
-#   Copyright (c) 2008 Matteo Frigo
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-AC_DEFUN([AX_GCC_X86_CPUID],
-[AC_REQUIRE([AC_PROG_CC])
-AC_LANG_PUSH([C])
-AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1,
- [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
-     int op = $1, eax, ebx, ecx, edx;
-     FILE *f;
-      __asm__("cpuid"
-        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-        : "a" (op));
-     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-     fclose(f);
-     return 0;
-])],
-     [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid],
-     [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid],
-     [ax_cv_gcc_x86_cpuid_$1=unknown])])
-AC_LANG_POP([C])
-])
diff --git a/polly/lib/External/isl/m4/ax_prog_cc_for_build.m4 b/polly/lib/External/isl/m4/ax_prog_cc_for_build.m4
deleted file mode 100644 (file)
index 5b1d4f9..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-# ===========================================================================
-#   https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_PROG_CC_FOR_BUILD
-#
-# DESCRIPTION
-#
-#   This macro searches for a C compiler that generates native executables,
-#   that is a C compiler that surely is not a cross-compiler. This can be
-#   useful if you have to generate source code at compile-time like for
-#   example GCC does.
-#
-#   The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything
-#   needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD).
-#   The value of these variables can be overridden by the user by specifying
-#   a compiler with an environment variable (like you do for standard CC).
-#
-#   It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object
-#   file extensions for the build platform, and GCC_FOR_BUILD to `yes' if
-#   the compiler we found is GCC. All these variables but GCC_FOR_BUILD are
-#   substituted in the Makefile.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved. This file is offered as-is, without any
-#   warranty.
-
-#serial 18
-
-AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
-AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_CPP])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-
-dnl Use the standard macros, but make them use other variable names
-dnl
-pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
-pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl
-pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
-pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
-pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl
-pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl
-pushdef([ac_cv_c_compiler_gnu], ac_cv_build_c_compiler_gnu)dnl
-pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl
-pushdef([ac_cv_objext], ac_cv_build_objext)dnl
-pushdef([ac_exeext], ac_build_exeext)dnl
-pushdef([ac_objext], ac_build_objext)dnl
-pushdef([CC], CC_FOR_BUILD)dnl
-pushdef([CCDEPMODE], CCDEPMODE_FOR_BUILD)dnl
-pushdef([CPP], CPP_FOR_BUILD)dnl
-pushdef([GCC], GCC_FOR_BUILD)dnl
-pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl
-pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
-pushdef([EXEEXT], BUILD_EXEEXT)dnl
-pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl
-pushdef([OBJEXT], BUILD_OBJEXT)dnl
-pushdef([host], build)dnl
-pushdef([host_alias], build_alias)dnl
-pushdef([host_cpu], build_cpu)dnl
-pushdef([host_vendor], build_vendor)dnl
-pushdef([host_os], build_os)dnl
-pushdef([ac_cv_host], ac_cv_build)dnl
-pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
-pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
-pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
-pushdef([ac_cv_host_os], ac_cv_build_os)dnl
-pushdef([ac_tool_prefix], ac_build_tool_prefix)dnl
-pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)dnl
-pushdef([am__fastdepCC_FALSE], am__fastdepCC_build_FALSE)dnl
-pushdef([am__fastdepCC_TRUE], am__fastdepCC_build_TRUE)dnl
-pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)dnl
-pushdef([cross_compiling], cross_compiling_build)dnl
-
-cross_compiling_build=no
-
-ac_build_tool_prefix=
-AS_IF([test -n "$build"],      [ac_build_tool_prefix="$build-"],
-      [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"])
-
-AC_LANG_PUSH([C])
-AC_PROG_CC
-_AC_COMPILER_EXEEXT
-_AC_COMPILER_OBJEXT
-AC_PROG_CPP
-
-dnl Restore the old definitions
-dnl
-popdef([cross_compiling])dnl
-popdef([am_cv_prog_cc_c_o])dnl
-popdef([am__fastdepCC_TRUE])dnl
-popdef([am__fastdepCC_FALSE])dnl
-popdef([am_cv_CC_dependencies_compiler_type])dnl
-popdef([ac_tool_prefix])dnl
-popdef([ac_cv_host_os])dnl
-popdef([ac_cv_host_vendor])dnl
-popdef([ac_cv_host_cpu])dnl
-popdef([ac_cv_host_alias])dnl
-popdef([ac_cv_host])dnl
-popdef([host_os])dnl
-popdef([host_vendor])dnl
-popdef([host_cpu])dnl
-popdef([host_alias])dnl
-popdef([host])dnl
-popdef([OBJEXT])dnl
-popdef([LDFLAGS])dnl
-popdef([EXEEXT])dnl
-popdef([CPPFLAGS])dnl
-popdef([CFLAGS])dnl
-popdef([GCC])dnl
-popdef([CPP])dnl
-popdef([CCDEPMODE])dnl
-popdef([CC])dnl
-popdef([ac_objext])dnl
-popdef([ac_exeext])dnl
-popdef([ac_cv_objext])dnl
-popdef([ac_cv_exeext])dnl
-popdef([ac_cv_c_compiler_gnu])dnl
-popdef([ac_cv_prog_cc_g])dnl
-popdef([ac_cv_prog_cc_cross])dnl
-popdef([ac_cv_prog_cc_works])dnl
-popdef([ac_cv_prog_cc_c89])dnl
-popdef([ac_cv_prog_gcc])dnl
-popdef([ac_cv_prog_CPP])dnl
-
-dnl restore global variables ac_ext, ac_cpp, ac_compile,
-dnl ac_link, ac_compiler_gnu (dependant on the current
-dnl language after popping):
-AC_LANG_POP([C])
-
-dnl Finally, set Makefile variables
-dnl
-AC_SUBST(BUILD_EXEEXT)dnl
-AC_SUBST(BUILD_OBJEXT)dnl
-AC_SUBST([CFLAGS_FOR_BUILD])dnl
-AC_SUBST([CPPFLAGS_FOR_BUILD])dnl
-AC_SUBST([LDFLAGS_FOR_BUILD])dnl
-])
diff --git a/polly/lib/External/isl/m4/ax_prog_cxx_for_build.m4 b/polly/lib/External/isl/m4/ax_prog_cxx_for_build.m4
deleted file mode 100644 (file)
index 17c19a8..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-# ===========================================================================
-#  https://www.gnu.org/software/autoconf-archive/ax_prog_cxx_for_build.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_PROG_CXX_FOR_BUILD
-#
-# DESCRIPTION
-#
-#   This macro searches for a C++ compiler that generates native
-#   executables, that is a C++ compiler that surely is not a cross-compiler.
-#   This can be useful if you have to generate source code at compile-time
-#   like for example GCC does.
-#
-#   The macro sets the CXX_FOR_BUILD and CXXCPP_FOR_BUILD macros to anything
-#   needed to compile or link (CXX_FOR_BUILD) and preprocess
-#   (CXXCPP_FOR_BUILD). The value of these variables can be overridden by
-#   the user by specifying a compiler with an environment variable (like you
-#   do for standard CXX).
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
-#   Copyright (c) 2012 Avionic Design GmbH
-#
-#   Based on the AX_PROG_CC_FOR_BUILD macro by Paolo Bonzini.
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved. This file is offered as-is, without any
-#   warranty.
-
-#serial 3
-
-AU_ALIAS([AC_PROG_CXX_FOR_BUILD], [AX_PROG_CXX_FOR_BUILD])
-AC_DEFUN([AX_PROG_CXX_FOR_BUILD], [dnl
-AC_REQUIRE([AX_PROG_CC_FOR_BUILD])dnl
-AC_REQUIRE([AC_PROG_CXX])dnl
-AC_REQUIRE([AC_PROG_CXXCPP])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-
-dnl Use the standard macros, but make them use other variable names
-dnl
-pushdef([ac_cv_prog_CXXCPP], ac_cv_build_prog_CXXCPP)dnl
-pushdef([ac_cv_prog_gxx], ac_cv_build_prog_gxx)dnl
-pushdef([ac_cv_prog_cxx_works], ac_cv_build_prog_cxx_works)dnl
-pushdef([ac_cv_prog_cxx_cross], ac_cv_build_prog_cxx_cross)dnl
-pushdef([ac_cv_prog_cxx_g], ac_cv_build_prog_cxx_g)dnl
-pushdef([CXX], CXX_FOR_BUILD)dnl
-pushdef([CXXCPP], CXXCPP_FOR_BUILD)dnl
-pushdef([CXXFLAGS], CXXFLAGS_FOR_BUILD)dnl
-pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
-pushdef([CXXCPPFLAGS], CXXCPPFLAGS_FOR_BUILD)dnl
-pushdef([host], build)dnl
-pushdef([host_alias], build_alias)dnl
-pushdef([host_cpu], build_cpu)dnl
-pushdef([host_vendor], build_vendor)dnl
-pushdef([host_os], build_os)dnl
-pushdef([ac_cv_host], ac_cv_build)dnl
-pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
-pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
-pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
-pushdef([ac_cv_host_os], ac_cv_build_os)dnl
-pushdef([ac_cxxcpp], ac_build_cxxcpp)dnl
-pushdef([ac_compile], ac_build_compile)dnl
-pushdef([ac_link], ac_build_link)dnl
-
-save_cross_compiling=$cross_compiling
-save_ac_tool_prefix=$ac_tool_prefix
-cross_compiling=no
-ac_tool_prefix=
-
-AC_PROG_CXX
-AC_PROG_CXXCPP
-
-ac_tool_prefix=$save_ac_tool_prefix
-cross_compiling=$save_cross_compiling
-
-dnl Restore the old definitions
-dnl
-popdef([ac_link])dnl
-popdef([ac_compile])dnl
-popdef([ac_cxxcpp])dnl
-popdef([ac_cv_host_os])dnl
-popdef([ac_cv_host_vendor])dnl
-popdef([ac_cv_host_cpu])dnl
-popdef([ac_cv_host_alias])dnl
-popdef([ac_cv_host])dnl
-popdef([host_os])dnl
-popdef([host_vendor])dnl
-popdef([host_cpu])dnl
-popdef([host_alias])dnl
-popdef([host])dnl
-popdef([CXXCPPFLAGS])dnl
-popdef([CPPFLAGS])dnl
-popdef([CXXFLAGS])dnl
-popdef([CXXCPP])dnl
-popdef([CXX])dnl
-popdef([ac_cv_prog_cxx_g])dnl
-popdef([ac_cv_prog_cxx_cross])dnl
-popdef([ac_cv_prog_cxx_works])dnl
-popdef([ac_cv_prog_gxx])dnl
-popdef([ac_cv_prog_CXXCPP])dnl
-
-dnl Finally, set Makefile variables
-dnl
-AC_SUBST([CXXFLAGS_FOR_BUILD])dnl
-AC_SUBST([CXXCPPFLAGS_FOR_BUILD])dnl
-])
diff --git a/polly/lib/External/isl/m4/ax_set_warning_flags.m4 b/polly/lib/External/isl/m4/ax_set_warning_flags.m4
deleted file mode 100644 (file)
index c64ad7d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-dnl Add a set of flags to WARNING_FLAGS, that enable compiler warnings for
-dnl isl. The warnings that are enabled vary with the compiler and only include
-dnl warnings that did not trigger at the time of adding these flags.
-AC_DEFUN([AX_SET_WARNING_FLAGS],[dnl
-       AX_COMPILER_VENDOR
-
-       WARNING_FLAGS=""
-
-       if test "${ax_cv_c_compiler_vendor}" = "clang"; then
-               dnl isl is at the moment clean of -Wall warnings.  If clang adds
-               dnl new warnings to -Wall which cause false positives, the
-               dnl specific warning types will be disabled explicitally (by
-               dnl adding for example -Wno-return-type). To temporarily disable
-               dnl all warnings run configure with CFLAGS=-Wno-all.
-               WARNING_FLAGS="-Wall"
-       fi
-])
diff --git a/polly/lib/External/isl/m4/ax_submodule.m4 b/polly/lib/External/isl/m4/ax_submodule.m4
deleted file mode 100644 (file)
index 7cf8995..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-AC_DEFUN([AX_SUBMODULE],
-[
-
-m4_if(m4_bregexp($2,|,choice),choice,
-       [AC_ARG_WITH($1,
-               [AS_HELP_STRING([--with-$1=$2],
-                               [Which $1 to use [default=$3]])])])
-case "system" in
-$2)
-       AC_ARG_WITH($1_prefix,
-                   [AS_HELP_STRING([--with-$1-prefix=DIR],
-                                   [Prefix of $1 installation])])
-       AC_ARG_WITH($1_exec_prefix,
-                   [AS_HELP_STRING([--with-$1-exec-prefix=DIR],
-                                   [Exec prefix of $1 installation])])
-esac
-m4_if(m4_bregexp($2,build,build),build,
-       [AC_ARG_WITH($1_builddir,
-               [AS_HELP_STRING([--with-$1-builddir=DIR],
-                               [Location of $1 builddir])])])
-if test "x$with_$1_prefix" != "x" -a "x$with_$1_exec_prefix" = "x"; then
-       with_$1_exec_prefix=$with_$1_prefix
-fi
-if test "x$with_$1_prefix" != "x" -o "x$with_$1_exec_prefix" != "x"; then
-       if test "x$with_$1" != "x" -a "x$with_$1" != "xyes" -a "x$with_$1" != "xsystem"; then
-               AC_MSG_ERROR([Setting $with_$1_prefix implies use of system $1])
-       fi
-       with_$1="system"
-fi
-if test "x$with_$1_builddir" != "x"; then
-       if test "x$with_$1" != "x" -a "x$with_$1" != "xyes" -a "x$with_$1" != "xbuild"; then
-               AC_MSG_ERROR([Setting $with_$1_builddir implies use of build $1])
-       fi
-       with_$1="build"
-       $1_srcdir=`echo @abs_srcdir@ | $with_$1_builddir/config.status --file=-`
-       AC_MSG_NOTICE($1 sources in $$1_srcdir)
-fi
-if test "x$with_$1_exec_prefix" != "x"; then
-       export PKG_CONFIG_PATH="$with_$1_exec_prefix/lib/pkgconfig${PKG_CONFIG_PATH+:$PKG_CONFIG_PATH}"
-fi
-case "$with_$1" in
-$2)
-       ;;
-*)
-       case "$3" in
-       bundled)
-               if test -d $srcdir/.git -a \
-                       -d $srcdir/$1 -a \
-                       ! -d $srcdir/$1/.git; then
-                       AC_MSG_WARN([git repo detected, but submodule $1 not initialized])
-                       AC_MSG_WARN([You may want to run])
-                       AC_MSG_WARN([   git submodule init])
-                       AC_MSG_WARN([   git submodule update])
-                       AC_MSG_WARN([   sh autogen.sh])
-               fi
-               if test -f $srcdir/$1/configure; then
-                       with_$1="bundled"
-               else
-                       with_$1="no"
-               fi
-               ;;
-       *)
-               with_$1="$3"
-               ;;
-       esac
-       ;;
-esac
-AC_MSG_CHECKING([which $1 to use])
-AC_MSG_RESULT($with_$1)
-
-])
diff --git a/polly/lib/External/isl/m4/libtool.m4 b/polly/lib/External/isl/m4/libtool.m4
deleted file mode 100644 (file)
index 2b73e38..0000000
+++ /dev/null
@@ -1,8393 +0,0 @@
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-#   Copyright (C) 1996-2001, 2003-2018 Free Software Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-m4_define([_LT_COPYING], [dnl
-# Copyright (C) 2014 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program or library that is built
-# using GNU Libtool, you may include this file under the  same
-# distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-])
-
-# serial 58 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-m4_defun([LT_PREREQ],
-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
-       [m4_default([$3],
-                  [m4_fatal([Libtool version $1 or higher is required],
-                            63)])],
-       [$2])])
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-m4_defun([_LT_CHECK_BUILDDIR],
-[case `pwd` in
-  *\ * | *\    *)
-    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
-esac
-])
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK
-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS=$ltmain
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])# LT_INIT
-
-# Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
-
-
-# _LT_PREPARE_CC_BASENAME
-# -----------------------
-m4_defun([_LT_PREPARE_CC_BASENAME], [
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-func_cc_basename ()
-{
-    for cc_temp in @S|@*""; do
-      case $cc_temp in
-        compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-        distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-        \-*) ;;
-        *) break;;
-      esac
-    done
-    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-}
-])# _LT_PREPARE_CC_BASENAME
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME,
-# but that macro is also expanded into generated libtool script, which
-# arranges for $SED and $ECHO to be set by different means.
-m4_defun([_LT_CC_BASENAME],
-[m4_require([_LT_PREPARE_CC_BASENAME])dnl
-AC_REQUIRE([_LT_DECL_SED])dnl
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
-func_cc_basename $1
-cc_basename=$func_cc_basename_result
-])
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'.
-m4_defun([_LT_FILEUTILS_DEFAULTS],
-[: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-])# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-m4_defun([_LT_SETUP],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
-
-_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
-dnl
-_LT_DECL([], [host_alias], [0], [The host system])dnl
-_LT_DECL([], [host], [0])dnl
-_LT_DECL([], [host_os], [0])dnl
-dnl
-_LT_DECL([], [build_alias], [0], [The build system])dnl
-_LT_DECL([], [build], [0])dnl
-_LT_DECL([], [build_os], [0])dnl
-dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-test -z "$LN_S" && LN_S="ln -s"
-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
-dnl
-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
-dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
-m4_require([_LT_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_WITH_SYSROOT])dnl
-m4_require([_LT_CMD_TRUNCATE])dnl
-
-_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options that allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}"; then
-   setopt NO_GLOB_SUBST
-fi
-])
-if test -n "${ZSH_VERSION+set}"; then
-   setopt NO_GLOB_SUBST
-fi
-
-_LT_CHECK_OBJDIR
-
-m4_require([_LT_TAG_COMPILER])dnl
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test set != "${COLLECT_NAMES+set}"; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a '.a' archive for static linking (except MSVC and
-# ICC, which need '.lib').
-libext=a
-
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-old_CC=$CC
-old_CFLAGS=$CFLAGS
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    _LT_PATH_MAGIC
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-LT_SUPPORTED_TAG([CC])
-_LT_LANG_C_CONFIG
-_LT_LANG_DEFAULT_CONFIG
-_LT_CONFIG_COMMANDS
-])# _LT_SETUP
-
-
-# _LT_PREPARE_SED_QUOTE_VARS
-# --------------------------
-# Define a few sed substitution that help us do robust quoting.
-m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
-[# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-])
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from 'configure', and 'config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# 'config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-m4_defun([_LT_PROG_LTMAIN],
-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain=$ac_aux_dir/ltmain.sh
-])# _LT_PROG_LTMAIN
-
-
-## ------------------------------------- ##
-## Accumulate code for creating libtool. ##
-## ------------------------------------- ##
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the 'libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL_INIT],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
-[_LT_CONFIG_LIBTOOL([$1])
-_LT_CONFIG_LIBTOOL_INIT([$2])
-])
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-m4_define([_LT_FORMAT_COMMENT],
-[m4_ifval([$1], [
-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
-              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
-)])
-
-
-
-## ------------------------ ##
-## FIXME: Eliminate VARNAME ##
-## ------------------------ ##
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME.  Any other value will be used directly.
-m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
-    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
-       [m4_ifval([$1], [$1], [$2])])
-    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
-    m4_ifval([$4],
-       [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
-    lt_dict_add_subkey([lt_decl_dict], [$2],
-       [tagged?], [m4_ifval([$5], [yes], [no])])])
-])
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_tag_varnames],
-[_lt_decl_filter([tagged?], [yes], $@)])
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-m4_define([_lt_decl_filter],
-[m4_case([$#],
-  [0], [m4_fatal([$0: too few arguments: $#])],
-  [1], [m4_fatal([$0: too few arguments: $#: $1])],
-  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
-  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
-  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
-])
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-m4_define([lt_decl_quote_varnames],
-[_lt_decl_filter([value], [1], $@)])
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_dquote_varnames],
-[_lt_decl_filter([value], [2], $@)])
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_varnames_tagged],
-[m4_assert([$# <= 2])dnl
-_$0(m4_quote(m4_default([$1], [[, ]])),
-    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
-    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
-m4_define([_lt_decl_varnames_tagged],
-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_all_varnames],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
-     m4_if([$2], [],
-          m4_quote(lt_decl_varnames),
-       m4_quote(m4_shift($@))))[]dnl
-])
-m4_define([_lt_decl_all_varnames],
-[lt_join($@, lt_decl_varnames_tagged([$1],
-                       lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
-])
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to 'config.status' so that its
-# declaration there will have the same value as in 'configure'.  VARNAME
-# must have a single quote delimited value for this to work.
-m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly.  In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
-    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-m4_defun([_LT_LIBTOOL_TAGS],
-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags='_LT_TAGS'dnl
-])
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-#    # Some comment about what VAR is for.
-#    visible_name=$lt_internal_name
-m4_define([_LT_LIBTOOL_DECLARE],
-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
-                                          [description])))[]dnl
-m4_pushdef([_libtool_name],
-    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
-    [0], [_libtool_name=[$]$1],
-    [1], [_libtool_name=$lt_[]$1],
-    [2], [_libtool_name=$lt_[]$1],
-    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
-])
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool'
-# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
-[m4_foreach([_lt_var],
-    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-m4_define([_LT_LIBTOOL_TAG_VARS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into 'config.status', and then the shell code to quote escape them in
-# for loops in 'config.status'.  Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-m4_defun([_LT_CONFIG_COMMANDS],
-[AC_PROVIDE_IFELSE([LT_OUTPUT],
-       dnl If the libtool generation code has been placed in $CONFIG_LT,
-       dnl instead of duplicating it all over again into config.status,
-       dnl then we will have config.status run $CONFIG_LT later, so it
-       dnl needs to know what name is stored there:
-        [AC_CONFIG_COMMANDS([libtool],
-            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
-    dnl If the libtool generation code is destined for config.status,
-    dnl expand the accumulated commands and init code now:
-    [AC_CONFIG_COMMANDS([libtool],
-        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
-])#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
-[
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-_LT_CONFIG_STATUS_DECLARATIONS
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$[]1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-_LT_OUTPUT_LIBTOOL_INIT
-])
-
-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
-# ------------------------------------
-# Generate a child script FILE with all initialization necessary to
-# reuse the environment learned by the parent script, and make the
-# file executable.  If COMMENT is supplied, it is inserted after the
-# '#!' sequence but before initialization text begins.  After this
-# macro, additional text can be appended to FILE to form the body of
-# the child script.  The macro ends with non-zero status if the
-# file could not be fully written (such as if the disk is full).
-m4_ifdef([AS_INIT_GENERATED],
-[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
-[m4_defun([_LT_GENERATED_FILE_INIT],
-[m4_require([AS_PREPARE])]dnl
-[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
-[lt_write_fail=0
-cat >$1 <<_ASEOF || lt_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-$2
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$1 <<\_ASEOF || lt_write_fail=1
-AS_SHELL_SANITIZE
-_AS_PREPARE
-exec AS_MESSAGE_FD>&1
-_ASEOF
-test 0 = "$lt_write_fail" && chmod +x $1[]dnl
-m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-AC_DEFUN([LT_OUTPUT],
-[: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
-[# Run this file to recreate a libtool stub with the current configuration.])
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-lt_cl_silent=false
-exec AS_MESSAGE_LOG_FD>>config.log
-{
-  echo
-  AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-'$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool@gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2011 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test 0 != $[#]
-do
-  case $[1] in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try '$[0] --help' for more information.]) ;;
-
-    *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try '$[0] --help' for more information.]) ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-lt_cl_success=:
-test yes = "$silent" &&
-  lt_config_lt_args="$lt_config_lt_args --quiet"
-exec AS_MESSAGE_LOG_FD>/dev/null
-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-exec AS_MESSAGE_LOG_FD>>config.log
-$lt_cl_success || AS_EXIT(1)
-])# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars.  Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-m4_defun([_LT_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_CONFIG_SAVE_COMMANDS([
-  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
-  m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options that allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}"; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile=${ofile}T
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-# Generated automatically by $as_me ($PACKAGE) $VERSION
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-
-# Provide generalized library-building support services.
-# Written by Gordon Matzigkeit, 1996
-
-_LT_COPYING
-_LT_LIBTOOL_TAGS
-
-# Configured defaults for sys_lib_dlsearch_path munging.
-: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
-
-# ### BEGIN LIBTOOL CONFIG
-_LT_LIBTOOL_CONFIG_VARS
-_LT_LIBTOOL_TAG_VARS
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-    cat <<'_LT_EOF' >> "$cfgfile"
-
-# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
-
-_LT_PREPARE_MUNGE_PATH_LIST
-_LT_PREPARE_CC_BASENAME
-
-# ### END FUNCTIONS SHARED WITH CONFIGURE
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test set != "${COLLECT_NAMES+set}"; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  _LT_PROG_LTMAIN
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-],
-[cat <<_LT_EOF >> "$ofile"
-
-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
-dnl in a comment (ie after a #).
-# ### BEGIN LIBTOOL TAG CONFIG: $1
-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
-# ### END LIBTOOL TAG CONFIG: $1
-_LT_EOF
-])dnl /m4_if
-],
-[m4_if([$1], [], [
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    RM='$RM'
-    ofile='$ofile'], [])
-])dnl /_LT_CONFIG_SAVE_COMMANDS
-])# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
-AC_DEFUN([LT_SUPPORTED_TAG], [])
-
-
-# C support is built-in for now
-m4_define([_LT_LANG_C_enabled], [])
-m4_define([_LT_TAGS], [])
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-AC_DEFUN([LT_LANG],
-[AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
-  [C],                 [_LT_LANG(C)],
-  [C++],               [_LT_LANG(CXX)],
-  [Go],                        [_LT_LANG(GO)],
-  [Java],              [_LT_LANG(GCJ)],
-  [Fortran 77],                [_LT_LANG(F77)],
-  [Fortran],           [_LT_LANG(FC)],
-  [Windows Resource],  [_LT_LANG(RC)],
-  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-    [_LT_LANG($1)],
-    [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-m4_defun([_LT_LANG],
-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
-  [LT_SUPPORTED_TAG([$1])dnl
-  m4_append([_LT_TAGS], [$1 ])dnl
-  m4_define([_LT_LANG_]$1[_enabled], [])dnl
-  _LT_LANG_$1_CONFIG($1)])dnl
-])# _LT_LANG
-
-
-m4_ifndef([AC_PROG_GO], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-############################################################
-m4_defun([AC_PROG_GO],
-[AC_LANG_PUSH(Go)dnl
-AC_ARG_VAR([GOC],     [Go compiler command])dnl
-AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
-_AC_ARG_VAR_LDFLAGS()dnl
-AC_CHECK_TOOL(GOC, gccgo)
-if test -z "$GOC"; then
-  if test -n "$ac_tool_prefix"; then
-    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
-  fi
-fi
-if test -z "$GOC"; then
-  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
-fi
-])#m4_defun
-])#m4_ifndef
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-m4_defun([_LT_LANG_DEFAULT_CONFIG],
-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
-  [LT_LANG(CXX)],
-  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_F77],
-  [LT_LANG(F77)],
-  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_FC],
-  [LT_LANG(FC)],
-  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
-
-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
-dnl pulling things in needlessly.
-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-  [LT_LANG(GCJ)],
-  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-    [LT_LANG(GCJ)],
-    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
-      [LT_LANG(GCJ)],
-      [m4_ifdef([AC_PROG_GCJ],
-       [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([A][M_PROG_GCJ],
-       [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([LT_PROG_GCJ],
-       [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
-
-AC_PROVIDE_IFELSE([AC_PROG_GO],
-  [LT_LANG(GO)],
-  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
-
-AC_PROVIDE_IFELSE([LT_PROG_RC],
-  [LT_LANG(RC)],
-  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
-])# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-dnl AC_DEFUN([AC_LIBTOOL_RC], [])
-
-
-# _LT_TAG_COMPILER
-# ----------------
-m4_defun([_LT_TAG_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-m4_defun([_LT_COMPILER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-m4_defun([_LT_LINKER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
-  case $host_os in
-    rhapsody* | darwin*)
-    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
-    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
-    AC_CHECK_TOOL([LIPO], [lipo], [:])
-    AC_CHECK_TOOL([OTOOL], [otool], [:])
-    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
-    _LT_DECL([], [DSYMUTIL], [1],
-      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
-    _LT_DECL([], [NMEDIT], [1],
-      [Tool to change global to local symbols on Mac OS X])
-    _LT_DECL([], [LIPO], [1],
-      [Tool to manipulate fat objects and archives on Mac OS X])
-    _LT_DECL([], [OTOOL], [1],
-      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
-    _LT_DECL([], [OTOOL64], [1],
-      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
-
-    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
-      [lt_cv_apple_cc_single_mod=no
-      if test -z "$LT_MULTI_MODULE"; then
-       # By default we will add the -single_module flag. You can override
-       # by either setting the environment variable LT_MULTI_MODULE
-       # non-empty at configure time, or by adding -multi_module to the
-       # link flags.
-       rm -rf libconftest.dylib*
-       echo "int foo(void){return 1;}" > conftest.c
-       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
-       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-       # If there is a non-empty error log, and "single_module"
-       # appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-         cat conftest.err >&AS_MESSAGE_LOG_FD
-       # Otherwise, if the output was created with a 0 exit code from
-       # the compiler, it worked.
-       elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
-         lt_cv_apple_cc_single_mod=yes
-       else
-         cat conftest.err >&AS_MESSAGE_LOG_FD
-       fi
-       rm -rf libconftest.dylib*
-       rm -f conftest.*
-      fi])
-
-    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
-      [lt_cv_ld_exported_symbols_list],
-      [lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-       [lt_cv_ld_exported_symbols_list=yes],
-       [lt_cv_ld_exported_symbols_list=no])
-       LDFLAGS=$save_LDFLAGS
-    ])
-
-    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
-      [lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
-      echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
-      $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
-      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
-      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-       cat conftest.err >&AS_MESSAGE_LOG_FD
-      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
-       lt_cv_ld_force_load=yes
-      else
-       cat conftest.err >&AS_MESSAGE_LOG_FD
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-    ])
-    case $host_os in
-    rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-       10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-       10.[[012]][[,.]]*)
-         _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-       10.*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test yes = "$lt_cv_apple_cc_single_mod"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test yes = "$lt_cv_ld_exported_symbols_list"; then
-      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
-    fi
-    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES([TAG])
-# ---------------------------------
-# Checks for linker and compiler features on darwin
-m4_defun([_LT_DARWIN_LINKER_FEATURES],
-[
-  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_automatic, $1)=yes
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  if test yes = "$lt_cv_ld_force_load"; then
-    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
-                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
-  else
-    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-  fi
-  _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined
-  case $cc_basename in
-     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test yes = "$_lt_dar_can_shared"; then
-    output_verbose_link_cmd=func_echo_all
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
-    m4_if([$1], [CXX],
-[   if test yes != "$lt_cv_apple_cc_single_mod"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
-    fi
-],[])
-  else
-  _LT_TAGVAR(ld_shlibs, $1)=no
-  fi
-])
-
-# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
-# ----------------------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-# Store the results from the different compilers for each TAGNAME.
-# Allow to override them for all tags through lt_cv_aix_libpath.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-if test set = "${lt_cv_aix_libpath+set}"; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
-  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
-  lt_aix_libpath_sed='[
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }]'
-  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi],[])
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib
-  fi
-  ])
-  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
-fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[m4_divert_text([M4SH-INIT], [$1
-])])# _LT_SHELL_INIT
-
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Find how we can fake an echo command that does not interpret backslash.
-# In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script that will find a shell with a builtin
-# printf (that we can use as an echo command).
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-AC_MSG_CHECKING([how to print strings])
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$[]1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*"
-}
-
-case $ECHO in
-  printf*) AC_MSG_RESULT([printf]) ;;
-  print*) AC_MSG_RESULT([print -r]) ;;
-  *) AC_MSG_RESULT([cat]) ;;
-esac
-
-m4_ifdef([_AS_DETECT_SUGGESTED],
-[_AS_DETECT_SUGGESTED([
-  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test "X`printf %s $ECHO`" = "X$ECHO" \
-      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
-
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_WITH_SYSROOT
-# ----------------
-AC_DEFUN([_LT_WITH_SYSROOT],
-[AC_MSG_CHECKING([for sysroot])
-AC_ARG_WITH([sysroot],
-[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
-  [Search for dependent libraries within DIR (or the compiler's sysroot
-   if not specified).])],
-[], [with_sysroot=no])
-
-dnl lt_sysroot will always be passed unquoted.  We quote it here
-dnl in case the user passed a directory name.
-lt_sysroot=
-case $with_sysroot in #(
- yes)
-   if test yes = "$GCC"; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   AC_MSG_RESULT([$with_sysroot])
-   AC_MSG_ERROR([The sysroot must be an absolute path.])
-   ;;
-esac
-
- AC_MSG_RESULT([${lt_sysroot:-no}])
-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and where our libraries should be installed.])])
-
-# _LT_ENABLE_LOCK
-# ---------------
-m4_defun([_LT_ENABLE_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
-  [AS_HELP_STRING([--disable-libtool-lock],
-    [avoid locking (might break parallel builds)])])
-test no = "$enable_libtool_lock" || enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out what ABI is being produced by ac_compile, and set mode
-  # options accordingly.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-       HPUX_IA64_MODE=32
-       ;;
-      *ELF-64*)
-       HPUX_IA64_MODE=64
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    if test yes = "$lt_cv_prog_gnu_ld"; then
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -melf32bsmip"
-         ;;
-       *N32*)
-         LD="${LD-ld} -melf32bmipn32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -melf64bmip"
-       ;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -32"
-         ;;
-       *N32*)
-         LD="${LD-ld} -n32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -64"
-         ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-mips64*-*linux*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    emul=elf
-    case `/usr/bin/file conftest.$ac_objext` in
-      *32-bit*)
-       emul="${emul}32"
-       ;;
-      *64-bit*)
-       emul="${emul}64"
-       ;;
-    esac
-    case `/usr/bin/file conftest.$ac_objext` in
-      *MSB*)
-       emul="${emul}btsmip"
-       ;;
-      *LSB*)
-       emul="${emul}ltsmip"
-       ;;
-    esac
-    case `/usr/bin/file conftest.$ac_objext` in
-      *N32*)
-       emul="${emul}n32"
-       ;;
-    esac
-    LD="${LD-ld} -m $emul"
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.  Note that the listed cases only cover the
-  # situations where additional linker options are needed (such as when
-  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
-  # vice versa); the common cases where no linker options are needed do
-  # not appear in the list.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_i386_fbsd"
-           ;;
-         x86_64-*linux*)
-           case `/usr/bin/file conftest.o` in
-             *x86-64*)
-               LD="${LD-ld} -m elf32_x86_64"
-               ;;
-             *)
-               LD="${LD-ld} -m elf_i386"
-               ;;
-           esac
-           ;;
-         powerpc64le-*linux*)
-           LD="${LD-ld} -m elf32lppclinux"
-           ;;
-         powerpc64-*linux*)
-           LD="${LD-ld} -m elf32ppclinux"
-           ;;
-         s390x-*linux*)
-           LD="${LD-ld} -m elf_s390"
-           ;;
-         sparc64-*linux*)
-           LD="${LD-ld} -m elf32_sparc"
-           ;;
-       esac
-       ;;
-      *64-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_x86_64_fbsd"
-           ;;
-         x86_64-*linux*)
-           LD="${LD-ld} -m elf_x86_64"
-           ;;
-         powerpcle-*linux*)
-           LD="${LD-ld} -m elf64lppc"
-           ;;
-         powerpc-*linux*)
-           LD="${LD-ld} -m elf64ppc"
-           ;;
-         s390*-*linux*|s390*-*tpf*)
-           LD="${LD-ld} -m elf64_s390"
-           ;;
-         sparc*-*linux*)
-           LD="${LD-ld} -m elf64_sparc"
-           ;;
-       esac
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS=$CFLAGS
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_LANG_PUSH(C)
-     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-     AC_LANG_POP])
-  if test yes != "$lt_cv_cc_needs_belf"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS=$SAVE_CFLAGS
-  fi
-  ;;
-*-*solaris*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*|x86_64-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD=${LD-ld}_sol2
-        fi
-        ;;
-      *)
-       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-         LD="${LD-ld} -64"
-       fi
-       ;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks=$enable_libtool_lock
-])# _LT_ENABLE_LOCK
-
-
-# _LT_PROG_AR
-# -----------
-m4_defun([_LT_PROG_AR],
-[AC_CHECK_TOOLS(AR, [ar], false)
-: ${AR=ar}
-_LT_DECL([], [AR], [1], [The archiver])
-
-# Use ARFLAGS variable as AR's operation code to sync the variable naming with
-# Automake.  If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have
-# higher priority because thats what people were doing historically (setting
-# ARFLAGS for automake and AR_FLAGS for libtool).  FIXME: Make the AR_FLAGS
-# variable obsoleted/removed.
-
-test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr}
-lt_ar_flags=$AR_FLAGS
-_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)])
-
-# Make AR_FLAGS overridable by 'make ARFLAGS='.  Don't try to run-time override
-# by AR_FLAGS because that was never working and AR_FLAGS is about to die.
-_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}],
-         [Flags to create an archive])
-
-AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
-  [lt_cv_ar_at_file=no
-   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
-     [echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
-      AC_TRY_EVAL([lt_ar_try])
-      if test 0 -eq "$ac_status"; then
-       # Ensure the archiver fails upon bogus file names.
-       rm -f conftest.$ac_objext libconftest.a
-       AC_TRY_EVAL([lt_ar_try])
-       if test 0 -ne "$ac_status"; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-     ])
-  ])
-
-if test no = "$lt_cv_ar_at_file"; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-_LT_DECL([], [archiver_list_spec], [1],
-  [How to feed a file listing to the archiver])
-])# _LT_PROG_AR
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[_LT_PROG_AR
-
-AC_CHECK_TOOL(STRIP, strip, :)
-test -z "$STRIP" && STRIP=:
-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
-
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-test -z "$RANLIB" && RANLIB=:
-_LT_DECL([], [RANLIB], [1],
-    [Commands used to install an old-style archive])
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  bitrig* | openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-_LT_DECL([], [old_postinstall_cmds], [2])
-_LT_DECL([], [old_postuninstall_cmds], [2])
-_LT_TAGDECL([], [old_archive_cmds], [2],
-    [Commands used to build an old-style archive])
-_LT_DECL([], [lock_old_archive_extraction], [0],
-    [Whether to use a lock for old archive extraction])
-])# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#              [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([_LT_COMPILER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"  ## exclude from sc_useless_quotes_in_assignment
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $RM conftest*
-])
-
-if test yes = "[$]$2"; then
-    m4_if([$5], , :, [$5])
-else
-    m4_if([$6], , :, [$6])
-fi
-])# _LT_COMPILER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                  [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-AC_DEFUN([_LT_LINKER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS=$LDFLAGS
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS=$save_LDFLAGS
-])
-
-if test yes = "[$]$2"; then
-    m4_if([$4], , :, [$4])
-else
-    m4_if([$5], , :, [$5])
-fi
-])# _LT_LINKER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
-
-
-# LT_CMD_MAX_LEN
-#---------------
-AC_DEFUN([LT_CMD_MAX_LEN],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring=ABCD
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[        ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len" && \
-       test undefined != "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
-                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-             test 17 != "$i" # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n "$lt_cv_sys_max_cmd_len"; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
-    [What is the maximum length of a command?])
-])# LT_CMD_MAX_LEN
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-m4_defun([_LT_HEADER_DLFCN],
-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
-])# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-m4_defun([_LT_TRY_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test yes = "$cross_compiling"; then :
-  [$4]
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-[#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisibility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}]
-_LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then
-    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) $1 ;;
-      x$lt_dlneed_uscore) $2 ;;
-      x$lt_dlunknown|x*) $3 ;;
-    esac
-  else :
-    # compilation failed
-    $3
-  fi
-fi
-rm -fr conftest*
-])# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-AC_DEFUN([LT_SYS_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test yes != "$enable_dlopen"; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen=load_add_on
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen=LoadLibrary
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen=dlopen
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-    # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-               [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[
-    lt_cv_dlopen=dyld
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-    ;;
-
-  tpf*)
-    # Don't try to run any link tests for TPF.  We know it's impossible
-    # because TPF is a cross-compiler, and we know how we open DSOs.
-    lt_cv_dlopen=dlopen
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=no
-    ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-         [lt_cv_dlopen=shl_load],
-      [AC_CHECK_LIB([dld], [shl_load],
-           [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld],
-       [AC_CHECK_FUNC([dlopen],
-             [lt_cv_dlopen=dlopen],
-         [AC_CHECK_LIB([dl], [dlopen],
-               [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],
-           [AC_CHECK_LIB([svld], [dlopen],
-                 [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld],
-             [AC_CHECK_LIB([dld], [dld_link],
-                   [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld])
-             ])
-           ])
-         ])
-       ])
-      ])
-    ;;
-  esac
-
-  if test no = "$lt_cv_dlopen"; then
-    enable_dlopen=no
-  else
-    enable_dlopen=yes
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS=$CPPFLAGS
-    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS=$LDFLAGS
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS=$LIBS
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-         lt_cv_dlopen_self, [dnl
-         _LT_TRY_DLOPEN_SELF(
-           lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-           lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test yes = "$lt_cv_dlopen_self"; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-         lt_cv_dlopen_self_static, [dnl
-         _LT_TRY_DLOPEN_SELF(
-           lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-           lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS=$save_CPPFLAGS
-    LDFLAGS=$save_LDFLAGS
-    LIBS=$save_LIBS
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
-        [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
-        [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
-        [Whether dlopen of statically linked programs is supported])
-])# LT_SYS_DLOPEN_SELF
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-m4_defun([_LT_COMPILER_C_O],
-[m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-     fi
-   fi
-   chmod u+w . 2>&AS_MESSAGE_LOG_FD
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-])
-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
-       [Does compiler simultaneously support -c and -o options?])
-])# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-m4_defun([_LT_COMPILER_FILE_LOCKS],
-[m4_require([_LT_ENABLE_LOCK])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_COMPILER_C_O([$1])
-
-hard_links=nottested
-if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then
-  # do not overwrite the value of need_locks provided by the user
-  AC_MSG_CHECKING([if we can lock with hard links])
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  AC_MSG_RESULT([$hard_links])
-  if test no = "$hard_links"; then
-    AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe])
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
-])# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-m4_defun([_LT_CHECK_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-_LT_DECL([], [objdir], [0],
-         [The name of the directory that contains temporary libtool files])dnl
-m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/",
-  [Define to the sub-directory where libtool stores uninstalled libraries.])
-])# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
-   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then
-
-  # We can hardcode non-existent directories.
-  if test no != "$_LT_TAGVAR(hardcode_direct, $1)" &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" &&
-     test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then
-    # Linking always hardcodes the temporary library directory.
-    _LT_TAGVAR(hardcode_action, $1)=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    _LT_TAGVAR(hardcode_action, $1)=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  _LT_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-
-if test relink = "$_LT_TAGVAR(hardcode_action, $1)" ||
-   test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test yes = "$shlibpath_overrides_runpath" ||
-     test no = "$enable_shared"; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-_LT_TAGDECL([], [hardcode_action], [0],
-    [How to hardcode a shared library path into an executable])
-])# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-m4_defun([_LT_CMD_STRIPLIB],
-[m4_require([_LT_DECL_EGREP])
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -z "$STRIP"; then
-  AC_MSG_RESULT([no])
-else
-  if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-    old_striplib="$STRIP --strip-debug"
-    striplib="$STRIP --strip-unneeded"
-    AC_MSG_RESULT([yes])
-  else
-    case $host_os in
-    darwin*)
-      # FIXME - insert some real tests, host_os isn't really good enough
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      AC_MSG_RESULT([yes])
-      ;;
-    freebsd*)
-      if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then
-        old_striplib="$STRIP --strip-debug"
-        striplib="$STRIP --strip-unneeded"
-        AC_MSG_RESULT([yes])
-      else
-        AC_MSG_RESULT([no])
-      fi
-      ;;
-    *)
-      AC_MSG_RESULT([no])
-      ;;
-    esac
-  fi
-fi
-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
-_LT_DECL([], [striplib], [1])
-])# _LT_CMD_STRIPLIB
-
-
-# _LT_PREPARE_MUNGE_PATH_LIST
-# ---------------------------
-# Make sure func_munge_path_list() is defined correctly.
-m4_defun([_LT_PREPARE_MUNGE_PATH_LIST],
-[[# func_munge_path_list VARIABLE PATH
-# -----------------------------------
-# VARIABLE is name of variable containing _space_ separated list of
-# directories to be munged by the contents of PATH, which is string
-# having a format:
-# "DIR[:DIR]:"
-#       string "DIR[ DIR]" will be prepended to VARIABLE
-# ":DIR[:DIR]"
-#       string "DIR[ DIR]" will be appended to VARIABLE
-# "DIRP[:DIRP]::[DIRA:]DIRA"
-#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
-#       "DIRA[ DIRA]" will be appended to VARIABLE
-# "DIR[:DIR]"
-#       VARIABLE will be replaced by "DIR[ DIR]"
-func_munge_path_list ()
-{
-    case x@S|@2 in
-    x)
-        ;;
-    *:)
-        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\"
-        ;;
-    x:*)
-        eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\"
-        ;;
-    *::*)
-        eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
-        eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\"
-        ;;
-    *)
-        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\"
-        ;;
-    esac
-}
-]])# _LT_PREPARE_PATH_LIST
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-m4_defun([_LT_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_OBJDUMP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-m4_if([$1],
-       [], [
-if test yes = "$GCC"; then
-  case $host_os in
-    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
-    *) lt_awk_arg='/^libraries:/' ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
-    *) lt_sed_strip_eq='s|=/|/|g' ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary...
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  # ...but if some path component already ends with the multilib dir we assume
-  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
-  case "$lt_multi_os_dir; $lt_search_path_spec " in
-  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
-    lt_multi_os_dir=
-    ;;
-  esac
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
-    elif test -n "$lt_multi_os_dir"; then
-      test -d "$lt_sys_path" && \
-       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS = " "; FS = "/|\n";} {
-  lt_foo = "";
-  lt_count = 0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo = "/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
-  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=.so
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-AC_ARG_VAR([LT_SYS_LIBRARY_PATH],
-[User-defined run-time library search path.])
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='$libname$release$shared_ext$major'
-  ;;
-
-aix[[4-9]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test ia64 = "$host_cpu"; then
-    # AIX 5 supports IA64
-    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line '#! .'.  This would cause the generated library to
-    # depend on '.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[[01]] | aix4.[[01]].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-          echo ' yes '
-          echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
-       :
-      else
-       can_build_shared=no
-      fi
-      ;;
-    esac
-    # Using Import Files as archive members, it is possible to support
-    # filename-based versioning of shared library archives on AIX. While
-    # this would work for both with and without runtime linking, it will
-    # prevent static linking of such archives. So we do filename-based
-    # shared library versioning with .so extension only, which is used
-    # when both runtime linking and shared linking is enabled.
-    # Unfortunately, runtime linking may impact performance, so we do
-    # not want this to be the default eventually. Also, we use the
-    # versioned .so libs for executables only if there is the -brtl
-    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
-    # To allow for filename-based versioning support, we need to create
-    # libNAME.so.V as an archive file, containing:
-    # *) an Import File, referring to the versioned filename of the
-    #    archive as well as the shared archive member, telling the
-    #    bitwidth (32 or 64) of that shared object, and providing the
-    #    list of exported symbols of that shared object, eventually
-    #    decorated with the 'weak' keyword
-    # *) the shared object with the F_LOADONLY flag set, to really avoid
-    #    it being seen by the linker.
-    # At run time we better use the real file rather than another symlink,
-    # but for link time we create the symlink libNAME.so -> libNAME.so.V
-
-    case $with_aix_soname,$aix_use_runtimelinking in
-    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    aix,yes) # traditional libtool
-      dynamic_linker='AIX unversionable lib.so'
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      ;;
-    aix,no) # traditional AIX only
-      dynamic_linker='AIX lib.a[(]lib.so.V[)]'
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      ;;
-    svr4,*) # full svr4 only
-      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,yes) # both, prefer svr4
-      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # unpreferred sharedlib libNAME.a needs extra handling
-      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
-      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,no) # both, prefer aix
-      dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]"
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
-      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
-      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
-      ;;
-    esac
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='$libname$shared_ext'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[[45]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
-m4_if([$1], [],[
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl* | *,icl*)
-    # Native MSVC or ICC
-    libname_spec='$name'
-    soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
-    library_names_spec='$libname.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec=$LIB
-      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC and ICC wrapper
-    library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$major$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-m4_if([$1], [],[
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[[23]].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      soname_spec='$libname$release$shared_ext$major'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    if test 32 = "$HPUX_IA64_MODE"; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
-    fi
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[[3-9]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-       if test yes = "$lt_cv_prog_gnu_ld"; then
-               version_type=linux # correct to gnu/linux during the next big refactor
-       else
-               version_type=irix
-       fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
-  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-linux*android*)
-  version_type=none # Android doesn't support versioned libraries.
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext'
-  soname_spec='$libname$release$shared_ext'
-  finish_cmds=
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  dynamic_linker='Android linker'
-  # Don't embed -rpath directories since the linker doesn't support them.
-  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
-    [lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-        LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-        [lt_cv_shlibpath_overrides_runpath=yes])])
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    ])
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Ideally, we could use ldconfig to report *all* directores which are
-  # searched for libraries, however this is still not possible.  Aside from not
-  # being certain /sbin/ldconfig is available, command
-  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
-  # even though it is searched at run-time.  Try to do the best guess by
-  # appending ld.so.conf contents (and includes) to the search path.
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd* | bitrig*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec=/usr/lib
-  need_lib_prefix=no
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-    need_version=no
-  else
-    need_version=yes
-  fi
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-os2*)
-  libname_spec='$name'
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
-  # OS/2 can only load a DLL with a base name of 8 characters or less.
-  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
-    v=$($ECHO $release$versuffix | tr -d .-);
-    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
-    $ECHO $n$v`$shared_ext'
-  library_names_spec='${libname}_dll.$libext'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=BEGINLIBPATH
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  postinstall_cmds='base_file=`basename \$file`~
-    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
-    dldir=$destdir/`dirname \$dlpath`~
-    test -d \$dldir || mkdir -p \$dldir~
-    $install_prog $dir/$dlname \$dldir/$dlname~
-    chmod a+x \$dldir/$dlname~
-    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-    fi'
-  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
-    dlpath=$dir/\$dldll~
-    $RM \$dlpath'
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test yes = "$with_gnu_ld"; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec; then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
-    soname_spec='$libname$shared_ext.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=sco
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test yes = "$with_gnu_ld"; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-       ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test no = "$dynamic_linker" && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test yes = "$GCC"; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
-  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
-fi
-
-if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
-  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
-fi
-
-# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
-configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
-
-# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
-func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
-
-# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
-configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
-
-_LT_DECL([], [variables_saved_for_relink], [1],
-    [Variables whose values should be saved in libtool wrapper scripts and
-    restored at link time])
-_LT_DECL([], [need_lib_prefix], [0],
-    [Do we need the "lib" prefix for modules?])
-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
-_LT_DECL([], [version_type], [0], [Library versioning type])
-_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
-_LT_DECL([], [shlibpath_overrides_runpath], [0],
-    [Is shlibpath searched before the hard-coded library search path?])
-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
-_LT_DECL([], [library_names_spec], [1],
-    [[List of archive names.  First name is the real one, the rest are links.
-    The last name is the one that the linker finds with -lNAME]])
-_LT_DECL([], [soname_spec], [1],
-    [[The coded name of the library, if different from the real name]])
-_LT_DECL([], [install_override_mode], [1],
-    [Permission mode override for installation of shared libraries])
-_LT_DECL([], [postinstall_cmds], [2],
-    [Command to use after installation of a shared archive])
-_LT_DECL([], [postuninstall_cmds], [2],
-    [Command to use after uninstallation of a shared archive])
-_LT_DECL([], [finish_cmds], [2],
-    [Commands used to finish a libtool library installation in a directory])
-_LT_DECL([], [finish_eval], [1],
-    [[As "finish_cmds", except a single script fragment to be evaled but
-    not shown]])
-_LT_DECL([], [hardcode_into_libs], [0],
-    [Whether we should hardcode library paths into libraries])
-_LT_DECL([], [sys_lib_search_path_spec], [2],
-    [Compile-time system search path for libraries])
-_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2],
-    [Detected run-time system search path for libraries])
-_LT_DECL([], [configure_time_lt_sys_library_path], [2],
-    [Explicit LT_SYS_LIBRARY_PATH set during ./configure time])
-])# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program that can recognize shared library
-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
-[m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD=$MAGIC_CMD
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="m4_if([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$1"; then
-      lt_cv_path_MAGIC_CMD=$ac_dir/"$1"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
-  done
-  IFS=$lt_save_ifs
-  MAGIC_CMD=$lt_save_MAGIC_CMD
-  ;;
-esac])
-MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
-        [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program that can recognize a shared library
-m4_defun([_LT_PATH_MAGIC],
-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-  else
-    MAGIC_CMD=:
-  fi
-fi
-])# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([LT_PATH_LD],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
-
-AC_ARG_WITH([gnu-ld],
-    [AS_HELP_STRING([--with-gnu-ld],
-       [assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test no = "$withval" || with_gnu_ld=yes],
-    [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test yes = "$GCC"; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return, which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD=$ac_prog
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test yes = "$with_gnu_ld"; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD=$ac_dir/$ac_prog
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-       test no != "$with_gnu_ld" && break
-       ;;
-      *)
-       test yes != "$with_gnu_ld" && break
-       ;;
-      esac
-    fi
-  done
-  IFS=$lt_save_ifs
-else
-  lt_cv_path_LD=$LD # Let the user override the test with a path.
-fi])
-LD=$lt_cv_path_LD
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])# LT_PATH_LD
-
-# Old names:
-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_LD], [])
-dnl AC_DEFUN([AC_PROG_LD], [])
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-m4_defun([_LT_PATH_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-m4_defun([_LT_CMD_RELOAD],
-[AC_CACHE_CHECK([for $LD option to reload object files],
-  lt_cv_ld_reload_flag,
-  [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test yes != "$GCC"; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test yes = "$GCC"; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_TAGDECL([], [reload_cmds], [2])dnl
-])# _LT_CMD_RELOAD
-
-
-# _LT_PATH_DD
-# -----------
-# find a working dd
-m4_defun([_LT_PATH_DD],
-[AC_CACHE_CHECK([for a working dd], [ac_cv_path_lt_DD],
-[printf 0123456789abcdef0123456789abcdef >conftest.i
-cat conftest.i conftest.i >conftest2.i
-: ${lt_DD:=$DD}
-AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd],
-[if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
-  cmp -s conftest.i conftest.out \
-  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
-fi])
-rm -f conftest.i conftest2.i conftest.out])
-])# _LT_PATH_DD
-
-
-# _LT_CMD_TRUNCATE
-# ----------------
-# find command to truncate a binary pipe
-m4_defun([_LT_CMD_TRUNCATE],
-[m4_require([_LT_PATH_DD])
-AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin],
-[printf 0123456789abcdef0123456789abcdef >conftest.i
-cat conftest.i conftest.i >conftest2.i
-lt_cv_truncate_bin=
-if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
-  cmp -s conftest.i conftest.out \
-  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
-fi
-rm -f conftest.i conftest2.i conftest.out
-test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"])
-_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1],
-  [Command to truncate a binary pipe])
-])# _LT_CMD_TRUNCATE
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_MAGIC_METHOD],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# 'unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# that responds to the $file_magic_cmd with a given extended regex.
-# If you have 'file' or equivalent on your system and you're not sure
-# whether 'pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[[45]]*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[[3-9]]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd* | bitrig*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-os2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-])
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-_LT_DECL([], [deplibs_check_method], [1],
-    [Method to check whether dependent libraries are shared objects])
-_LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method = "file_magic"])
-_LT_DECL([], [file_magic_glob], [1],
-    [How to find potential files when deplibs_check_method = "file_magic"])
-_LT_DECL([], [want_nocaseglob], [1],
-    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
-])# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-AC_DEFUN([LT_PATH_NM],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM=$NM
-else
-  lt_nm_to_check=${ac_tool_prefix}nm
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS=$lt_save_ifs
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm=$ac_dir/$lt_tmp_nm
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
-       # Check to see if the nm accepts a BSD-compat flag.
-       # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
-       #   nm: unknown option "B" ignored
-       # Tru64's nm complains that /dev/null is an invalid object file
-       # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
-       case $build_os in
-       mingw*) lt_bad_file=conftest.nm/nofile ;;
-       *) lt_bad_file=/dev/null ;;
-       esac
-       case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
-       *$lt_bad_file* | *'Invalid file or object type'*)
-         lt_cv_path_NM="$tmp_nm -B"
-         break 2
-         ;;
-       *)
-         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-         */dev/null*)
-           lt_cv_path_NM="$tmp_nm -p"
-           break 2
-           ;;
-         *)
-           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-           continue # so that we can try to find one that supports BSD flags
-           ;;
-         esac
-         ;;
-       esac
-      fi
-    done
-    IFS=$lt_save_ifs
-  done
-  : ${lt_cv_path_NM=no}
-fi])
-if test no != "$lt_cv_path_NM"; then
-  NM=$lt_cv_path_NM
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols -headers"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-  AC_SUBST([DUMPBIN])
-  if test : != "$DUMPBIN"; then
-    NM=$DUMPBIN
-  fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-  [lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
-  cat conftest.out >&AS_MESSAGE_LOG_FD
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*])
-])# LT_PATH_NM
-
-# Old names:
-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_NM], [])
-dnl AC_DEFUN([AC_PROG_NM], [])
-
-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-# --------------------------------
-# how to determine the name of the shared library
-# associated with a specific link library.
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-m4_require([_LT_DECL_DLLTOOL])
-AC_CACHE_CHECK([how to associate runtime and link libraries],
-lt_cv_sharedlib_from_linklib_cmd,
-[lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh;
-  # decide which one to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd=$ECHO
-  ;;
-esac
-])
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
-    [Command to associate shared and link libraries])
-])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-
-
-# _LT_PATH_MANIFEST_TOOL
-# ----------------------
-# locate the manifest tool
-m4_defun([_LT_PATH_MANIFEST_TOOL],
-[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
-  [lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*])
-if test yes != "$lt_cv_path_mainfest_tool"; then
-  MANIFEST_TOOL=:
-fi
-_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
-])# _LT_PATH_MANIFEST_TOOL
-
-
-# _LT_DLL_DEF_P([FILE])
-# ---------------------
-# True iff FILE is a Windows DLL '.def' file.
-# Keep in sync with func_dll_def_p in the libtool script
-AC_DEFUN([_LT_DLL_DEF_P],
-[dnl
-  test DEF = "`$SED -n dnl
-    -e '\''s/^[[        ]]*//'\'' dnl Strip leading whitespace
-    -e '\''/^\(;.*\)*$/d'\'' dnl      Delete empty lines and comments
-    -e '\''s/^\(EXPORTS\|LIBRARY\)\([[  ]].*\)*$/DEF/p'\'' dnl
-    -e q dnl                          Only consider the first "real" line
-    $1`" dnl
-])# _LT_DLL_DEF_P
-
-
-# LT_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw)
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM=-lm)
-  ;;
-esac
-AC_SUBST([LIBM])
-])# LT_LIB_M
-
-# Old name:
-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_CHECK_LIBM], [])
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-m4_defun([_LT_COMPILER_NO_RTTI],
-[m4_require([_LT_TAG_COMPILER])dnl
-
-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test yes = "$GCC"; then
-  case $cc_basename in
-  nvcc*)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
-  esac
-
-  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-    lt_cv_prog_compiler_rtti_exceptions,
-    [-fno-rtti -fno-exceptions], [],
-    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
-       [Compiler flag to turn off builtin functions])
-])# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[[BCDT]]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[[ABCDGISTW]]'
-  ;;
-hpux*)
-  if test ia64 = "$host_cpu"; then
-    symcode='[[ABCDEGRST]]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[[BCDEGRST]]'
-  ;;
-osf*)
-  symcode='[[BCDEGQRST]]'
-  ;;
-solaris*)
-  symcode='[[BDRT]]'
-  ;;
-sco3.2v5*)
-  symcode='[[DT]]'
-  ;;
-sysv4.2uw2*)
-  symcode='[[DT]]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[[ABDT]]'
-  ;;
-sysv4)
-  symcode='[[DFNSTU]]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  # Gets list of data symbols to import.
-  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
-  # Adjust the below global symbol transforms to fixup imported variables.
-  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
-  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
-  lt_c_name_lib_hook="\
-  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
-  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
-else
-  # Disable hooks by default.
-  lt_cv_sys_global_symbol_to_import=
-  lt_cdecl_hook=
-  lt_c_name_hook=
-  lt_c_name_lib_hook=
-fi
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n"\
-$lt_cdecl_hook\
-" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
-$lt_c_name_hook\
-" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
-
-# Transform an extracted symbol line into symbol name with lib prefix and
-# symbol address.
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
-$lt_c_name_lib_hook\
-" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
-" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function,
-    # D for any global variable and I for any imported variable.
-    # Also find C++ and __fastcall symbols from MSVC++ or ICC,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK ['"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
-"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
-"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
-"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
-"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx]"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[    ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-       mv -f "$nlist"T "$nlist"
-      else
-       rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-         cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
-/* DATA imports from DLLs on WIN32 can't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT@&t@_DLSYM_CONST
-#elif defined __osf__
-/* This system does not cope well with relocations in const data.  */
-# define LT@&t@_DLSYM_CONST
-#else
-# define LT@&t@_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-         # Now generate the symbol file.
-         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-         cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT@&t@_DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[[]] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-         $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-         cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-         # Now try linking the two files.
-         mv conftest.$ac_objext conftstm.$ac_objext
-         lt_globsym_save_LIBS=$LIBS
-         lt_globsym_save_CFLAGS=$CFLAGS
-         LIBS=conftstm.$ac_objext
-         CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-         if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
-           pipe_works=yes
-         fi
-         LIBS=$lt_globsym_save_LIBS
-         CFLAGS=$lt_globsym_save_CFLAGS
-       else
-         echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-       fi
-      else
-       echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test yes = "$pipe_works"; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  AC_MSG_RESULT(failed)
-else
-  AC_MSG_RESULT(ok)
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
-    [Take the output of nm and produce a listing of raw symbols and C names])
-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-    [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1],
-    [Transform the output of nm into a list of symbols to manually relocate])
-_LT_DECL([global_symbol_to_c_name_address],
-    [lt_cv_sys_global_symbol_to_c_name_address], [1],
-    [Transform the output of nm in a C name address pair])
-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
-    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
-    [Transform the output of nm in a C name address pair when lib prefix is needed])
-_LT_DECL([nm_interface], [lt_cv_nm_interface], [1],
-    [The name lister interface])
-_LT_DECL([], [nm_file_list_spec], [1],
-    [Specify filename containing input files for $NM])
-]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-m4_defun([_LT_COMPILER_PIC],
-[m4_require([_LT_TAG_COMPILER])dnl
-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_TAGVAR(lt_prog_compiler_static, $1)=
-
-m4_if([$1], [CXX], [
-  # C++ specific cases for pic, static, wl, etc.
-  if test yes = "$GXX"; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test ia64 = "$host_cpu"; then
-       # AIX 5 now supports IA64 processor
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the '-m68020' flag to GCC prevents building anything better,
-            # like '-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      case $host_os in
-      os2*)
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
-       ;;
-      esac
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-       ;;
-      *)
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-       ;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[[4-9]]*)
-       # All AIX code is PIC.
-       if test ia64 = "$host_cpu"; then
-         # AIX 5 now supports IA64 processor
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-       else
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-       fi
-       ;;
-      chorus*)
-       case $cc_basename in
-       cxch68*)
-         # Green Hills C++ Compiler
-         # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-         ;;
-       esac
-       ;;
-      mingw* | cygwin* | os2* | pw32* | cegcc*)
-       # This hack is so that the source file can tell whether it is being
-       # built for inclusion in a dll (and should export symbols for example).
-       m4_if([$1], [GCJ], [],
-         [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-       ;;
-      dgux*)
-       case $cc_basename in
-         ec++*)
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           ;;
-         ghcx*)
-           # Green Hills C++ Compiler
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      freebsd* | dragonfly*)
-       # FreeBSD uses GNU C++
-       ;;
-      hpux9* | hpux10* | hpux11*)
-       case $cc_basename in
-         CC*)
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
-           if test ia64 != "$host_cpu"; then
-             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-           fi
-           ;;
-         aCC*)
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
-           case $host_cpu in
-           hppa*64*|ia64*)
-             # +Z the default
-             ;;
-           *)
-             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-             ;;
-           esac
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      interix*)
-       # This is c89, which is MS Visual C++ (no shared libs)
-       # Anyone wants to do a port?
-       ;;
-      irix5* | irix6* | nonstopux*)
-       case $cc_basename in
-         CC*)
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-           # CC pic flag -KPIC is the default.
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-       case $cc_basename in
-         KCC*)
-           # KAI C++ Compiler
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-           ;;
-         ecpc* )
-           # old Intel C++ for x86_64, which still supported -KPIC.
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-           ;;
-         icpc* )
-           # Intel C++, used to be incompatible with GCC.
-           # ICC 10 doesn't accept -KPIC any more.
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-           ;;
-         pgCC* | pgcpp*)
-           # Portland Group C++ compiler
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-           ;;
-         cxx*)
-           # Compaq C++
-           # Make sure the PIC flag is empty.  It appears that all Alpha
-           # Linux and Compaq Tru64 Unix objects are PIC.
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-           ;;
-         xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
-           # IBM XL 8.0, 9.0 on PPC and BlueGene
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-           ;;
-         *)
-           case `$CC -V 2>&1 | sed 5q` in
-           *Sun\ C*)
-             # Sun C++ 5.9
-             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-             _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-             _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-             ;;
-           esac
-           ;;
-       esac
-       ;;
-      lynxos*)
-       ;;
-      m88k*)
-       ;;
-      mvs*)
-       case $cc_basename in
-         cxx*)
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      netbsd*)
-       ;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-       case $cc_basename in
-         KCC*)
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-           ;;
-         RCC*)
-           # Rational C++ 2.4.1
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-           ;;
-         cxx*)
-           # Digital/Compaq C++
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           # Make sure the PIC flag is empty.  It appears that all Alpha
-           # Linux and Compaq Tru64 Unix objects are PIC.
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      psos*)
-       ;;
-      solaris*)
-       case $cc_basename in
-         CC* | sunCC*)
-           # Sun C++ 4.2, 5.x and Centerline C++
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-           ;;
-         gcx*)
-           # Green Hills C++ Compiler
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      sunos4*)
-       case $cc_basename in
-         CC*)
-           # Sun C++ 4.x
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-           ;;
-         lcc*)
-           # Lucid
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-       case $cc_basename in
-         CC*)
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-           ;;
-       esac
-       ;;
-      tandem*)
-       case $cc_basename in
-         NCC*)
-           # NonStop-UX NCC 3.20
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      vxworks*)
-       ;;
-      *)
-       _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-       ;;
-    esac
-  fi
-],
-[
-  if test yes = "$GCC"; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test ia64 = "$host_cpu"; then
-       # AIX 5 now supports IA64 processor
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the '-m68020' flag to GCC prevents building anything better,
-            # like '-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      case $host_os in
-      os2*)
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
-       ;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-       # +Z the default
-       ;;
-      *)
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-       ;;
-      esac
-      ;;
-
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test ia64 = "$host_cpu"; then
-       # AIX 5 now supports IA64 processor
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      else
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      case $cc_basename in
-      nagfor*)
-        # NAG Fortran compiler
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      esac
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      m4_if([$1], [GCJ], [],
-       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      case $host_os in
-      os2*)
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
-       ;;
-      esac
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       # +Z the default
-       ;;
-      *)
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-       ;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-      case $cc_basename in
-      # old Intel for x86_64, which still supported -KPIC.
-      ecc*)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
-       ;;
-      nagfor*)
-       # NAG Fortran compiler
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-       ;;
-      tcc*)
-       # Fabrice Bellard et al's Tiny C Compiler
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-       ;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-       # which looks to be a dead project)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      ccc*)
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-        # All Alpha code is PIC.
-        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-       ;;
-      *)
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
-         # Sun Fortran 8.3 passes all unrecognized flags to the linker
-         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-         _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
-         ;;
-       *Sun\ F* | *Sun*Fortran*)
-         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-         ;;
-       *Sun\ C*)
-         # Sun C 5.9
-         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-         ;;
-        *Intel*\ [[CF]]*Compiler*)
-         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-         ;;
-       *Portland\ Group*)
-         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-         ;;
-       esac
-       ;;
-      esac
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # All OSF/1 code is PIC.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    rdos*)
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-      *)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    unicos*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-    esac
-  fi
-])
-case $host_os in
-  # For platforms that do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-    ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
-    ;;
-esac
-
-AC_CACHE_CHECK([for $compiler option to produce PIC],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
-    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
-    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
-    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-     esac],
-    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
-       [Additional compiler flags for building library objects])
-
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-       [How to pass a linker flag through the compiler])
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
-  $lt_tmp_static_flag,
-  [],
-  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
-       [Compiler flag to prevent dynamic linking])
-])# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-m4_defun([_LT_LINKER_SHLIBS],
-[AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-m4_if([$1], [CXX], [
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  case $host_os in
-  aix[[4-9]]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
-    # Without the "-l" option, or with the "-B" option, AIX nm treats
-    # weak defined symbols like other global defined symbols, whereas
-    # GNU nm marks them as "W".
-    # While the 'weak' keyword is ignored in the Export File, we need
-    # it in the Import File for the 'aix-soname' feature, so we have
-    # to replace the "-B" option with "-P" for AIX nm.
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
-    else
-      _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl* | icl*)
-      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-      ;;
-    *)
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-      ;;
-    esac
-    ;;
-  *)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
-], [
-  runpath_var=
-  _LT_TAGVAR(allow_undefined_flag, $1)=
-  _LT_TAGVAR(always_export_symbols, $1)=no
-  _LT_TAGVAR(archive_cmds, $1)=
-  _LT_TAGVAR(archive_expsym_cmds, $1)=
-  _LT_TAGVAR(compiler_needs_object, $1)=no
-  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(hardcode_automatic, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-  _LT_TAGVAR(hardcode_minus_L, $1)=no
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(inherit_rpath, $1)=no
-  _LT_TAGVAR(link_all_deplibs, $1)=unknown
-  _LT_TAGVAR(module_cmds, $1)=
-  _LT_TAGVAR(module_expsym_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-  _LT_TAGVAR(thread_safe_flag_spec, $1)=
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  _LT_TAGVAR(include_expsyms, $1)=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ' (' and ')$', so one must not match beginning or
-  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
-  # as well as any symbol that contains 'd'.
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++ or Intel C++ Compiler.
-    if test yes != "$GCC"; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
-    with_gnu_ld=yes
-    ;;
-  openbsd* | bitrig*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  _LT_TAGVAR(ld_shlibs, $1)=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test yes = "$with_gnu_ld"; then
-    case $host_os in
-      aix*)
-       # The AIX port of GNU ld has always aspired to compatibility
-       # with the native linker.  However, as the warning in the GNU ld
-       # block says, versions before 2.19.5* couldn't really create working
-       # shared libraries, regardless of the interface used.
-       case `$LD -v 2>&1` in
-         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-         *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
-         *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
-         *)
-           lt_use_gnu_ld_interface=yes
-           ;;
-       esac
-       ;;
-      *)
-       lt_use_gnu_ld_interface=yes
-       ;;
-    esac
-  fi
-
-  if test yes = "$lt_use_gnu_ld_interface"; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='$wl'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
-    else
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[[3-9]]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test ia64 != "$host_cpu"; then
-       _LT_TAGVAR(ld_shlibs, $1)=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-       # support --undefined.  This deserves some investigation.  FIXME
-       _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-      else
-       _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-      # as there is no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=no
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-       # If the export-symbols file already is a .def file, use it as
-       # is; otherwise, prepend EXPORTS...
-       _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
-          cp $export_symbols $output_objdir/$soname.def;
-        else
-          echo EXPORTS > $output_objdir/$soname.def;
-          cat $export_symbols >> $output_objdir/$soname.def;
-        fi~
-        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-       _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    haiku*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    os2*)
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      shrext_cmds=.dll
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       prefix_cmds="$SED"~
-       if test EXPORTS = "`$SED 1q $export_symbols`"; then
-         prefix_cmds="$prefix_cmds -e 1d";
-       fi~
-       prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-       cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='@'
-      ;;
-
-    interix[[3-9]]*)
-      _LT_TAGVAR(hardcode_direct, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test linux-dietlibc = "$host_os"; then
-       case $cc_basename in
-         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
-       esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-        && test no = "$tmp_diet"
-      then
-       tmp_addflag=' $pic_flag'
-       tmp_sharedflag='-shared'
-       case $cc_basename,$host_cpu in
-        pgcc*)                         # Portland Group C compiler
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         tmp_addflag=' $pic_flag'
-         ;;
-       pgf77* | pgf90* | pgf95* | pgfortran*)
-                                       # Portland Group f77 and f90 compilers
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         tmp_addflag=' $pic_flag -Mnomain' ;;
-       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
-         tmp_addflag=' -i_dynamic' ;;
-       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
-         tmp_addflag=' -i_dynamic -nofor_main' ;;
-       ifc* | ifort*)                  # Intel Fortran compiler
-         tmp_addflag=' -nofor_main' ;;
-       lf95*)                          # Lahey Fortran 8.1
-         _LT_TAGVAR(whole_archive_flag_spec, $1)=
-         tmp_sharedflag='--shared' ;;
-        nagfor*)                        # NAGFOR 5.3
-          tmp_sharedflag='-Wl,-shared' ;;
-       xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-         tmp_sharedflag='-qmkshrobj'
-         tmp_addflag= ;;
-       nvcc*)  # Cuda Compiler Driver 2.2
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         _LT_TAGVAR(compiler_needs_object, $1)=yes
-         ;;
-       esac
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ C*)                       # Sun C 5.9
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         _LT_TAGVAR(compiler_needs_object, $1)=yes
-         tmp_sharedflag='-G' ;;
-       *Sun\ F*)                       # Sun Fortran 8.3
-         tmp_sharedflag='-G' ;;
-       esac
-       _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-
-        if test yes = "$supports_anon_versioning"; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-            echo "local: *; };" >> $output_objdir/$libname.ver~
-            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
-        fi
-
-       case $cc_basename in
-       tcc*)
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic'
-         ;;
-       xlf* | bgf* | bgxlf* | mpixlf*)
-         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-         _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-         if test yes = "$supports_anon_versioning"; then
-           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-              echo "local: *; };" >> $output_objdir/$libname.ver~
-              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-         fi
-         ;;
-       esac
-      else
-        _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-       wlarc=
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-       _LT_TAGVAR(ld_shlibs, $1)=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
-       _LT_TAGVAR(ld_shlibs, $1)=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-       ;;
-       *)
-         # For security reasons, it is highly recommended that you always
-         # use absolute paths for naming shared libraries, and exclude the
-         # DT_RUNPATH tag from executables and libraries.  But doing so
-         # requires that you compile everything twice, which is a pain.
-         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-         else
-           _LT_TAGVAR(ld_shlibs, $1)=no
-         fi
-       ;;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-
-    if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then
-      runpath_var=
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
-       # Neither direct hardcoding nor static linking is supported with a
-       # broken collect2.
-       _LT_TAGVAR(hardcode_direct, $1)=unsupported
-      fi
-      ;;
-
-    aix[[4-9]]*)
-      if test ia64 = "$host_cpu"; then
-       # On IA64, the linker does run time linking by default, so we don't
-       # have to do anything special.
-       aix_use_runtimelinking=no
-       exp_sym_flag='-Bexport'
-       no_entry_flag=
-      else
-       # If we're using GNU nm, then we don't want the "-C" option.
-       # -C means demangle to GNU nm, but means don't demangle to AIX nm.
-       # Without the "-l" option, or with the "-B" option, AIX nm treats
-       # weak defined symbols like other global defined symbols, whereas
-       # GNU nm marks them as "W".
-       # While the 'weak' keyword is ignored in the Export File, we need
-       # it in the Import File for the 'aix-soname' feature, so we have
-       # to replace the "-B" option with "-P" for AIX nm.
-       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
-       else
-         _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
-       fi
-       aix_use_runtimelinking=no
-
-       # Test if we are trying to use run time linking or normal
-       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-       # have runtime linking enabled, and use it for executables.
-       # For shared libraries, we enable/disable runtime linking
-       # depending on the kind of the shared library created -
-       # when "with_aix_soname,aix_use_runtimelinking" is:
-       # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
-       # "aix,yes"  lib.so          shared, rtl:yes, for executables
-       #            lib.a           static archive
-       # "both,no"  lib.so.V(shr.o) shared, rtl:yes
-       #            lib.a(lib.so.V) shared, rtl:no,  for executables
-       # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
-       #            lib.a(lib.so.V) shared, rtl:no
-       # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
-       #            lib.a           static archive
-       case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-         for ld_flag in $LDFLAGS; do
-         if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
-           aix_use_runtimelinking=yes
-           break
-         fi
-         done
-         if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
-           # With aix-soname=svr4, we create the lib.so.V shared archives only,
-           # so we don't have lib.a shared libs to link our executables.
-           # We have to force runtime linking in this case.
-           aix_use_runtimelinking=yes
-           LDFLAGS="$LDFLAGS -Wl,-brtl"
-         fi
-         ;;
-       esac
-
-       exp_sym_flag='-bexport'
-       no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      _LT_TAGVAR(archive_cmds, $1)=''
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
-      case $with_aix_soname,$aix_use_runtimelinking in
-      aix,*) ;; # traditional, no import file
-      svr4,* | *,yes) # use import file
-       # The Import File defines what to hardcode.
-       _LT_TAGVAR(hardcode_direct, $1)=no
-       _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-       ;;
-      esac
-
-      if test yes = "$GCC"; then
-       case $host_os in aix4.[[012]]|aix4.[[012]].*)
-       # We only want to do this on AIX 4.2 and lower, the check
-       # below for broken collect2 doesn't work under 4.3+
-         collect2name=`$CC -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-         # We have reworked collect2
-         :
-         else
-         # We have old collect2
-         _LT_TAGVAR(hardcode_direct, $1)=unsupported
-         # It fails to find uninstalled libraries when the uninstalled
-         # path is not listed in the libpath.  Setting hardcode_minus_L
-         # to unsupported forces relinking
-         _LT_TAGVAR(hardcode_minus_L, $1)=yes
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-         _LT_TAGVAR(hardcode_libdir_separator, $1)=
-         fi
-         ;;
-       esac
-       shared_flag='-shared'
-       if test yes = "$aix_use_runtimelinking"; then
-         shared_flag="$shared_flag "'$wl-G'
-       fi
-       # Need to ensure runtime linking is disabled for the traditional
-       # shared library, or the linker may eventually find shared libraries
-       # /with/ Import File - we do not want to mix them.
-       shared_flag_aix='-shared'
-       shared_flag_svr4='-shared $wl-G'
-      else
-       # not using gcc
-       if test ia64 = "$host_cpu"; then
-       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-       # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-       else
-         if test yes = "$aix_use_runtimelinking"; then
-           shared_flag='$wl-G'
-         else
-           shared_flag='$wl-bM:SRE'
-         fi
-         shared_flag_aix='$wl-bM:SRE'
-         shared_flag_svr4='$wl-G'
-       fi
-      fi
-
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
-       # Warning - without using the other runtime loading flags (-brtl),
-       # -berok will link without error, but may produce a broken library.
-       _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        _LT_SYS_MODULE_PATH_AIX([$1])
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
-      else
-       if test ia64 = "$host_cpu"; then
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
-         _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
-       else
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        _LT_SYS_MODULE_PATH_AIX([$1])
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
-         # Warning - without using the other run time loading flags,
-         # -berok will link without error, but may produce a broken library.
-         _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
-         _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
-         if test yes = "$with_gnu_ld"; then
-           # We only use this code for GNU lds that support --whole-archive.
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
-         else
-           # Exported symbols can be pulled into shared objects from archives
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-         fi
-         _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
-         # -brtl affects multiple linker settings, -berok does not and is overridden later
-         compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
-         if test svr4 != "$with_aix_soname"; then
-           # This is similar to how AIX traditionally builds its shared libraries.
-           _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
-         fi
-         if test aix != "$with_aix_soname"; then
-           _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
-         else
-           # used by -dlpreopen to get the symbols
-           _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
-         fi
-         _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
-       fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[[45]]*)
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++ or Intel C++ Compiler.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl* | icl*)
-       # Native MSVC or ICC
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-       _LT_TAGVAR(always_export_symbols, $1)=yes
-       _LT_TAGVAR(file_list_spec, $1)='@'
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=.dll
-       # FIXME: Setting linknames here is a bad hack.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
-       _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
-            cp "$export_symbols" "$output_objdir/$soname.def";
-            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
-          else
-            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
-          fi~
-          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-          linknames='
-       # The linker will not automatically build a static lib if we build a DLL.
-       # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-       _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-       _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-       # Don't use ranlib
-       _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-       _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-          lt_tool_outputfile="@TOOL_OUTPUT@"~
-          case $lt_outputfile in
-            *.exe|*.EXE) ;;
-            *)
-              lt_outputfile=$lt_outputfile.exe
-              lt_tool_outputfile=$lt_tool_outputfile.exe
-              ;;
-          esac~
-          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
-            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-            $RM "$lt_outputfile.manifest";
-          fi'
-       ;;
-      *)
-       # Assume MSVC and ICC wrapper
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=.dll
-       # FIXME: Setting linknames here is a bad hack.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-       # The linker will automatically build a .lib file if we build a DLL.
-       _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-       # FIXME: Should let the user specify the lib program.
-       _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-       ;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      _LT_DARWIN_LINKER_FEATURES($1)
-      ;;
-
-    dgux*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    hpux9*)
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
-      ;;
-
-    hpux10*)
-      if test yes,no = "$GCC,$with_gnu_ld"; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test no = "$with_gnu_ld"; then
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
-       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-       _LT_TAGVAR(hardcode_direct, $1)=yes
-       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
-       # hardcode_minus_L: Not really in the search PATH,
-       # but as the default location of the library.
-       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test yes,no = "$GCC,$with_gnu_ld"; then
-       case $host_cpu in
-       hppa*64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       esac
-      else
-       case $host_cpu in
-       hppa*64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-       m4_if($1, [], [
-         # Older versions of the 11.00 compiler do not understand -b yet
-         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-         _LT_LINKER_OPTION([if $CC understands -b],
-           _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
-           [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
-           [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
-         [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
-         ;;
-       esac
-      fi
-      if test no = "$with_gnu_ld"; then
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
-       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-       case $host_cpu in
-       hppa*64*|ia64*)
-         _LT_TAGVAR(hardcode_direct, $1)=no
-         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-         ;;
-       *)
-         _LT_TAGVAR(hardcode_direct, $1)=yes
-         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
-
-         # hardcode_minus_L: Not really in the search PATH,
-         # but as the default location of the library.
-         _LT_TAGVAR(hardcode_minus_L, $1)=yes
-         ;;
-       esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-       # Try to use the -exported_symbol ld option, if it does not
-       # work, assume that -exports_file does not work either and
-       # implicitly export all symbols.
-       # This should be the same for all languages, so no per-tag cache variable.
-       AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
-         [lt_cv_irix_exported_symbol],
-         [save_LDFLAGS=$LDFLAGS
-          LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
-          AC_LINK_IFELSE(
-            [AC_LANG_SOURCE(
-               [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
-                             [C++], [[int foo (void) { return 0; }]],
-                             [Fortran 77], [[
-      subroutine foo
-      end]],
-                             [Fortran], [[
-      subroutine foo
-      end]])])],
-             [lt_cv_irix_exported_symbol=yes],
-             [lt_cv_irix_exported_symbol=no])
-           LDFLAGS=$save_LDFLAGS])
-       if test yes = "$lt_cv_irix_exported_symbol"; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
-       fi
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(inherit_rpath, $1)=yes
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    linux*)
-      case $cc_basename in
-      tcc*)
-       # Fabrice Bellard et al's Tiny C Compiler
-       _LT_TAGVAR(ld_shlibs, $1)=yes
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       ;;
-      esac
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd* | bitrig*)
-      if test -f /usr/libexec/ld.so; then
-       _LT_TAGVAR(hardcode_direct, $1)=yes
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
-       else
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-       fi
-      else
-       _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    os2*)
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      shrext_cmds=.dll
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       prefix_cmds="$SED"~
-       if test EXPORTS = "`$SED 1q $export_symbols`"; then
-         prefix_cmds="$prefix_cmds -e 1d";
-       fi~
-       prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-       cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='@'
-      ;;
-
-    osf3*)
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-      else
-       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    osf4* | osf5*)     # as osf3* with the addition of -msym flag
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-      else
-       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
-
-       # Both c and cxx compiler support -rpath directly
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test yes = "$GCC"; then
-       wlarc='$wl'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-       case `$CC -V 2>&1` in
-       *"Compilers 5.0"*)
-         wlarc=''
-         _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-         ;;
-       *)
-         wlarc='$wl'
-         _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-         ;;
-       esac
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      case $host_os in
-      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *)
-       # The compiler driver will combine and reorder linker options,
-       # but understands '-z linker_flag'.  GCC discards it without '$wl',
-       # but is careful enough not to reorder.
-       # Supported since Solaris 2.6 (maybe 2.5.1?)
-       if test yes = "$GCC"; then
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
-       else
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-       fi
-       ;;
-      esac
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    sunos4*)
-      if test sequent = "$host_vendor"; then
-       # Use $CC to link under sequent, because it throws in some extra .o
-       # files that make .init and .fini sections work.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-       sni)
-         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-       ;;
-       siemens)
-         ## LD is ld it makes a PLAMLIB
-         ## CC just makes a GrossModule.
-         _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-         _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-         _LT_TAGVAR(hardcode_direct, $1)=no
-        ;;
-       motorola)
-         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-       ;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4.3*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       runpath_var=LD_RUN_PATH
-       hardcode_runpath_var=yes
-       _LT_TAGVAR(ld_shlibs, $1)=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We CANNOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    esac
-
-    if test sni = "$host_vendor"; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym'
-       ;;
-      esac
-    fi
-  fi
-])
-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
-
-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
-
-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
-_LT_DECL([], [extract_expsyms_cmds], [2],
-    [The commands to extract the exported symbol list from a shared archive])
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
-  # Assume -lc should be added
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-
-  if test yes,yes = "$GCC,$enable_shared"; then
-    case $_LT_TAGVAR(archive_cmds, $1) in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
-       [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
-       [$RM conftest*
-       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-       if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-         soname=conftest
-         lib=conftest
-         libobjs=conftest.$ac_objext
-         deplibs=
-         wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-         pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-         compiler_flags=-v
-         linker_flags=-v
-         verstring=
-         output_objdir=.
-         libname=conftest
-         lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-         _LT_TAGVAR(allow_undefined_flag, $1)=
-         if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-         then
-           lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-         else
-           lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-         fi
-         _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-       else
-         cat conftest.err 1>&5
-       fi
-       $RM conftest*
-       ])
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
-    [Whether or not to add -lc for building shared libraries])
-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
-    [enable_shared_with_static_runtimes], [0],
-    [Whether or not to disallow shared libs when runtime libs are static])
-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
-    [Compiler flag to allow reflexive dlopens])
-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
-    [Compiler flag to generate shared objects directly from archives])
-_LT_TAGDECL([], [compiler_needs_object], [1],
-    [Whether the compiler copes with passing no objects directly])
-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
-    [Create an old-style archive from a shared archive])
-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
-    [Create a temporary old-style archive to link instead of a shared archive])
-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
-_LT_TAGDECL([], [archive_expsym_cmds], [2])
-_LT_TAGDECL([], [module_cmds], [2],
-    [Commands used to build a loadable module if different from building
-    a shared archive.])
-_LT_TAGDECL([], [module_expsym_cmds], [2])
-_LT_TAGDECL([], [with_gnu_ld], [1],
-    [Whether we are building with GNU ld or not])
-_LT_TAGDECL([], [allow_undefined_flag], [1],
-    [Flag that allows shared libraries with undefined symbols to be built])
-_LT_TAGDECL([], [no_undefined_flag], [1],
-    [Flag that enforces no undefined symbols])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
-    [Flag to hardcode $libdir into a binary during linking.
-    This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
-    [Whether we need a single "-rpath" flag with a separated argument])
-_LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
-    DIR into the resulting binary])
-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
-    DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting $shlibpath_var if the
-    library is relocated])
-_LT_TAGDECL([], [hardcode_minus_L], [0],
-    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
-    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_automatic], [0],
-    [Set to "yes" if building a shared library automatically hardcodes DIR
-    into the library and all subsequent libraries and executables linked
-    against it])
-_LT_TAGDECL([], [inherit_rpath], [0],
-    [Set to yes if linker adds runtime paths of dependent libraries
-    to runtime path list])
-_LT_TAGDECL([], [link_all_deplibs], [0],
-    [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [always_export_symbols], [0],
-    [Set to "yes" if exported symbols are required])
-_LT_TAGDECL([], [export_symbols_cmds], [2],
-    [The commands to list exported symbols])
-_LT_TAGDECL([], [exclude_expsyms], [1],
-    [Symbols that should not be listed in the preloaded symbols])
-_LT_TAGDECL([], [include_expsyms], [1],
-    [Symbols that must always be exported])
-_LT_TAGDECL([], [prelink_cmds], [2],
-    [Commands necessary for linking programs (against libraries) with templates])
-_LT_TAGDECL([], [postlink_cmds], [2],
-    [Commands necessary for finishing linking programs])
-_LT_TAGDECL([], [file_list_spec], [1],
-    [Specify filename containing input files])
-dnl FIXME: Not yet implemented
-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
-dnl    [Compiler flag to generate thread safe objects])
-])# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to 'libtool'.
-m4_defun([_LT_LANG_C_CONFIG],
-[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC=$CC
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_TAG_COMPILER
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_SYS_DYNAMIC_LINKER($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-  LT_SYS_DLOPEN_SELF
-  _LT_CMD_STRIPLIB
-
-  # Report what library types will actually be built
-  AC_MSG_CHECKING([if libtool supports shared libraries])
-  AC_MSG_RESULT([$can_build_shared])
-
-  AC_MSG_CHECKING([whether to build shared libraries])
-  test no = "$can_build_shared" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test yes = "$enable_shared" && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[[4-9]]*)
-    if test ia64 != "$host_cpu"; then
-      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
-      yes,aix,yes) ;;                  # shared object as lib.so file only
-      yes,svr4,*) ;;                   # shared object as lib.so archive member only
-      yes,*) enable_static=no ;;       # shared object in lib.a archive as well
-      esac
-    fi
-    ;;
-  esac
-  AC_MSG_RESULT([$enable_shared])
-
-  AC_MSG_CHECKING([whether to build static libraries])
-  # Make sure either enable_shared or enable_static is yes.
-  test yes = "$enable_shared" || enable_static=yes
-  AC_MSG_RESULT([$enable_static])
-
-  _LT_CONFIG($1)
-fi
-AC_LANG_POP
-CC=$lt_save_CC
-])# _LT_LANG_C_CONFIG
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to 'libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-if test -n "$CXX" && ( test no != "$CXX" &&
-    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
-    (test g++ != "$CXX"))); then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-
-AC_LANG_PUSH(C++)
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(compiler_needs_object, $1)=no
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test yes != "$_lt_caught_CXX_error"; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_CFLAGS=$CFLAGS
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  CFLAGS=$CXXFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test yes = "$GXX"; then
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-    else
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-    fi
-
-    if test yes = "$GXX"; then
-      # Set up default GNU C++ configuration
-
-      LT_PATH_LD
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test yes = "$with_gnu_ld"; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='$wl'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-         $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
-        else
-          _LT_TAGVAR(whole_archive_flag_spec, $1)=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-    _LT_TAGVAR(ld_shlibs, $1)=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-      aix[[4-9]]*)
-        if test ia64 = "$host_cpu"; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # have runtime linking enabled, and use it for executables.
-          # For shared libraries, we enable/disable runtime linking
-          # depending on the kind of the shared library created -
-          # when "with_aix_soname,aix_use_runtimelinking" is:
-          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
-          # "aix,yes"  lib.so          shared, rtl:yes, for executables
-          #            lib.a           static archive
-          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
-          #            lib.a(lib.so.V) shared, rtl:no,  for executables
-          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
-          #            lib.a(lib.so.V) shared, rtl:no
-          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
-          #            lib.a           static archive
-          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-           for ld_flag in $LDFLAGS; do
-             case $ld_flag in
-             *-brtl*)
-               aix_use_runtimelinking=yes
-               break
-               ;;
-             esac
-           done
-           if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
-             # With aix-soname=svr4, we create the lib.so.V shared archives only,
-             # so we don't have lib.a shared libs to link our executables.
-             # We have to force runtime linking in this case.
-             aix_use_runtimelinking=yes
-             LDFLAGS="$LDFLAGS -Wl,-brtl"
-           fi
-           ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        _LT_TAGVAR(archive_cmds, $1)=''
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
-        case $with_aix_soname,$aix_use_runtimelinking in
-        aix,*) ;;      # no import file
-        svr4,* | *,yes) # use import file
-          # The Import File defines what to hardcode.
-          _LT_TAGVAR(hardcode_direct, $1)=no
-          _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-          ;;
-        esac
-
-        if test yes = "$GXX"; then
-          case $host_os in aix4.[[012]]|aix4.[[012]].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-         collect2name=`$CC -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-            strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-           # We have reworked collect2
-           :
-         else
-           # We have old collect2
-           _LT_TAGVAR(hardcode_direct, $1)=unsupported
-           # It fails to find uninstalled libraries when the uninstalled
-           # path is not listed in the libpath.  Setting hardcode_minus_L
-           # to unsupported forces relinking
-           _LT_TAGVAR(hardcode_minus_L, $1)=yes
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-           _LT_TAGVAR(hardcode_libdir_separator, $1)=
-         fi
-          esac
-          shared_flag='-shared'
-         if test yes = "$aix_use_runtimelinking"; then
-           shared_flag=$shared_flag' $wl-G'
-         fi
-         # Need to ensure runtime linking is disabled for the traditional
-         # shared library, or the linker may eventually find shared libraries
-         # /with/ Import File - we do not want to mix them.
-         shared_flag_aix='-shared'
-         shared_flag_svr4='-shared $wl-G'
-        else
-          # not using gcc
-          if test ia64 = "$host_cpu"; then
-         # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-         # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-          else
-           if test yes = "$aix_use_runtimelinking"; then
-             shared_flag='$wl-G'
-           else
-             shared_flag='$wl-bM:SRE'
-           fi
-           shared_flag_aix='$wl-bM:SRE'
-           shared_flag_svr4='$wl-G'
-          fi
-        fi
-
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-       # export.
-        _LT_TAGVAR(always_export_symbols, $1)=yes
-       if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          # The "-G" linker flag allows undefined symbols.
-          _LT_TAGVAR(no_undefined_flag, $1)='-bernotok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          _LT_SYS_MODULE_PATH_AIX([$1])
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
-
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
-        else
-          if test ia64 = "$host_cpu"; then
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
-           _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
-          else
-           # Determine the default libpath from the value encoded in an
-           # empty executable.
-           _LT_SYS_MODULE_PATH_AIX([$1])
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
-           # Warning - without using the other run time loading flags,
-           # -berok will link without error, but may produce a broken library.
-           _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
-           _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
-           if test yes = "$with_gnu_ld"; then
-             # We only use this code for GNU lds that support --whole-archive.
-             _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
-           else
-             # Exported symbols can be pulled into shared objects from archives
-             _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-           fi
-           _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
-           # -brtl affects multiple linker settings, -berok does not and is overridden later
-           compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
-           if test svr4 != "$with_aix_soname"; then
-             # This is similar to how AIX traditionally builds its shared
-             # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
-             _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
-           fi
-           if test aix != "$with_aix_soname"; then
-             _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
-           else
-             # used by -dlpreopen to get the symbols
-             _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
-           fi
-           _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
-          fi
-        fi
-        ;;
-
-      beos*)
-       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-         # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-         # support --undefined.  This deserves some investigation.  FIXME
-         _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       else
-         _LT_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-         # FIXME: insert proper C++ library support
-         _LT_TAGVAR(ld_shlibs, $1)=no
-         ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-       case $GXX,$cc_basename in
-       ,cl* | no,cl* | ,icl* | no,icl*)
-         # Native MSVC or ICC
-         # hardcode_libdir_flag_spec is actually meaningless, as there is
-         # no search path for DLLs.
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-         _LT_TAGVAR(always_export_symbols, $1)=yes
-         _LT_TAGVAR(file_list_spec, $1)='@'
-         # Tell ltmain to make .lib files, not .a files.
-         libext=lib
-         # Tell ltmain to make .dll files, not .so files.
-         shrext_cmds=.dll
-         # FIXME: Setting linknames here is a bad hack.
-         _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
-         _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
-              cp "$export_symbols" "$output_objdir/$soname.def";
-              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
-            else
-              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
-            fi~
-            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-            linknames='
-         # The linker will not automatically build a static lib if we build a DLL.
-         # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-         _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-         # Don't use ranlib
-         _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-         _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-            lt_tool_outputfile="@TOOL_OUTPUT@"~
-            case $lt_outputfile in
-              *.exe|*.EXE) ;;
-              *)
-                lt_outputfile=$lt_outputfile.exe
-                lt_tool_outputfile=$lt_tool_outputfile.exe
-                ;;
-            esac~
-            func_to_tool_file "$lt_outputfile"~
-            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
-              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-              $RM "$lt_outputfile.manifest";
-            fi'
-         ;;
-       *)
-         # g++
-         # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-         # as there is no search path for DLLs.
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
-         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-         _LT_TAGVAR(always_export_symbols, $1)=no
-         _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-         if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-           # If the export-symbols file already is a .def file, use it as
-           # is; otherwise, prepend EXPORTS...
-           _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
-              cp $export_symbols $output_objdir/$soname.def;
-            else
-              echo EXPORTS > $output_objdir/$soname.def;
-              cat $export_symbols >> $output_objdir/$soname.def;
-            fi~
-            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-         else
-           _LT_TAGVAR(ld_shlibs, $1)=no
-         fi
-         ;;
-       esac
-       ;;
-      darwin* | rhapsody*)
-        _LT_DARWIN_LINKER_FEATURES($1)
-       ;;
-
-      os2*)
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-       shrext_cmds=.dll
-       _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-         $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-         $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-         $ECHO EXPORTS >> $output_objdir/$libname.def~
-         emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-         $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-         emximp -o $lib $output_objdir/$libname.def'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-         $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-         $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-         $ECHO EXPORTS >> $output_objdir/$libname.def~
-         prefix_cmds="$SED"~
-         if test EXPORTS = "`$SED 1q $export_symbols`"; then
-           prefix_cmds="$prefix_cmds -e 1d";
-         fi~
-         prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-         cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-         $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-         emximp -o $lib $output_objdir/$libname.def'
-       _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-       _LT_TAGVAR(file_list_spec, $1)='@'
-       ;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          ghcx*)
-           # Green Hills C++ Compiler
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-        esac
-        ;;
-
-      freebsd2.*)
-        # C++ shared libraries reported to be fairly broken before
-       # switch to ELF
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      freebsd-elf*)
-        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-        ;;
-
-      haiku*)
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        ;;
-
-      hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-                                            # but as the default
-                                            # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            _LT_TAGVAR(ld_shlibs, $1)=no
-            ;;
-          aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-            ;;
-          *)
-            if test yes = "$GXX"; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              _LT_TAGVAR(ld_shlibs, $1)=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test no = "$with_gnu_ld"; then
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
-         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-             _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            _LT_TAGVAR(hardcode_direct, $1)=no
-            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-            ;;
-          *)
-            _LT_TAGVAR(hardcode_direct, $1)=yes
-            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-                                                # but as the default
-                                                # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          aCC*)
-           case $host_cpu in
-             hppa*64*)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             ia64*)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             *)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-           esac
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-           ;;
-          *)
-           if test yes = "$GXX"; then
-             if test no = "$with_gnu_ld"; then
-               case $host_cpu in
-                 hppa*64*)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 ia64*)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 *)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-               esac
-             fi
-           else
-             # FIXME: insert proper C++ library support
-             _LT_TAGVAR(ld_shlibs, $1)=no
-           fi
-           ;;
-        esac
-        ;;
-
-      interix[[3-9]]*)
-       _LT_TAGVAR(hardcode_direct, $1)=no
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
-       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-       # Instead, shared libraries are loaded at an image base (0x10000000 by
-       # default) and relocated if they conflict, which is a slow very memory
-       # consuming and fragmenting process.  To avoid this, we pick a random,
-       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       ;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-           # SGI C++
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-
-           # Archives containing C++ object files must be created using
-           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-           ;;
-          *)
-           if test yes = "$GXX"; then
-             if test no = "$with_gnu_ld"; then
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-             else
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
-             fi
-           fi
-           _LT_TAGVAR(link_all_deplibs, $1)=yes
-           ;;
-        esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(inherit_rpath, $1)=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-        case $cc_basename in
-          KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-           # KCC will only create a shared library if the output file
-           # ends with ".so" (or ".sl" for HP-UX), so rename the library
-           # to its proper name (with version) after linking.
-           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
-
-           # Archives containing C++ object files must be created using
-           # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-           ;;
-         icpc* | ecpc* )
-           # Intel C++
-           with_gnu_ld=yes
-           # version 8.0 and above of icpc choke on multiply defined symbols
-           # if we add $predep_objects and $postdep_objects, however 7.1 and
-           # earlier do not add the objects themselves.
-           case `$CC -V 2>&1` in
-             *"Version 7."*)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-               ;;
-             *)  # Version 8.0 or newer
-               tmp_idyn=
-               case $host_cpu in
-                 ia64*) tmp_idyn=' -i_dynamic';;
-               esac
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-               ;;
-           esac
-           _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
-           ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-           case `$CC -V` in
-           *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
-             _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
-             _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-                $RANLIB $oldlib'
-             _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-             _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-             ;;
-           *) # Version 6 and above use weak symbols
-             _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-             ;;
-           esac
-
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-            ;;
-         cxx*)
-           # Compaq C++
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
-
-           runpath_var=LD_RUN_PATH
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
-           ;;
-         xl* | mpixl* | bgxl*)
-           # IBM XL 8.0 on PPC, with GNU ld
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
-           _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-           if test yes = "$supports_anon_versioning"; then
-             _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-                echo "local: *; };" >> $output_objdir/$libname.ver~
-                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
-           fi
-           ;;
-         *)
-           case `$CC -V 2>&1 | sed 5q` in
-           *Sun\ C*)
-             # Sun C++ 5.9
-             _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-             _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
-             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-             _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-             _LT_TAGVAR(compiler_needs_object, $1)=yes
-
-             # Not sure whether something based on
-             # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-             # would be better.
-             output_verbose_link_cmd='func_echo_all'
-
-             # Archives containing C++ object files must be created using
-             # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-             # necessary to make sure instantiated templates are included
-             # in the archive.
-             _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-             ;;
-           esac
-           ;;
-       esac
-       ;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-       _LT_TAGVAR(ld_shlibs, $1)=no
-       ;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-       ;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-         *)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-       esac
-       ;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-         _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-         wlarc=
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-         _LT_TAGVAR(hardcode_direct, $1)=yes
-         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       fi
-       # Workaround some broken pre-1.5 toolchains
-       output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-       ;;
-
-      *nto* | *qnx*)
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-       ;;
-
-      openbsd* | bitrig*)
-       if test -f /usr/libexec/ld.so; then
-         _LT_TAGVAR(hardcode_direct, $1)=yes
-         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
-           _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
-         fi
-         output_verbose_link_cmd=func_echo_all
-       else
-         _LT_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-           # KCC will only create a shared library if the output file
-           # ends with ".so" (or ".sl" for HP-UX), so rename the library
-           # to its proper name (with version) after linking.
-           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-           # Archives containing C++ object files must be created using
-           # the KAI C++ compiler.
-           case $host in
-             osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
-             *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
-           esac
-           ;;
-          RCC*)
-           # Rational C++ 2.4.1
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          cxx*)
-           case $host in
-             osf3*)
-               _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-               ;;
-             *)
-               _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-                  echo "-hidden">> $lib.exp~
-                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
-                  $RM $lib.exp'
-               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-               ;;
-           esac
-
-           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-           ;;
-         *)
-           if test yes,no = "$GXX,$with_gnu_ld"; then
-             _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
-             case $host in
-               osf3*)
-                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-                 ;;
-               *)
-                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-                 ;;
-             esac
-
-             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-             _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-             # Commands to make compiler produce verbose output that lists
-             # what "hidden" libraries, object files and flags are used when
-             # linking a shared library.
-             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-           else
-             # FIXME: insert proper C++ library support
-             _LT_TAGVAR(ld_shlibs, $1)=no
-           fi
-           ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-           # Sun C++ 4.x
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          lcc*)
-           # Lucid
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-           # Sun C++ 4.2, 5.x and Centerline C++
-            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
-           _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-           _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-           _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-           case $host_os in
-             solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-             *)
-               # The compiler driver will combine and reorder linker options,
-               # but understands '-z linker_flag'.
-               # Supported since Solaris 2.6 (maybe 2.5.1?)
-               _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-               ;;
-           esac
-           _LT_TAGVAR(link_all_deplibs, $1)=yes
-
-           output_verbose_link_cmd='func_echo_all'
-
-           # Archives containing C++ object files must be created using
-           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-           ;;
-          gcx*)
-           # Green Hills C++ Compiler
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
-
-           # The C++ compiler must be used to create the archive.
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-           ;;
-          *)
-           # GNU C++ compiler with Solaris linker
-           if test yes,no = "$GXX,$with_gnu_ld"; then
-             _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs'
-             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-             else
-               # g++ 2.7 appears to require '-G' NOT '-shared' on this
-               # platform.
-               _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-             fi
-
-             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
-             case $host_os in
-               solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-               *)
-                 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
-                 ;;
-             esac
-           fi
-           ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-       # Note: We CANNOT use -z defs as we might desire, because we do not
-       # link with -lc, and that would cause any symbols used from libc to
-       # always be unresolved, which means just about no library would
-       # ever link correctly.  If we're not using GNU ld we use -z text
-       # though, which does catch some bad symbols but isn't as heavy-handed
-       # as -z defs.
-       _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
-       _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
-       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
-       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-       _LT_TAGVAR(link_all_deplibs, $1)=yes
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
-       runpath_var='LD_RUN_PATH'
-
-       case $cc_basename in
-          CC*)
-           _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
-              '"$_LT_TAGVAR(old_archive_cmds, $1)"
-           _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
-              '"$_LT_TAGVAR(reload_cmds, $1)"
-           ;;
-         *)
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           ;;
-       esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-           # NonStop-UX NCC 3.20
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-    esac
-
-    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
-
-    _LT_TAGVAR(GCC, $1)=$GXX
-    _LT_TAGVAR(LD, $1)=$LD
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test yes != "$_lt_caught_CXX_error"
-
-AC_LANG_POP
-])# _LT_LANG_CXX_CONFIG
-
-
-# _LT_FUNC_STRIPNAME_CNF
-# ----------------------
-# func_stripname_cnf prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-#
-# This function is identical to the (non-XSI) version of func_stripname,
-# except this one can be used by m4 code that may be executed by configure,
-# rather than the libtool script.
-m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
-AC_REQUIRE([_LT_DECL_SED])
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
-func_stripname_cnf ()
-{
-  case @S|@2 in
-  .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;;
-  *)  func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;;
-  esac
-} # func_stripname_cnf
-])# _LT_FUNC_STRIPNAME_CNF
-
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
-# Dependencies to place before and after the object being linked:
-_LT_TAGVAR(predep_objects, $1)=
-_LT_TAGVAR(postdep_objects, $1)=
-_LT_TAGVAR(predeps, $1)=
-_LT_TAGVAR(postdeps, $1)=
-_LT_TAGVAR(compiler_lib_search_path, $1)=
-
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library.  It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
-int a;
-void foo (void) { a = 0; }
-_LT_EOF
-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer*4 a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
-public class foo {
-  private int a;
-  public void bar (void) {
-    a = 0;
-  }
-};
-_LT_EOF
-], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
-package foo
-func foo() {
-}
-_LT_EOF
-])
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case $prev$p in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test x-L = "$p" ||
-          test x-R = "$p"; then
-        prev=$p
-        continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test no = "$pre_test_object_deps_done"; then
-        case $prev in
-        -L | -R)
-          # Internal compiler library paths should come after those
-          # provided the user.  The postdeps already come after the
-          # user supplied libs so there is no need to process them.
-          if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-            _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p
-          else
-            _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p"
-          fi
-          ;;
-        # The "-l" case would never come before the object being
-        # linked, so don't bother handling this case.
-        esac
-       else
-        if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-          _LT_TAGVAR(postdeps, $1)=$prev$p
-        else
-          _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p"
-        fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-        pre_test_object_deps_done=yes
-        continue
-       fi
-
-       if test no = "$pre_test_object_deps_done"; then
-        if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-          _LT_TAGVAR(predep_objects, $1)=$p
-        else
-          _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
-        fi
-       else
-        if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-          _LT_TAGVAR(postdep_objects, $1)=$p
-        else
-          _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
-        fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-m4_if([$1], [CXX],
-[case $host_os in
-interix[[3-9]]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  _LT_TAGVAR(predep_objects,$1)=
-  _LT_TAGVAR(postdep_objects,$1)=
-  _LT_TAGVAR(postdeps,$1)=
-  ;;
-esac
-])
-
-case " $_LT_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'`
-fi
-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
-    [The directories searched by this compiler when creating a shared library])
-_LT_TAGDECL([], [predep_objects], [1],
-    [Dependencies to place before and after the objects being linked to
-    create a shared library])
-_LT_TAGDECL([], [postdep_objects], [1])
-_LT_TAGDECL([], [predeps], [1])
-_LT_TAGDECL([], [postdeps], [1])
-_LT_TAGDECL([], [compiler_lib_search_path], [1],
-    [The library search path used internally by the compiler when linking
-    a shared library])
-])# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to 'libtool'.
-m4_defun([_LT_LANG_F77_CONFIG],
-[AC_LANG_PUSH(Fortran 77)
-if test -z "$F77" || test no = "$F77"; then
-  _lt_disable_F77=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test yes != "$_lt_disable_F77"; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${F77-"f77"}
-  CFLAGS=$FFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-  GCC=$G77
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test no = "$can_build_shared" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test yes = "$enable_shared" && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-       if test ia64 != "$host_cpu"; then
-         case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
-         yes,aix,yes) ;;               # shared object as lib.so file only
-         yes,svr4,*) ;;                # shared object as lib.so archive member only
-         yes,*) enable_static=no ;;    # shared object in lib.a archive as well
-         esac
-       fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test yes = "$enable_shared" || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)=$G77
-    _LT_TAGVAR(LD, $1)=$LD
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test yes != "$_lt_disable_F77"
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to 'libtool'.
-m4_defun([_LT_LANG_FC_CONFIG],
-[AC_LANG_PUSH(Fortran)
-
-if test -z "$FC" || test no = "$FC"; then
-  _lt_disable_FC=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test yes != "$_lt_disable_FC"; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${FC-"f95"}
-  CFLAGS=$FCFLAGS
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test no = "$can_build_shared" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test yes = "$enable_shared" && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-       if test ia64 != "$host_cpu"; then
-         case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
-         yes,aix,yes) ;;               # shared object as lib.so file only
-         yes,svr4,*) ;;                # shared object as lib.so archive member only
-         yes,*) enable_static=no ;;    # shared object in lib.a archive as well
-         esac
-       fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test yes = "$enable_shared" || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu
-    _LT_TAGVAR(LD, $1)=$LD
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test yes != "$_lt_disable_FC"
-
-AC_LANG_POP
-])# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to 'libtool'.
-m4_defun([_LT_LANG_GCJ_CONFIG],
-[AC_REQUIRE([LT_PROG_GCJ])dnl
-AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-CFLAGS=$GCJFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)=$LD
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_GO_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Go compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to 'libtool'.
-m4_defun([_LT_LANG_GO_CONFIG],
-[AC_REQUIRE([LT_PROG_GO])dnl
-AC_LANG_SAVE
-
-# Source file extension for Go test sources.
-ac_ext=go
-
-# Object file extension for compiled Go test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="package main; func main() { }"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='package main; func main() { }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GOC-"gccgo"}
-CFLAGS=$GOFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)=$LD
-_LT_CC_BASENAME([$compiler])
-
-# Go did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GO_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to 'libtool'.
-m4_defun([_LT_LANG_RC_CONFIG],
-[AC_REQUIRE([LT_PROG_RC])dnl
-AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code=$lt_simple_compile_test_code
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-CFLAGS=
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-if test -n "$compiler"; then
-  :
-  _LT_CONFIG($1)
-fi
-
-GCC=$lt_save_GCC
-AC_LANG_RESTORE
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-AC_DEFUN([LT_PROG_GCJ],
-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-    [AC_CHECK_TOOL(GCJ, gcj,)
-      test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])[]dnl
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
-
-
-# LT_PROG_GO
-# ----------
-AC_DEFUN([LT_PROG_GO],
-[AC_CHECK_TOOL(GOC, gccgo,)
-])
-
-
-# LT_PROG_RC
-# ----------
-AC_DEFUN([LT_PROG_RC],
-[AC_CHECK_TOOL(RC, windres,)
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_RC], [])
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_EGREP],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_REQUIRE([AC_PROG_FGREP])dnl
-test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
-AC_SUBST([GREP])
-])
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_OBJDUMP],
-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
-AC_SUBST([OBJDUMP])
-])
-
-# _LT_DECL_DLLTOOL
-# ----------------
-# Ensure DLLTOOL variable is set.
-m4_defun([_LT_DECL_DLLTOOL],
-[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
-AC_SUBST([DLLTOOL])
-])
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-m4_defun([_LT_DECL_SED],
-[AC_PROG_SED
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
-    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
-])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-############################################################
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
-    done
-  done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f "$lt_ac_sed" && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test 10 -lt "$lt_ac_count" && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test "$lt_ac_count" -gt "$lt_ac_max"; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
-  done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_SED], [])
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-m4_defun([_LT_CHECK_SHELL_FEATURES],
-[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
-])# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PATH_CONVERSION_FUNCTIONS
-# -----------------------------
-# Determine what file name conversion functions should be used by
-# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
-# for certain cross-compile configurations and native mingw.
-m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_MSG_CHECKING([how to convert $build file names to $host format])
-AC_CACHE_VAL(lt_cv_to_host_file_cmd,
-[case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-])
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
-_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
-         [0], [convert $build file names to $host format])dnl
-
-AC_MSG_CHECKING([how to convert $build file names to toolchain format])
-AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
-[#assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-])
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
-_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
-         [0], [convert $build files to toolchain format])dnl
-])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/polly/lib/External/isl/m4/ltoptions.m4 b/polly/lib/External/isl/m4/ltoptions.m4
deleted file mode 100644 (file)
index 07421d9..0000000
+++ /dev/null
@@ -1,437 +0,0 @@
-# Helper functions for option handling.                    -*- Autoconf -*-
-#
-#   Copyright (C) 2004-2005, 2007-2009, 2011-2018 Free Software
-#   Foundation, Inc.
-#   Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 8 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
-        _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option '$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-           [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
-                     [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME.  If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-    [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
-  dnl
-  dnl Simply set some default values (i.e off) if boolean options were not
-  dnl specified:
-  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
-  ])
-  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
-  ])
-  dnl
-  dnl If no reference was made to various pairs of opposing options, then
-  dnl we run the default mode handler for the pair.  For example, if neither
-  dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
-  dnl archives by default:
-  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
-  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-                  [_LT_ENABLE_FAST_INSTALL])
-  _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
-                  [_LT_WITH_AIX_SONAME([aix])])
-  ])
-])# _LT_SET_OPTIONS
-
-
-## --------------------------------- ##
-## Macros to handle LT_INIT options. ##
-## --------------------------------- ##
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the 'dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-  AC_CHECK_TOOL(AS, as, false)
-  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-  AC_CHECK_TOOL(OBJDUMP, objdump, false)
-  ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [1], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the 'win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the 'shared' and
-# 'disable-shared' LT_INIT options.
-# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
-    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-       [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_shared=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac],
-    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
-    _LT_DECL([build_libtool_libs], [enable_shared], [0],
-       [Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the 'static' and
-# 'disable-static' LT_INIT options.
-# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
-    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-       [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_static=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac],
-    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
-    _LT_DECL([build_old_libs], [enable_static], [0],
-       [Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the 'fast-install'
-# and 'disable-fast-install' LT_INIT options.
-# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
-    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_fast_install=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac],
-    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
-        [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the 'fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the 'disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_AIX_SONAME([DEFAULT])
-# ----------------------------------
-# implement the --with-aix-soname flag, and support the `aix-soname=aix'
-# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
-# is either `aix', `both' or `svr4'.  If omitted, it defaults to `aix'.
-m4_define([_LT_WITH_AIX_SONAME],
-[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
-shared_archive_member_spec=
-case $host,$enable_shared in
-power*-*-aix[[5-9]]*,yes)
-  AC_MSG_CHECKING([which variant of shared library versioning to provide])
-  AC_ARG_WITH([aix-soname],
-    [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
-      [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
-    [case $withval in
-    aix|svr4|both)
-      ;;
-    *)
-      AC_MSG_ERROR([Unknown argument to --with-aix-soname])
-      ;;
-    esac
-    lt_cv_with_aix_soname=$with_aix_soname],
-    [AC_CACHE_VAL([lt_cv_with_aix_soname],
-      [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
-    with_aix_soname=$lt_cv_with_aix_soname])
-  AC_MSG_RESULT([$with_aix_soname])
-  if test aix != "$with_aix_soname"; then
-    # For the AIX way of multilib, we name the shared archive member
-    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
-    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
-    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
-    # the AIX toolchain works better with OBJECT_MODE set (default 32).
-    if test 64 = "${OBJECT_MODE-32}"; then
-      shared_archive_member_spec=shr_64
-    else
-      shared_archive_member_spec=shr
-    fi
-  fi
-  ;;
-*)
-  with_aix_soname=aix
-  ;;
-esac
-
-_LT_DECL([], [shared_archive_member_spec], [0],
-    [Shared archive member basename, for filename based shared library versioning on AIX])dnl
-])# _LT_WITH_AIX_SONAME
-
-LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
-LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
-LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
-# LT_INIT options.
-# MODE is either 'yes' or 'no'.  If omitted, it defaults to 'both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
-       [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for lt_pkg in $withval; do
-       IFS=$lt_save_ifs
-       if test "X$lt_pkg" = "X$lt_p"; then
-         pic_mode=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac],
-    [pic_mode=m4_default([$1], [default])])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the 'pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-## ----------------- ##
-## LTDL_INIT Options ##
-## ----------------- ##
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
-                [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
-                [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
-                [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
-                [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
-                [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/polly/lib/External/isl/m4/ltsugar.m4 b/polly/lib/External/isl/m4/ltsugar.m4
deleted file mode 100644 (file)
index 3985c56..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
-#
-# Copyright (C) 2004-2005, 2007-2008, 2011-2018 Free Software
-# Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
-       [$#], [2], [[$2]],
-       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
-       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59, which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
-       [$#], 1, [],
-       [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
-          m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
-       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
-            [m4_foreach([_Lt_suffix],
-               ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
-       [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
-         [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
-                [lt_append([$1], [$2], [$3])$4],
-                [$5])],
-         [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
-       m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
-    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
-       [$5],
-    [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
-  [lt_join(m4_quote(m4_default([$4], [[, ]])),
-           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
-                     [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
diff --git a/polly/lib/External/isl/m4/ltversion.m4 b/polly/lib/External/isl/m4/ltversion.m4
deleted file mode 100644 (file)
index 7f9a3ad..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# ltversion.m4 -- version numbers                      -*- Autoconf -*-
-#
-#   Copyright (C) 2004, 2011-2018 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# @configure_input@
-
-# serial 4221 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.4.6.42-b88ce-dirty])
-m4_define([LT_PACKAGE_REVISION], [2.4.6.42])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.6.42-b88ce-dirty'
-macro_revision='2.4.6.42'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
diff --git a/polly/lib/External/isl/m4/lt~obsolete.m4 b/polly/lib/External/isl/m4/lt~obsolete.m4
deleted file mode 100644 (file)
index 54ea1c4..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
-#
-#   Copyright (C) 2004-2005, 2007, 2009, 2011-2018 Free Software
-#   Foundation, Inc.
-#   Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 5 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else.  This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION],  [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP],             [AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],        [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT],         [AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],    [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN],           [AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR],             [AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL],    [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN],           [AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER],       [AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK],               [AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],        [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],    [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],    [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR],         [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR],            [AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],  [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC],             [AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU],            [AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG],    [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD],   [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP],          [AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED],            [AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME],           [AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE],  [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE],    [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL],          [AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP],          [AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN],                [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],     [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG],          [AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL],   [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX],           [AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77],           [AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ],           [AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],  [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG],      [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG],    [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG],    [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],    [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG],     [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG],         [AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C],       [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
-m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],        [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
-m4_ifndef([_LT_AC_PROG_CXXCPP],                [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
-m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],        [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
-m4_ifndef([_LT_PROG_ECHO_BACKSLASH],   [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_PROG_F77],              [AC_DEFUN([_LT_PROG_F77])])
-m4_ifndef([_LT_PROG_FC],               [AC_DEFUN([_LT_PROG_FC])])
-m4_ifndef([_LT_PROG_CXX],              [AC_DEFUN([_LT_PROG_CXX])])
diff --git a/polly/lib/External/isl/missing b/polly/lib/External/isl/missing
deleted file mode 100755 (executable)
index 8d0eaad..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-#! /bin/sh
-# Common wrapper for a few potentially missing GNU programs.
-
-scriptversion=2018-03-07.03; # UTC
-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
-# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try '$0 --help' for more information"
-  exit 1
-fi
-
-case $1 in
-
-  --is-lightweight)
-    # Used by our autoconf macros to check whether the available missing
-    # script is modern enough.
-    exit 0
-    ;;
-
-  --run)
-    # Back-compat with the calling convention used by older automake.
-    shift
-    ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
-to PROGRAM being missing or too old.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-
-Supported PROGRAM values:
-  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
-  bison     yacc      flex         lex       help2man
-
-Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
-'g' are ignored when checking the name.
-
-Send bug reports to <bug-automake@gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: unknown '$1' option"
-    echo 1>&2 "Try '$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# Run the given program, remember its exit status.
-"$@"; st=$?
-
-# If it succeeded, we are done.
-test $st -eq 0 && exit 0
-
-# Also exit now if we it failed (or wasn't found), and '--version' was
-# passed; such an option is passed most likely to detect whether the
-# program is present and works.
-case $2 in --version|--help) exit $st;; esac
-
-# Exit code 63 means version mismatch.  This often happens when the user
-# tries to use an ancient version of a tool on a file that requires a
-# minimum version.
-if test $st -eq 63; then
-  msg="probably too old"
-elif test $st -eq 127; then
-  # Program was missing.
-  msg="missing on your system"
-else
-  # Program was found and executed, but failed.  Give up.
-  exit $st
-fi
-
-perl_URL=https://www.perl.org/
-flex_URL=https://github.com/westes/flex
-gnu_software_URL=https://www.gnu.org/software
-
-program_details ()
-{
-  case $1 in
-    aclocal|automake)
-      echo "The '$1' program is part of the GNU Automake package:"
-      echo "<$gnu_software_URL/automake>"
-      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/autoconf>"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-    autoconf|autom4te|autoheader)
-      echo "The '$1' program is part of the GNU Autoconf package:"
-      echo "<$gnu_software_URL/autoconf/>"
-      echo "It also requires GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-  esac
-}
-
-give_advice ()
-{
-  # Normalize program name to check for.
-  normalized_program=`echo "$1" | sed '
-    s/^gnu-//; t
-    s/^gnu//; t
-    s/^g//; t'`
-
-  printf '%s\n' "'$1' is $msg."
-
-  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
-  case $normalized_program in
-    autoconf*)
-      echo "You should only need it if you modified 'configure.ac',"
-      echo "or m4 files included by it."
-      program_details 'autoconf'
-      ;;
-    autoheader*)
-      echo "You should only need it if you modified 'acconfig.h' or"
-      echo "$configure_deps."
-      program_details 'autoheader'
-      ;;
-    automake*)
-      echo "You should only need it if you modified 'Makefile.am' or"
-      echo "$configure_deps."
-      program_details 'automake'
-      ;;
-    aclocal*)
-      echo "You should only need it if you modified 'acinclude.m4' or"
-      echo "$configure_deps."
-      program_details 'aclocal'
-      ;;
-   autom4te*)
-      echo "You might have modified some maintainer files that require"
-      echo "the 'autom4te' program to be rebuilt."
-      program_details 'autom4te'
-      ;;
-    bison*|yacc*)
-      echo "You should only need it if you modified a '.y' file."
-      echo "You may want to install the GNU Bison package:"
-      echo "<$gnu_software_URL/bison/>"
-      ;;
-    lex*|flex*)
-      echo "You should only need it if you modified a '.l' file."
-      echo "You may want to install the Fast Lexical Analyzer package:"
-      echo "<$flex_URL>"
-      ;;
-    help2man*)
-      echo "You should only need it if you modified a dependency" \
-           "of a man page."
-      echo "You may want to install the GNU Help2man package:"
-      echo "<$gnu_software_URL/help2man/>"
-    ;;
-    makeinfo*)
-      echo "You should only need it if you modified a '.texi' file, or"
-      echo "any other file indirectly affecting the aspect of the manual."
-      echo "You might want to install the Texinfo package:"
-      echo "<$gnu_software_URL/texinfo/>"
-      echo "The spurious makeinfo call might also be the consequence of"
-      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
-      echo "want to install GNU make:"
-      echo "<$gnu_software_URL/make/>"
-      ;;
-    *)
-      echo "You might have modified some files without having the proper"
-      echo "tools for further handling them.  Check the 'README' file, it"
-      echo "often tells you about the needed prerequisites for installing"
-      echo "this package.  You may also peek at any GNU archive site, in"
-      echo "case some other package contains this missing '$1' program."
-      ;;
-  esac
-}
-
-give_advice "$1" | sed -e '1s/^/WARNING: /' \
-                       -e '2,$s/^/         /' >&2
-
-# Propagate the correct exit status (expected to be 127 for a program
-# not found, 63 for a program that failed due to version mismatch).
-exit $st
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/isl/py-compile b/polly/lib/External/isl/py-compile
deleted file mode 100755 (executable)
index e56d98d..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/bin/sh
-# py-compile - Compile a Python program
-
-scriptversion=2020-02-19.23; # UTC
-
-# Copyright (C) 2000-2020 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-if [ -z "$PYTHON" ]; then
-  PYTHON=python
-fi
-
-me=py-compile
-
-usage_error ()
-{
-  echo "$me: $*" >&2
-  echo "Try '$me --help' for more information." >&2
-  exit 1
-}
-
-basedir=
-destdir=
-while test $# -ne 0; do
-  case "$1" in
-    --basedir)
-      if test $# -lt 2; then
-        usage_error "option '--basedir' requires an argument"
-      else
-        basedir=$2
-      fi
-      shift
-      ;;
-    --destdir)
-      if test $# -lt 2; then
-        usage_error "option '--destdir' requires an argument"
-      else
-        destdir=$2
-      fi
-      shift
-      ;;
-    -h|--help)
-      cat <<\EOF
-Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] FILES..."
-
-Byte compile some python scripts FILES.  Use --destdir to specify any
-leading directory path to the FILES that you don't want to include in the
-byte compiled file.  Specify --basedir for any additional path information you
-do want to be shown in the byte compiled file.
-
-Example:
-  py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-      exit $?
-      ;;
-    -v|--version)
-      echo "$me $scriptversion"
-      exit $?
-      ;;
-    --)
-      shift
-      break
-      ;;
-    -*)
-      usage_error "unrecognized option '$1'"
-      ;;
-    *)
-      break
-      ;;
-  esac
-  shift
-done
-
-files=$*
-if test -z "$files"; then
-    usage_error "no files given"
-fi
-
-# if basedir was given, then it should be prepended to filenames before
-# byte compilation.
-if [ -z "$basedir" ]; then
-    pathtrans="path = file"
-else
-    pathtrans="path = os.path.join('$basedir', file)"
-fi
-
-# if destdir was given, then it needs to be prepended to the filename to
-# byte compile but not go into the compiled file.
-if [ -z "$destdir" ]; then
-    filetrans="filepath = path"
-else
-    filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)"
-fi
-
-python_major=$($PYTHON -V 2>&1 | sed -e 's/.* //;s/\..*$//;1q')
-if test -z "$python_major"; then
-  echo "$me: could not determine $PYTHON major version, guessing 3" >&2
-  python_major=3
-fi
-
-# The old way to import libraries was deprecated.
-if test "$python_major" -le 2; then
-  import_lib=imp
-  import_test="hasattr(imp, 'get_tag')"
-  import_call=imp.cache_from_source
-  import_arg2=', False' # needed in one call and not the other
-else
-  import_lib=importlib
-  import_test="hasattr(sys.implementation, 'cache_tag')"
-  import_call=importlib.util.cache_from_source
-  import_arg2=
-fi
-
-$PYTHON -c "
-import sys, os, py_compile, $import_lib
-
-files = '''$files'''
-
-sys.stdout.write('Byte-compiling python modules...\n')
-for file in files.split():
-    $pathtrans
-    $filetrans
-    if not os.path.exists(filepath) or not (len(filepath) >= 3
-                                            and filepath[-3:] == '.py'):
-           continue
-    sys.stdout.write(file)
-    sys.stdout.flush()
-    if $import_test:
-        py_compile.compile(filepath, $import_call(filepath), path)
-    else:
-        py_compile.compile(filepath, filepath + 'c', path)
-sys.stdout.write('\n')" || exit $?
-
-# this will fail for python < 1.5, but that doesn't matter ...
-$PYTHON -O -c "
-import sys, os, py_compile, $import_lib
-
-# pypy does not use .pyo optimization
-if hasattr(sys, 'pypy_translation_info'):
-    sys.exit(0)
-
-files = '''$files'''
-sys.stdout.write('Byte-compiling python modules (optimized versions) ...\n')
-for file in files.split():
-    $pathtrans
-    $filetrans
-    if not os.path.exists(filepath) or not (len(filepath) >= 3
-                                            and filepath[-3:] == '.py'):
-           continue
-    sys.stdout.write(file)
-    sys.stdout.flush()
-    if $import_test:
-        py_compile.compile(filepath, $import_call(filepath$import_arg2), path)
-    else:
-        py_compile.compile(filepath, filepath + 'o', path)
-sys.stdout.write('\n')" 2>/dev/null || :
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/isl/test-driver b/polly/lib/External/isl/test-driver
deleted file mode 100755 (executable)
index 9759384..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-#! /bin/sh
-# test-driver - basic testsuite driver script.
-
-scriptversion=2018-03-07.03; # UTC
-
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-# Make unconditional expansion of undefined variables an error.  This
-# helps a lot in preventing typo-related bugs.
-set -u
-
-usage_error ()
-{
-  echo "$0: $*" >&2
-  print_usage >&2
-  exit 2
-}
-
-print_usage ()
-{
-  cat <<END
-Usage:
-  test-driver --test-name NAME --log-file PATH --trs-file PATH
-              [--expect-failure {yes|no}] [--color-tests {yes|no}]
-              [--enable-hard-errors {yes|no}] [--]
-              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
-
-The '--test-name', '--log-file' and '--trs-file' options are mandatory.
-See the GNU Automake documentation for information.
-END
-}
-
-test_name= # Used for reporting.
-log_file=  # Where to save the output of the test script.
-trs_file=  # Where to save the metadata of the test run.
-expect_failure=no
-color_tests=no
-enable_hard_errors=yes
-while test $# -gt 0; do
-  case $1 in
-  --help) print_usage; exit $?;;
-  --version) echo "test-driver $scriptversion"; exit $?;;
-  --test-name) test_name=$2; shift;;
-  --log-file) log_file=$2; shift;;
-  --trs-file) trs_file=$2; shift;;
-  --color-tests) color_tests=$2; shift;;
-  --expect-failure) expect_failure=$2; shift;;
-  --enable-hard-errors) enable_hard_errors=$2; shift;;
-  --) shift; break;;
-  -*) usage_error "invalid option: '$1'";;
-   *) break;;
-  esac
-  shift
-done
-
-missing_opts=
-test x"$test_name" = x && missing_opts="$missing_opts --test-name"
-test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
-test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
-if test x"$missing_opts" != x; then
-  usage_error "the following mandatory options are missing:$missing_opts"
-fi
-
-if test $# -eq 0; then
-  usage_error "missing argument"
-fi
-
-if test $color_tests = yes; then
-  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
-  red='\e[0;31m' # Red.
-  grn='\e[0;32m' # Green.
-  lgn='\e[1;32m' # Light green.
-  blu='\e[1;34m' # Blue.
-  mgn='\e[0;35m' # Magenta.
-  std='\e[m'     # No color.
-else
-  red= grn= lgn= blu= mgn= std=
-fi
-
-do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
-trap "st=129; $do_exit" 1
-trap "st=130; $do_exit" 2
-trap "st=141; $do_exit" 13
-trap "st=143; $do_exit" 15
-
-# Test script is run here.
-"$@" >$log_file 2>&1
-estatus=$?
-
-if test $enable_hard_errors = no && test $estatus -eq 99; then
-  tweaked_estatus=1
-else
-  tweaked_estatus=$estatus
-fi
-
-case $tweaked_estatus:$expect_failure in
-  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
-  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
-  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
-  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
-  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
-  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
-esac
-
-# Report the test outcome and exit status in the logs, so that one can
-# know whether the test passed or failed simply by looking at the '.log'
-# file, without the need of also peaking into the corresponding '.trs'
-# file (automake bug#11814).
-echo "$res $test_name (exit status: $estatus)" >>$log_file
-
-# Report outcome to console.
-echo "${col}${res}${std}: $test_name"
-
-# Register the test result, and other relevant metadata.
-echo ":test-result: $res" > $trs_file
-echo ":global-test-result: $res" >> $trs_file
-echo ":recheck: $recheck" >> $trs_file
-echo ":copy-in-global-log: $gcopy" >> $trs_file
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/isl/testsets/pip/bouleti.pip b/polly/lib/External/isl/testsets/pip/bouleti.pip
new file mode 100644 (file)
index 0000000..be3b259
--- /dev/null
@@ -0,0 +1,30 @@
+1 8
+1 0 -1 1 0 0 0 -1
+
+-1
+
+24 17
+1 0 0 0 -1 0 0 0 0 0 1 -1 1 0 0 0 0
+1 0 0 0 0 0 0 -1 0 0 1 -1 1 0 0 0 0
+1 0 0 0 0 -1 0 0 0 0 1 -1 1 0 0 0 0
+1 0 0 0 0 0 0 0 -1 0 1 -1 1 0 0 0 0
+1 0 0 0 0 0 1 0 0 0 -1 1 0 -1 0 0 0
+1 -1 0 0 0 0 0 0 0 0 1 -1 0 1 0 0 0
+1 0 -1 0 0 0 0 0 0 0 1 -1 0 0 1 0 0
+1 0 0 1 0 0 0 0 0 0 -1 1 0 0 0 -1 -1
+1 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 -1
+1 0 0 0 1 1 -1 0 0 0 -1 0 0 0 0 0 0
+1 0 0 -1 0 0 0 2 0 0  -1 0 0 0 0 0 0
+1 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 -1
+1 0 0 0 0 0 0 1 1 -1 -1 0 0 0 0 0 0
+1 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 -1
+1 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1
+1 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 -1
+1 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 -1
+1 1 1 0 0 0 0 0 0 0 -2 2 0 -1 -1 0 0
+1 0 0 0 2 0 0 0 0 0 -2 1 0 0 0 -1 0
+1 0 -1 0 0 0 0 0 4 3 -6 0 0 0 0 0 0
+1 0 0 0 0 4 3 0 0 0 -7 1 0 0 -1 0 0
+1 1 1 1 0 0 0 -2 -4 -4 7 0 0 0 0 0 0
+1 0 0 0 -2 -4 -4 0 0 0 10 -3 0 1 1 1 0
+1 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
diff --git a/polly/lib/External/isl/testsets/pip/cnt_sum2.pip b/polly/lib/External/isl/testsets/pip/cnt_sum2.pip
new file mode 100644 (file)
index 0000000..4de1227
--- /dev/null
@@ -0,0 +1,54 @@
+0 20
+
+-1
+
+47 39
+1 0 0 0 0 0 0 1 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 1 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 -1 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 -1 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 -1 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1
+1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1
+1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
+1 -1 20 20 20 20 20 20 20 20 20 20 20 30 10 10 10 10 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+
+Maximize
diff --git a/polly/lib/External/isl/testsets/pip/difficult.pip b/polly/lib/External/isl/testsets/pip/difficult.pip
new file mode 100644 (file)
index 0000000..db14e4f
--- /dev/null
@@ -0,0 +1,14 @@
+0 5
+
+-1
+
+9 8
+0 -2 -3 -5 1 0 0 -4
+1 0 -1 0 0 2 0 3
+1 0 0 -1 0 1 0 0
+1 0 1 0 0 -1 0 0
+1 0 0 3 0 -1 2 0
+1 1 0 -1 0 0 0 5
+1 1 0 0 0 0 0 0
+1 -1 0 0 0 0 1 2
+1 0 0 1 0 0 0 -1
diff --git a/polly/lib/External/isl/testsets/pip/jcomplex.pip b/polly/lib/External/isl/testsets/pip/jcomplex.pip
new file mode 100644 (file)
index 0000000..8174070
--- /dev/null
@@ -0,0 +1,47 @@
+0 17
+
+-1
+
+40 33
+1 0 0 0 0 0 0 0 1 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 1 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 1 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 1 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 1 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 1 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 1 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 -1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 -1 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 -1 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 -1 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 -1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1
+1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1
+1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
+1 -1 30 20 20 20 20 20 40 10 10 10 10 10 10 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+
+Maximize
diff --git a/polly/lib/External/isl/testsets/pip/phideo.pip b/polly/lib/External/isl/testsets/pip/phideo.pip
new file mode 100644 (file)
index 0000000..0c91e45
--- /dev/null
@@ -0,0 +1,35 @@
+4 4
+1      -1      0       8
+1      1       0       -1
+1      0       -1      128
+1      0       1       -1
+
+-1
+
+24 14
+1      0       1       2       4       8       16      32      64      128     256     0       3       574
+1      0       -1      -2      -4      -8      -16     -32     -64     -128    -256    0       -3      -574
+1      1       0       0       0       0       0       0       0       0       0       1       0       0
+1      -1      0       0       0       0       0       0       0       0       0       -1      0       0
+1      1       0       0       0       0       0       0       0       0       0       0       0       8
+1      -1      0       0       0       0       0       0       0       0       0       0       0       -1
+1      0       1       0       0       0       0       0       0       0       0       0       0       2
+1      0       -1      0       0       0       0       0       0       0       0       0       0       -1
+1      0       0       1       0       0       0       0       0       0       0       0       0       2
+1      0       0       -1      0       0       0       0       0       0       0       0       0       -1
+1      0       0       0       1       0       0       0       0       0       0       0       0       2
+1      0       0       0       -1      0       0       0       0       0       0       0       0       -1
+1      0       0       0       0       1       0       0       0       0       0       0       0       2
+1      0       0       0       0       -1      0       0       0       0       0       0       0       -1
+1      0       0       0       0       0       1       0       0       0       0       0       0       2
+1      0       0       0       0       0       -1      0       0       0       0       0       0       -1
+1      0       0       0       0       0       0       1       0       0       0       0       0       2
+1      0       0       0       0       0       0       -1      0       0       0       0       0       -1
+1      0       0       0       0       0       0       0       1       0       0       0       0       2
+1      0       0       0       0       0       0       0       -1      0       0       0       0       -1
+1      0       0       0       0       0       0       0       0       1       0       0       0       2
+1      0       0       0       0       0       0       0       0       -1      0       0       0       -1
+1      0       0       0       0       0       0       0       0       0       1       0       0       2
+1      0       0       0       0       0       0       0       0       0       -1      0       0       -1
+
+Urs_unknowns
diff --git a/polly/lib/External/isl/testsets/pip/seghir-e1.pip b/polly/lib/External/isl/testsets/pip/seghir-e1.pip
new file mode 100644 (file)
index 0000000..8f594c3
--- /dev/null
@@ -0,0 +1,20 @@
+0 6
+
+-1
+
+12 8
+ 0 0 0 1 0 1 0 -4
+ 1 2 5 0 2 1 0 3
+ 1 0 -1 0 1 0 0 0
+ 1 -2 -5 0 -1 -1 0 0
+ 1 0 3 0 -1 0 2 0
+ 1 3 4 0 0 1 0 5
+ 1 3 5 0 0 1 0 0
+ 1 -3 -5 0 0 -1 1 2
+ 1 0 1 0 0 0 0 -1
+ 1 0 0 0 1 0 1 -2
+ 1 0 0 0 1 0 0 -2
+ 1 0 0 0 0 0 0 1
+
+Urs_parms
+Urs_unknowns
diff --git a/polly/lib/External/isl/testsets/pip/seghir-e3.pip b/polly/lib/External/isl/testsets/pip/seghir-e3.pip
new file mode 100644 (file)
index 0000000..e591dd7
--- /dev/null
@@ -0,0 +1,17 @@
+0 6
+
+-1
+
+9 8
+ 0 0 0 1 2 0 0 2
+ 1 2 2 0 1 1 0 0
+ 1 0 1 0 0 0 0 -1
+ 1 -2 -2 0 -1 0 0 -1
+ 1 7 6 0 3 0 0 -1
+ 1 -6 -7 0 -3 0 3 1
+ 1 -7 -6 0 -3 1 6 4
+ 1 0 0 0 0 0 1 0
+ 1 0 0 0 0 0 0 1
+
+Urs_parms
+Urs_unknowns
diff --git a/polly/lib/External/isl/testsets/pip/seghir-e4.pip b/polly/lib/External/isl/testsets/pip/seghir-e4.pip
new file mode 100644 (file)
index 0000000..f748b62
--- /dev/null
@@ -0,0 +1,18 @@
+0 5
+
+-1
+
+10 8
+ 0 0 0 0 1 1 0 -1
+ 1 7 -4 -10 0 -2 0 -1
+ 1 -4 2 5 0 1 0 -1
+ 1 4 -2 -5 0 -1 0 5
+ 1 0 1 0 0 0 0 -1
+ 1 0 -1 0 0 0 2 0
+ 1 0 0 1 0 0 0 -1
+ 1 0 0 -1 0 0 3 2
+ 1 -98 56 140 0 28 1 1
+ 1 0 0 0 0 0 0 1
+
+Urs_parms
+Urs_unknowns
diff --git a/polly/lib/External/isl/testsets/pip/seghir-e5.pip b/polly/lib/External/isl/testsets/pip/seghir-e5.pip
new file mode 100644 (file)
index 0000000..9654476
--- /dev/null
@@ -0,0 +1,17 @@
+0 5
+
+-1
+
+9 7
+ 0 0 0 1 1 0 -4
+ 1 0 1 0 0 0 -1
+ 1 0 1 0 0 1 0
+ 1 2 -6 0 -1 0 0
+ 1 -3 5 0 1 0 0
+ 1 3 -5 0 -1 1 2
+ 1 -2 11 0 1 4 3
+ 1 -3 4 0 1 0 5
+ 1 0 0 0 0 0 1
+
+Urs_parms
+Urs_unknowns
diff --git a/polly/lib/External/isl/testsets/pip/seghir-e6.pip b/polly/lib/External/isl/testsets/pip/seghir-e6.pip
new file mode 100644 (file)
index 0000000..2ed15cc
--- /dev/null
@@ -0,0 +1,17 @@
+0 5
+
+-1
+
+9 7
+ 0 0 0 1 1 0 -4
+ 1 2 4 0 1 0 0
+ 1 -2 -3 0 -1 0 -1
+ 1 5 6 0 2 0 0
+ 1 -2 -3 0 -1 1 0
+ 1 -5 -6 0 -2 1 2
+ 1 -12 -19 0 -6 4 3
+ 1 7 9 0 3 0 5
+ 1 0 0 0 0 0 1
+
+Urs_parms
+Urs_unknowns
diff --git a/polly/lib/External/isl/testsets/pip/seghir-e7.pip b/polly/lib/External/isl/testsets/pip/seghir-e7.pip
new file mode 100644 (file)
index 0000000..9120aa9
--- /dev/null
@@ -0,0 +1,17 @@
+0 6
+
+-1
+
+9 8
+ 0 0 0 1 1 0 0 0
+ 1 4 2 0 1 0 1 1
+ 1 1 0 0 0 0 0 -1
+ 1 -1 0 0 0 2 1 0
+ 1 -15 -11 0 -5 1 0 2
+ 1 -3 -2 0 -1 0 0 -5
+ 1 3 3 0 1 0 0 0
+ 1 0 0 0 0 2 1 -2
+ 1 0 0 0 0 0 0 1
+
+Urs_parms
+Urs_unknowns
diff --git a/polly/lib/External/isl/testsets/pip/seghir-e8.pip b/polly/lib/External/isl/testsets/pip/seghir-e8.pip
new file mode 100644 (file)
index 0000000..f223f51
--- /dev/null
@@ -0,0 +1,19 @@
+0 5
+
+-1
+
+11 8
+ 0 0 0 0 1 1 0 2
+ 1 3 -4 -3 0 1 0 -1
+ 1 0 0 -1 0 0 1 0
+ 1 0 -1 0 0 0 1 0
+ 1 -3 4 3 0 -1 1 0
+ 1 2 -4 -3 0 1 1 0
+ 1 0 1 0 0 0 0 -1
+ 1 -2 4 3 0 -1 0 -1
+ 1 0 0 1 0 0 0 -1
+ 1 0 0 0 0 0 1 -2
+ 1 0 0 0 0 0 0 1
+
+Urs_parms
+Urs_unknowns
diff --git a/polly/lib/External/isl/testsets/pip/seghir-e9.pip b/polly/lib/External/isl/testsets/pip/seghir-e9.pip
new file mode 100644 (file)
index 0000000..532e0ad
--- /dev/null
@@ -0,0 +1,22 @@
+0 7
+
+-1
+
+14 10
+ 0 0 0 0 1 0 1 0 0 2
+ 0 0 0 0 0 1 1 1 0 0
+ 1 -2 8 -5 0 0 1 -1 0 -1
+ 1 2 -8 5 0 0 -1 1 1 0
+ 1 3 -8 5 0 0 -1 1 0 -1
+ 1 -3 8 -5 0 0 1 -1 1 0
+ 1 1 -4 2 0 0 0 1 0 -1
+ 1 -1 4 -2 0 0 0 -1 1 0
+ 1 0 3 -2 0 0 0 -1 0 -1
+ 1 0 -3 2 0 0 0 1 1 0
+ 1 0 0 1 0 0 0 0 0 -1
+ 1 0 0 -1 0 0 0 0 1 0
+ 1 0 0 0 0 0 0 0 1 -2
+ 1 0 0 0 0 0 0 0 0 1
+
+Urs_parms
+Urs_unknowns
diff --git a/polly/lib/External/isl/testsets/pip/seghir-vd.pip b/polly/lib/External/isl/testsets/pip/seghir-vd.pip
new file mode 100644 (file)
index 0000000..b5395fb
--- /dev/null
@@ -0,0 +1,17 @@
+0 6
+
+-1
+
+9 8
+ 0 0 0 1 1 0 0 2
+ 1 2 1 0 0 1 0 0
+ 1 0 1 0 -1 0 0 -1
+ 1 -2 -1 0 0 0 0 -1
+ 1 7 3 0 0 0 0 -1
+ 1 -6 -4 0 1 0 3 1
+ 1 -7 -3 0 0 1 6 4
+ 1 0 0 0 0 0 1 0
+ 1 0 0 0 0 0 0 1
+
+Urs_parms
+Urs_unknowns
diff --git a/polly/lib/External/ppcg/Makefile.am b/polly/lib/External/ppcg/Makefile.am
deleted file mode 100644 (file)
index 7c12da3..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-if BUNDLED_ISL
-    MAYBE_ISL = isl
-    ISL_LA = $(top_builddir)/isl/libisl.la
-    LOCAL_ISL_LA = isl/libisl.la
-endif
-if BUNDLED_PET
-    MAYBE_PET = pet
-    PET_LA = $(top_builddir)/pet/libpet.la
-endif
-
-SUBDIRS = $(MAYBE_ISL) $(MAYBE_PET) .
-
-FORCE:
-isl/libisl.la: FORCE
-       cd isl; $(MAKE) $(AM_MAKEFLAGS) libisl.la
-pet/libpet.la: FORCE
-       cd pet; $(MAKE) $(AM_MAKEFLAGS) libpet.la
-
-ACLOCAL_AMFLAGS = -I m4
-
-LIB_ISL = $(ISL_LA) @ISL_LIBS@
-LIB_PET = $(PET_LA) @PET_LIBS@
-
-AM_CPPFLAGS = @ISL_CFLAGS@ @PET_CFLAGS@
-LDADD = $(LIB_PET) $(LIB_ISL)
-
-bin_PROGRAMS = ppcg
-ppcg_SOURCES = \
-       cpu.c \
-       cpu.h \
-       cuda.c \
-       cuda.h \
-       opencl.c \
-       opencl.h \
-       cuda_common.h \
-       cuda_common.c \
-       gpu.c \
-       gpu.h \
-       gpu_array_tile.c \
-       gpu_array_tile.h \
-       gpu_group.c \
-       gpu_group.h \
-       gpu_hybrid.c \
-       gpu_hybrid.h \
-       gpu_print.c \
-       gpu_print.h \
-       gpu_tree.c \
-       gpu_tree.h \
-       grouping.c \
-       hybrid.c \
-       hybrid.h \
-       schedule.c \
-       schedule.h \
-       ppcg_options.c \
-       ppcg_options.h \
-       ppcg.c \
-       ppcg.h \
-       print.c \
-       print.h \
-       util.c \
-       util.h \
-       version.c
-
-TESTS = @extra_tests@
-EXTRA_TESTS = opencl_test.sh polybench_test.sh
-TEST_EXTENSIONS = .sh
-
-EXTRA_DIST = \
-       ocl_utilities.c \
-       ocl_utilities.h \
-       tests
-
-dist-hook:
-       echo @GIT_HEAD_VERSION@ > $(distdir)/GIT_HEAD_ID
-
-gitversion.h: @GIT_HEAD@
-       $(AM_V_GEN)echo '#define GIT_HEAD_ID "'@GIT_HEAD_VERSION@'"' > $@
diff --git a/polly/lib/External/ppcg/Makefile.in b/polly/lib/External/ppcg/Makefile.in
deleted file mode 100644 (file)
index c1b7193..0000000
+++ /dev/null
@@ -1,1379 +0,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-bin_PROGRAMS = ppcg$(EXEEXT)
-subdir = .
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_opencl.m4 \
-       $(top_srcdir)/m4/ax_check_openmp.m4 \
-       $(top_srcdir)/m4/ax_detect_git_head.m4 \
-       $(top_srcdir)/m4/ax_submodule.m4 $(top_srcdir)/m4/libtool.m4 \
-       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-       $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
-       $(am__configure_deps) $(am__DIST_COMMON)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES = polybench_test.sh opencl_test.sh
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)"
-PROGRAMS = $(bin_PROGRAMS)
-am_ppcg_OBJECTS = cpu.$(OBJEXT) cuda.$(OBJEXT) opencl.$(OBJEXT) \
-       cuda_common.$(OBJEXT) gpu.$(OBJEXT) gpu_array_tile.$(OBJEXT) \
-       gpu_group.$(OBJEXT) gpu_print.$(OBJEXT) gpu_tree.$(OBJEXT) \
-       schedule.$(OBJEXT) ppcg_options.$(OBJEXT) ppcg.$(OBJEXT) \
-       print.$(OBJEXT) version.$(OBJEXT)
-ppcg_OBJECTS = $(am_ppcg_OBJECTS)
-ppcg_LDADD = $(LDADD)
-am__DEPENDENCIES_1 = $(PET_LA)
-am__DEPENDENCIES_2 = $(ISL_LA)
-ppcg_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-       $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(ppcg_SOURCES)
-DIST_SOURCES = $(ppcg_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-       ctags-recursive dvi-recursive html-recursive info-recursive \
-       install-data-recursive install-dvi-recursive \
-       install-exec-recursive install-html-recursive \
-       install-info-recursive install-pdf-recursive \
-       install-ps-recursive install-recursive installcheck-recursive \
-       installdirs-recursive pdf-recursive ps-recursive \
-       tags-recursive uninstall-recursive
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
-  distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-       cscope check recheck distdir dist dist-all distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
-am__tty_colors_dummy = \
-  mgn= red= grn= lgn= blu= brg= std=; \
-  am__color_tests=no
-am__tty_colors = { \
-  $(am__tty_colors_dummy); \
-  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-    am__color_tests=no; \
-  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-    am__color_tests=yes; \
-  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-    am__color_tests=yes; \
-  fi; \
-  if test $$am__color_tests = yes; then \
-    red='\e[0;31m'; \
-    grn='\e[0;32m'; \
-    lgn='\e[1;32m'; \
-    blu='\e[1;34m'; \
-    mgn='\e[0;35m'; \
-    brg='\e[1m'; \
-    std='\e[m'; \
-  fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__recheck_rx = ^[    ]*:recheck:[    ]*
-am__global_test_result_rx = ^[         ]*:global-test-result:[         ]*
-am__copy_in_global_log_rx = ^[         ]*:copy-in-global-log:[         ]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
-  recheck = 1; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-        { \
-          if ((getline line2 < ($$0 ".log")) < 0) \
-           recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-        { \
-          recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-        { \
-          break; \
-        } \
-    }; \
-  if (recheck) \
-    print $$0; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
-  print "fatal: making $@: " msg | "cat >&2"; \
-  exit 1; \
-} \
-function rst_section(header) \
-{ \
-  print header; \
-  len = length(header); \
-  for (i = 1; i <= len; i = i + 1) \
-    printf "="; \
-  printf "\n\n"; \
-} \
-{ \
-  copy_in_global_log = 1; \
-  global_test_result = "RUN"; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-         fatal("failed to read from " $$0 ".trs"); \
-      if (line ~ /$(am__global_test_result_rx)/) \
-        { \
-          sub("$(am__global_test_result_rx)", "", line); \
-          sub("[       ]*$$", "", line); \
-          global_test_result = line; \
-        } \
-      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-        copy_in_global_log = 0; \
-    }; \
-  if (copy_in_global_log) \
-    { \
-      rst_section(global_test_result ": " $$0); \
-      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-      { \
-        if (rc < 0) \
-          fatal("failed to read from " $$0 ".log"); \
-        print line; \
-      }; \
-      printf "\n"; \
-    }; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
-  --color-tests "$$am__color_tests" \
-  --enable-hard-errors "$$am__enable_hard_errors" \
-  --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test.  Creates the
-# directory for the log if needed.  Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log.  Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup);                                     \
-$(am__vpath_adj_setup) $(am__vpath_adj)                        \
-$(am__tty_colors);                                     \
-srcdir=$(srcdir); export srcdir;                       \
-case "$@" in                                           \
-  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;   \
-    *) am__odir=.;;                                    \
-esac;                                                  \
-test "x$$am__odir" = x"." || test -d "$$am__odir"      \
-  || $(MKDIR_P) "$$am__odir" || exit $$?;              \
-if test -f "./$$f"; then dir=./;                       \
-elif test -f "$$f"; then dir=;                         \
-else dir="$(srcdir)/"; fi;                             \
-tst=$$dir$$f; log='$@';                                \
-if test -n '$(DISABLE_HARD_ERRORS)'; then              \
-  am__enable_hard_errors=no;                           \
-else                                                   \
-  am__enable_hard_errors=yes;                          \
-fi;                                                    \
-case " $(XFAIL_TESTS) " in                             \
-  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
-    am__expect_failure=yes;;                           \
-  *)                                                   \
-    am__expect_failure=no;;                            \
-esac;                                                  \
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed).  The result is saved in the shell variable
-# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
-  bases='$(TEST_LOGS)'; \
-  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-  bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-TEST_SUITE_LOG = test-suite.log
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
-TEST_LOGS = $(am__test_logs2:.sh.log=.log)
-SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
-SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
-am__set_b = \
-  case '$@' in \
-    */*) \
-      case '$*' in \
-        */*) b='$*';; \
-          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-       esac;; \
-    *) \
-      b='$*';; \
-  esac
-DIST_SUBDIRS = isl pet .
-am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/opencl_test.sh.in \
-       $(srcdir)/polybench_test.sh.in ChangeLog README compile \
-       config.guess config.sub depcomp install-sh ltmain.sh missing \
-       test-driver
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  if test -d "$(distdir)"; then \
-    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-      && rm -rf "$(distdir)" \
-      || { sleep 5 && rm -rf "$(distdir)"; }; \
-  else :; fi
-am__post_remove_distdir = $(am__remove_distdir)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-DIST_TARGETS = dist-gzip
-distuninstallcheck_listfiles = find . -type f -print
-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
-  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT_HEAD = @GIT_HEAD@
-GIT_HEAD_ID = @GIT_HEAD_ID@
-GIT_HEAD_VERSION = @GIT_HEAD_VERSION@
-GREP = @GREP@
-HAVE_OPENCL = @HAVE_OPENCL@
-HAVE_OPENMP = @HAVE_OPENMP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-ISL_CFLAGS = @ISL_CFLAGS@
-ISL_LIBS = @ISL_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PET_CFLAGS = @PET_CFLAGS@
-PET_LIBS = @PET_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POLYBENCH_DIR = @POLYBENCH_DIR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-extra_tests = @extra_tests@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-@BUNDLED_ISL_TRUE@MAYBE_ISL = isl
-@BUNDLED_ISL_TRUE@ISL_LA = $(top_builddir)/isl/libisl.la
-@BUNDLED_ISL_TRUE@LOCAL_ISL_LA = isl/libisl.la
-@BUNDLED_PET_TRUE@MAYBE_PET = pet
-@BUNDLED_PET_TRUE@PET_LA = $(top_builddir)/pet/libpet.la
-SUBDIRS = $(MAYBE_ISL) $(MAYBE_PET) .
-ACLOCAL_AMFLAGS = -I m4
-LIB_ISL = $(ISL_LA) @ISL_LIBS@
-LIB_PET = $(PET_LA) @PET_LIBS@
-AM_CPPFLAGS = @ISL_CFLAGS@ @PET_CFLAGS@
-LDADD = $(LIB_PET) $(LIB_ISL)
-ppcg_SOURCES = \
-       cpu.c \
-       cpu.h \
-       cuda.c \
-       cuda.h \
-       opencl.c \
-       opencl.h \
-       cuda_common.h \
-       cuda_common.c \
-       gpu.c \
-       gpu.h \
-       gpu_array_tile.c \
-       gpu_array_tile.h \
-       gpu_group.c \
-       gpu_group.h \
-       gpu_print.c \
-       gpu_print.h \
-       gpu_tree.c \
-       gpu_tree.h \
-       schedule.c \
-       schedule.h \
-       ppcg_options.c \
-       ppcg_options.h \
-       ppcg.c \
-       ppcg.h \
-       print.c \
-       print.h \
-       util.h \
-       version.c
-
-TESTS = @extra_tests@
-EXTRA_TESTS = opencl_test.sh polybench_test.sh
-TEST_EXTENSIONS = .sh
-EXTRA_DIST = \
-       ocl_utilities.c \
-       ocl_utilities.h \
-       tests
-
-all: all-recursive
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs
-am--refresh: Makefile
-       @:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
-             $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
-               && exit 0; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
-       $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --foreign Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           echo ' $(SHELL) ./config.status'; \
-           $(SHELL) ./config.status;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-       $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-polybench_test.sh: $(top_builddir)/config.status $(srcdir)/polybench_test.sh.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
-opencl_test.sh: $(top_builddir)/config.status $(srcdir)/opencl_test.sh.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
-install-binPROGRAMS: $(bin_PROGRAMS)
-       @$(NORMAL_INSTALL)
-       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
-       fi; \
-       for p in $$list; do echo "$$p $$p"; done | \
-       sed 's/$(EXEEXT)$$//' | \
-       while read p p1; do if test -f $$p \
-        || test -f $$p1 \
-         ; then echo "$$p"; echo "$$p"; else :; fi; \
-       done | \
-       sed -e 'p;s,.*/,,;n;h' \
-           -e 's|.*|.|' \
-           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
-       sed 'N;N;N;s,\n, ,g' | \
-       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-           if ($$2 == $$4) files[d] = files[d] " " $$1; \
-           else { print "f", $$3 "/" $$4, $$1; } } \
-         END { for (d in files) print "f", d, files[d] }' | \
-       while read type dir files; do \
-           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-           test -z "$$files" || { \
-           echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
-           $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
-           } \
-       ; done
-
-uninstall-binPROGRAMS:
-       @$(NORMAL_UNINSTALL)
-       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-       files=`for p in $$list; do echo "$$p"; done | \
-         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-             -e 's/$$/$(EXEEXT)/' \
-       `; \
-       test -n "$$list" || exit 0; \
-       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
-       @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
-       echo " rm -f" $$list; \
-       rm -f $$list || exit $$?; \
-       test -n "$(EXEEXT)" || exit 0; \
-       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-       echo " rm -f" $$list; \
-       rm -f $$list
-
-ppcg$(EXEEXT): $(ppcg_OBJECTS) $(ppcg_DEPENDENCIES) $(EXTRA_ppcg_DEPENDENCIES) 
-       @rm -f ppcg$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(ppcg_OBJECTS) $(ppcg_LDADD) $(LIBS)
-
-mostlyclean-compile:
-       -rm -f *.$(OBJEXT)
-
-distclean-compile:
-       -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cuda.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cuda_common.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpu_array_tile.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpu_group.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpu_print.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpu_tree.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opencl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppcg.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppcg_options.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/schedule.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool config.lt
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-       @fail=; \
-       if $(am__make_keepgoing); then \
-         failcom='fail=yes'; \
-       else \
-         failcom='exit 1'; \
-       fi; \
-       dot_seen=no; \
-       target=`echo $@ | sed s/-recursive//`; \
-       case "$@" in \
-         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-         *) list='$(SUBDIRS)' ;; \
-       esac; \
-       for subdir in $$list; do \
-         echo "Making $$target in $$subdir"; \
-         if test "$$subdir" = "."; then \
-           dot_seen=yes; \
-           local_target="$$target-am"; \
-         else \
-           local_target="$$target"; \
-         fi; \
-         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-         || eval $$failcom; \
-       done; \
-       if test "$$dot_seen" = "no"; then \
-         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-       fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
-       $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       set x; \
-       here=`pwd`; \
-       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-         include_option=--etags-include; \
-         empty_fix=.; \
-       else \
-         include_option=--include; \
-         empty_fix=; \
-       fi; \
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         if test "$$subdir" = .; then :; else \
-           test ! -f $$subdir/TAGS || \
-             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-         fi; \
-       done; \
-       $(am__define_uniq_tagged_files); \
-       shift; \
-       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-         test -n "$$unique" || unique=$$empty_fix; \
-         if test $$# -gt 0; then \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             "$$@" $$unique; \
-         else \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             $$unique; \
-         fi; \
-       fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       $(am__define_uniq_tagged_files); \
-       test -z "$(CTAGS_ARGS)$$unique" \
-         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$unique
-
-GTAGS:
-       here=`$(am__cd) $(top_builddir) && pwd` \
-         && $(am__cd) $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) "$$here"
-cscope: cscope.files
-       test ! -s cscope.files \
-         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-clean-cscope:
-       -rm -f cscope.files
-cscope.files: clean-cscope cscopelist
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-       list='$(am__tagged_files)'; \
-       case "$(srcdir)" in \
-         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-         *) sdir=$(subdir)/$(srcdir) ;; \
-       esac; \
-       for i in $$list; do \
-         if test -f "$$i"; then \
-           echo "$(subdir)/$$i"; \
-         else \
-           echo "$$sdir/$$i"; \
-         fi; \
-       done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
-       rm -f $< $@
-       $(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
-       @:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
-       @$(am__set_TESTS_bases); \
-       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-       redo_bases=`for i in $$bases; do \
-                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-                   done`; \
-       if test -n "$$redo_bases"; then \
-         redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-         redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-         if $(am__make_dryrun); then :; else \
-           rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-         fi; \
-       fi; \
-       if test -n "$$am__remaking_logs"; then \
-         echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-              "recursion detected" >&2; \
-       elif test -n "$$redo_logs"; then \
-         am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-       fi; \
-       if $(am__make_dryrun); then :; else \
-         st=0;  \
-         errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-         for i in $$redo_bases; do \
-           test -f $$i.trs && test -r $$i.trs \
-             || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-           test -f $$i.log && test -r $$i.log \
-             || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-         done; \
-         test $$st -eq 0 || exit 1; \
-       fi
-       @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-       ws='[   ]'; \
-       results=`for b in $$bases; do echo $$b.trs; done`; \
-       test -n "$$results" || results=/dev/null; \
-       all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-       pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-       fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-       skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-       xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-       xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-       error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-       if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-         success=true; \
-       else \
-         success=false; \
-       fi; \
-       br='==================='; br=$$br$$br$$br$$br; \
-       result_count () \
-       { \
-           if test x"$$1" = x"--maybe-color"; then \
-             maybe_colorize=yes; \
-           elif test x"$$1" = x"--no-color"; then \
-             maybe_colorize=no; \
-           else \
-             echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-           fi; \
-           shift; \
-           desc=$$1 count=$$2; \
-           if test $$maybe_colorize = yes && test $$count -gt 0; then \
-             color_start=$$3 color_end=$$std; \
-           else \
-             color_start= color_end=; \
-           fi; \
-           echo "$${color_start}# $$desc $$count$${color_end}"; \
-       }; \
-       create_testsuite_report () \
-       { \
-         result_count $$1 "TOTAL:" $$all   "$$brg"; \
-         result_count $$1 "PASS: " $$pass  "$$grn"; \
-         result_count $$1 "SKIP: " $$skip  "$$blu"; \
-         result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-         result_count $$1 "FAIL: " $$fail  "$$red"; \
-         result_count $$1 "XPASS:" $$xpass "$$red"; \
-         result_count $$1 "ERROR:" $$error "$$mgn"; \
-       }; \
-       {                                                               \
-         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
-           $(am__rst_title);                                           \
-         create_testsuite_report --no-color;                           \
-         echo;                                                         \
-         echo ".. contents:: :depth: 2";                               \
-         echo;                                                         \
-         for b in $$bases; do echo $$b; done                           \
-           | $(am__create_global_log);                                 \
-       } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
-       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
-       if $$success; then                                              \
-         col="$$grn";                                                  \
-        else                                                           \
-         col="$$red";                                                  \
-         test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
-       fi;                                                             \
-       echo "$${col}$$br$${std}";                                      \
-       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
-       echo "$${col}$$br$${std}";                                      \
-       create_testsuite_report --maybe-color;                          \
-       echo "$$col$$br$$std";                                          \
-       if $$success; then :; else                                      \
-         echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
-         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
-           echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
-         fi;                                                           \
-         echo "$$col$$br$$std";                                        \
-       fi;                                                             \
-       $$success || exit 1
-
-check-TESTS:
-       @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-       @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-       @set +e; $(am__set_TESTS_bases); \
-       log_list=`for i in $$bases; do echo $$i.log; done`; \
-       trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-       log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-       exit $$?;
-recheck: all 
-       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-       @set +e; $(am__set_TESTS_bases); \
-       bases=`for i in $$bases; do echo $$i; done \
-                | $(am__list_recheck_tests)` || exit 1; \
-       log_list=`for i in $$bases; do echo $$i.log; done`; \
-       log_list=`echo $$log_list`; \
-       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-               am__force_recheck=am--force-recheck \
-               TEST_LOGS="$$log_list"; \
-       exit $$?
-.sh.log:
-       @p='$<'; \
-       $(am__set_b); \
-       $(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
-       --log-file $$b.log --trs-file $$b.trs \
-       $(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
-       "$$tst" $(AM_TESTS_FD_REDIRECT)
-@am__EXEEXT_TRUE@.sh$(EXEEXT).log:
-@am__EXEEXT_TRUE@      @p='$<'; \
-@am__EXEEXT_TRUE@      $(am__set_b); \
-@am__EXEEXT_TRUE@      $(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
-@am__EXEEXT_TRUE@      --log-file $$b.log --trs-file $$b.trs \
-@am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
-@am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(DISTFILES)
-       $(am__remove_distdir)
-       test -d "$(distdir)" || mkdir "$(distdir)"
-       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       list='$(DISTFILES)'; \
-         dist_files=`for file in $$list; do echo $$file; done | \
-         sed -e "s|^$$srcdirstrip/||;t" \
-             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-       case $$dist_files in \
-         */*) $(MKDIR_P) `echo "$$dist_files" | \
-                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-                          sort -u` ;; \
-       esac; \
-       for file in $$dist_files; do \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-           if test -d "$(distdir)/$$file"; then \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-         if test "$$subdir" = .; then :; else \
-           $(am__make_dryrun) \
-             || test -d "$(distdir)/$$subdir" \
-             || $(MKDIR_P) "$(distdir)/$$subdir" \
-             || exit 1; \
-           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-           $(am__relativize); \
-           new_distdir=$$reldir; \
-           dir1=$$subdir; dir2="$(top_distdir)"; \
-           $(am__relativize); \
-           new_top_distdir=$$reldir; \
-           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-           ($(am__cd) $$subdir && \
-             $(MAKE) $(AM_MAKEFLAGS) \
-               top_distdir="$$new_top_distdir" \
-               distdir="$$new_distdir" \
-               am__remove_distdir=: \
-               am__skip_length_check=: \
-               am__skip_mode_fix=: \
-               distdir) \
-             || exit 1; \
-         fi; \
-       done
-       $(MAKE) $(AM_MAKEFLAGS) \
-         top_distdir="$(top_distdir)" distdir="$(distdir)" \
-         dist-hook
-       -test -n "$(am__skip_mode_fix)" \
-       || find "$(distdir)" -type d ! -perm -755 \
-               -exec chmod u+rwx,go+rx {} \; -o \
-         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-       || chmod -R a+r "$(distdir)"
-dist-gzip: distdir
-       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-       $(am__post_remove_distdir)
-
-dist-bzip2: distdir
-       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-       $(am__post_remove_distdir)
-
-dist-lzip: distdir
-       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-       $(am__post_remove_distdir)
-
-dist-xz: distdir
-       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-       $(am__post_remove_distdir)
-
-dist-tarZ: distdir
-       @echo WARNING: "Support for distribution archives compressed with" \
-                      "legacy program 'compress' is deprecated." >&2
-       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
-       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-       $(am__post_remove_distdir)
-
-dist-shar: distdir
-       @echo WARNING: "Support for shar distribution archives is" \
-                      "deprecated." >&2
-       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
-       shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-       $(am__post_remove_distdir)
-
-dist-zip: distdir
-       -rm -f $(distdir).zip
-       zip -rq $(distdir).zip $(distdir)
-       $(am__post_remove_distdir)
-
-dist dist-all:
-       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
-       $(am__post_remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-       case '$(DIST_ARCHIVES)' in \
-       *.tar.gz*) \
-         GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
-       *.tar.bz2*) \
-         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-       *.tar.lz*) \
-         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
-       *.tar.xz*) \
-         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
-       *.tar.Z*) \
-         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-       *.shar.gz*) \
-         GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
-       *.zip*) \
-         unzip $(distdir).zip ;;\
-       esac
-       chmod -R a-w $(distdir)
-       chmod u+w $(distdir)
-       mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
-       chmod a-w $(distdir)
-       test -d $(distdir)/_build || exit 0; \
-       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-         && am__cwd=`pwd` \
-         && $(am__cd) $(distdir)/_build/sub \
-         && ../../configure \
-           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
-           $(DISTCHECK_CONFIGURE_FLAGS) \
-           --srcdir=../.. --prefix="$$dc_install_base" \
-         && $(MAKE) $(AM_MAKEFLAGS) \
-         && $(MAKE) $(AM_MAKEFLAGS) dvi \
-         && $(MAKE) $(AM_MAKEFLAGS) check \
-         && $(MAKE) $(AM_MAKEFLAGS) install \
-         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-               distuninstallcheck \
-         && chmod -R a-w "$$dc_install_base" \
-         && ({ \
-              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-             } || { rm -rf "$$dc_destdir"; exit 1; }) \
-         && rm -rf "$$dc_destdir" \
-         && $(MAKE) $(AM_MAKEFLAGS) dist \
-         && rm -rf $(DIST_ARCHIVES) \
-         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
-         && cd "$$am__cwd" \
-         || exit 1
-       $(am__post_remove_distdir)
-       @(echo "$(distdir) archives ready for distribution: "; \
-         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
-       @test -n '$(distuninstallcheck_dir)' || { \
-         echo 'ERROR: trying to run $@ with an empty' \
-              '$$(distuninstallcheck_dir)' >&2; \
-         exit 1; \
-       }; \
-       $(am__cd) '$(distuninstallcheck_dir)' || { \
-         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
-         exit 1; \
-       }; \
-       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
-          || { echo "ERROR: files left after uninstall:" ; \
-               if test -n "$(DESTDIR)"; then \
-                 echo "  (check DESTDIR support)"; \
-               fi ; \
-               $(distuninstallcheck_listfiles) ; \
-               exit 1; } >&2
-distcleancheck: distclean
-       @if test '$(srcdir)' = . ; then \
-         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-         exit 1 ; \
-       fi
-       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-         || { echo "ERROR: files left in build directory after distclean:" ; \
-              $(distcleancheck_listfiles) ; \
-              exit 1; } >&2
-check-am: all-am
-       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-recursive
-all-am: Makefile $(PROGRAMS)
-installdirs: installdirs-recursive
-installdirs-am:
-       for dir in "$(DESTDIR)$(bindir)"; do \
-         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-       done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-       if test -z '$(STRIP)'; then \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-             install; \
-       else \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-       fi
-mostlyclean-generic:
-       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-       -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-       -rm -rf ./$(DEPDIR)
-       -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-libtool distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-       -rm -rf $(top_srcdir)/autom4te.cache
-       -rm -rf ./$(DEPDIR)
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-       mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS
-
-.MAKE: $(am__recursive_targets) check-am install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
-       am--refresh check check-TESTS check-am clean clean-binPROGRAMS \
-       clean-cscope clean-generic clean-libtool cscope cscopelist-am \
-       ctags ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \
-       dist-lzip dist-shar dist-tarZ dist-xz dist-zip distcheck \
-       distclean distclean-compile distclean-generic \
-       distclean-libtool distclean-tags distcleancheck distdir \
-       distuninstallcheck dvi dvi-am html html-am info info-am \
-       install install-am install-binPROGRAMS install-data \
-       install-data-am install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-pdf install-pdf-am \
-       install-ps install-ps-am install-strip installcheck \
-       installcheck-am installdirs installdirs-am maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-compile \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       recheck tags tags-am uninstall uninstall-am \
-       uninstall-binPROGRAMS
-
-.PRECIOUS: Makefile
-
-
-FORCE:
-isl/libisl.la: FORCE
-       cd isl; $(MAKE) $(AM_MAKEFLAGS) libisl.la
-pet/libpet.la: FORCE
-       cd pet; $(MAKE) $(AM_MAKEFLAGS) libpet.la
-
-dist-hook:
-       echo @GIT_HEAD_VERSION@ > $(distdir)/GIT_HEAD_ID
-
-gitversion.h: @GIT_HEAD@
-       $(AM_V_GEN)echo '#define GIT_HEAD_ID "'@GIT_HEAD_VERSION@'"' > $@
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/polly/lib/External/ppcg/aclocal.m4 b/polly/lib/External/ppcg/aclocal.m4
deleted file mode 100644 (file)
index 1a669ee..0000000
+++ /dev/null
@@ -1,1376 +0,0 @@
-# generated automatically by aclocal 1.15 -*- Autoconf -*-
-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
-
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
-[m4_warning([this file was generated for autoconf 2.69.
-You have another version of autoconf.  It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-
-# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-# 
-# Copyright Â© 2004 Scott James Remnant <scott@netsplit.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
-AC_DEFUN([PKG_PROG_PKG_CONFIG],
-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
-m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
-AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
-AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
-fi
-if test -n "$PKG_CONFIG"; then
-       _pkg_min_version=m4_default([$1], [0.9.0])
-       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
-       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-               AC_MSG_RESULT([yes])
-       else
-               AC_MSG_RESULT([no])
-               PKG_CONFIG=""
-       fi
-fi[]dnl
-])# PKG_PROG_PKG_CONFIG
-
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists.  Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_EXISTS],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-if test -n "$PKG_CONFIG" && \
-    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
-  m4_default([$2], [:])
-m4_ifvaln([$3], [else
-  $3])dnl
-fi])
-
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
-m4_define([_PKG_CONFIG],
-[if test -n "$$1"; then
-    pkg_cv_[]$1="$$1"
- elif test -n "$PKG_CONFIG"; then
-    PKG_CHECK_EXISTS([$3],
-                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes ],
-                    [pkg_failed=yes])
- else
-    pkg_failed=untried
-fi[]dnl
-])# _PKG_CONFIG
-
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
-
-
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_MODULES],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
-
-pkg_failed=no
-AC_MSG_CHECKING([for $1])
-
-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
-
-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
-and $1[]_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.])
-
-if test $pkg_failed = yes; then
-       AC_MSG_RESULT([no])
-        _PKG_SHORT_ERRORS_SUPPORTED
-        if test $_pkg_short_errors_supported = yes; then
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
-        else 
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
-
-       m4_default([$4], [AC_MSG_ERROR(
-[Package requirements ($2) were not met:
-
-$$1_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-_PKG_TEXT])[]dnl
-        ])
-elif test $pkg_failed = untried; then
-       AC_MSG_RESULT([no])
-       m4_default([$4], [AC_MSG_FAILURE(
-[The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-_PKG_TEXT
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
-        ])
-else
-       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
-       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
-        AC_MSG_RESULT([yes])
-       $3
-fi[]dnl
-])# PKG_CHECK_MODULES
-
-
-# PKG_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable pkgconfigdir as the location where a module
-# should install pkg-config .pc files. By default the directory is
-# $libdir/pkgconfig, but the default can be changed by passing
-# DIRECTORY. The user can override through the --with-pkgconfigdir
-# parameter.
-AC_DEFUN([PKG_INSTALLDIR],
-[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
-m4_pushdef([pkg_description],
-    [pkg-config installation directory @<:@]pkg_default[@:>@])
-AC_ARG_WITH([pkgconfigdir],
-    [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
-    [with_pkgconfigdir=]pkg_default)
-AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
-m4_popdef([pkg_default])
-m4_popdef([pkg_description])
-]) dnl PKG_INSTALLDIR
-
-
-# PKG_NOARCH_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable noarch_pkgconfigdir as the location where a
-# module should install arch-independent pkg-config .pc files. By
-# default the directory is $datadir/pkgconfig, but the default can be
-# changed by passing DIRECTORY. The user can override through the
-# --with-noarch-pkgconfigdir parameter.
-AC_DEFUN([PKG_NOARCH_INSTALLDIR],
-[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
-m4_pushdef([pkg_description],
-    [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
-AC_ARG_WITH([noarch-pkgconfigdir],
-    [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
-    [with_noarch_pkgconfigdir=]pkg_default)
-AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
-m4_popdef([pkg_default])
-m4_popdef([pkg_description])
-]) dnl PKG_NOARCH_INSTALLDIR
-
-
-# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-# -------------------------------------------
-# Retrieves the value of the pkg-config variable for the given module.
-AC_DEFUN([PKG_CHECK_VAR],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
-
-_PKG_CONFIG([$1], [variable="][$3]["], [$2])
-AS_VAR_COPY([$1], [pkg_cv_][$1])
-
-AS_VAR_IF([$1], [""], [$5], [$4])dnl
-])# PKG_CHECK_VAR
-
-# Copyright (C) 2002-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.15'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.15], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too.  Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.15])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
-
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
-# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is '.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-# Expand $ac_aux_dir to an absolute path.
-am_aux_dir=`cd "$ac_aux_dir" && pwd`
-])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
-      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
-      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                    [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  am__universal=false
-  m4_case([$1], [CC],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac],
-    [CXX],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac])
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
-  [--enable-dependency-tracking],
-  [do not reject slow dependency extractors])
-AS_HELP_STRING(
-  [--disable-dependency-tracking],
-  [speeds up one-time build])])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`AS_DIRNAME("$mf")`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`AS_DIRNAME(["$file"])`
-      AS_MKDIR_P([$dirpart/$fdir])
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each '.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
-
-dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
-m4_define([AC_PROG_CC],
-m4_defn([AC_PROG_CC])
-[_AM_PROG_CC_C_O
-])
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.65])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
-             [$0: two- and three-arguments forms are deprecated.])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(
-  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-  [ok:ok],,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target (and possibly the TAP driver).  The
-# system "awk" is bad on some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-                            [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-                 [_AM_DEPENDENCIES([CC])],
-                 [m4_define([AC_PROG_CC],
-                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                 [_AM_DEPENDENCIES([CXX])],
-                 [m4_define([AC_PROG_CXX],
-                            m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                 [_AM_DEPENDENCIES([OBJC])],
-                 [m4_define([AC_PROG_OBJC],
-                            m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-                 [_AM_DEPENDENCIES([OBJCXX])],
-                 [m4_define([AC_PROG_OBJCXX],
-                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
-])
-AC_REQUIRE([AM_SILENT_RULES])dnl
-dnl The testsuite driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
-  fi
-fi
-dnl The trailing newline in this macro's definition is deliberate, for
-dnl backward compatibility and to allow trailing 'dnl'-style comments
-dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
-])
-
-dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-AC_SUBST([install_sh])])
-
-# Copyright (C) 2003-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes.                 -*- Autoconf -*-
-
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-       @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it is modern enough.
-# If it is, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  AC_MSG_WARN(['missing' script is too old or missing])
-fi
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# --------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_CC_C_O
-# ---------------
-# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
-# to automatically call this.
-AC_DEFUN([_AM_PROG_CC_C_O],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-AC_LANG_PUSH([C])dnl
-AC_CACHE_CHECK(
-  [whether $CC understands -c and -o together],
-  [am_cv_prog_cc_c_o],
-  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i])
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-AC_LANG_POP([C])])
-
-# For backward compatibility.
-AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_RUN_LOG(COMMAND)
-# -------------------
-# Run COMMAND, save the exit status in ac_status, and log it.
-# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
-AC_DEFUN([AM_RUN_LOG],
-[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   (exit $ac_status); }])
-
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[[\\\"\#\$\&\'\`$am_lf]]*)
-    AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
-  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
-    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$[*]" = "X"; then
-       # -L didn't work.
-       set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$[*]" != "X $srcdir/configure conftest.file" \
-       && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-       # If neither matched, then we have a broken ls.  This can happen
-       # if, for instance, CONFIG_SHELL is bash and it inherits a
-       # broken ls alias from the environment.  This has actually
-       # happened.  Such a system could not be considered "sane".
-       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment])
-     fi
-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
-  [AC_MSG_CHECKING([that generated files are newer than configure])
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
-
-# Copyright (C) 2009-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SILENT_RULES([DEFAULT])
-# --------------------------
-# Enable less verbose build rules; with the default set to DEFAULT
-# ("yes" being less verbose, "no" or empty being verbose).
-AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules], [dnl
-AS_HELP_STRING(
-  [--enable-silent-rules],
-  [less verbose build output (undo: "make V=1")])
-AS_HELP_STRING(
-  [--disable-silent-rules],
-  [verbose build output (undo: "make V=0")])dnl
-])
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
-dnl
-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
-dnl do not support nested variable expansions.
-dnl See automake bug#9928 and bug#10237.
-am_make=${MAKE-make}
-AC_CACHE_CHECK([whether $am_make supports nested variables],
-   [am_cv_make_support_nested_variables],
-   [if AS_ECHO([['TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi])
-if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
-  AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AC_SUBST([AM_V])dnl
-AM_SUBST_NOTMAKE([AM_V])dnl
-AC_SUBST([AM_DEFAULT_V])dnl
-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor 'install' (even GNU) is that you can't
-# specify the program used to strip binaries.  This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in "make install-strip", and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# --------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball.                            -*- Autoconf -*-
-
-# Copyright (C) 2004-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of 'v7', 'ustar', or 'pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-#     tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-#     $(am__untar) < result.tar
-#
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-
-m4_if([$1], [v7],
-  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-
-  [m4_case([$1],
-    [ustar],
-     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
-      # There is notably a 21 bits limit for the UID and the GID.  In fact,
-      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
-      # and bug#13588).
-      am_max_uid=2097151 # 2^21 - 1
-      am_max_gid=$am_max_uid
-      # The $UID and $GID variables are not portable, so we need to resort
-      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
-      # below are definitely unexpected, so allow the users to see them
-      # (that is, avoid stderr redirection).
-      am_uid=`id -u || echo unknown`
-      am_gid=`id -g || echo unknown`
-      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
-      if test $am_uid -le $am_max_uid; then
-         AC_MSG_RESULT([yes])
-      else
-         AC_MSG_RESULT([no])
-         _am_tools=none
-      fi
-      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
-      if test $am_gid -le $am_max_gid; then
-         AC_MSG_RESULT([yes])
-      else
-        AC_MSG_RESULT([no])
-        _am_tools=none
-      fi],
-
-  [pax],
-    [],
-
-  [m4_fatal([Unknown tar format])])
-
-  AC_MSG_CHECKING([how to create a $1 tar archive])
-
-  # Go ahead even if we have the value already cached.  We do so because we
-  # need to set the values for the 'am__tar' and 'am__untar' variables.
-  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
-
-  for _am_tool in $_am_tools; do
-    case $_am_tool in
-    gnutar)
-      for _am_tar in tar gnutar gtar; do
-        AM_RUN_LOG([$_am_tar --version]) && break
-      done
-      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-      am__untar="$_am_tar -xf -"
-      ;;
-    plaintar)
-      # Must skip GNU tar: if it does not support --format= it doesn't create
-      # ustar tarball either.
-      (tar --version) >/dev/null 2>&1 && continue
-      am__tar='tar chf - "$$tardir"'
-      am__tar_='tar chf - "$tardir"'
-      am__untar='tar xf -'
-      ;;
-    pax)
-      am__tar='pax -L -x $1 -w "$$tardir"'
-      am__tar_='pax -L -x $1 -w "$tardir"'
-      am__untar='pax -r'
-      ;;
-    cpio)
-      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-      am__untar='cpio -i -H $1 -d'
-      ;;
-    none)
-      am__tar=false
-      am__tar_=false
-      am__untar=false
-      ;;
-    esac
-
-    # If the value was cached, stop now.  We just wanted to have am__tar
-    # and am__untar set.
-    test -n "${am_cv_prog_tar_$1}" && break
-
-    # tar/untar a dummy directory, and stop if the command works.
-    rm -rf conftest.dir
-    mkdir conftest.dir
-    echo GrepMe > conftest.dir/file
-    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-    rm -rf conftest.dir
-    if test -s conftest.tar; then
-      AM_RUN_LOG([$am__untar <conftest.tar])
-      AM_RUN_LOG([cat conftest.dir/file])
-      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-    fi
-  done
-  rm -rf conftest.dir
-
-  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
-m4_include([m4/ax_check_opencl.m4])
-m4_include([m4/ax_check_openmp.m4])
-m4_include([m4/ax_detect_git_head.m4])
-m4_include([m4/ax_submodule.m4])
-m4_include([m4/libtool.m4])
-m4_include([m4/ltoptions.m4])
-m4_include([m4/ltsugar.m4])
-m4_include([m4/ltversion.m4])
-m4_include([m4/lt~obsolete.m4])
diff --git a/polly/lib/External/ppcg/compile b/polly/lib/External/ppcg/compile
deleted file mode 100755 (executable)
index 531136b..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-#! /bin/sh
-# Wrapper for compilers which do not understand '-c -o'.
-
-scriptversion=2012-10-14.11; # UTC
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey@cygnus.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-nl='
-'
-
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent tools from complaining about whitespace usage.
-IFS=" ""       $nl"
-
-file_conv=
-
-# func_file_conv build_file lazy
-# Convert a $build file to $host form and store it in $file
-# Currently only supports Windows hosts. If the determined conversion
-# type is listed in (the comma separated) LAZY, no conversion will
-# take place.
-func_file_conv ()
-{
-  file=$1
-  case $file in
-    / | /[!/]*) # absolute file, and not a UNC file
-      if test -z "$file_conv"; then
-       # lazily determine how to convert abs files
-       case `uname -s` in
-         MINGW*)
-           file_conv=mingw
-           ;;
-         CYGWIN*)
-           file_conv=cygwin
-           ;;
-         *)
-           file_conv=wine
-           ;;
-       esac
-      fi
-      case $file_conv/,$2, in
-       *,$file_conv,*)
-         ;;
-       mingw/*)
-         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
-         ;;
-       cygwin/*)
-         file=`cygpath -m "$file" || echo "$file"`
-         ;;
-       wine/*)
-         file=`winepath -w "$file" || echo "$file"`
-         ;;
-      esac
-      ;;
-  esac
-}
-
-# func_cl_dashL linkdir
-# Make cl look for libraries in LINKDIR
-func_cl_dashL ()
-{
-  func_file_conv "$1"
-  if test -z "$lib_path"; then
-    lib_path=$file
-  else
-    lib_path="$lib_path;$file"
-  fi
-  linker_opts="$linker_opts -LIBPATH:$file"
-}
-
-# func_cl_dashl library
-# Do a library search-path lookup for cl
-func_cl_dashl ()
-{
-  lib=$1
-  found=no
-  save_IFS=$IFS
-  IFS=';'
-  for dir in $lib_path $LIB
-  do
-    IFS=$save_IFS
-    if $shared && test -f "$dir/$lib.dll.lib"; then
-      found=yes
-      lib=$dir/$lib.dll.lib
-      break
-    fi
-    if test -f "$dir/$lib.lib"; then
-      found=yes
-      lib=$dir/$lib.lib
-      break
-    fi
-    if test -f "$dir/lib$lib.a"; then
-      found=yes
-      lib=$dir/lib$lib.a
-      break
-    fi
-  done
-  IFS=$save_IFS
-
-  if test "$found" != yes; then
-    lib=$lib.lib
-  fi
-}
-
-# func_cl_wrapper cl arg...
-# Adjust compile command to suit cl
-func_cl_wrapper ()
-{
-  # Assume a capable shell
-  lib_path=
-  shared=:
-  linker_opts=
-  for arg
-  do
-    if test -n "$eat"; then
-      eat=
-    else
-      case $1 in
-       -o)
-         # configure might choose to run compile as 'compile cc -o foo foo.c'.
-         eat=1
-         case $2 in
-           *.o | *.[oO][bB][jJ])
-             func_file_conv "$2"
-             set x "$@" -Fo"$file"
-             shift
-             ;;
-           *)
-             func_file_conv "$2"
-             set x "$@" -Fe"$file"
-             shift
-             ;;
-         esac
-         ;;
-       -I)
-         eat=1
-         func_file_conv "$2" mingw
-         set x "$@" -I"$file"
-         shift
-         ;;
-       -I*)
-         func_file_conv "${1#-I}" mingw
-         set x "$@" -I"$file"
-         shift
-         ;;
-       -l)
-         eat=1
-         func_cl_dashl "$2"
-         set x "$@" "$lib"
-         shift
-         ;;
-       -l*)
-         func_cl_dashl "${1#-l}"
-         set x "$@" "$lib"
-         shift
-         ;;
-       -L)
-         eat=1
-         func_cl_dashL "$2"
-         ;;
-       -L*)
-         func_cl_dashL "${1#-L}"
-         ;;
-       -static)
-         shared=false
-         ;;
-       -Wl,*)
-         arg=${1#-Wl,}
-         save_ifs="$IFS"; IFS=','
-         for flag in $arg; do
-           IFS="$save_ifs"
-           linker_opts="$linker_opts $flag"
-         done
-         IFS="$save_ifs"
-         ;;
-       -Xlinker)
-         eat=1
-         linker_opts="$linker_opts $2"
-         ;;
-       -*)
-         set x "$@" "$1"
-         shift
-         ;;
-       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
-         func_file_conv "$1"
-         set x "$@" -Tp"$file"
-         shift
-         ;;
-       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
-         func_file_conv "$1" mingw
-         set x "$@" "$file"
-         shift
-         ;;
-       *)
-         set x "$@" "$1"
-         shift
-         ;;
-      esac
-    fi
-    shift
-  done
-  if test -n "$linker_opts"; then
-    linker_opts="-link$linker_opts"
-  fi
-  exec "$@" $linker_opts
-  exit 1
-}
-
-eat=
-
-case $1 in
-  '')
-     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: compile [--help] [--version] PROGRAM [ARGS]
-
-Wrapper for compilers which do not understand '-c -o'.
-Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
-arguments, and rename the output as expected.
-
-If you are trying to build a whole package this is not the
-right script to run: please start by reading the file 'INSTALL'.
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "compile $scriptversion"
-    exit $?
-    ;;
-  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
-    func_cl_wrapper "$@"      # Doesn't return...
-    ;;
-esac
-
-ofile=
-cfile=
-
-for arg
-do
-  if test -n "$eat"; then
-    eat=
-  else
-    case $1 in
-      -o)
-       # configure might choose to run compile as 'compile cc -o foo foo.c'.
-       # So we strip '-o arg' only if arg is an object.
-       eat=1
-       case $2 in
-         *.o | *.obj)
-           ofile=$2
-           ;;
-         *)
-           set x "$@" -o "$2"
-           shift
-           ;;
-       esac
-       ;;
-      *.c)
-       cfile=$1
-       set x "$@" "$1"
-       shift
-       ;;
-      *)
-       set x "$@" "$1"
-       shift
-       ;;
-    esac
-  fi
-  shift
-done
-
-if test -z "$ofile" || test -z "$cfile"; then
-  # If no '-o' option was seen then we might have been invoked from a
-  # pattern rule where we don't need one.  That is ok -- this is a
-  # normal compilation that the losing compiler can handle.  If no
-  # '.c' file was seen then we are probably linking.  That is also
-  # ok.
-  exec "$@"
-fi
-
-# Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
-
-# Create the lock directory.
-# Note: use '[/\\:.-]' here to ensure that we don't use the same name
-# that we are using for the .o file.  Also, base the name on the expected
-# object file name, since that is what matters with a parallel build.
-lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
-while true; do
-  if mkdir "$lockdir" >/dev/null 2>&1; then
-    break
-  fi
-  sleep 1
-done
-# FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir '$lockdir'; exit 1" 1 2 15
-
-# Run the compile.
-"$@"
-ret=$?
-
-if test -f "$cofile"; then
-  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
-  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
-fi
-
-rmdir "$lockdir"
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/ppcg/config.guess b/polly/lib/External/ppcg/config.guess
deleted file mode 100644 (file)
index d622a44..0000000
+++ /dev/null
@@ -1,1530 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-#   2011, 2012 Free Software Foundation, Inc.
-
-timestamp='2012-02-10'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner.  Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-       for c in cc gcc c89 c99 ; do
-         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-            CC_FOR_BUILD="$c"; break ;
-         fi ;
-       done ;
-       if test x"$CC_FOR_BUILD" = x ; then
-         CC_FOR_BUILD=no_compiler_found ;
-       fi
-       ;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-       # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-       # switched to ELF, *-*-netbsd* would select the old
-       # object file format.  This provides both forward
-       # compatibility and a consistent mechanism for selecting the
-       # object file format.
-       #
-       # Note: NetBSD doesn't particularly care about the vendor
-       # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-       case "${UNAME_MACHINE_ARCH}" in
-           armeb) machine=armeb-unknown ;;
-           arm*) machine=arm-unknown ;;
-           sh3el) machine=shl-unknown ;;
-           sh3eb) machine=sh-unknown ;;
-           sh5el) machine=sh5le-unknown ;;
-           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-       esac
-       # The Operating System including object format, if it has switched
-       # to ELF recently, or will in the future.
-       case "${UNAME_MACHINE_ARCH}" in
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               eval $set_cc_for_build
-               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
-               then
-                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-                   # Return netbsd for either.  FIX?
-                   os=netbsd
-               else
-                   os=netbsdelf
-               fi
-               ;;
-           *)
-               os=netbsd
-               ;;
-       esac
-       # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "${UNAME_VERSION}" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-               ;;
-       esac
-       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-       # contains redundant information, the shorter form:
-       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "${machine}-${os}${release}"
-       exit ;;
-    *:OpenBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-       exit ;;
-    *:ekkoBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-       exit ;;
-    *:SolidBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-       exit ;;
-    macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-       exit ;;
-    *:MirBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-       exit ;;
-    alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-               ;;
-       *5.*)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE="alpha" ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE="alpha" ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE="alpha" ;;
-           "EV5 (21164)")
-               UNAME_MACHINE="alphaev5" ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE="alphaev56" ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE="alphapca56" ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE="alphapca57" ;;
-           "EV6 (21264)")
-               UNAME_MACHINE="alphaev6" ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE="alphaev67" ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE="alphaev69" ;;
-           "EV7 (21364)")
-               UNAME_MACHINE="alphaev7" ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE="alphaev79" ;;
-       esac
-       # A Pn.n version is a patched version.
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # Should we change UNAME_MACHINE based on the output of uname instead
-       # of the specific Alpha model?
-       echo alpha-pc-interix
-       exit ;;
-    21064:Windows_NT:50:3)
-       echo alpha-dec-winnt3.5
-       exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-amigaos
-       exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-morphos
-       exit ;;
-    *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
-    *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix${UNAME_RELEASE}
-       exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "`(/bin/universe) 2>/dev/null`" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
-    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-       case `/usr/bin/uname -p` in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
-    s390x:SunOS:*:*)
-       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux${UNAME_RELEASE}
-       exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       eval $set_cc_for_build
-       SUN_ARCH="i386"
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH="x86_64"
-           fi
-       fi
-       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:*:*)
-       case "`/usr/bin/arch -k`" in
-           Series*|S4*)
-               UNAME_RELEASE=`uname -v`
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-       exit ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos${UNAME_RELEASE}
-       exit ;;
-    sun*:*:4.2BSD:*)
-       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-       case "`/bin/arch`" in
-           sun3)
-               echo m68k-sun-sunos${UNAME_RELEASE}
-               ;;
-           sun4)
-               echo sparc-sun-sunos${UNAME_RELEASE}
-               ;;
-       esac
-       exit ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos${UNAME_RELEASE}
-       exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint${UNAME_RELEASE}
-       exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint${UNAME_RELEASE}
-       exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint${UNAME_RELEASE}
-       exit ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten${UNAME_RELEASE}
-       exit ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten${UNAME_RELEASE}
-       exit ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix${UNAME_RELEASE}
-       exit ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix${UNAME_RELEASE}
-       exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix${UNAME_RELEASE}
-       exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c &&
-         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-         SYSTEM_NAME=`$dummy $dummyarg` &&
-           { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos${UNAME_RELEASE}
-       exit ;;
-    Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
-    AViiON:dgux:*:*)
-       # DG/UX returns AViiON for all architectures
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-       then
-           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-              [ ${TARGET_BINARY_INTERFACE}x = x ]
-           then
-               echo m88k-dg-dgux${UNAME_RELEASE}
-           else
-               echo m88k-dg-dguxbcs${UNAME_RELEASE}
-           fi
-       else
-           echo i586-dg-dgux${UNAME_RELEASE}
-       fi
-       exit ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-       exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
-    ia64:AIX:*:*)
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-       fi
-       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-       exit ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               eval $set_cc_for_build
-               sed 's/^                //' << EOF >$dummy.c
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-               then
-                       echo "$SYSTEM_NAME"
-               else
-                       echo rs6000-ibm-aix3.2.5
-               fi
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit ;;
-    *:AIX:*:[4567])
-       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-       fi
-       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-       exit ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
-    9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       case "${UNAME_MACHINE}" in
-           9000/31? )            HP_ARCH=m68000 ;;
-           9000/[34]?? )         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9])
-               if [ -x /usr/bin/getconf ]; then
-                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                   case "${sc_cpu_version}" in
-                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                     532)                      # CPU_PA_RISC2_0
-                       case "${sc_kernel_bits}" in
-                         32) HP_ARCH="hppa2.0n" ;;
-                         64) HP_ARCH="hppa2.0w" ;;
-                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                       esac ;;
-                   esac
-               fi
-               if [ "${HP_ARCH}" = "" ]; then
-                   eval $set_cc_for_build
-                   sed 's/^            //' << EOF >$dummy.c
-
-               #define _HPUX_SOURCE
-               #include <stdlib.h>
-               #include <unistd.h>
-
-               int main ()
-               {
-               #if defined(_SC_KERNEL_BITS)
-                   long bits = sysconf(_SC_KERNEL_BITS);
-               #endif
-                   long cpu  = sysconf (_SC_CPU_VERSION);
-
-                   switch (cpu)
-                       {
-                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-                       case CPU_PA_RISC2_0:
-               #if defined(_SC_KERNEL_BITS)
-                           switch (bits)
-                               {
-                               case 64: puts ("hppa2.0w"); break;
-                               case 32: puts ("hppa2.0n"); break;
-                               default: puts ("hppa2.0"); break;
-                               } break;
-               #else  /* !defined(_SC_KERNEL_BITS) */
-                           puts ("hppa2.0"); break;
-               #endif
-                       default: puts ("hppa1.0"); break;
-                       }
-                   exit (0);
-               }
-EOF
-                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
-               fi ;;
-       esac
-       if [ ${HP_ARCH} = "hppa2.0w" ]
-       then
-           eval $set_cc_for_build
-
-           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-           # generating 64-bit code.  GNU and HP use different nomenclature:
-           #
-           # $ CC_FOR_BUILD=cc ./config.guess
-           # => hppa2.0w-hp-hpux11.23
-           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-           # => hppa64-hp-hpux11.23
-
-           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
-           then
-               HP_ARCH="hppa2.0w"
-           else
-               HP_ARCH="hppa64"
-           fi
-       fi
-       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-       exit ;;
-    ia64:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       echo ia64-hp-hpux${HPUX_REV}
-       exit ;;
-    3050*:HI-UX:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-               { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-       echo hppa1.1-hp-bsd
-       exit ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-       echo hppa1.1-hp-osf
-       exit ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
-    i*86:OSF1:*:*)
-       if [ -x /usr/sbin/sysversion ] ; then
-           echo ${UNAME_MACHINE}-unknown-osf1mk
-       else
-           echo ${UNAME_MACHINE}-unknown-osf1
-       fi
-       exit ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-             -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-       exit ;;
-    sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi${UNAME_RELEASE}
-       exit ;;
-    *:BSD/OS:*:*)
-       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-       exit ;;
-    *:FreeBSD:*:*)
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       case ${UNAME_PROCESSOR} in
-           amd64)
-               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-           *)
-               echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-       esac
-       exit ;;
-    i*:CYGWIN*:*)
-       echo ${UNAME_MACHINE}-pc-cygwin
-       exit ;;
-    *:MINGW*:*)
-       echo ${UNAME_MACHINE}-pc-mingw32
-       exit ;;
-    i*:MSYS*:*)
-       echo ${UNAME_MACHINE}-pc-msys
-       exit ;;
-    i*:windows32*:*)
-       # uname -m includes "-pc" on this system.
-       echo ${UNAME_MACHINE}-mingw32
-       exit ;;
-    i*:PW*:*)
-       echo ${UNAME_MACHINE}-pc-pw32
-       exit ;;
-    *:Interix*:*)
-       case ${UNAME_MACHINE} in
-           x86)
-               echo i586-pc-interix${UNAME_RELEASE}
-               exit ;;
-           authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix${UNAME_RELEASE}
-               exit ;;
-           IA64)
-               echo ia64-unknown-interix${UNAME_RELEASE}
-               exit ;;
-       esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-       echo i${UNAME_MACHINE}-pc-mks
-       exit ;;
-    8664:Windows_NT:*)
-       echo x86_64-pc-mks
-       exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-       # UNAME_MACHINE based on the output of uname instead of i386?
-       echo i586-pc-interix
-       exit ;;
-    i*:UWIN*:*)
-       echo ${UNAME_MACHINE}-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-unknown-cygwin
-       exit ;;
-    p*:CYGWIN*:*)
-       echo powerpcle-unknown-cygwin
-       exit ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    *:GNU:*:*)
-       # the GNU system
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-       exit ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-       exit ;;
-    i*86:Minix:*:*)
-       echo ${UNAME_MACHINE}-pc-minix
-       exit ;;
-    aarch64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    aarch64_be:Linux:*:*)
-       UNAME_MACHINE=aarch64_be
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-       esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-       exit ;;
-    arm*:Linux:*:*)
-       eval $set_cc_for_build
-       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_EABI__
-       then
-           echo ${UNAME_MACHINE}-unknown-linux-gnu
-       else
-           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep -q __ARM_PCS_VFP
-           then
-               echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-           else
-               echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
-           fi
-       fi
-       exit ;;
-    avr32*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    cris:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-gnu
-       exit ;;
-    crisv32:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-gnu
-       exit ;;
-    frv:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    hexagon:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    i*86:Linux:*:*)
-       LIBC=gnu
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #ifdef __dietlibc__
-       LIBC=dietlibc
-       #endif
-EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-       echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-       exit ;;
-    ia64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    m68*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #undef CPU
-       #undef ${UNAME_MACHINE}
-       #undef ${UNAME_MACHINE}el
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=${UNAME_MACHINE}el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=${UNAME_MACHINE}
-       #else
-       CPU=
-       #endif
-       #endif
-EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-       ;;
-    or32:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-gnu
-       exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-gnu
-       exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-       # Look for CPU level
-       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-gnu ;;
-         PA8*) echo hppa2.0-unknown-linux-gnu ;;
-         *)    echo hppa-unknown-linux-gnu ;;
-       esac
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-gnu
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-gnu
-       exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-       echo ${UNAME_MACHINE}-ibm-linux
-       exit ;;
-    sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    sh*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    tile*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    vax:Linux:*:*)
-       echo ${UNAME_MACHINE}-dec-linux-gnu
-       exit ;;
-    x86_64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit ;;
-    i*86:DYNIX/ptx:4*:*)
-       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-       # earlier versions are messed up and put the nodename in both
-       # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-       # Unixware is an offshoot of SVR4, but it has its own version
-       # number series starting with 2...
-       # I am not positive that other SVR4 systems won't match this,
-       # I just have to hope.  -- rms.
-       # Use sysv4.2uw... so that sysv4* matches it.
-       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-       exit ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo ${UNAME_MACHINE}-pc-os2-emx
-       exit ;;
-    i*86:XTS-300:*:STOP)
-       echo ${UNAME_MACHINE}-unknown-stop
-       exit ;;
-    i*86:atheos:*:*)
-       echo ${UNAME_MACHINE}-unknown-atheos
-       exit ;;
-    i*86:syllable:*:*)
-       echo ${UNAME_MACHINE}-pc-syllable
-       exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    i*86:*DOS:*:*)
-       echo ${UNAME_MACHINE}-pc-msdosdjgpp
-       exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-       else
-               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-       fi
-       exit ;;
-    i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
-       case `/bin/uname -X | grep "^Machine"` in
-           *486*)           UNAME_MACHINE=i486 ;;
-           *Pentium)        UNAME_MACHINE=i586 ;;
-           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-       esac
-       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-       exit ;;
-    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-       else
-               echo ${UNAME_MACHINE}-pc-sysv32
-       fi
-       exit ;;
-    pc:*:*:*)
-       # Left here for compatibility:
-       # uname -m prints for DJGPP always 'pc', but it prints nothing about
-       # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configury will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-       fi
-       exit ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
-    M68*:*:R3V[5678]*:*)
-       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv${UNAME_RELEASE}
-       exit ;;
-    RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo ${UNAME_MACHINE}-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                       # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo ${UNAME_MACHINE}-stratus-vos
-       exit ;;
-    *:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux${UNAME_RELEASE}
-       exit ;;
-    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if [ -d /usr/nec ]; then
-               echo mips-nec-sysv${UNAME_RELEASE}
-       else
-               echo mips-unknown-sysv${UNAME_RELEASE}
-       fi
-       exit ;;
-    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
-    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
-    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
-    SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux${UNAME_RELEASE}
-       exit ;;
-    Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody${UNAME_RELEASE}
-       exit ;;
-    *:Rhapsody:*:*)
-       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-       exit ;;
-    *:Darwin:*:*)
-       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       case $UNAME_PROCESSOR in
-           i386)
-               eval $set_cc_for_build
-               if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-                 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                     (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-                     grep IS_64BIT_ARCH >/dev/null
-                 then
-                     UNAME_PROCESSOR="x86_64"
-                 fi
-               fi ;;
-           unknown) UNAME_PROCESSOR=powerpc ;;
-       esac
-       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-       exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-       UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = "x86"; then
-               UNAME_PROCESSOR=i386
-               UNAME_MACHINE=pc
-       fi
-       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-       exit ;;
-    *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
-    BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
-    DS/*:UNIX_System_V:*:*)
-       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-       exit ;;
-    *:Plan9:*:*)
-       # "uname -m" is not consistent, so use $cputype instead. 386
-       # is converted to i386 for consistency with other x86
-       # operating systems.
-       if test "$cputype" = "386"; then
-           UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
-       fi
-       echo ${UNAME_MACHINE}-unknown-plan9
-       exit ;;
-    *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
-    *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
-    *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
-    *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
-    SEI:*:*:SEIUX)
-       echo mips-sei-seiux${UNAME_RELEASE}
-       exit ;;
-    *:DragonFly:*:*)
-       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-       exit ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "${UNAME_MACHINE}" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
-    i*86:skyos:*:*)
-       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-       exit ;;
-    i*86:rdos:*:*)
-       echo ${UNAME_MACHINE}-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo ${UNAME_MACHINE}-pc-aros
-       exit ;;
-    x86_64:VMkernel:*:*)
-       echo ${UNAME_MACHINE}-unknown-esx
-       exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-       "4"
-#else
-       ""
-#endif
-       ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-       printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-       printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-       echo c1-convex-bsd
-       exit ;;
-    c2*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    c34*)
-       echo c34-convex-bsd
-       exit ;;
-    c38*)
-       echo c38-convex-bsd
-       exit ;;
-    c4*)
-       echo c4-convex-bsd
-       exit ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/polly/lib/External/ppcg/config.sub b/polly/lib/External/ppcg/config.sub
deleted file mode 100644 (file)
index d97f300..0000000
+++ /dev/null
@@ -1,1775 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-#   2011, 2012 Free Software Foundation, Inc.
-
-timestamp='2012-04-18'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-       -sun*os*)
-               # Prevent following clause from handling this invalid input.
-               ;;
-       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray | -microblaze)
-               os=
-               basic_machine=$1
-               ;;
-       -sim | -cisco | -oki | -wec | -winbond)
-               os=
-               basic_machine=$1
-               ;;
-       -scout)
-               ;;
-       -wrs)
-               os=-vxworks
-               basic_machine=$1
-               ;;
-       -chorusos*)
-               os=-chorusos
-               basic_machine=$1
-               ;;
-       -chorusrdb)
-               os=-chorusrdb
-               basic_machine=$1
-               ;;
-       -hiux*)
-               os=-hiuxwe2
-               ;;
-       -sco6)
-               os=-sco5v6
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5)
-               os=-sco3.2v5
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco4)
-               os=-sco3.2v4
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2v[4-9]*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco*)
-               os=-sco3.2v2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -udk*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -isc)
-               os=-isc2.2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -clix*)
-               basic_machine=clipper-intergraph
-               ;;
-       -isc*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -lynx*178)
-               os=-lynxos178
-               ;;
-       -lynx*5)
-               os=-lynxos5
-               ;;
-       -lynx*)
-               os=-lynxos
-               ;;
-       -ptx*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-               ;;
-       -windowsnt*)
-               os=`echo $os | sed -e 's/windowsnt/winnt/'`
-               ;;
-       -psos*)
-               os=-psos
-               ;;
-       -mint | -mint[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-       # Recognize the basic CPU types without company name.
-       # Some are omitted here because they have special meanings below.
-       1750a | 580 \
-       | a29k \
-       | aarch64 | aarch64_be \
-       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-       | am33_2.0 \
-       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-        | be32 | be64 \
-       | bfin \
-       | c4x | clipper \
-       | d10v | d30v | dlx | dsp16xx \
-       | epiphany \
-       | fido | fr30 | frv \
-       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-       | hexagon \
-       | i370 | i860 | i960 | ia64 \
-       | ip2k | iq2000 \
-       | le32 | le64 \
-       | lm32 \
-       | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | mcore | mep | metag \
-       | mips | mipsbe | mipseb | mipsel | mipsle \
-       | mips16 \
-       | mips64 | mips64el \
-       | mips64octeon | mips64octeonel \
-       | mips64orion | mips64orionel \
-       | mips64r5900 | mips64r5900el \
-       | mips64vr | mips64vrel \
-       | mips64vr4100 | mips64vr4100el \
-       | mips64vr4300 | mips64vr4300el \
-       | mips64vr5000 | mips64vr5000el \
-       | mips64vr5900 | mips64vr5900el \
-       | mipsisa32 | mipsisa32el \
-       | mipsisa32r2 | mipsisa32r2el \
-       | mipsisa64 | mipsisa64el \
-       | mipsisa64r2 | mipsisa64r2el \
-       | mipsisa64sb1 | mipsisa64sb1el \
-       | mipsisa64sr71k | mipsisa64sr71kel \
-       | mipstx39 | mipstx39el \
-       | mn10200 | mn10300 \
-       | moxie \
-       | mt \
-       | msp430 \
-       | nds32 | nds32le | nds32be \
-       | nios | nios2 \
-       | ns16k | ns32k \
-       | open8 \
-       | or32 \
-       | pdp10 | pdp11 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle \
-       | pyramid \
-       | rl78 | rx \
-       | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-       | sh64 | sh64le \
-       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-       | spu \
-       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-       | ubicom32 \
-       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-       | we32k \
-       | x86 | xc16x | xstormy16 | xtensa \
-       | z8k | z80)
-               basic_machine=$basic_machine-unknown
-               ;;
-       c54x)
-               basic_machine=tic54x-unknown
-               ;;
-       c55x)
-               basic_machine=tic55x-unknown
-               ;;
-       c6x)
-               basic_machine=tic6x-unknown
-               ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-               ;;
-       ms1)
-               basic_machine=mt-unknown
-               ;;
-
-       strongarm | thumb | xscale)
-               basic_machine=arm-unknown
-               ;;
-       xgate)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       xscaleeb)
-               basic_machine=armeb-unknown
-               ;;
-
-       xscaleel)
-               basic_machine=armel-unknown
-               ;;
-
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-         basic_machine=$basic_machine-pc
-         ;;
-       # Object if more than one company name word.
-       *-*-*)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-       # Recognize the basic CPU types with company name.
-       580-* \
-       | a29k-* \
-       | aarch64-* | aarch64_be-* \
-       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-       | avr-* | avr32-* \
-       | be32-* | be64-* \
-       | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | clipper-* | craynv-* | cydra-* \
-       | d10v-* | d30v-* | dlx-* \
-       | elxsi-* \
-       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-       | h8300-* | h8500-* \
-       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-       | hexagon-* \
-       | i*86-* | i860-* | i960-* | ia64-* \
-       | ip2k-* | iq2000-* \
-       | le32-* | le64-* \
-       | lm32-* \
-       | m32c-* | m32r-* | m32rle-* \
-       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
-       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-       | mips16-* \
-       | mips64-* | mips64el-* \
-       | mips64octeon-* | mips64octeonel-* \
-       | mips64orion-* | mips64orionel-* \
-       | mips64r5900-* | mips64r5900el-* \
-       | mips64vr-* | mips64vrel-* \
-       | mips64vr4100-* | mips64vr4100el-* \
-       | mips64vr4300-* | mips64vr4300el-* \
-       | mips64vr5000-* | mips64vr5000el-* \
-       | mips64vr5900-* | mips64vr5900el-* \
-       | mipsisa32-* | mipsisa32el-* \
-       | mipsisa32r2-* | mipsisa32r2el-* \
-       | mipsisa64-* | mipsisa64el-* \
-       | mipsisa64r2-* | mipsisa64r2el-* \
-       | mipsisa64sb1-* | mipsisa64sb1el-* \
-       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-       | mipstx39-* | mipstx39el-* \
-       | mmix-* \
-       | mt-* \
-       | msp430-* \
-       | nds32-* | nds32le-* | nds32be-* \
-       | nios-* | nios2-* \
-       | none-* | np1-* | ns16k-* | ns32k-* \
-       | open8-* \
-       | orion-* \
-       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-       | pyramid-* \
-       | rl78-* | romp-* | rs6000-* | rx-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-       | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-       | tahoe-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile*-* \
-       | tron-* \
-       | ubicom32-* \
-       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-       | vax-* \
-       | we32k-* \
-       | x86-* | x86_64-* | xc16x-* | xps100-* \
-       | xstormy16-* | xtensa*-* \
-       | ymp-* \
-       | z8k-* | z80-*)
-               ;;
-       # Recognize the basic CPU types without company name, with glob match.
-       xtensa*)
-               basic_machine=$basic_machine-unknown
-               ;;
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       386bsd)
-               basic_machine=i386-unknown
-               os=-bsd
-               ;;
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               basic_machine=m68000-att
-               ;;
-       3b*)
-               basic_machine=we32k-att
-               ;;
-       a29khif)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       abacus)
-               basic_machine=abacus-unknown
-               ;;
-       adobe68k)
-               basic_machine=m68010-adobe
-               os=-scout
-               ;;
-       alliant | fx80)
-               basic_machine=fx80-alliant
-               ;;
-       altos | altos3068)
-               basic_machine=m68k-altos
-               ;;
-       am29k)
-               basic_machine=a29k-none
-               os=-bsd
-               ;;
-       amd64)
-               basic_machine=x86_64-pc
-               ;;
-       amd64-*)
-               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       amdahl)
-               basic_machine=580-amdahl
-               os=-sysv
-               ;;
-       amiga | amiga-*)
-               basic_machine=m68k-unknown
-               ;;
-       amigaos | amigados)
-               basic_machine=m68k-unknown
-               os=-amigaos
-               ;;
-       amigaunix | amix)
-               basic_machine=m68k-unknown
-               os=-sysv4
-               ;;
-       apollo68)
-               basic_machine=m68k-apollo
-               os=-sysv
-               ;;
-       apollo68bsd)
-               basic_machine=m68k-apollo
-               os=-bsd
-               ;;
-       aros)
-               basic_machine=i386-pc
-               os=-aros
-               ;;
-       aux)
-               basic_machine=m68k-apple
-               os=-aux
-               ;;
-       balance)
-               basic_machine=ns32k-sequent
-               os=-dynix
-               ;;
-       blackfin)
-               basic_machine=bfin-unknown
-               os=-linux
-               ;;
-       blackfin-*)
-               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       c54x-*)
-               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c55x-*)
-               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c6x-*)
-               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c90)
-               basic_machine=c90-cray
-               os=-unicos
-               ;;
-       cegcc)
-               basic_machine=arm-unknown
-               os=-cegcc
-               ;;
-       convex-c1)
-               basic_machine=c1-convex
-               os=-bsd
-               ;;
-       convex-c2)
-               basic_machine=c2-convex
-               os=-bsd
-               ;;
-       convex-c32)
-               basic_machine=c32-convex
-               os=-bsd
-               ;;
-       convex-c34)
-               basic_machine=c34-convex
-               os=-bsd
-               ;;
-       convex-c38)
-               basic_machine=c38-convex
-               os=-bsd
-               ;;
-       cray | j90)
-               basic_machine=j90-cray
-               os=-unicos
-               ;;
-       craynv)
-               basic_machine=craynv-cray
-               os=-unicosmp
-               ;;
-       cr16 | cr16-*)
-               basic_machine=cr16-unknown
-               os=-elf
-               ;;
-       crds | unos)
-               basic_machine=m68k-crds
-               ;;
-       crisv32 | crisv32-* | etraxfs*)
-               basic_machine=crisv32-axis
-               ;;
-       cris | cris-* | etrax*)
-               basic_machine=cris-axis
-               ;;
-       crx)
-               basic_machine=crx-unknown
-               os=-elf
-               ;;
-       da30 | da30-*)
-               basic_machine=m68k-da30
-               ;;
-       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-               basic_machine=mips-dec
-               ;;
-       decsystem10* | dec10*)
-               basic_machine=pdp10-dec
-               os=-tops10
-               ;;
-       decsystem20* | dec20*)
-               basic_machine=pdp10-dec
-               os=-tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               basic_machine=m68k-motorola
-               ;;
-       delta88)
-               basic_machine=m88k-motorola
-               os=-sysv3
-               ;;
-       dicos)
-               basic_machine=i686-pc
-               os=-dicos
-               ;;
-       djgpp)
-               basic_machine=i586-pc
-               os=-msdosdjgpp
-               ;;
-       dpx20 | dpx20-*)
-               basic_machine=rs6000-bull
-               os=-bosx
-               ;;
-       dpx2* | dpx2*-bull)
-               basic_machine=m68k-bull
-               os=-sysv3
-               ;;
-       ebmon29k)
-               basic_machine=a29k-amd
-               os=-ebmon
-               ;;
-       elxsi)
-               basic_machine=elxsi-elxsi
-               os=-bsd
-               ;;
-       encore | umax | mmax)
-               basic_machine=ns32k-encore
-               ;;
-       es1800 | OSE68k | ose68k | ose | OSE)
-               basic_machine=m68k-ericsson
-               os=-ose
-               ;;
-       fx2800)
-               basic_machine=i860-alliant
-               ;;
-       genix)
-               basic_machine=ns32k-ns
-               ;;
-       gmicro)
-               basic_machine=tron-gmicro
-               os=-sysv
-               ;;
-       go32)
-               basic_machine=i386-pc
-               os=-go32
-               ;;
-       h3050r* | hiux*)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       h8300hms)
-               basic_machine=h8300-hitachi
-               os=-hms
-               ;;
-       h8300xray)
-               basic_machine=h8300-hitachi
-               os=-xray
-               ;;
-       h8500hms)
-               basic_machine=h8500-hitachi
-               os=-hms
-               ;;
-       harris)
-               basic_machine=m88k-harris
-               os=-sysv3
-               ;;
-       hp300-*)
-               basic_machine=m68k-hp
-               ;;
-       hp300bsd)
-               basic_machine=m68k-hp
-               os=-bsd
-               ;;
-       hp300hpux)
-               basic_machine=m68k-hp
-               os=-hpux
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               basic_machine=m68000-hp
-               ;;
-       hp9k3[2-9][0-9])
-               basic_machine=m68k-hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hppa-next)
-               os=-nextstep3
-               ;;
-       hppaosf)
-               basic_machine=hppa1.1-hp
-               os=-osf
-               ;;
-       hppro)
-               basic_machine=hppa1.1-hp
-               os=-proelf
-               ;;
-       i370-ibm* | ibm*)
-               basic_machine=i370-ibm
-               ;;
-       i*86v32)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv32
-               ;;
-       i*86v4*)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv4
-               ;;
-       i*86v)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv
-               ;;
-       i*86sol2)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-solaris2
-               ;;
-       i386mach)
-               basic_machine=i386-mach
-               os=-mach
-               ;;
-       i386-vsta | vsta)
-               basic_machine=i386-unknown
-               os=-vsta
-               ;;
-       iris | iris4d)
-               basic_machine=mips-sgi
-               case $os in
-                   -irix*)
-                       ;;
-                   *)
-                       os=-irix4
-                       ;;
-               esac
-               ;;
-       isi68 | isi)
-               basic_machine=m68k-isi
-               os=-sysv
-               ;;
-       m68knommu)
-               basic_machine=m68k-unknown
-               os=-linux
-               ;;
-       m68knommu-*)
-               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       m88k-omron*)
-               basic_machine=m88k-omron
-               ;;
-       magnum | m3230)
-               basic_machine=mips-mips
-               os=-sysv
-               ;;
-       merlin)
-               basic_machine=ns32k-utek
-               os=-sysv
-               ;;
-       microblaze)
-               basic_machine=microblaze-xilinx
-               ;;
-       mingw32)
-               basic_machine=i386-pc
-               os=-mingw32
-               ;;
-       mingw32ce)
-               basic_machine=arm-unknown
-               os=-mingw32ce
-               ;;
-       miniframe)
-               basic_machine=m68000-convergent
-               ;;
-       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-       mips3*-*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-               ;;
-       mips3*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-               ;;
-       monitor)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       morphos)
-               basic_machine=powerpc-unknown
-               os=-morphos
-               ;;
-       msdos)
-               basic_machine=i386-pc
-               os=-msdos
-               ;;
-       ms1-*)
-               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-               ;;
-       msys)
-               basic_machine=i386-pc
-               os=-msys
-               ;;
-       mvs)
-               basic_machine=i370-ibm
-               os=-mvs
-               ;;
-       nacl)
-               basic_machine=le32-unknown
-               os=-nacl
-               ;;
-       ncr3000)
-               basic_machine=i486-ncr
-               os=-sysv4
-               ;;
-       netbsd386)
-               basic_machine=i386-unknown
-               os=-netbsd
-               ;;
-       netwinder)
-               basic_machine=armv4l-rebel
-               os=-linux
-               ;;
-       news | news700 | news800 | news900)
-               basic_machine=m68k-sony
-               os=-newsos
-               ;;
-       news1000)
-               basic_machine=m68030-sony
-               os=-newsos
-               ;;
-       news-3600 | risc-news)
-               basic_machine=mips-sony
-               os=-newsos
-               ;;
-       necv70)
-               basic_machine=v70-nec
-               os=-sysv
-               ;;
-       next | m*-next )
-               basic_machine=m68k-next
-               case $os in
-                   -nextstep* )
-                       ;;
-                   -ns2*)
-                     os=-nextstep2
-                       ;;
-                   *)
-                     os=-nextstep3
-                       ;;
-               esac
-               ;;
-       nh3000)
-               basic_machine=m68k-harris
-               os=-cxux
-               ;;
-       nh[45]000)
-               basic_machine=m88k-harris
-               os=-cxux
-               ;;
-       nindy960)
-               basic_machine=i960-intel
-               os=-nindy
-               ;;
-       mon960)
-               basic_machine=i960-intel
-               os=-mon960
-               ;;
-       nonstopux)
-               basic_machine=mips-compaq
-               os=-nonstopux
-               ;;
-       np1)
-               basic_machine=np1-gould
-               ;;
-       neo-tandem)
-               basic_machine=neo-tandem
-               ;;
-       nse-tandem)
-               basic_machine=nse-tandem
-               ;;
-       nsr-tandem)
-               basic_machine=nsr-tandem
-               ;;
-       op50n-* | op60c-*)
-               basic_machine=hppa1.1-oki
-               os=-proelf
-               ;;
-       openrisc | openrisc-*)
-               basic_machine=or32-unknown
-               ;;
-       os400)
-               basic_machine=powerpc-ibm
-               os=-os400
-               ;;
-       OSE68000 | ose68000)
-               basic_machine=m68000-ericsson
-               os=-ose
-               ;;
-       os68k)
-               basic_machine=m68k-none
-               os=-os68k
-               ;;
-       pa-hitachi)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       paragon)
-               basic_machine=i860-intel
-               os=-osf
-               ;;
-       parisc)
-               basic_machine=hppa-unknown
-               os=-linux
-               ;;
-       parisc-*)
-               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       pbd)
-               basic_machine=sparc-tti
-               ;;
-       pbb)
-               basic_machine=m68k-tti
-               ;;
-       pc532 | pc532-*)
-               basic_machine=ns32k-pc532
-               ;;
-       pc98)
-               basic_machine=i386-pc
-               ;;
-       pc98-*)
-               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium | p5 | k5 | k6 | nexgen | viac3)
-               basic_machine=i586-pc
-               ;;
-       pentiumpro | p6 | 6x86 | athlon | athlon_*)
-               basic_machine=i686-pc
-               ;;
-       pentiumii | pentium2 | pentiumiii | pentium3)
-               basic_machine=i686-pc
-               ;;
-       pentium4)
-               basic_machine=i786-pc
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium4-*)
-               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pn)
-               basic_machine=pn-gould
-               ;;
-       power)  basic_machine=power-ibm
-               ;;
-       ppc | ppcbe)    basic_machine=powerpc-unknown
-               ;;
-       ppc-* | ppcbe-*)
-               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppcle | powerpclittle | ppc-le | powerpc-little)
-               basic_machine=powerpcle-unknown
-               ;;
-       ppcle-* | powerpclittle-*)
-               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64)  basic_machine=powerpc64-unknown
-               ;;
-       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-               basic_machine=powerpc64le-unknown
-               ;;
-       ppc64le-* | powerpc64little-*)
-               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ps2)
-               basic_machine=i386-ibm
-               ;;
-       pw32)
-               basic_machine=i586-unknown
-               os=-pw32
-               ;;
-       rdos)
-               basic_machine=i386-pc
-               os=-rdos
-               ;;
-       rom68k)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       rm[46]00)
-               basic_machine=mips-siemens
-               ;;
-       rtpc | rtpc-*)
-               basic_machine=romp-ibm
-               ;;
-       s390 | s390-*)
-               basic_machine=s390-ibm
-               ;;
-       s390x | s390x-*)
-               basic_machine=s390x-ibm
-               ;;
-       sa29200)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       sb1)
-               basic_machine=mipsisa64sb1-unknown
-               ;;
-       sb1el)
-               basic_machine=mipsisa64sb1el-unknown
-               ;;
-       sde)
-               basic_machine=mipsisa32-sde
-               os=-elf
-               ;;
-       sei)
-               basic_machine=mips-sei
-               os=-seiux
-               ;;
-       sequent)
-               basic_machine=i386-sequent
-               ;;
-       sh)
-               basic_machine=sh-hitachi
-               os=-hms
-               ;;
-       sh5el)
-               basic_machine=sh5le-unknown
-               ;;
-       sh64)
-               basic_machine=sh64-unknown
-               ;;
-       sparclite-wrs | simso-wrs)
-               basic_machine=sparclite-wrs
-               os=-vxworks
-               ;;
-       sps7)
-               basic_machine=m68k-bull
-               os=-sysv2
-               ;;
-       spur)
-               basic_machine=spur-unknown
-               ;;
-       st2000)
-               basic_machine=m68k-tandem
-               ;;
-       stratus)
-               basic_machine=i860-stratus
-               os=-sysv4
-               ;;
-       strongarm-* | thumb-*)
-               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       sun2)
-               basic_machine=m68000-sun
-               ;;
-       sun2os3)
-               basic_machine=m68000-sun
-               os=-sunos3
-               ;;
-       sun2os4)
-               basic_machine=m68000-sun
-               os=-sunos4
-               ;;
-       sun3os3)
-               basic_machine=m68k-sun
-               os=-sunos3
-               ;;
-       sun3os4)
-               basic_machine=m68k-sun
-               os=-sunos4
-               ;;
-       sun4os3)
-               basic_machine=sparc-sun
-               os=-sunos3
-               ;;
-       sun4os4)
-               basic_machine=sparc-sun
-               os=-sunos4
-               ;;
-       sun4sol2)
-               basic_machine=sparc-sun
-               os=-solaris2
-               ;;
-       sun3 | sun3-*)
-               basic_machine=m68k-sun
-               ;;
-       sun4)
-               basic_machine=sparc-sun
-               ;;
-       sun386 | sun386i | roadrunner)
-               basic_machine=i386-sun
-               ;;
-       sv1)
-               basic_machine=sv1-cray
-               os=-unicos
-               ;;
-       symmetry)
-               basic_machine=i386-sequent
-               os=-dynix
-               ;;
-       t3e)
-               basic_machine=alphaev5-cray
-               os=-unicos
-               ;;
-       t90)
-               basic_machine=t90-cray
-               os=-unicos
-               ;;
-       tile*)
-               basic_machine=$basic_machine-unknown
-               os=-linux-gnu
-               ;;
-       tx39)
-               basic_machine=mipstx39-unknown
-               ;;
-       tx39el)
-               basic_machine=mipstx39el-unknown
-               ;;
-       toad1)
-               basic_machine=pdp10-xkl
-               os=-tops20
-               ;;
-       tower | tower-32)
-               basic_machine=m68k-ncr
-               ;;
-       tpf)
-               basic_machine=s390x-ibm
-               os=-tpf
-               ;;
-       udi29k)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       ultra3)
-               basic_machine=a29k-nyu
-               os=-sym1
-               ;;
-       v810 | necv810)
-               basic_machine=v810-nec
-               os=-none
-               ;;
-       vaxv)
-               basic_machine=vax-dec
-               os=-sysv
-               ;;
-       vms)
-               basic_machine=vax-dec
-               os=-vms
-               ;;
-       vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
-               ;;
-       vxworks960)
-               basic_machine=i960-wrs
-               os=-vxworks
-               ;;
-       vxworks68)
-               basic_machine=m68k-wrs
-               os=-vxworks
-               ;;
-       vxworks29k)
-               basic_machine=a29k-wrs
-               os=-vxworks
-               ;;
-       w65*)
-               basic_machine=w65-wdc
-               os=-none
-               ;;
-       w89k-*)
-               basic_machine=hppa1.1-winbond
-               os=-proelf
-               ;;
-       xbox)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       xps | xps100)
-               basic_machine=xps100-honeywell
-               ;;
-       xscale-* | xscalee[bl]-*)
-               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-               ;;
-       ymp)
-               basic_machine=ymp-cray
-               os=-unicos
-               ;;
-       z8k-*-coff)
-               basic_machine=z8k-unknown
-               os=-sim
-               ;;
-       z80-*-coff)
-               basic_machine=z80-unknown
-               os=-sim
-               ;;
-       none)
-               basic_machine=none-none
-               os=-none
-               ;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               basic_machine=hppa1.1-winbond
-               ;;
-       op50n)
-               basic_machine=hppa1.1-oki
-               ;;
-       op60c)
-               basic_machine=hppa1.1-oki
-               ;;
-       romp)
-               basic_machine=romp-ibm
-               ;;
-       mmix)
-               basic_machine=mmix-knuth
-               ;;
-       rs6000)
-               basic_machine=rs6000-ibm
-               ;;
-       vax)
-               basic_machine=vax-dec
-               ;;
-       pdp10)
-               # there are many clones, so DEC is not a safe bet
-               basic_machine=pdp10-unknown
-               ;;
-       pdp11)
-               basic_machine=pdp11-dec
-               ;;
-       we32k)
-               basic_machine=we32k-att
-               ;;
-       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-               basic_machine=sh-unknown
-               ;;
-       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-               basic_machine=sparc-sun
-               ;;
-       cydra)
-               basic_machine=cydra-cydrome
-               ;;
-       orion)
-               basic_machine=orion-highlevel
-               ;;
-       orion105)
-               basic_machine=clipper-highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               basic_machine=m68k-apple
-               ;;
-       pmac | pmac-mpw)
-               basic_machine=powerpc-apple
-               ;;
-       *-unknown)
-               # Make sure to match an already-canonicalized machine name.
-               ;;
-       *)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-       *-digital*)
-               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-               ;;
-       *-commodore*)
-               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-       # First match some system type aliases
-       # that might get confused with valid system types.
-       # -solaris* is a basic system type, with this one exception.
-       -auroraux)
-               os=-auroraux
-               ;;
-       -solaris1 | -solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
-               ;;
-       -solaris)
-               os=-solaris2
-               ;;
-       -svr4*)
-               os=-sysv4
-               ;;
-       -unixware*)
-               os=-sysv4.2uw
-               ;;
-       -gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-               ;;
-       # First accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST END IN A *, to match a version number.
-       # -sysv* is not here because it comes later, after sysvr4.
-       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* \
-             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* | -aros* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-             | -openbsd* | -solidbsd* \
-             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* | -cegcc* \
-             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* \
-             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-       -qnx*)
-               case $basic_machine in
-                   x86-* | i*86-*)
-                       ;;
-                   *)
-                       os=-nto$os
-                       ;;
-               esac
-               ;;
-       -nto-qnx*)
-               ;;
-       -nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
-               ;;
-       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-               ;;
-       -mac*)
-               os=`echo $os | sed -e 's|mac|macos|'`
-               ;;
-       -linux-dietlibc)
-               os=-linux-dietlibc
-               ;;
-       -linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-       -sunos5*)
-               os=`echo $os | sed -e 's|sunos5|solaris2|'`
-               ;;
-       -sunos6*)
-               os=`echo $os | sed -e 's|sunos6|solaris3|'`
-               ;;
-       -opened*)
-               os=-openedition
-               ;;
-       -os400*)
-               os=-os400
-               ;;
-       -wince*)
-               os=-wince
-               ;;
-       -osfrose*)
-               os=-osfrose
-               ;;
-       -osf*)
-               os=-osf
-               ;;
-       -utek*)
-               os=-bsd
-               ;;
-       -dynix*)
-               os=-bsd
-               ;;
-       -acis*)
-               os=-aos
-               ;;
-       -atheos*)
-               os=-atheos
-               ;;
-       -syllable*)
-               os=-syllable
-               ;;
-       -386bsd)
-               os=-bsd
-               ;;
-       -ctix* | -uts*)
-               os=-sysv
-               ;;
-       -nova*)
-               os=-rtmk-nova
-               ;;
-       -ns2 )
-               os=-nextstep2
-               ;;
-       -nsk*)
-               os=-nsk
-               ;;
-       # Preserve the version number of sinix5.
-       -sinix5.*)
-               os=`echo $os | sed -e 's|sinix|sysv|'`
-               ;;
-       -sinix*)
-               os=-sysv4
-               ;;
-       -tpf*)
-               os=-tpf
-               ;;
-       -triton*)
-               os=-sysv3
-               ;;
-       -oss*)
-               os=-sysv3
-               ;;
-       -svr4)
-               os=-sysv4
-               ;;
-       -svr3)
-               os=-sysv3
-               ;;
-       -sysvr4)
-               os=-sysv4
-               ;;
-       # This must come after -sysvr4.
-       -sysv*)
-               ;;
-       -ose*)
-               os=-ose
-               ;;
-       -es1800*)
-               os=-ose
-               ;;
-       -xenix)
-               os=-xenix
-               ;;
-       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-               os=-mint
-               ;;
-       -aros*)
-               os=-aros
-               ;;
-       -kaos*)
-               os=-kaos
-               ;;
-       -zvmoe)
-               os=-zvmoe
-               ;;
-       -dicos*)
-               os=-dicos
-               ;;
-       -nacl*)
-               ;;
-       -none)
-               ;;
-       *)
-               # Get rid of the `-' at the beginning of $os.
-               os=`echo $os | sed 's/[^-]*-//'`
-               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-       score-*)
-               os=-elf
-               ;;
-       spu-*)
-               os=-elf
-               ;;
-       *-acorn)
-               os=-riscix1.2
-               ;;
-       arm*-rebel)
-               os=-linux
-               ;;
-       arm*-semi)
-               os=-aout
-               ;;
-       c4x-* | tic4x-*)
-               os=-coff
-               ;;
-       hexagon-*)
-               os=-elf
-               ;;
-       tic54x-*)
-               os=-coff
-               ;;
-       tic55x-*)
-               os=-coff
-               ;;
-       tic6x-*)
-               os=-coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=-tops20
-               ;;
-       pdp11-*)
-               os=-none
-               ;;
-       *-dec | vax-*)
-               os=-ultrix4.2
-               ;;
-       m68*-apollo)
-               os=-domain
-               ;;
-       i386-sun)
-               os=-sunos4.0.2
-               ;;
-       m68000-sun)
-               os=-sunos3
-               ;;
-       m68*-cisco)
-               os=-aout
-               ;;
-       mep-*)
-               os=-elf
-               ;;
-       mips*-cisco)
-               os=-elf
-               ;;
-       mips*-*)
-               os=-elf
-               ;;
-       or32-*)
-               os=-coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=-sysv3
-               ;;
-       sparc-* | *-sun)
-               os=-sunos4.1.1
-               ;;
-       *-be)
-               os=-beos
-               ;;
-       *-haiku)
-               os=-haiku
-               ;;
-       *-ibm)
-               os=-aix
-               ;;
-       *-knuth)
-               os=-mmixware
-               ;;
-       *-wec)
-               os=-proelf
-               ;;
-       *-winbond)
-               os=-proelf
-               ;;
-       *-oki)
-               os=-proelf
-               ;;
-       *-hp)
-               os=-hpux
-               ;;
-       *-hitachi)
-               os=-hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=-sysv
-               ;;
-       *-cbm)
-               os=-amigaos
-               ;;
-       *-dg)
-               os=-dgux
-               ;;
-       *-dolphin)
-               os=-sysv3
-               ;;
-       m68k-ccur)
-               os=-rtu
-               ;;
-       m88k-omron*)
-               os=-luna
-               ;;
-       *-next )
-               os=-nextstep
-               ;;
-       *-sequent)
-               os=-ptx
-               ;;
-       *-crds)
-               os=-unos
-               ;;
-       *-ns)
-               os=-genix
-               ;;
-       i370-*)
-               os=-mvs
-               ;;
-       *-next)
-               os=-nextstep3
-               ;;
-       *-gould)
-               os=-sysv
-               ;;
-       *-highlevel)
-               os=-bsd
-               ;;
-       *-encore)
-               os=-bsd
-               ;;
-       *-sgi)
-               os=-irix
-               ;;
-       *-siemens)
-               os=-sysv4
-               ;;
-       *-masscomp)
-               os=-rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=-uxpv
-               ;;
-       *-rom68k)
-               os=-coff
-               ;;
-       *-*bug)
-               os=-coff
-               ;;
-       *-apple)
-               os=-macos
-               ;;
-       *-atari*)
-               os=-mint
-               ;;
-       *)
-               os=-none
-               ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-       *-unknown)
-               case $os in
-                       -riscix*)
-                               vendor=acorn
-                               ;;
-                       -sunos*)
-                               vendor=sun
-                               ;;
-                       -aix*)
-                               vendor=ibm
-                               ;;
-                       -beos*)
-                               vendor=be
-                               ;;
-                       -hpux*)
-                               vendor=hp
-                               ;;
-                       -mpeix*)
-                               vendor=hp
-                               ;;
-                       -hiux*)
-                               vendor=hitachi
-                               ;;
-                       -unos*)
-                               vendor=crds
-                               ;;
-                       -dgux*)
-                               vendor=dg
-                               ;;
-                       -luna*)
-                               vendor=omron
-                               ;;
-                       -genix*)
-                               vendor=ns
-                               ;;
-                       -mvs* | -opened*)
-                               vendor=ibm
-                               ;;
-                       -os400*)
-                               vendor=ibm
-                               ;;
-                       -ptx*)
-                               vendor=sequent
-                               ;;
-                       -tpf*)
-                               vendor=ibm
-                               ;;
-                       -vxsim* | -vxworks* | -windiss*)
-                               vendor=wrs
-                               ;;
-                       -aux*)
-                               vendor=apple
-                               ;;
-                       -hms*)
-                               vendor=hitachi
-                               ;;
-                       -mpw* | -macos*)
-                               vendor=apple
-                               ;;
-                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       -vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-               ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/polly/lib/External/ppcg/configure b/polly/lib/External/ppcg/configure
deleted file mode 100755 (executable)
index bedcabf..0000000
+++ /dev/null
@@ -1,14613 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ppcg 0.04.
-#
-# Report bugs to <isl-development@googlegroups.com>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-
-  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-        /*)
-          for as_base in sh bash ksh sh5; do
-            # Try only shells that exist, to save several forks.
-            as_shell=$as_dir/$as_base
-            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-          done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org and
-$0: isl-development@googlegroups.com about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='        ';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='ppcg'
-PACKAGE_TARNAME='ppcg'
-PACKAGE_VERSION='0.04'
-PACKAGE_STRING='ppcg 0.04'
-PACKAGE_BUGREPORT='isl-development@googlegroups.com'
-PACKAGE_URL=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-enable_option_checking=no
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIBOBJS
-subdirs
-GIT_HEAD_VERSION
-GIT_HEAD
-GIT_HEAD_ID
-extra_tests
-POLYBENCH_DIR
-PET_LIBS
-PET_CFLAGS
-BUNDLED_PET_FALSE
-BUNDLED_PET_TRUE
-ISL_LIBS
-ISL_CFLAGS
-BUNDLED_ISL_FALSE
-BUNDLED_ISL_TRUE
-HAVE_OPENCL
-HAVE_OPENMP
-PKG_CONFIG_LIBDIR
-PKG_CONFIG_PATH
-PKG_CONFIG
-CPP
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-RANLIB
-ac_ct_AR
-AR
-DLLTOOL
-OBJDUMP
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-EGREP
-GREP
-SED
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-LIBTOOL
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_silent_rules
-enable_dependency_tracking
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-with_isl
-with_isl_prefix
-with_isl_exec_prefix
-with_isl_builddir
-with_pet
-with_pet_prefix
-with_pet_exec_prefix
-with_polybench
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP
-PKG_CONFIG
-PKG_CONFIG_PATH
-PKG_CONFIG_LIBDIR
-ISL_CFLAGS
-ISL_LIBS
-PET_CFLAGS
-PET_LIBS'
-ac_subdirs_all='isl
-pet'
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
-               datadir sysconfdir sharedstatedir localstatedir includedir \
-               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_myself" : 'X\(//\)[^/]' \| \
-        X"$as_myself" : 'X\(//\)$' \| \
-        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-       pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures ppcg 0.04 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/ppcg]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of ppcg 0.04:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-silent-rules   less verbose build output (undo: "make V=1")
-  --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-dependency-tracking
-                          do not reject slow dependency extractors
-  --disable-dependency-tracking
-                          speeds up one-time build
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-  --with-sysroot=DIR Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).
-  --with-isl=build|bundled|system
-                          Which isl to use [default=bundled]
-  --with-isl-prefix=DIR   Prefix of isl installation
-  --with-isl-exec-prefix=DIR
-                          Exec prefix of isl installation
-  --with-isl-builddir=DIR Location of isl builddir
-  --with-pet=bundled|system
-                          Which pet to use [default=bundled]
-  --with-pet-prefix=DIR   Prefix of pet installation
-  --with-pet-exec-prefix=DIR
-                          Exec prefix of pet installation
-  --with-polybench=DIR    PolyBench location
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-  PKG_CONFIG  path to pkg-config utility
-  PKG_CONFIG_PATH
-              directories to add to pkg-config's search path
-  PKG_CONFIG_LIBDIR
-              path overriding pkg-config's built-in search path
-  ISL_CFLAGS  C compiler flags for ISL, overriding pkg-config
-  ISL_LIBS    linker flags for ISL, overriding pkg-config
-  PET_CFLAGS  C compiler flags for PET, overriding pkg-config
-  PET_LIBS    linker flags for PET, overriding pkg-config
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <isl-development@googlegroups.com>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-ppcg configure 0.04
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_func
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ----------------------------------------------- ##
-## Report this to isl-development@googlegroups.com ##
-## ----------------------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by ppcg $as_me 0.04, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-       ac_must_keep_next=false # Got value, back to normal.
-      else
-       case $ac_arg in
-         *=* | --config-cache | -C | -disable-* | --disable-* \
-         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-         | -with-* | --with-* | -without-* | --without-* | --x)
-           case "$ac_configure_args0 " in
-             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-           esac
-           ;;
-         -* ) ac_must_keep_next=true ;;
-       esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-       "s/'\''/'\''\\\\'\'''\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-       eval ac_val=\$$ac_var
-       case $ac_val in
-       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-       esac
-       $as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-       # differences in whitespace do not lead to failure.
-       ac_old_val_w=`echo x $ac_old_val`
-       ac_new_val_w=`echo x $ac_new_val`
-       if test "$ac_old_val_w" != "$ac_new_val_w"; then
-         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-         ac_cache_corrupted=:
-       else
-         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-         eval $ac_var=\$ac_old_val
-       fi
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_aux_dir=
-for ac_dir in . "$srcdir"/.; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in . \"$srcdir\"/." "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-
-am__api_version='1.15'
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-         if test $ac_prog = install &&
-           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         elif test $ac_prog = install &&
-           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # program-specific install script used by HP pwplus--don't use.
-           :
-         else
-           rm -rf conftest.one conftest.two conftest.dir
-           echo one > conftest.one
-           echo two > conftest.two
-           mkdir conftest.dir
-           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-             test -s conftest.one && test -s conftest.two &&
-             test -s conftest.dir/conftest.one &&
-             test -s conftest.dir/conftest.two
-           then
-             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-             break 3
-           fi
-         fi
-       fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
-    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$*" = "X"; then
-       # -L didn't work.
-       set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$*" != "X $srcdir/configure conftest.file" \
-       && test "$*" != "X conftest.file $srcdir/configure"; then
-
-       # If neither matched, then we have a broken ls.  This can happen
-       # if, for instance, CONFIG_SHELL is bash and it inherits a
-       # broken ls alias from the environment.  This has actually
-       # happened.  Such a system could not be considered "sane".
-       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment" "$LINENO" 5
-     fi
-     if test "$2" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   as_fn_error $? "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-
-rm -f conftest.file
-
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# Expand $ac_aux_dir to an absolute path.
-am_aux_dir=`cd "$ac_aux_dir" && pwd`
-
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if ${ac_cv_path_mkdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in mkdir gmkdir; do
-        for ac_exec_ext in '' $ac_executable_extensions; do
-          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
-          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-            'mkdir (GNU coreutils) '* | \
-            'mkdir (coreutils) '* | \
-            'mkdir (fileutils) '4.1*)
-              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-              break 3;;
-          esac
-        done
-       done
-  done
-IFS=$as_save_IFS
-
-fi
-
-  test -d ./--version && rmdir ./--version
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-       @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='ppcg'
- VERSION='0.04'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-mkdir_p='$(MKDIR_P)'
-
-# We need awk for the "check" target (and possibly the TAP driver).  The
-# system "awk" is bad on some platforms.
-# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
-
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar  pax cpio none'
-
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-
-
-
-
-
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
-  fi
-fi
-
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=0;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-       ;;
-    [ab].out )
-       # We found the default executable, but exeext='' is most
-       # certainly right.
-       break;;
-    *.* )
-       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-       then :; else
-          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-       fi
-       # We set ac_cv_exeext here because the later test for it is not
-       # safe: cross compilers may not add the suffix if given an `-o'
-       # argument, so we may need to know it at that point already.
-       # Even if this section looks crufty: it has the advantage of
-       # actually working.
-       break;;
-    * )
-       break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-         break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-       cross_compiling=yes
-    else
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
-   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-       @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-case `pwd` in
-  *\ * | *\    *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4.2'
-macro_revision='1.3337'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO ""
-}
-
-case "$ECHO" in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-       test "$with_gnu_ld" != no && break
-       ;;
-      *)
-       test "$with_gnu_ld" != yes && break
-       ;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-       # Check to see if the nm accepts a BSD-compat flag.
-       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-       #   nm: unknown option "B" ignored
-       # Tru64's nm complains that /dev/null is an invalid object file
-       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-       */dev/null* | *'Invalid file or object type'*)
-         lt_cv_path_NM="$tmp_nm -B"
-         break
-         ;;
-       *)
-         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-         */dev/null*)
-           lt_cv_path_NM="$tmp_nm -p"
-           break
-           ;;
-         *)
-           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-           continue # so that we can try to find one that supports BSD flags
-           ;;
-         esac
-         ;;
-       esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len" && \
-       test undefined != "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-             test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-
-fi
-
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$AR" && break
-  done
-fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_AR" && break
-done
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-fi
-
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test "$ac_status" -eq 0; then
-       # Ensure the archiver fails upon bogus file names.
-       rm -f conftest.$ac_objext libconftest.a
-       { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-       if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[     ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-       mv -f "$nlist"T "$nlist"
-      else
-       rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-         cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-         # Now generate the symbol file.
-         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-         cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-         cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-         # Now try linking the two files.
-         mv conftest.$ac_objext conftstm.$ac_objext
-         lt_globsym_save_LIBS=$LIBS
-         lt_globsym_save_CFLAGS=$CFLAGS
-         LIBS="conftstm.$ac_objext"
-         CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
-           pipe_works=yes
-         fi
-         LIBS=$lt_globsym_save_LIBS
-         CFLAGS=$lt_globsym_save_CFLAGS
-       else
-         echo "cannot find nm_test_func in $nlist" >&5
-       fi
-      else
-       echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
-else
-  with_sysroot=no
-fi
-
-
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
-   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-   ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-       HPUX_IA64_MODE="32"
-       ;;
-      *ELF-64*)
-       HPUX_IA64_MODE="64"
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -melf32bsmip"
-         ;;
-       *N32*)
-         LD="${LD-ld} -melf32bmipn32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -melf64bmip"
-       ;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -32"
-         ;;
-       *N32*)
-         LD="${LD-ld} -n32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -64"
-         ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_i386_fbsd"
-           ;;
-         x86_64-*linux*)
-           case `/usr/bin/file conftest.o` in
-             *x86-64*)
-               LD="${LD-ld} -m elf32_x86_64"
-               ;;
-             *)
-               LD="${LD-ld} -m elf_i386"
-               ;;
-           esac
-           ;;
-         ppc64-*linux*|powerpc64-*linux*)
-           LD="${LD-ld} -m elf32ppclinux"
-           ;;
-         s390x-*linux*)
-           LD="${LD-ld} -m elf_s390"
-           ;;
-         sparc64-*linux*)
-           LD="${LD-ld} -m elf32_sparc"
-           ;;
-       esac
-       ;;
-      *64-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_x86_64_fbsd"
-           ;;
-         x86_64-*linux*)
-           LD="${LD-ld} -m elf_x86_64"
-           ;;
-         ppc*-*linux*|powerpc*-*linux*)
-           LD="${LD-ld} -m elf64ppc"
-           ;;
-         s390*-*linux*|s390*-*tpf*)
-           LD="${LD-ld} -m elf64_s390"
-           ;;
-         sparc*-*linux*)
-           LD="${LD-ld} -m elf64_sparc"
-           ;;
-       esac
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-         LD="${LD-ld} -64"
-       fi
-       ;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MANIFEST_TOOL"; then
-  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-  # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
-  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-    MANIFEST_TOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-  fi
-else
-  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-fi
-
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&5
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-
-
-
-
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-       # By default we will add the -single_module flag. You can override
-       # by either setting the environment variable LT_MULTI_MODULE
-       # non-empty at configure time, or by adding -multi_module to the
-       # link flags.
-       rm -rf libconftest.dylib*
-       echo "int foo(void){return 1;}" > conftest.c
-       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-       # If there is a non-empty error log, and "single_module"
-       # appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-         cat conftest.err >&5
-       # Otherwise, if the output was created with a 0 exit code from
-       # the compiler, it worked.
-       elif test -f libconftest.dylib && test $_lt_result -eq 0; then
-         lt_cv_apple_cc_single_mod=yes
-       else
-         cat conftest.err >&5
-       fi
-       rm -rf libconftest.dylib*
-       rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-       LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR cru libconftest.a conftest.o" >&5
-      $AR cru libconftest.a conftest.o 2>&5
-      echo "$RANLIB libconftest.a" >&5
-      $RANLIB libconftest.a 2>&5
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-       cat conftest.err >&5
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-       lt_cv_ld_force_load=yes
-      else
-       cat conftest.err >&5
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-       10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-       10.[012]*)
-         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-       10.*)
-         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-# Set options
-
-
-
-        enable_dlopen=no
-
-
-  enable_win32_dll=no
-
-
-            # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_shared=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
-
-
-
-
-
-
-
-
-
-  # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_static=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-       IFS="$lt_save_ifs"
-       if test "X$lt_pkg" = "X$lt_p"; then
-         pic_mode=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-
-
-
-
-
-  # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_fast_install=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-  *)
-    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-  esac
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-
-
-
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-       # +Z the default
-       ;;
-      *)
-       lt_prog_compiler_pic='-fPIC'
-       ;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl='-Xlinker '
-      if test -n "$lt_prog_compiler_pic"; then
-        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static='-Bstatic'
-      else
-       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       # +Z the default
-       ;;
-      *)
-       lt_prog_compiler_pic='+Z'
-       ;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-KPIC'
-       lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fPIC'
-       lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='--shared'
-       lt_prog_compiler_static='--static'
-       ;;
-      nagfor*)
-       # NAG Fortran compiler
-       lt_prog_compiler_wl='-Wl,-Wl,,'
-       lt_prog_compiler_pic='-PIC'
-       lt_prog_compiler_static='-Bstatic'
-       ;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-       # which looks to be a dead project)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fpic'
-       lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-qpic'
-       lt_prog_compiler_static='-qstaticlink'
-       ;;
-      *)
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-         # Sun Fortran 8.3 passes all unrecognized flags to the linker
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl=''
-         ;;
-       *Sun\ F* | *Sun*Fortran*)
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl='-Qoption ld '
-         ;;
-       *Sun\ C*)
-         # Sun C 5.9
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl='-Wl,'
-         ;;
-        *Intel*\ [CF]*Compiler*)
-         lt_prog_compiler_wl='-Wl,'
-         lt_prog_compiler_pic='-fPIC'
-         lt_prog_compiler_static='-static'
-         ;;
-       *Portland\ Group*)
-         lt_prog_compiler_wl='-Wl,'
-         lt_prog_compiler_pic='-fpic'
-         lt_prog_compiler_static='-Bstatic'
-         ;;
-       esac
-       ;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-       lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-       lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-       lt_prog_compiler_pic='-Kconform_pic'
-       lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-
-
-
-
-
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    link_all_deplibs=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-       # The AIX port of GNU ld has always aspired to compatibility
-       # with the native linker.  However, as the warning in the GNU ld
-       # block says, versions before 2.19.5* couldn't really create working
-       # shared libraries, regardless of the interface used.
-       case `$LD -v 2>&1` in
-         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-         *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-         *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-         *)
-           lt_use_gnu_ld_interface=yes
-           ;;
-       esac
-       ;;
-      *)
-       lt_use_gnu_ld_interface=yes
-       ;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       allow_undefined_flag=unsupported
-       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-       # support --undefined.  This deserves some investigation.  FIXME
-       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='${wl}--export-all-symbols'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-       # If the export-symbols file already is a .def file (1st line
-       # is EXPORTS), use it as is; otherwise, prepend...
-       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-         cp $export_symbols $output_objdir/$soname.def;
-       else
-         echo EXPORTS > $output_objdir/$soname.def;
-         cat $export_symbols >> $output_objdir/$soname.def;
-       fi~
-       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-       case $cc_basename in
-         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
-       esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-        && test "$tmp_diet" = no
-      then
-       tmp_addflag=' $pic_flag'
-       tmp_sharedflag='-shared'
-       case $cc_basename,$host_cpu in
-        pgcc*)                         # Portland Group C compiler
-         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-         tmp_addflag=' $pic_flag'
-         ;;
-       pgf77* | pgf90* | pgf95* | pgfortran*)
-                                       # Portland Group f77 and f90 compilers
-         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-         tmp_addflag=' $pic_flag -Mnomain' ;;
-       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
-         tmp_addflag=' -i_dynamic' ;;
-       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
-         tmp_addflag=' -i_dynamic -nofor_main' ;;
-       ifc* | ifort*)                  # Intel Fortran compiler
-         tmp_addflag=' -nofor_main' ;;
-       lf95*)                          # Lahey Fortran 8.1
-         whole_archive_flag_spec=
-         tmp_sharedflag='--shared' ;;
-       xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-         tmp_sharedflag='-qmkshrobj'
-         tmp_addflag= ;;
-       nvcc*)  # Cuda Compiler Driver 2.2
-         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-         compiler_needs_object=yes
-         ;;
-       esac
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ C*)                       # Sun C 5.9
-         whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-         compiler_needs_object=yes
-         tmp_sharedflag='-G' ;;
-       *Sun\ F*)                       # Sun Fortran 8.3
-         tmp_sharedflag='-G' ;;
-       esac
-       archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-           echo "local: *; };" >> $output_objdir/$libname.ver~
-           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-       case $cc_basename in
-       xlf* | bgf* | bgxlf* | mpixlf*)
-         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-         whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-         hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-         archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-         if test "x$supports_anon_versioning" = xyes; then
-           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-             echo "local: *; };" >> $output_objdir/$libname.ver~
-             $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-         fi
-         ;;
-       esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-       wlarc=
-      else
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-       ;;
-       *)
-         # For security reasons, it is highly recommended that you always
-         # use absolute paths for naming shared libraries, and exclude the
-         # DT_RUNPATH tag from executables and libraries.  But doing so
-         # requires that you compile everything twice, which is a pain.
-         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-           hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-           archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-           archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-         else
-           ld_shlibs=no
-         fi
-       ;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-       # Neither direct hardcoding nor static linking is supported with a
-       # broken collect2.
-       hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-       # On IA64, the linker does run time linking by default, so we don't
-       # have to do anything special.
-       aix_use_runtimelinking=no
-       exp_sym_flag='-Bexport'
-       no_entry_flag=""
-      else
-       # If we're using GNU nm, then we don't want the "-C" option.
-       # -C means demangle to AIX nm, but means don't demangle with GNU nm
-       # Also, AIX nm treats weak defined symbols like other global
-       # defined symbols, whereas GNU nm marks them as "W".
-       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-       else
-         export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-       fi
-       aix_use_runtimelinking=no
-
-       # Test if we are trying to use run time linking or normal
-       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-       # need to do runtime linking.
-       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-         for ld_flag in $LDFLAGS; do
-         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-           aix_use_runtimelinking=yes
-           break
-         fi
-         done
-         ;;
-       esac
-
-       exp_sym_flag='-bexport'
-       no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
-
-      if test "$GCC" = yes; then
-       case $host_os in aix4.[012]|aix4.[012].*)
-       # We only want to do this on AIX 4.2 and lower, the check
-       # below for broken collect2 doesn't work under 4.3+
-         collect2name=`${CC} -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-         # We have reworked collect2
-         :
-         else
-         # We have old collect2
-         hardcode_direct=unsupported
-         # It fails to find uninstalled libraries when the uninstalled
-         # path is not listed in the libpath.  Setting hardcode_minus_L
-         # to unsupported forces relinking
-         hardcode_minus_L=yes
-         hardcode_libdir_flag_spec='-L$libdir'
-         hardcode_libdir_separator=
-         fi
-         ;;
-       esac
-       shared_flag='-shared'
-       if test "$aix_use_runtimelinking" = yes; then
-         shared_flag="$shared_flag "'${wl}-G'
-       fi
-       link_all_deplibs=no
-      else
-       # not using gcc
-       if test "$host_cpu" = ia64; then
-       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-       # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-       else
-         if test "$aix_use_runtimelinking" = yes; then
-           shared_flag='${wl}-G'
-         else
-           shared_flag='${wl}-bM:SRE'
-         fi
-       fi
-      fi
-
-      export_dynamic_flag_spec='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
-       # Warning - without using the other runtime loading flags (-brtl),
-       # -berok will link without error, but may produce a broken library.
-       allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-       if test "$host_cpu" = ia64; then
-         hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-         allow_undefined_flag="-z nodefs"
-         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-       else
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-         # Warning - without using the other run time loading flags,
-         # -berok will link without error, but may produce a broken library.
-         no_undefined_flag=' ${wl}-bernotok'
-         allow_undefined_flag=' ${wl}-berok'
-         if test "$with_gnu_ld" = yes; then
-           # We only use this code for GNU lds that support --whole-archive.
-           whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-         else
-           # Exported symbols can be pulled into shared objects from archives
-           whole_archive_flag_spec='$convenience'
-         fi
-         archive_cmds_need_lc=yes
-         # This is similar to how AIX traditionally builds its shared libraries.
-         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-       fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-       # Native MSVC
-       hardcode_libdir_flag_spec=' '
-       allow_undefined_flag=unsupported
-       always_export_symbols=yes
-       file_list_spec='@'
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=".dll"
-       # FIXME: Setting linknames here is a bad hack.
-       archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-           sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-         else
-           sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-         fi~
-         $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-         linknames='
-       # The linker will not automatically build a static lib if we build a DLL.
-       # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-       enable_shared_with_static_runtimes=yes
-       exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-       export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-       # Don't use ranlib
-       old_postinstall_cmds='chmod 644 $oldlib'
-       postlink_cmds='lt_outputfile="@OUTPUT@"~
-         lt_tool_outputfile="@TOOL_OUTPUT@"~
-         case $lt_outputfile in
-           *.exe|*.EXE) ;;
-           *)
-             lt_outputfile="$lt_outputfile.exe"
-             lt_tool_outputfile="$lt_tool_outputfile.exe"
-             ;;
-         esac~
-         if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-           $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-           $RM "$lt_outputfile.manifest";
-         fi'
-       ;;
-      *)
-       # Assume MSVC wrapper
-       hardcode_libdir_flag_spec=' '
-       allow_undefined_flag=unsupported
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=".dll"
-       # FIXME: Setting linknames here is a bad hack.
-       archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-       # The linker will automatically build a .lib file if we build a DLL.
-       old_archive_from_new_cmds='true'
-       # FIXME: Should let the user specify the lib program.
-       old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-       enable_shared_with_static_runtimes=yes
-       ;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
-  else
-    whole_archive_flag_spec=''
-  fi
-  link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-       archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-       archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-       archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-       hardcode_libdir_separator=:
-       hardcode_direct=yes
-       hardcode_direct_absolute=yes
-       export_dynamic_flag_spec='${wl}-E'
-       # hardcode_minus_L: Not really in the search PATH,
-       # but as the default location of the library.
-       hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-       case $host_cpu in
-       hppa*64*)
-         archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       esac
-      else
-       case $host_cpu in
-       hppa*64*)
-         archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-
-         # Older versions of the 11.00 compiler do not understand -b yet
-         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler__b=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS -b"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler__b=yes
-       fi
-     else
-       lt_cv_prog_compiler__b=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
-
-if test x"$lt_cv_prog_compiler__b" = xyes; then
-    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-else
-    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-fi
-
-         ;;
-       esac
-      fi
-      if test "$with_gnu_ld" = no; then
-       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-       hardcode_libdir_separator=:
-
-       case $host_cpu in
-       hppa*64*|ia64*)
-         hardcode_direct=no
-         hardcode_shlibpath_var=no
-         ;;
-       *)
-         hardcode_direct=yes
-         hardcode_direct_absolute=yes
-         export_dynamic_flag_spec='${wl}-E'
-
-         # hardcode_minus_L: Not really in the search PATH,
-         # but as the default location of the library.
-         hardcode_minus_L=yes
-         ;;
-       esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-       # Try to use the -exported_symbol ld option, if it does not
-       # work, assume that -exports_file does not work either and
-       # implicitly export all symbols.
-       # This should be the same for all languages, so no per-tag cache variable.
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-          LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-       if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-       fi
-      else
-       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-       hardcode_direct=yes
-       hardcode_shlibpath_var=no
-       hardcode_direct_absolute=yes
-       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-         hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-         export_dynamic_flag_spec='${wl}-E'
-       else
-         case $host_os in
-          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-            archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-            hardcode_libdir_flag_spec='-R$libdir'
-            ;;
-          *)
-            archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-            hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-            ;;
-         esac
-       fi
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-       allow_undefined_flag=' -expect_unresolved \*'
-       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)     # as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-       archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-       allow_undefined_flag=' -expect_unresolved \*'
-       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-       # Both c and cxx compiler support -rpath directly
-       hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-       wlarc='${wl}'
-       archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-         $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-       case `$CC -V 2>&1` in
-       *"Compilers 5.0"*)
-         wlarc=''
-         archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-         ;;
-       *)
-         wlarc='${wl}'
-         archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-         ;;
-       esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-       # The compiler driver will combine and reorder linker options,
-       # but understands `-z linker_flag'.  GCC discards it without `$wl',
-       # but is careful enough not to reorder.
-       # Supported since Solaris 2.6 (maybe 2.5.1?)
-       if test "$GCC" = yes; then
-         whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-       else
-         whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-       fi
-       ;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-       # Use $CC to link under sequent, because it throws in some extra .o
-       # files that make .init and .fini sections work.
-       archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-       sni)
-         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         hardcode_direct=yes # is this really true???
-       ;;
-       siemens)
-         ## LD is ld it makes a PLAMLIB
-         ## CC just makes a GrossModule.
-         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-         reload_cmds='$CC -r -o $output$reload_objs'
-         hardcode_direct=no
-        ;;
-       motorola)
-         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-       ;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-       hardcode_shlibpath_var=no
-       runpath_var=LD_RUN_PATH
-       hardcode_runpath_var=yes
-       ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-       export_dynamic_flag_spec='${wl}-Blargedynsym'
-       ;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-         soname=conftest
-         lib=conftest
-         libobjs=conftest.$ac_objext
-         deplibs=
-         wl=$lt_prog_compiler_wl
-         pic_flag=$lt_prog_compiler_pic
-         compiler_flags=-v
-         linker_flags=-v
-         verstring=
-         output_objdir=.
-         libname=conftest
-         lt_save_allow_undefined_flag=$allow_undefined_flag
-         allow_undefined_flag=
-         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-         then
-           lt_cv_archive_cmds_need_lc=no
-         else
-           lt_cv_archive_cmds_need_lc=yes
-         fi
-         allow_undefined_flag=$lt_save_allow_undefined_flag
-       else
-         cat conftest.err 1>&5
-       fi
-       $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-          echo ' yes '
-          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-       :
-      else
-       can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-       if test "$lt_cv_prog_gnu_ld" = yes; then
-               version_type=linux # correct to gnu/linux during the next big refactor
-       else
-               version_type=irix
-       fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-       shlibpath_overrides_runpath=no
-       ;;
-      *)
-       shlibpath_overrides_runpath=yes
-       ;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-       ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-         if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-         if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-  # Report which library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-
-
-
-
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-       if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_pt_PKG_CONFIG" = x; then
-    PKG_CONFIG=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    PKG_CONFIG=$ac_pt_PKG_CONFIG
-  fi
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-
-fi
-if test -n "$PKG_CONFIG"; then
-       _pkg_min_version=0.9.0
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
-       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-       else
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-               PKG_CONFIG=""
-       fi
-fi
-
-
-
-       HAVE_OPENMP=no
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenMP support by $CC" >&5
-$as_echo_n "checking for OpenMP support by $CC... " >&6; }
-       echo | $CC -x c - -fsyntax-only -fopenmp -Werror >/dev/null 2>/dev/null
-       if test $? -eq 0; then
-               HAVE_OPENMP=yes
-       fi
-
-
-
-       HAVE_OPENCL=no
-       ac_fn_c_check_header_mongrel "$LINENO" "CL/opencl.h" "ac_cv_header_CL_opencl_h" "$ac_includes_default"
-if test "x$ac_cv_header_CL_opencl_h" = xyes; then :
-
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clGetPlatformIDs in -lOpenCL" >&5
-$as_echo_n "checking for clGetPlatformIDs in -lOpenCL... " >&6; }
-if ${ac_cv_lib_OpenCL_clGetPlatformIDs+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lOpenCL  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char clGetPlatformIDs ();
-int
-main ()
-{
-return clGetPlatformIDs ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_OpenCL_clGetPlatformIDs=yes
-else
-  ac_cv_lib_OpenCL_clGetPlatformIDs=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_OpenCL_clGetPlatformIDs" >&5
-$as_echo "$ac_cv_lib_OpenCL_clGetPlatformIDs" >&6; }
-if test "x$ac_cv_lib_OpenCL_clGetPlatformIDs" = xyes; then :
-
-                       SAVE_LIBS=$LIBS
-                       LIBS="$LIBS -lOpenCL"
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenCL CPU device" >&5
-$as_echo_n "checking for OpenCL CPU device... " >&6; }
-                       if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <CL/opencl.h>
-int
-main ()
-{
-
-       cl_platform_id platform;
-       cl_device_id dev;
-
-       if (clGetPlatformIDs(1, &platform, NULL) < 0)
-               return 1;
-       if (clGetDeviceIDs(platform, CL_DEVICE_TYPE_CPU, 1, &dev, NULL) < 0)
-               return 1;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  HAVE_OPENCL=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_OPENCL" >&5
-$as_echo "$HAVE_OPENCL" >&6; }
-                       LIBS=$SAVE_LIBS
-
-fi
-
-fi
-
-
-
-if test $HAVE_OPENCL = yes; then
-       extra_tests="$extra_tests opencl_test.sh"
-fi
-
-
-
-
-
-# Check whether --with-isl was given.
-if test "${with_isl+set}" = set; then :
-  withval=$with_isl;
-fi
-
-case "system" in
-build|bundled|system)
-
-# Check whether --with-isl_prefix was given.
-if test "${with_isl_prefix+set}" = set; then :
-  withval=$with_isl_prefix;
-fi
-
-
-# Check whether --with-isl_exec_prefix was given.
-if test "${with_isl_exec_prefix+set}" = set; then :
-  withval=$with_isl_exec_prefix;
-fi
-
-esac
-
-# Check whether --with-isl_builddir was given.
-if test "${with_isl_builddir+set}" = set; then :
-  withval=$with_isl_builddir;
-fi
-
-if test "x$with_isl_prefix" != "x" -a "x$with_isl_exec_prefix" = "x"; then
-       with_isl_exec_prefix=$with_isl_prefix
-fi
-if test "x$with_isl_prefix" != "x" -o "x$with_isl_exec_prefix" != "x"; then
-       if test "x$with_isl" != "x" -a "x$with_isl" != "xsystem"; then
-               as_fn_error $? "Setting $with_isl_prefix implies use of system isl" "$LINENO" 5
-       fi
-       with_isl="system"
-fi
-if test "x$with_isl_builddir" != "x"; then
-       if test "x$with_isl" != "x" -a "x$with_isl" != "xbuild"; then
-               as_fn_error $? "Setting $with_isl_builddir implies use of build isl" "$LINENO" 5
-       fi
-       with_isl="build"
-       isl_srcdir=`echo @abs_srcdir@ | $with_isl_builddir/config.status --file=-`
-       { $as_echo "$as_me:${as_lineno-$LINENO}: isl sources in $isl_srcdir" >&5
-$as_echo "$as_me: isl sources in $isl_srcdir" >&6;}
-fi
-if test "x$with_isl_exec_prefix" != "x"; then
-       export PKG_CONFIG_PATH="$with_isl_exec_prefix/lib/pkgconfig${PKG_CONFIG_PATH+:$PKG_CONFIG_PATH}"
-fi
-case "$with_isl" in
-build|bundled|system)
-       ;;
-*)
-       case "bundled" in
-       bundled)
-               if test -d $srcdir/.git -a \
-                       -d $srcdir/isl -a \
-                       "`cd $srcdir; git submodule status isl | cut -c1`" = '-'; then
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: git repo detected, but submodule isl not initialized" >&5
-$as_echo "$as_me: WARNING: git repo detected, but submodule isl not initialized" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You may want to run" >&5
-$as_echo "$as_me: WARNING: You may want to run" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       git submodule init" >&5
-$as_echo "$as_me: WARNING:     git submodule init" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       git submodule update" >&5
-$as_echo "$as_me: WARNING:     git submodule update" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       sh autogen.sh" >&5
-$as_echo "$as_me: WARNING:     sh autogen.sh" >&2;}
-               fi
-               if test -f $srcdir/isl/configure; then
-                       with_isl="bundled"
-               else
-                       case "system" in
-                       build|bundled|system)
-                               with_isl="system"
-                               ;;
-                       *)
-                               with_isl="no"
-                               ;;
-                       esac
-               fi
-               ;;
-       *)
-               with_isl="bundled"
-               ;;
-       esac
-       ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which isl to use" >&5
-$as_echo_n "checking which isl to use... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_isl" >&5
-$as_echo "$with_isl" >&6; }
-
-
-
- if test $with_isl = bundled; then
-  BUNDLED_ISL_TRUE=
-  BUNDLED_ISL_FALSE='#'
-else
-  BUNDLED_ISL_TRUE='#'
-  BUNDLED_ISL_FALSE=
-fi
-
-
-
-
-case "$with_isl" in
-bundled)
-       ISL_CFLAGS="-I\$(top_srcdir)/isl/include -I\$(top_builddir)/isl/include"
-       ISL_CFLAGS="$ISL_CFLAGS"
-       ppcg_configure_args="$ppcg_configure_args --with-isl-builddir=../isl"
-       ppcg_configure_args="$ppcg_configure_args --with-isl=build"
-       ;;
-build)
-       ISL_BUILDDIR=`echo @abs_builddir@ | $with_isl_builddir/config.status --file=-`
-       ppcg_configure_args="$ppcg_configure_args --with-isl-builddir=$ISL_BUILDDIR"
-       ISL_CFLAGS="-I$isl_srcdir/include -I$ISL_BUILDDIR/include"
-       ISL_CFLAGS="$ISL_CFLAGS"
-       ISL_LIBS="$with_isl_builddir/libisl.la"
-       ;;
-system)
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISL" >&5
-$as_echo_n "checking for ISL... " >&6; }
-
-if test -n "$ISL_CFLAGS"; then
-    pkg_cv_ISL_CFLAGS="$ISL_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"isl\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "isl") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_ISL_CFLAGS=`$PKG_CONFIG --cflags "isl" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$ISL_LIBS"; then
-    pkg_cv_ISL_LIBS="$ISL_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"isl\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "isl") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_ISL_LIBS=`$PKG_CONFIG --libs "isl" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-               ISL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "isl" 2>&1`
-        else
-               ISL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "isl" 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$ISL_PKG_ERRORS" >&5
-
-       as_fn_error $? "Package requirements (isl) were not met:
-
-$ISL_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables ISL_CFLAGS
-and ISL_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
-elif test $pkg_failed = untried; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables ISL_CFLAGS
-and ISL_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
-else
-       ISL_CFLAGS=$pkg_cv_ISL_CFLAGS
-       ISL_LIBS=$pkg_cv_ISL_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-fi
-esac
-
-
-
-
-
-# Check whether --with-pet was given.
-if test "${with_pet+set}" = set; then :
-  withval=$with_pet;
-fi
-
-case "system" in
-bundled|system)
-
-# Check whether --with-pet_prefix was given.
-if test "${with_pet_prefix+set}" = set; then :
-  withval=$with_pet_prefix;
-fi
-
-
-# Check whether --with-pet_exec_prefix was given.
-if test "${with_pet_exec_prefix+set}" = set; then :
-  withval=$with_pet_exec_prefix;
-fi
-
-esac
-
-if test "x$with_pet_prefix" != "x" -a "x$with_pet_exec_prefix" = "x"; then
-       with_pet_exec_prefix=$with_pet_prefix
-fi
-if test "x$with_pet_prefix" != "x" -o "x$with_pet_exec_prefix" != "x"; then
-       if test "x$with_pet" != "x" -a "x$with_pet" != "xsystem"; then
-               as_fn_error $? "Setting $with_pet_prefix implies use of system pet" "$LINENO" 5
-       fi
-       with_pet="system"
-fi
-if test "x$with_pet_builddir" != "x"; then
-       if test "x$with_pet" != "x" -a "x$with_pet" != "xbuild"; then
-               as_fn_error $? "Setting $with_pet_builddir implies use of build pet" "$LINENO" 5
-       fi
-       with_pet="build"
-       pet_srcdir=`echo @abs_srcdir@ | $with_pet_builddir/config.status --file=-`
-       { $as_echo "$as_me:${as_lineno-$LINENO}: pet sources in $pet_srcdir" >&5
-$as_echo "$as_me: pet sources in $pet_srcdir" >&6;}
-fi
-if test "x$with_pet_exec_prefix" != "x"; then
-       export PKG_CONFIG_PATH="$with_pet_exec_prefix/lib/pkgconfig${PKG_CONFIG_PATH+:$PKG_CONFIG_PATH}"
-fi
-case "$with_pet" in
-bundled|system)
-       ;;
-*)
-       case "bundled" in
-       bundled)
-               if test -d $srcdir/.git -a \
-                       -d $srcdir/pet -a \
-                       "`cd $srcdir; git submodule status pet | cut -c1`" = '-'; then
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: git repo detected, but submodule pet not initialized" >&5
-$as_echo "$as_me: WARNING: git repo detected, but submodule pet not initialized" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You may want to run" >&5
-$as_echo "$as_me: WARNING: You may want to run" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       git submodule init" >&5
-$as_echo "$as_me: WARNING:     git submodule init" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       git submodule update" >&5
-$as_echo "$as_me: WARNING:     git submodule update" >&2;}
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:       sh autogen.sh" >&5
-$as_echo "$as_me: WARNING:     sh autogen.sh" >&2;}
-               fi
-               if test -f $srcdir/pet/configure; then
-                       with_pet="bundled"
-               else
-                       case "system" in
-                       bundled|system)
-                               with_pet="system"
-                               ;;
-                       *)
-                               with_pet="no"
-                               ;;
-                       esac
-               fi
-               ;;
-       *)
-               with_pet="bundled"
-               ;;
-       esac
-       ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which pet to use" >&5
-$as_echo_n "checking which pet to use... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_pet" >&5
-$as_echo "$with_pet" >&6; }
-
-
-
- if test $with_pet = bundled; then
-  BUNDLED_PET_TRUE=
-  BUNDLED_PET_FALSE='#'
-else
-  BUNDLED_PET_TRUE='#'
-  BUNDLED_PET_FALSE=
-fi
-
-
-
-
-case "$with_pet" in
-bundled)
-       PET_CFLAGS="$PET_CFLAGS -I\$(top_srcdir)/pet/include"
-       ;;
-system)
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PET" >&5
-$as_echo_n "checking for PET... " >&6; }
-
-if test -n "$PET_CFLAGS"; then
-    pkg_cv_PET_CFLAGS="$PET_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pet\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "pet") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PET_CFLAGS=`$PKG_CONFIG --cflags "pet" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$PET_LIBS"; then
-    pkg_cv_PET_LIBS="$PET_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pet\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "pet") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PET_LIBS=`$PKG_CONFIG --libs "pet" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-               PET_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pet" 2>&1`
-        else
-               PET_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pet" 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$PET_PKG_ERRORS" >&5
-
-       as_fn_error $? "Package requirements (pet) were not met:
-
-$PET_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables PET_CFLAGS
-and PET_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
-elif test $pkg_failed = untried; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables PET_CFLAGS
-and PET_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
-else
-       PET_CFLAGS=$pkg_cv_PET_CFLAGS
-       PET_LIBS=$pkg_cv_PET_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-fi
-       ;;
-esac
-
-
-
-
-# Check whether --with-polybench was given.
-if test "${with_polybench+set}" = set; then :
-  withval=$with_polybench;
-       if test -f "$with_polybench/utilities/benchmark_list"; then
-               POLYBENCH_DIR=$with_polybench
-               extra_tests="$extra_tests polybench_test.sh"
-       fi
-
-fi
-
-
-
-
-
-
-       if test -f $srcdir/.git/HEAD; then
-               GIT_HEAD="$srcdir/.git/index"
-               GIT_REPO="$srcdir/.git"
-               GIT_HEAD_ID=`GIT_DIR=$GIT_REPO git describe --always`
-       elif test -f $srcdir/GIT_HEAD_ID; then
-               GIT_HEAD_ID=`cat $srcdir/GIT_HEAD_ID`
-       else
-               mysrcdir=`(cd $srcdir; pwd)`
-               head=`basename $mysrcdir | sed -e 's/.*-//'`
-               head2=`echo $head | sed -e 's/^0-9a-f//'`
-               head3=`echo $head2 | sed -e 's/........................................//'`
-               if test "x$head3" = "x" -a "x$head" = "x$head2"; then
-                       GIT_HEAD_ID="$head"
-               else
-                       GIT_HEAD_ID="UNKNOWN"
-               fi
-       fi
-       if test -z "$GIT_REPO" ; then
-               GIT_HEAD_VERSION="$GIT_HEAD_ID"
-       else
-               GIT_HEAD_VERSION="\`GIT_DIR=$GIT_REPO git describe --always\`"
-       fi
-
-echo '#define GIT_HEAD_ID "'$GIT_HEAD_ID'"' > gitversion.h
-
-ac_config_files="$ac_config_files Makefile"
-
-ac_config_files="$ac_config_files polybench_test.sh"
-
-ac_config_files="$ac_config_files opencl_test.sh"
-
-if test $with_isl = bundled; then
-
-
-subdirs="$subdirs isl"
-
-fi
-if test $with_pet = bundled; then
-       subdirs="$subdirs pet"
-
-fi
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-       "s/'/'\\\\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-       cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-         mv -f confcache "$cache_file"$$ &&
-         mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-         mv -f confcache "$cache_file" ;;
-       esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-#
-# If the first sed substitution is executed (which looks for macros that
-# take arguments), then branch to the quote section.  Otherwise,
-# look for a macro that doesn't take arguments.
-ac_script='
-:mline
-/\\$/{
- N
- s,\\\n,,
- b mline
-}
-t clear
-:clear
-s/^[    ]*#[    ]*define[       ][      ]*\([^  (][^    (]*([^)]*)\)[   ]*\(.*\)/-D\1=\2/g
-t quote
-s/^[    ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)/-D\1=\2/g
-t quote
-b any
-:quote
-s/[     `~#$^&*(){}\\|;'\''"<>?]/\\&/g
-s/\[/\\&/g
-s/\]/\\&/g
-s/\$/$$/g
-H
-:any
-${
-       g
-       s/^\n//
-       s/\n/ /g
-       p
-}
-'
-DEFS=`sed -n "$ac_script" confdefs.h`
-
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${BUNDLED_ISL_TRUE}" && test -z "${BUNDLED_ISL_FALSE}"; then
-  as_fn_error $? "conditional \"BUNDLED_ISL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${BUNDLED_PET_TRUE}" && test -z "${BUNDLED_PET_FALSE}"; then
-  as_fn_error $? "conditional \"BUNDLED_PET\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='        ';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by ppcg $as_me 0.04, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-
-Configuration files:
-$config_files
-
-Configuration commands:
-$config_commands
-
-Report bugs to <isl-development@googlegroups.com>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-ppcg config.status 0.04
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h |  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
-host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-OBJDUMP \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-DLLTOOL \
-sharedlib_from_linklib_cmd \
-AR \
-AR_FLAGS \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-nm_file_list_spec \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "polybench_test.sh") CONFIG_FILES="$CONFIG_FILES polybench_test.sh" ;;
-    "opencl_test.sh") CONFIG_FILES="$CONFIG_FILES opencl_test.sh" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = "\a"
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
-h
-s///
-s/^/:/
-s/[     ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[  ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[      ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-
-eval set X "  :F $CONFIG_FILES      :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-        # (if the path is not absolute).  The absolute path cannot be DOS-style,
-        # because $ac_f cannot contain `:'.
-        test -f "$ac_f" ||
-          case $ac_f in
-          [\\/$]*) false;;
-          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-          esac ||
-          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-       `' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$ac_file" : 'X\(//\)[^/]' \| \
-        X"$ac_file" : 'X\(//\)$' \| \
-        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$mf" : 'X\(//\)[^/]' \| \
-        X"$mf" : 'X\(//\)$' \| \
-        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$file" : 'X\(//\)[^/]' \| \
-        X"$file" : 'X\(//\)$' \| \
-        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
- ;;
-    "libtool":C)
-
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that 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 GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags=""
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# An object symbol dumper.
-OBJDUMP=$lt_OBJDUMP
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  if test x"$xsi_shell" = xyes; then
-  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\    # positional parameters, so assign one to ordinary parameter first.\
-\    func_stripname_result=${3}\
-\    func_stripname_result=${func_stripname_result#"${1}"}\
-\    func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\    func_split_long_opt_name=${1%%=*}\
-\    func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\    func_split_short_opt_arg=${1#??}\
-\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\    case ${1} in\
-\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\      *)    func_lo2o_result=${1} ;;\
-\    esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
-    func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
-    func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
-    func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
-    eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\    func_quote_for_eval "${2}"\
-\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
- ;;
-    "polybench_test.sh":F) chmod +x polybench_test.sh ;;
-    "opencl_test.sh":F) chmod +x opencl_test.sh ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-                       ac_configure_args="$ac_configure_args $ppcg_configure_args"
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-
-#
-# CONFIG_SUBDIRS section.
-#
-if test "$no_recursion" != yes; then
-
-  # Remove --cache-file, --srcdir, and --disable-option-checking arguments
-  # so they do not pile up.
-  ac_sub_configure_args=
-  ac_prev=
-  eval "set x $ac_configure_args"
-  shift
-  for ac_arg
-  do
-    if test -n "$ac_prev"; then
-      ac_prev=
-      continue
-    fi
-    case $ac_arg in
-    -cache-file | --cache-file | --cache-fil | --cache-fi \
-    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-      ac_prev=cache_file ;;
-    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
-    | --c=*)
-      ;;
-    --config-cache | -C)
-      ;;
-    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-      ac_prev=srcdir ;;
-    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-      ;;
-    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-      ac_prev=prefix ;;
-    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-      ;;
-    --disable-option-checking)
-      ;;
-    *)
-      case $ac_arg in
-      *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-      esac
-      as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
-    esac
-  done
-
-  # Always prepend --prefix to ensure using the same prefix
-  # in subdir configurations.
-  ac_arg="--prefix=$prefix"
-  case $ac_arg in
-  *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-  esac
-  ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
-
-  # Pass --silent
-  if test "$silent" = yes; then
-    ac_sub_configure_args="--silent $ac_sub_configure_args"
-  fi
-
-  # Always prepend --disable-option-checking to silence warnings, since
-  # different subdirs can have different --enable and --with options.
-  ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
-
-  ac_popdir=`pwd`
-  for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
-
-    # Do not complain, so a configure script can configure whichever
-    # parts of a large source tree are present.
-    test -d "$srcdir/$ac_dir" || continue
-
-    ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
-    $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
-    $as_echo "$ac_msg" >&6
-    as_dir="$ac_dir"; as_fn_mkdir_p
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-    cd "$ac_dir"
-
-    # Check for guested configure; otherwise get Cygnus style configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      ac_sub_configure=$ac_srcdir/configure.gnu
-    elif test -f "$ac_srcdir/configure"; then
-      ac_sub_configure=$ac_srcdir/configure
-    elif test -f "$ac_srcdir/configure.in"; then
-      # This should be Cygnus configure.
-      ac_sub_configure=$ac_aux_dir/configure
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5
-$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
-      ac_sub_configure=
-    fi
-
-    # The recursion is here.
-    if test -n "$ac_sub_configure"; then
-      # Make the cache file name correct relative to the subdirectory.
-      case $cache_file in
-      [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
-      *) # Relative name.
-       ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
-      esac
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
-$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
-      # The eval makes quoting arguments work.
-      eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
-          --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
-       as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
-    fi
-
-    cd "$ac_popdir"
-  done
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/polly/lib/External/ppcg/configure.ac b/polly/lib/External/ppcg/configure.ac
deleted file mode 100644 (file)
index a4b1aaa..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-AC_INIT([ppcg], [0.07], [isl-development@googlegroups.com])
-AC_CONFIG_AUX_DIR([.])
-AC_CONFIG_MACRO_DIR([m4])
-AM_INIT_AUTOMAKE([foreign])
-m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
-
-AC_PROG_CC
-AC_PROG_LIBTOOL
-PKG_PROG_PKG_CONFIG
-
-AX_CHECK_OPENMP
-AX_CHECK_OPENCL
-if test $HAVE_OPENCL = yes; then
-       extra_tests="$extra_tests opencl_test.sh"
-fi
-
-AX_SUBMODULE(isl,build|bundled|system,bundled)
-AM_CONDITIONAL(BUNDLED_ISL, test $with_isl = bundled)
-
-AC_SUBST(ISL_CFLAGS)
-AC_SUBST(ISL_LIBS)
-case "$with_isl" in
-bundled)
-       ISL_CFLAGS="-I\$(top_srcdir)/isl/include -I\$(top_builddir)/isl/include"
-       ISL_CFLAGS="$ISL_CFLAGS"
-       ppcg_configure_args="$ppcg_configure_args --with-isl-builddir=../isl"
-       ppcg_configure_args="$ppcg_configure_args --with-isl=build"
-       ppcg_configure_args="$ppcg_configure_args --with-clang=system"
-       ;;
-build)
-       ISL_BUILDDIR=`echo @abs_builddir@ | $with_isl_builddir/config.status --file=-`
-       ppcg_configure_args="$ppcg_configure_args --with-isl-builddir=$ISL_BUILDDIR"
-       ISL_CFLAGS="-I$isl_srcdir/include -I$ISL_BUILDDIR/include"
-       ISL_CFLAGS="$ISL_CFLAGS"
-       ISL_LIBS="$with_isl_builddir/libisl.la"
-       ;;
-system)
-       PKG_CHECK_MODULES([ISL], [isl])
-esac
-
-AX_SUBMODULE(pet,bundled|system,bundled)
-AM_CONDITIONAL(BUNDLED_PET, test $with_pet = bundled)
-
-AC_SUBST(PET_CFLAGS)
-AC_SUBST(PET_LIBS)
-case "$with_pet" in
-bundled)
-       PET_CFLAGS="$PET_CFLAGS -I\$(top_srcdir)/pet/include"
-       ;;
-system)
-       PKG_CHECK_MODULES([PET], [pet])
-       ;;
-esac
-
-AC_SUBST(POLYBENCH_DIR)
-AC_SUBST(extra_tests)
-AC_ARG_WITH([polybench],
-       [AS_HELP_STRING([--with-polybench=DIR], [PolyBench location])],
-       [
-       if test -f "$with_polybench/utilities/benchmark_list"; then
-               POLYBENCH_DIR=$with_polybench
-               extra_tests="$extra_tests polybench_test.sh"
-       fi
-       ])
-
-AX_DETECT_GIT_HEAD
-echo '#define GIT_HEAD_ID "'$GIT_HEAD_ID'"' > gitversion.h
-
-AC_CONFIG_FILES(Makefile)
-AC_CONFIG_FILES([polybench_test.sh], [chmod +x polybench_test.sh])
-AC_CONFIG_FILES([opencl_test.sh], [chmod +x opencl_test.sh])
-if test $with_isl = bundled; then
-       AC_CONFIG_SUBDIRS(isl)
-fi
-if test $with_pet = bundled; then
-       AC_CONFIG_SUBDIRS(pet)
-fi
-AC_CONFIG_COMMANDS_POST([
-       dnl pass on arguments to subdir configures, but don't
-       dnl add them to config.status
-       ac_configure_args="$ac_configure_args $ppcg_configure_args"
-])
-AC_OUTPUT
diff --git a/polly/lib/External/ppcg/depcomp b/polly/lib/External/ppcg/depcomp
deleted file mode 100644 (file)
index 25a39e6..0000000
+++ /dev/null
@@ -1,708 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2012-03-27.16; # UTC
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
-  '')
-     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by 'PROGRAMS ARGS'.
-  object      Object file output by 'PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputting dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-# A tabulation character.
-tab='  '
-# A newline character.
-nl='
-'
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-  echo "depcomp: Variables source, object and depmode must be set" 1>&2
-  exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags.  We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write.  Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
-  # HP compiler uses -M and no extra arg.
-  gccflag=-M
-  depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
-   # This is just like msvisualcpp but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u='sed s,\\\\,/,g'
-   depmode=msvisualcpp
-fi
-
-if test "$depmode" = msvc7msys; then
-   # This is just like msvc7 but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u='sed s,\\\\,/,g'
-   depmode=msvc7
-fi
-
-if test "$depmode" = xlc; then
-   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
-   gccflag=-qmakedep=gcc,-MF
-   depmode=gcc
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff.  Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am.  Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
-  for arg
-  do
-    case $arg in
-    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
-    *)  set fnord "$@" "$arg" ;;
-    esac
-    shift # fnord
-    shift # $arg
-  done
-  "$@"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## There are various ways to get dependency output from gcc.  Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-##   up in a subdir.  Having to rename by hand is ugly.
-##   (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-##   than renaming).
-  if test -z "$gccflag"; then
-    gccflag=-MD,
-  fi
-  "$@" -Wp,"$gccflag$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
-  sed -e 's/^[^:]*: / /' \
-      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the "deleted header file" problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header).  We avoid this by adding
-## dummy dependencies for each header file.  Too bad gcc doesn't do
-## this for us directly.
-  tr ' ' "$nl" < "$tmpdepfile" |
-## Some versions of gcc put a space before the ':'.  On the theory
-## that the space means something, we add a space to the output as
-## well.  hp depmode also adds that space, but also prefixes the VPATH
-## to the object.  Take care to not repeat it in the output.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
-      | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like '#:fec' to the end of the
-    # dependency line.
-    tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr "$nl" ' ' >> "$depfile"
-    echo >> "$depfile"
-
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' "$nl" < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-xlc)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-aix)
-  # The C for AIX Compiler uses -M and outputs the dependencies
-  # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts '$object:' at the
-  # start of each line; $object doesn't have directory information.
-  # Version 6 uses the directory in both cases.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$base.u
-    tmpdepfile3=$dir.libs/$base.u
-    "$@" -Wc,-M
-  else
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$dir$base.u
-    tmpdepfile3=$dir$base.u
-    "$@" -M
-  fi
-  stat=$?
-
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form 'foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # '$object: dependent.h' and one to simply 'dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-icc)
-  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
-  # However on
-  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using '\':
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-  # tcc 0.9.26 (FIXME still under development at the moment of writing)
-  # will emit a similar output, but also prepend the continuation lines
-  # with horizontal tabulation characters.
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each line is of the form 'foo.o: dependent.h',
-  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
-  # Do two passes, one to just change these to
-  # '$object: dependent.h' and one to simply 'dependent.h:'.
-  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
-    < "$tmpdepfile" > "$depfile"
-  sed '
-    s/[ '"$tab"'][ '"$tab"']*/ /g
-    s/^ *//
-    s/ *\\*$//
-    s/^[^:]*: *//
-    /^$/d
-    /:$/d
-    s/$/ :/
-  ' < "$tmpdepfile" >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp2)
-  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-  # compilers, which have integrated preprocessors.  The correct option
-  # to use with these is +Maked; it writes dependencies to a file named
-  # 'foo.d', which lands next to the object file, wherever that
-  # happens to be.
-  # Much of this is similar to the tru64 case; see comments there.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir.libs/$base.d
-    "$@" -Wc,+Maked
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    "$@" +Maked
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-     rm -f "$tmpdepfile1" "$tmpdepfile2"
-     exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add 'dependent.h:' lines.
-    sed -ne '2,${
-              s/^ *//
-              s/ \\*$//
-              s/$/:/
-              p
-            }' "$tmpdepfile" >> "$depfile"
-  else
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile" "$tmpdepfile2"
-  ;;
-
-tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in 'foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
-
-msvc7)
-  if test "$libtool" = yes; then
-    showIncludes=-Wc,-showIncludes
-  else
-    showIncludes=-showIncludes
-  fi
-  "$@" $showIncludes > "$tmpdepfile"
-  stat=$?
-  grep -v '^Note: including file: ' "$tmpdepfile"
-  if test "$stat" = 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  # The first sed program below extracts the file names and escapes
-  # backslashes for cygpath.  The second sed program outputs the file
-  # name when reading, but also accumulates all include files in the
-  # hold buffer in order to output them again at the end.  This only
-  # works with sed implementations that can handle large buffers.
-  sed < "$tmpdepfile" -n '
-/^Note: including file:  *\(.*\)/ {
-  s//\1/
-  s/\\/\\\\/g
-  p
-}' | $cygpath_u | sort -u | sed -n '
-s/ /\\ /g
-s/\(.*\)/'"$tab"'\1 \\/p
-s/.\(.*\) \\/\1:/
-H
-$ {
-  s/.*/'"$tab"'/
-  G
-  p
-}' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvc7msys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-#nosideeffect)
-  # This comment above is used by automake to tell side-effect
-  # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove '-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for ':'
-  # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
-  "$@" $dashmflag |
-    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  tr ' ' "$nl" < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-dashXmstdout)
-  # This case only exists to satisfy depend.m4.  It is never actually
-  # run, as this mode is specially recognized in the preamble.
-  exit 1
-  ;;
-
-makedepend)
-  "$@" || exit $?
-  # Remove any Libtool call
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no eat=no
-  for arg
-  do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    if test $eat = yes; then
-      eat=no
-      continue
-    fi
-    case "$arg" in
-    -D*|-I*)
-      set fnord "$@" "$arg"; shift ;;
-    # Strip any option that makedepend may not understand.  Remove
-    # the object too, otherwise makedepend will parse it as a source file.
-    -arch)
-      eat=yes ;;
-    -*|$object)
-      ;;
-    *)
-      set fnord "$@" "$arg"; shift ;;
-    esac
-  done
-  obj_suffix=`echo "$object" | sed 's/^.*\././'`
-  touch "$tmpdepfile"
-  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-  rm -f "$depfile"
-  # makedepend may prepend the VPATH from the source file name to the object.
-  # No need to regex-escape $object, excess matching of '.' is harmless.
-  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile" "$tmpdepfile".bak
-  ;;
-
-cpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove '-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  cat < "$tmpdepfile" >> "$depfile"
-  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvisualcpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-       set fnord "$@"
-       shift
-       shift
-       ;;
-    *)
-       set fnord "$@" "$arg"
-       shift
-       shift
-       ;;
-    esac
-  done
-  "$@" -E 2>/dev/null |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
-  echo "$tab" >> "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvcmsys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-none)
-  exec "$@"
-  ;;
-
-*)
-  echo "Unknown depmode $depmode" 1>&2
-  exit 1
-  ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/ppcg/install-sh b/polly/lib/External/ppcg/install-sh
deleted file mode 100644 (file)
index a9244eb..0000000
+++ /dev/null
@@ -1,527 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2011-01-19.21; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" ""       $nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve the last data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -s            $stripprog installed files.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-       shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-       case $mode in
-         *' '* | *'    '* | *'
-'*       | *'*'* | *'?'* | *'['*)
-           echo "$0: invalid mode: $mode" >&2
-           exit 1;;
-       esac
-       shift;;
-
-    -o) chowncmd="$chownprog $2"
-       shift;;
-
-    -s) stripcmd=$stripprog;;
-
-    -t) dst_arg=$2
-       # Protect names problematic for `test' and other utilities.
-       case $dst_arg in
-         -* | [=\(\)!]) dst_arg=./$dst_arg;;
-       esac
-       shift;;
-
-    -T) no_target_directory=true;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --)        shift
-       break;;
-
-    -*)        echo "$0: invalid option: $1" >&2
-       exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-    # Protect names problematic for `test' and other utilities.
-    case $dst_arg in
-      -* | [=\(\)!]) dst_arg=./$dst_arg;;
-    esac
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call `install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  do_exit='(exit $ret); exit $ret'
-  trap "ret=129; $do_exit" 1
-  trap "ret=130; $do_exit" 2
-  trap "ret=141; $do_exit" 13
-  trap "ret=143; $do_exit" 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-       u_plus_rw=
-      else
-       u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-       u_plus_rw=
-      else
-       u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names problematic for `test' and other utilities.
-  case $src in
-    -* | [=\(\)!]) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-    dst=$dst_arg
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-       echo "$0: $dst_arg: Is a directory" >&2
-       exit 1
-      fi
-      dstdir=$dst
-      dst=$dstdir/`basename "$src"`
-      dstdir_status=0
-    else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-       (dirname "$dst") 2>/dev/null ||
-       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-            X"$dst" : 'X\(//\)[^/]' \| \
-            X"$dst" : 'X\(//\)$' \| \
-            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-       echo X"$dst" |
-           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\/\)[^/].*/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\/\)$/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\).*/{
-                  s//\1/
-                  q
-                }
-                s/.*/./; q'
-      `
-
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-       # Create intermediate dirs using mode 755 as modified by the umask.
-       # This is like FreeBSD 'install' as of 1997-10-28.
-       umask=`umask`
-       case $stripcmd.$umask in
-         # Optimize common cases.
-         *[2367][2367]) mkdir_umask=$umask;;
-         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-         *[0-7])
-           mkdir_umask=`expr $umask + 22 \
-             - $umask % 100 % 40 + $umask % 20 \
-             - $umask % 10 % 4 + $umask % 2
-           `;;
-         *) mkdir_umask=$umask,go-w;;
-       esac
-
-       # With -d, create the new directory with the user-specified mode.
-       # Otherwise, rely on $mkdir_umask.
-       if test -n "$dir_arg"; then
-         mkdir_mode=-m$mode
-       else
-         mkdir_mode=
-       fi
-
-       posix_mkdir=false
-       case $umask in
-         *[123567][0-7][0-7])
-           # POSIX mkdir -p sets u+wx bits regardless of umask, which
-           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-           ;;
-         *)
-           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-           if (umask $mkdir_umask &&
-               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-           then
-             if test -z "$dir_arg" || {
-                  # Check for POSIX incompatibilities with -m.
-                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-                  # other-writeable bit of parent directory when it shouldn't.
-                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
-                  case $ls_ld_tmpdir in
-                    d????-?r-*) different_mode=700;;
-                    d????-?--*) different_mode=755;;
-                    *) false;;
-                  esac &&
-                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-                  }
-                }
-             then posix_mkdir=:
-             fi
-             rmdir "$tmpdir/d" "$tmpdir"
-           else
-             # Remove any dirs left behind by ancient mkdir implementations.
-             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-           fi
-           trap '' 0;;
-       esac;;
-    esac
-
-    if
-      $posix_mkdir && (
-       umask $mkdir_umask &&
-       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # The umask is ridiculous, or mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-       /*) prefix='/';;
-       [-=\(\)!]*) prefix='./';;
-       *)  prefix='';;
-      esac
-
-      eval "$initialize_posix_glob"
-
-      oIFS=$IFS
-      IFS=/
-      $posix_glob set -f
-      set fnord $dstdir
-      shift
-      $posix_glob set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-       test X"$d" = X && continue
-
-       prefix=$prefix$d
-       if test -d "$prefix"; then
-         prefixes=
-       else
-         if $posix_mkdir; then
-           (umask=$mkdir_umask &&
-            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-           # Don't fail if two instances are running concurrently.
-           test -d "$prefix" || exit 1
-         else
-           case $prefix in
-             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-             *) qprefix=$prefix;;
-           esac
-           prefixes="$prefixes '$qprefix'"
-         fi
-       fi
-       prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-       # Don't fail if two instances are running concurrently.
-       (umask $mkdir_umask &&
-        eval "\$doit_exec \$mkdirprog $prefixes") ||
-         test -d "$dstdir" || exit 1
-       obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-       # Now remove or move aside any old file at destination location.
-       # We try this two ways since rm can't unlink itself on some
-       # systems and the destination file might be busy for other
-       # reasons.  In this case, the final cleanup might fail but the new
-       # file should still install successfully.
-       {
-         test ! -f "$dst" ||
-         $doit $rmcmd -f "$dst" 2>/dev/null ||
-         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-         } ||
-         { echo "$0: cannot unlink or rename $dst" >&2
-           (exit 1); exit 1
-         }
-       } &&
-
-       # Now rename the file to the real destination.
-       $doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/ppcg/ltmain.sh b/polly/lib/External/ppcg/ltmain.sh
deleted file mode 100644 (file)
index b9205ee..0000000
+++ /dev/null
@@ -1,9661 +0,0 @@
-
-# libtool (GNU libtool) 2.4.2
-# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that 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 GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-#       --config             show all configuration variables
-#       --debug              enable verbose shell tracing
-#   -n, --dry-run            display commands without modifying any files
-#       --features           display basic configuration information and exit
-#       --mode=MODE          use operation mode MODE
-#       --preserve-dup-deps  don't remove duplicate dependency libraries
-#       --quiet, --silent    don't print informational messages
-#       --no-quiet, --no-silent
-#                            print informational messages (default)
-#       --no-warn            don't display warning messages
-#       --tag=TAG            use configuration variables from tag TAG
-#   -v, --verbose            print more informational messages than default
-#       --no-verbose         don't print the extra informational messages
-#       --version            print version information
-#   -h, --help, --help-all   print short, long, or detailed help message
-#
-# MODE must be one of the following:
-#
-#         clean              remove files from the build directory
-#         compile            compile a source file into a libtool object
-#         execute            automatically set library path, then run a program
-#         finish             complete the installation of libtool libraries
-#         install            install libraries or executables
-#         link               create a library or an executable
-#         uninstall          remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE.  When passed as first option,
-# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-#         host-triplet:        $host
-#         shell:               $SHELL
-#         compiler:            $LTCC
-#         compiler flags:              $LTCFLAGS
-#         linker:              $LD (gnu? $with_gnu_ld)
-#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1.2ubuntu1
-#         automake:    $automake_version
-#         autoconf:    $autoconf_version
-#
-# Report bugs to <bug-libtool@gnu.org>.
-# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-# General help using GNU software: <http://www.gnu.org/gethelp/>.
-
-PROGRAM=libtool
-PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.2ubuntu1"
-TIMESTAMP=""
-package_revision=1.3337
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# NLS nuisances: We save the old values to restore during execute mode.
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
-  eval "if test \"\${$lt_var+set}\" = set; then
-          save_$lt_var=\$$lt_var
-          $lt_var=C
-         export $lt_var
-         lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
-         lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
-       fi"
-done
-LC_ALL=C
-LANGUAGE=C
-export LANGUAGE LC_ALL
-
-$lt_unset CDPATH
-
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
-
-
-
-: ${CP="cp -f"}
-test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77     # $? = 77 is used to indicate a skipped test to automake.
-
-exit_status=$EXIT_SUCCESS
-
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS="  $lt_nl"
-
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-    if test "X$func_dirname_result" = "X${1}"; then
-      func_dirname_result="${3}"
-    else
-      func_dirname_result="$func_dirname_result${2}"
-    fi
-} # func_dirname may be replaced by extended shell implementation
-
-
-# func_basename file
-func_basename ()
-{
-    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-} # func_basename may be replaced by extended shell implementation
-
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-    # Extract subdirectory from the argument.
-    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
-    if test "X$func_dirname_result" = "X${1}"; then
-      func_dirname_result="${3}"
-    else
-      func_dirname_result="$func_dirname_result${2}"
-    fi
-    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
-} # func_dirname_and_basename may be replaced by extended shell implementation
-
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-    case ${2} in
-      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-    esac
-} # func_stripname may be replaced by extended shell implementation
-
-
-# These SED scripts presuppose an absolute path with a trailing slash.
-pathcar='s,^/\([^/]*\).*$,\1,'
-pathcdr='s,^/[^/]*,,'
-removedotparts=':dotsl
-               s@/\./@/@g
-               t dotsl
-               s,/\.$,/,'
-collapseslashes='s@/\{1,\}@/@g'
-finalslash='s,/*$,/,'
-
-# func_normal_abspath PATH
-# Remove doubled-up and trailing slashes, "." path components,
-# and cancel out any ".." path components in PATH after making
-# it an absolute path.
-#             value returned in "$func_normal_abspath_result"
-func_normal_abspath ()
-{
-  # Start from root dir and reassemble the path.
-  func_normal_abspath_result=
-  func_normal_abspath_tpath=$1
-  func_normal_abspath_altnamespace=
-  case $func_normal_abspath_tpath in
-    "")
-      # Empty path, that just means $cwd.
-      func_stripname '' '/' "`pwd`"
-      func_normal_abspath_result=$func_stripname_result
-      return
-    ;;
-    # The next three entries are used to spot a run of precisely
-    # two leading slashes without using negated character classes;
-    # we take advantage of case's first-match behaviour.
-    ///*)
-      # Unusual form of absolute path, do nothing.
-    ;;
-    //*)
-      # Not necessarily an ordinary path; POSIX reserves leading '//'
-      # and for example Cygwin uses it to access remote file shares
-      # over CIFS/SMB, so we conserve a leading double slash if found.
-      func_normal_abspath_altnamespace=/
-    ;;
-    /*)
-      # Absolute path, do nothing.
-    ;;
-    *)
-      # Relative path, prepend $cwd.
-      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
-    ;;
-  esac
-  # Cancel out all the simple stuff to save iterations.  We also want
-  # the path to end with a slash for ease of parsing, so make sure
-  # there is one (and only one) here.
-  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
-  while :; do
-    # Processed it all yet?
-    if test "$func_normal_abspath_tpath" = / ; then
-      # If we ascended to the root using ".." the result may be empty now.
-      if test -z "$func_normal_abspath_result" ; then
-        func_normal_abspath_result=/
-      fi
-      break
-    fi
-    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcar"`
-    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcdr"`
-    # Figure out what to do with it
-    case $func_normal_abspath_tcomponent in
-      "")
-        # Trailing empty path component, ignore it.
-      ;;
-      ..)
-        # Parent dir; strip last assembled component from result.
-        func_dirname "$func_normal_abspath_result"
-        func_normal_abspath_result=$func_dirname_result
-      ;;
-      *)
-        # Actual path component, append it.
-        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
-      ;;
-    esac
-  done
-  # Restore leading double-slash if one was found on entry.
-  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
-
-# func_relative_path SRCDIR DSTDIR
-# generates a relative path from SRCDIR to DSTDIR, with a trailing
-# slash if non-empty, suitable for immediately appending a filename
-# without needing to append a separator.
-#             value returned in "$func_relative_path_result"
-func_relative_path ()
-{
-  func_relative_path_result=
-  func_normal_abspath "$1"
-  func_relative_path_tlibdir=$func_normal_abspath_result
-  func_normal_abspath "$2"
-  func_relative_path_tbindir=$func_normal_abspath_result
-
-  # Ascend the tree starting from libdir
-  while :; do
-    # check if we have found a prefix of bindir
-    case $func_relative_path_tbindir in
-      $func_relative_path_tlibdir)
-        # found an exact match
-        func_relative_path_tcancelled=
-        break
-        ;;
-      $func_relative_path_tlibdir*)
-        # found a matching prefix
-        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
-        func_relative_path_tcancelled=$func_stripname_result
-        if test -z "$func_relative_path_result"; then
-          func_relative_path_result=.
-        fi
-        break
-        ;;
-      *)
-        func_dirname $func_relative_path_tlibdir
-        func_relative_path_tlibdir=${func_dirname_result}
-        if test "x$func_relative_path_tlibdir" = x ; then
-          # Have to descend all the way to the root!
-          func_relative_path_result=../$func_relative_path_result
-          func_relative_path_tcancelled=$func_relative_path_tbindir
-          break
-        fi
-        func_relative_path_result=../$func_relative_path_result
-        ;;
-    esac
-  done
-
-  # Now calculate path; take care to avoid doubling-up slashes.
-  func_stripname '' '/' "$func_relative_path_result"
-  func_relative_path_result=$func_stripname_result
-  func_stripname '/' '/' "$func_relative_path_tcancelled"
-  if test "x$func_stripname_result" != x ; then
-    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
-  fi
-
-  # Normalisation. If bindir is libdir, return empty string,
-  # else relative path ending with a slash; either way, target
-  # file name can be directly appended.
-  if test ! -z "$func_relative_path_result"; then
-    func_stripname './' '' "$func_relative_path_result/"
-    func_relative_path_result=$func_stripname_result
-  fi
-}
-
-# The name of this program:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
-
-# Make sure we have an absolute path for reexecution:
-case $progpath in
-  [\\/]*|[A-Za-z]:\\*) ;;
-  *[\\/]*)
-     progdir=$func_dirname_result
-     progdir=`cd "$progdir" && pwd`
-     progpath="$progdir/$progname"
-     ;;
-  *)
-     save_IFS="$IFS"
-     IFS=${PATH_SEPARATOR-:}
-     for progdir in $PATH; do
-       IFS="$save_IFS"
-       test -x "$progdir/$progname" && break
-     done
-     IFS="$save_IFS"
-     test -n "$progdir" || progdir=`pwd`
-     progpath="$progdir/$progname"
-     ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
-
-# Sed substitution that converts a w32 file name or path
-# which contains forward slashes, into one that contains
-# (escaped) backslashes.  A very naive implementation.
-lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
-  s/$bs4/&\\
-/g
-  s/^$bs2$dollar/$bs&/
-  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
-  s/\n//g"
-
-# Standard options:
-opt_dry_run=false
-opt_help=false
-opt_quiet=false
-opt_verbose=false
-opt_warning=:
-
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
-{
-    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
-}
-
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $opt_verbose && func_echo ${1+"$@"}
-
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
-}
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*"
-}
-
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
-}
-
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
-    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
-
-    # bash bug again:
-    :
-}
-
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
-
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    func_error ${1+"$@"}
-    func_fatal_error "$help"
-}
-help="Try \`$progname --help' for more information."  ## default
-
-
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
-    $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
-    my_directory_path="$1"
-    my_dir_list=
-
-    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
-
-      # Protect directory names starting with `-'
-      case $my_directory_path in
-        -*) my_directory_path="./$my_directory_path" ;;
-      esac
-
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$my_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-       # list incase some portion of path contains whitespace.
-        my_dir_list="$my_directory_path:$my_dir_list"
-
-        # If the last portion added has no slash in it, the list is done
-        case $my_directory_path in */*) ;; *) break ;; esac
-
-        # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
-      done
-      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
-
-      save_mkdir_p_IFS="$IFS"; IFS=':'
-      for my_dir in $my_dir_list; do
-       IFS="$save_mkdir_p_IFS"
-        # mkdir can fail with a `File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$my_dir" 2>/dev/null || :
-      done
-      IFS="$save_mkdir_p_IFS"
-
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$my_directory_path" || \
-        func_fatal_error "Failed to create \`$1'"
-    fi
-}
-
-
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
-{
-    my_template="${TMPDIR-/tmp}/${1-$progname}"
-
-    if test "$opt_dry_run" = ":"; then
-      # Return a directory name, but don't create it in dry-run mode
-      my_tmpdir="${my_template}-$$"
-    else
-
-      # If mktemp works, use that first and foremost
-      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
-
-      if test ! -d "$my_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        my_tmpdir="${my_template}-${RANDOM-0}$$"
-
-        save_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$my_tmpdir"
-        umask $save_mktempdir_umask
-      fi
-
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$my_tmpdir" || \
-        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
-    fi
-
-    $ECHO "$my_tmpdir"
-}
-
-
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
-{
-    case $1 in
-      *[\\\`\"\$]*)
-       func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
-      *)
-        func_quote_for_eval_unquoted_result="$1" ;;
-    esac
-
-    case $func_quote_for_eval_unquoted_result in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and and variable
-      # expansion for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
-        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
-        ;;
-      *)
-        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
-    esac
-}
-
-
-# func_quote_for_expand arg
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
-    case $1 in
-      *[\\\`\"]*)
-       my_arg=`$ECHO "$1" | $SED \
-           -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
-      *)
-        my_arg="$1" ;;
-    esac
-
-    case $my_arg in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting and command substitution for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
-        my_arg="\"$my_arg\""
-        ;;
-    esac
-
-    func_quote_for_expand_result="$my_arg"
-}
-
-
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$my_cmd"
-      my_status=$?
-      if test "$my_status" -eq 0; then :; else
-       eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.  Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$lt_user_locale
-           $my_cmd"
-      my_status=$?
-      eval "$lt_safe_locale"
-      if test "$my_status" -eq 0; then :; else
-       eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-# func_tr_sh
-# Turn $1 into a string suitable for a shell variable name.
-# Result is stored in $func_tr_sh_result.  All characters
-# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
-# if $1 begins with a digit, a '_' is prepended as well.
-func_tr_sh ()
-{
-  case $1 in
-  [0-9]* | *[!a-zA-Z0-9_]*)
-    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
-    ;;
-  * )
-    func_tr_sh_result=$1
-    ;;
-  esac
-}
-
-
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
-{
-    $opt_debug
-
-    $SED -n '/(C)/!b go
-       :more
-       /\./!{
-         N
-         s/\n# / /
-         b more
-       }
-       :go
-       /^# '$PROGRAM' (GNU /,/# warranty; / {
-        s/^# //
-       s/^# *$//
-        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
-        p
-     }' < "$progpath"
-     exit $?
-}
-
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
-{
-    $opt_debug
-
-    $SED -n '/^# Usage:/,/^#  *.*--help/ {
-        s/^# //
-       s/^# *$//
-       s/\$progname/'$progname'/
-       p
-    }' < "$progpath"
-    echo
-    $ECHO "run \`$progname --help | more' for full usage"
-    exit $?
-}
-
-# func_help [NOEXIT]
-# Echo long help message to standard output and exit,
-# unless 'noexit' is passed as argument.
-func_help ()
-{
-    $opt_debug
-
-    $SED -n '/^# Usage:/,/# Report bugs to/ {
-       :print
-        s/^# //
-       s/^# *$//
-       s*\$progname*'$progname'*
-       s*\$host*'"$host"'*
-       s*\$SHELL*'"$SHELL"'*
-       s*\$LTCC*'"$LTCC"'*
-       s*\$LTCFLAGS*'"$LTCFLAGS"'*
-       s*\$LD*'"$LD"'*
-       s/\$with_gnu_ld/'"$with_gnu_ld"'/
-       s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
-       s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
-       p
-       d
-     }
-     /^# .* home page:/b print
-     /^# General help using/b print
-     ' < "$progpath"
-    ret=$?
-    if test -z "$1"; then
-      exit $ret
-    fi
-}
-
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
-    $opt_debug
-
-    func_error "missing argument for $1."
-    exit_cmd=exit
-}
-
-
-# func_split_short_opt shortopt
-# Set func_split_short_opt_name and func_split_short_opt_arg shell
-# variables after splitting SHORTOPT after the 2nd character.
-func_split_short_opt ()
-{
-    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
-    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
-
-    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
-    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
-} # func_split_short_opt may be replaced by extended shell implementation
-
-
-# func_split_long_opt longopt
-# Set func_split_long_opt_name and func_split_long_opt_arg shell
-# variables after splitting LONGOPT at the `=' sign.
-func_split_long_opt ()
-{
-    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
-    my_sed_long_arg='1s/^--[^=]*=//'
-
-    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
-    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
-} # func_split_long_opt may be replaced by extended shell implementation
-
-exit_cmd=:
-
-
-
-
-
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
-
-# Global variables.
-nonopt=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-    eval "${1}=\$${1}\${2}"
-} # func_append may be replaced by extended shell implementation
-
-# func_append_quoted var value
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-func_append_quoted ()
-{
-    func_quote_for_eval "${2}"
-    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
-} # func_append_quoted may be replaced by extended shell implementation
-
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-    func_arith_result=`expr "${@}"`
-} # func_arith may be replaced by extended shell implementation
-
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
-} # func_len may be replaced by extended shell implementation
-
-
-# func_lo2o object
-func_lo2o ()
-{
-    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-} # func_lo2o may be replaced by extended shell implementation
-
-
-# func_xform libobj-or-source
-func_xform ()
-{
-    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
-} # func_xform may be replaced by extended shell implementation
-
-
-# func_fatal_configuration arg...
-# Echo program name prefixed message to standard error, followed by
-# a configuration failure hint, and exit.
-func_fatal_configuration ()
-{
-    func_error ${1+"$@"}
-    func_error "See the $PACKAGE documentation for more information."
-    func_fatal_error "Fatal configuration error."
-}
-
-
-# func_config
-# Display the configuration for all the tags in this script.
-func_config ()
-{
-    re_begincf='^# ### BEGIN LIBTOOL'
-    re_endcf='^# ### END LIBTOOL'
-
-    # Default configuration.
-    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
-
-    # Now print the configurations for the tags.
-    for tagname in $taglist; do
-      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
-    done
-
-    exit $?
-}
-
-# func_features
-# Display the features supported by this script.
-func_features ()
-{
-    echo "host: $host"
-    if test "$build_libtool_libs" = yes; then
-      echo "enable shared libraries"
-    else
-      echo "disable shared libraries"
-    fi
-    if test "$build_old_libs" = yes; then
-      echo "enable static libraries"
-    else
-      echo "disable static libraries"
-    fi
-
-    exit $?
-}
-
-# func_enable_tag tagname
-# Verify that TAGNAME is valid, and either flag an error and exit, or
-# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
-# variable here.
-func_enable_tag ()
-{
-  # Global variable:
-  tagname="$1"
-
-  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-  sed_extractcf="/$re_begincf/,/$re_endcf/p"
-
-  # Validate tagname.
-  case $tagname in
-    *[!-_A-Za-z0-9,/]*)
-      func_fatal_error "invalid tag name: $tagname"
-      ;;
-  esac
-
-  # Don't test for the "default" C tag, as we know it's
-  # there but not specially marked.
-  case $tagname in
-    CC) ;;
-    *)
-      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-       taglist="$taglist $tagname"
-
-       # Evaluate the configuration.  Be careful to quote the path
-       # and the sed script, to avoid splitting on whitespace, but
-       # also don't use non-portable quotes within backquotes within
-       # quotes we have to do it in 2 steps:
-       extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-       eval "$extractedcf"
-      else
-       func_error "ignoring unknown tag $tagname"
-      fi
-      ;;
-  esac
-}
-
-# func_check_version_match
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
-  if test "$package_revision" != "$macro_revision"; then
-    if test "$VERSION" != "$macro_version"; then
-      if test -z "$macro_version"; then
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      else
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      fi
-    else
-      cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
-    fi
-
-    exit $EXIT_MISMATCH
-  fi
-}
-
-
-# Shorthand for --mode=foo, only valid as the first argument
-case $1 in
-clean|clea|cle|cl)
-  shift; set dummy --mode clean ${1+"$@"}; shift
-  ;;
-compile|compil|compi|comp|com|co|c)
-  shift; set dummy --mode compile ${1+"$@"}; shift
-  ;;
-execute|execut|execu|exec|exe|ex|e)
-  shift; set dummy --mode execute ${1+"$@"}; shift
-  ;;
-finish|finis|fini|fin|fi|f)
-  shift; set dummy --mode finish ${1+"$@"}; shift
-  ;;
-install|instal|insta|inst|ins|in|i)
-  shift; set dummy --mode install ${1+"$@"}; shift
-  ;;
-link|lin|li|l)
-  shift; set dummy --mode link ${1+"$@"}; shift
-  ;;
-uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-  shift; set dummy --mode uninstall ${1+"$@"}; shift
-  ;;
-esac
-
-
-
-# Option defaults:
-opt_debug=:
-opt_dry_run=false
-opt_config=false
-opt_preserve_dup_deps=false
-opt_features=false
-opt_finish=false
-opt_help=false
-opt_help_all=false
-opt_silent=:
-opt_warning=:
-opt_verbose=:
-opt_silent=false
-opt_verbose=false
-
-
-# Parse options once, thoroughly.  This comes as soon as possible in the
-# script to make things like `--version' happen as quickly as we can.
-{
-  # this just eases exit handling
-  while test $# -gt 0; do
-    opt="$1"
-    shift
-    case $opt in
-      --debug|-x)      opt_debug='set -x'
-                       func_echo "enabling shell trace mode"
-                       $opt_debug
-                       ;;
-      --dry-run|--dryrun|-n)
-                       opt_dry_run=:
-                       ;;
-      --config)
-                       opt_config=:
-func_config
-                       ;;
-      --dlopen|-dlopen)
-                       optarg="$1"
-                       opt_dlopen="${opt_dlopen+$opt_dlopen
-}$optarg"
-                       shift
-                       ;;
-      --preserve-dup-deps)
-                       opt_preserve_dup_deps=:
-                       ;;
-      --features)
-                       opt_features=:
-func_features
-                       ;;
-      --finish)
-                       opt_finish=:
-set dummy --mode finish ${1+"$@"}; shift
-                       ;;
-      --help)
-                       opt_help=:
-                       ;;
-      --help-all)
-                       opt_help_all=:
-opt_help=': help-all'
-                       ;;
-      --mode)
-                       test $# = 0 && func_missing_arg $opt && break
-                       optarg="$1"
-                       opt_mode="$optarg"
-case $optarg in
-  # Valid mode arguments:
-  clean|compile|execute|finish|install|link|relink|uninstall) ;;
-
-  # Catch anything else as an error
-  *) func_error "invalid argument for $opt"
-     exit_cmd=exit
-     break
-     ;;
-esac
-                       shift
-                       ;;
-      --no-silent|--no-quiet)
-                       opt_silent=false
-func_append preserve_args " $opt"
-                       ;;
-      --no-warning|--no-warn)
-                       opt_warning=false
-func_append preserve_args " $opt"
-                       ;;
-      --no-verbose)
-                       opt_verbose=false
-func_append preserve_args " $opt"
-                       ;;
-      --silent|--quiet)
-                       opt_silent=:
-func_append preserve_args " $opt"
-        opt_verbose=false
-                       ;;
-      --verbose|-v)
-                       opt_verbose=:
-func_append preserve_args " $opt"
-opt_silent=false
-                       ;;
-      --tag)
-                       test $# = 0 && func_missing_arg $opt && break
-                       optarg="$1"
-                       opt_tag="$optarg"
-func_append preserve_args " $opt $optarg"
-func_enable_tag "$optarg"
-                       shift
-                       ;;
-
-      -\?|-h)          func_usage                              ;;
-      --help)          func_help                               ;;
-      --version)       func_version                            ;;
-
-      # Separate optargs to long options:
-      --*=*)
-                       func_split_long_opt "$opt"
-                       set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
-                       shift
-                       ;;
-
-      # Separate non-argument short options:
-      -\?*|-h*|-n*|-v*)
-                       func_split_short_opt "$opt"
-                       set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
-                       shift
-                       ;;
-
-      --)              break                                   ;;
-      -*)              func_fatal_help "unrecognized option \`$opt'" ;;
-      *)               set dummy "$opt" ${1+"$@"};     shift; break  ;;
-    esac
-  done
-
-  # Validate options:
-
-  # save first non-option argument
-  if test "$#" -gt 0; then
-    nonopt="$opt"
-    shift
-  fi
-
-  # preserve --debug
-  test "$opt_debug" = : || func_append preserve_args " --debug"
-
-  case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
-      # don't eliminate duplications in $postdeps and $predeps
-      opt_duplicate_compiler_generated_deps=:
-      ;;
-    *)
-      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-      ;;
-  esac
-
-  $opt_help || {
-    # Sanity checks first:
-    func_check_version_match
-
-    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-      func_fatal_configuration "not configured to build any kind of library"
-    fi
-
-    # Darwin sucks
-    eval std_shrext=\"$shrext_cmds\"
-
-    # Only execute mode is allowed to have -dlopen flags.
-    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
-      func_error "unrecognized option \`-dlopen'"
-      $ECHO "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
-
-    # Change the help message to a mode-specific one.
-    generic_help="$help"
-    help="Try \`$progname --help --mode=$opt_mode' for more information."
-  }
-
-
-  # Bail if the options were screwed
-  $exit_cmd $EXIT_FAILURE
-}
-
-
-
-
-## ----------- ##
-##    Main.    ##
-## ----------- ##
-
-# func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_lalib_p ()
-{
-    test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null \
-        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
-# func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function implements the same check as func_lalib_p without
-# resorting to external programs.  To this end, it redirects stdin and
-# closes it afterwards, without saving the original file descriptor.
-# As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if `file' does not exist.
-func_lalib_unsafe_p ()
-{
-    lalib_p=no
-    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
-       for lalib_p_l in 1 2 3 4
-       do
-           read lalib_p_line
-           case "$lalib_p_line" in
-               \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
-           esac
-       done
-       exec 0<&5 5<&-
-    fi
-    test "$lalib_p" = yes
-}
-
-# func_ltwrapper_script_p file
-# True iff FILE is a libtool wrapper script
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_script_p ()
-{
-    func_lalib_p "$1"
-}
-
-# func_ltwrapper_executable_p file
-# True iff FILE is a libtool wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_executable_p ()
-{
-    func_ltwrapper_exec_suffix=
-    case $1 in
-    *.exe) ;;
-    *) func_ltwrapper_exec_suffix=.exe ;;
-    esac
-    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
-}
-
-# func_ltwrapper_scriptname file
-# Assumes file is an ltwrapper_executable
-# uses $file to determine the appropriate filename for a
-# temporary ltwrapper_script.
-func_ltwrapper_scriptname ()
-{
-    func_dirname_and_basename "$1" "" "."
-    func_stripname '' '.exe' "$func_basename_result"
-    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-}
-
-# func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script or wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_p ()
-{
-    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
-}
-
-
-# func_execute_cmds commands fail_cmd
-# Execute tilde-delimited COMMANDS.
-# If FAIL_CMD is given, eval that upon failure.
-# FAIL_CMD may read-access the current command in variable CMD!
-func_execute_cmds ()
-{
-    $opt_debug
-    save_ifs=$IFS; IFS='~'
-    for cmd in $1; do
-      IFS=$save_ifs
-      eval cmd=\"$cmd\"
-      func_show_eval "$cmd" "${2-:}"
-    done
-    IFS=$save_ifs
-}
-
-
-# func_source file
-# Source FILE, adding directory component if necessary.
-# Note that it is not necessary on cygwin/mingw to append a dot to
-# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
-# behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
-func_source ()
-{
-    $opt_debug
-    case $1 in
-    */* | *\\*)        . "$1" ;;
-    *)         . "./$1" ;;
-    esac
-}
-
-
-# func_resolve_sysroot PATH
-# Replace a leading = in PATH with a sysroot.  Store the result into
-# func_resolve_sysroot_result
-func_resolve_sysroot ()
-{
-  func_resolve_sysroot_result=$1
-  case $func_resolve_sysroot_result in
-  =*)
-    func_stripname '=' '' "$func_resolve_sysroot_result"
-    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
-    ;;
-  esac
-}
-
-# func_replace_sysroot PATH
-# If PATH begins with the sysroot, replace it with = and
-# store the result into func_replace_sysroot_result.
-func_replace_sysroot ()
-{
-  case "$lt_sysroot:$1" in
-  ?*:"$lt_sysroot"*)
-    func_stripname "$lt_sysroot" '' "$1"
-    func_replace_sysroot_result="=$func_stripname_result"
-    ;;
-  *)
-    # Including no sysroot.
-    func_replace_sysroot_result=$1
-    ;;
-  esac
-}
-
-# func_infer_tag arg
-# Infer tagged configuration to use if any are available and
-# if one wasn't chosen via the "--tag" command line option.
-# Only attempt this if the compiler in the base compile
-# command doesn't match the default compiler.
-# arg is usually of the form 'gcc ...'
-func_infer_tag ()
-{
-    $opt_debug
-    if test -n "$available_tags" && test -z "$tagname"; then
-      CC_quoted=
-      for arg in $CC; do
-       func_append_quoted CC_quoted "$arg"
-      done
-      CC_expanded=`func_echo_all $CC`
-      CC_quoted_expanded=`func_echo_all $CC_quoted`
-      case $@ in
-      # Blanks in the command may have been stripped by the calling shell,
-      # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
-      # Blanks at the start of $base_compile will cause this to fail
-      # if we don't check for them as well.
-      *)
-       for z in $available_tags; do
-         if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
-           # Evaluate the configuration.
-           eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
-           CC_quoted=
-           for arg in $CC; do
-             # Double-quote args containing other shell metacharacters.
-             func_append_quoted CC_quoted "$arg"
-           done
-           CC_expanded=`func_echo_all $CC`
-           CC_quoted_expanded=`func_echo_all $CC_quoted`
-           case "$@ " in
-           " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-           " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
-             # The compiler in the base compile command matches
-             # the one in the tagged configuration.
-             # Assume this is the tagged configuration we want.
-             tagname=$z
-             break
-             ;;
-           esac
-         fi
-       done
-       # If $tagname still isn't set, then no tagged configuration
-       # was found and let the user know that the "--tag" command
-       # line option must be used.
-       if test -z "$tagname"; then
-         func_echo "unable to infer tagged configuration"
-         func_fatal_error "specify a tag with \`--tag'"
-#      else
-#        func_verbose "using $tagname tagged configuration"
-       fi
-       ;;
-      esac
-    fi
-}
-
-
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
-{
-    write_libobj=${1}
-    if test "$build_libtool_libs" = yes; then
-      write_lobj=\'${2}\'
-    else
-      write_lobj=none
-    fi
-
-    if test "$build_old_libs" = yes; then
-      write_oldobj=\'${3}\'
-    else
-      write_oldobj=none
-    fi
-
-    $opt_dry_run || {
-      cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object=$write_lobj
-
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-
-EOF
-      $MV "${write_libobj}T" "${write_libobj}"
-    }
-}
-
-
-##################################################
-# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
-##################################################
-
-# func_convert_core_file_wine_to_w32 ARG
-# Helper function used by file name conversion functions when $build is *nix,
-# and $host is mingw, cygwin, or some other w32 environment. Relies on a
-# correctly configured wine environment available, with the winepath program
-# in $build's $PATH.
-#
-# ARG is the $build file name to be converted to w32 format.
-# Result is available in $func_convert_core_file_wine_to_w32_result, and will
-# be empty on error (or when ARG is empty)
-func_convert_core_file_wine_to_w32 ()
-{
-  $opt_debug
-  func_convert_core_file_wine_to_w32_result="$1"
-  if test -n "$1"; then
-    # Unfortunately, winepath does not exit with a non-zero error code, so we
-    # are forced to check the contents of stdout. On the other hand, if the
-    # command is not found, the shell will set an exit code of 127 and print
-    # *an error message* to stdout. So we must check for both error code of
-    # zero AND non-empty stdout, which explains the odd construction:
-    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
-    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
-      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
-        $SED -e "$lt_sed_naive_backslashify"`
-    else
-      func_convert_core_file_wine_to_w32_result=
-    fi
-  fi
-}
-# end: func_convert_core_file_wine_to_w32
-
-
-# func_convert_core_path_wine_to_w32 ARG
-# Helper function used by path conversion functions when $build is *nix, and
-# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
-# configured wine environment available, with the winepath program in $build's
-# $PATH. Assumes ARG has no leading or trailing path separator characters.
-#
-# ARG is path to be converted from $build format to win32.
-# Result is available in $func_convert_core_path_wine_to_w32_result.
-# Unconvertible file (directory) names in ARG are skipped; if no directory names
-# are convertible, then the result may be empty.
-func_convert_core_path_wine_to_w32 ()
-{
-  $opt_debug
-  # unfortunately, winepath doesn't convert paths, only file names
-  func_convert_core_path_wine_to_w32_result=""
-  if test -n "$1"; then
-    oldIFS=$IFS
-    IFS=:
-    for func_convert_core_path_wine_to_w32_f in $1; do
-      IFS=$oldIFS
-      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
-      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
-        if test -z "$func_convert_core_path_wine_to_w32_result"; then
-          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
-        else
-          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
-        fi
-      fi
-    done
-    IFS=$oldIFS
-  fi
-}
-# end: func_convert_core_path_wine_to_w32
-
-
-# func_cygpath ARGS...
-# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
-# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
-# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
-# (2), returns the Cygwin file name or path in func_cygpath_result (input
-# file name or path is assumed to be in w32 format, as previously converted
-# from $build's *nix or MSYS format). In case (3), returns the w32 file name
-# or path in func_cygpath_result (input file name or path is assumed to be in
-# Cygwin format). Returns an empty string on error.
-#
-# ARGS are passed to cygpath, with the last one being the file name or path to
-# be converted.
-#
-# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
-# environment variable; do not put it in $PATH.
-func_cygpath ()
-{
-  $opt_debug
-  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
-    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
-    if test "$?" -ne 0; then
-      # on failure, ensure result is empty
-      func_cygpath_result=
-    fi
-  else
-    func_cygpath_result=
-    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
-  fi
-}
-#end: func_cygpath
-
-
-# func_convert_core_msys_to_w32 ARG
-# Convert file name or path ARG from MSYS format to w32 format.  Return
-# result in func_convert_core_msys_to_w32_result.
-func_convert_core_msys_to_w32 ()
-{
-  $opt_debug
-  # awkward: cmd appends spaces to result
-  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
-    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
-}
-#end: func_convert_core_msys_to_w32
-
-
-# func_convert_file_check ARG1 ARG2
-# Verify that ARG1 (a file name in $build format) was converted to $host
-# format in ARG2. Otherwise, emit an error message, but continue (resetting
-# func_to_host_file_result to ARG1).
-func_convert_file_check ()
-{
-  $opt_debug
-  if test -z "$2" && test -n "$1" ; then
-    func_error "Could not determine host file name corresponding to"
-    func_error "  \`$1'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback:
-    func_to_host_file_result="$1"
-  fi
-}
-# end func_convert_file_check
-
-
-# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
-# Verify that FROM_PATH (a path in $build format) was converted to $host
-# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
-# func_to_host_file_result to a simplistic fallback value (see below).
-func_convert_path_check ()
-{
-  $opt_debug
-  if test -z "$4" && test -n "$3"; then
-    func_error "Could not determine the host path corresponding to"
-    func_error "  \`$3'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback.  This is a deliberately simplistic "conversion" and
-    # should not be "improved".  See libtool.info.
-    if test "x$1" != "x$2"; then
-      lt_replace_pathsep_chars="s|$1|$2|g"
-      func_to_host_path_result=`echo "$3" |
-        $SED -e "$lt_replace_pathsep_chars"`
-    else
-      func_to_host_path_result="$3"
-    fi
-  fi
-}
-# end func_convert_path_check
-
-
-# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
-# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
-# and appending REPL if ORIG matches BACKPAT.
-func_convert_path_front_back_pathsep ()
-{
-  $opt_debug
-  case $4 in
-  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
-    ;;
-  esac
-  case $4 in
-  $2 ) func_append func_to_host_path_result "$3"
-    ;;
-  esac
-}
-# end func_convert_path_front_back_pathsep
-
-
-##################################################
-# $build to $host FILE NAME CONVERSION FUNCTIONS #
-##################################################
-# invoked via `$to_host_file_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# Result will be available in $func_to_host_file_result.
-
-
-# func_to_host_file ARG
-# Converts the file name ARG from $build format to $host format. Return result
-# in func_to_host_file_result.
-func_to_host_file ()
-{
-  $opt_debug
-  $to_host_file_cmd "$1"
-}
-# end func_to_host_file
-
-
-# func_to_tool_file ARG LAZY
-# converts the file name ARG from $build format to toolchain format. Return
-# result in func_to_tool_file_result.  If the conversion in use is listed
-# in (the comma separated) LAZY, no conversion takes place.
-func_to_tool_file ()
-{
-  $opt_debug
-  case ,$2, in
-    *,"$to_tool_file_cmd",*)
-      func_to_tool_file_result=$1
-      ;;
-    *)
-      $to_tool_file_cmd "$1"
-      func_to_tool_file_result=$func_to_host_file_result
-      ;;
-  esac
-}
-# end func_to_tool_file
-
-
-# func_convert_file_noop ARG
-# Copy ARG to func_to_host_file_result.
-func_convert_file_noop ()
-{
-  func_to_host_file_result="$1"
-}
-# end func_convert_file_noop
-
-
-# func_convert_file_msys_to_w32 ARG
-# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_file_result.
-func_convert_file_msys_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_w32
-
-
-# func_convert_file_cygwin_to_w32 ARG
-# Convert file name ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_file_cygwin_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
-    # LT_CYGPATH in this case.
-    func_to_host_file_result=`cygpath -m "$1"`
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_cygwin_to_w32
-
-
-# func_convert_file_nix_to_w32 ARG
-# Convert file name ARG from *nix to w32 format.  Requires a wine environment
-# and a working winepath. Returns result in func_to_host_file_result.
-func_convert_file_nix_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_file_wine_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_w32
-
-
-# func_convert_file_msys_to_cygwin ARG
-# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_file_msys_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_msys_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_cygwin
-
-
-# func_convert_file_nix_to_cygwin ARG
-# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
-# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
-# in func_to_host_file_result.
-func_convert_file_nix_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
-    func_convert_core_file_wine_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_cygwin
-
-
-#############################################
-# $build to $host PATH CONVERSION FUNCTIONS #
-#############################################
-# invoked via `$to_host_path_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# The result will be available in $func_to_host_path_result.
-#
-# Path separators are also converted from $build format to $host format.  If
-# ARG begins or ends with a path separator character, it is preserved (but
-# converted to $host format) on output.
-#
-# All path conversion functions are named using the following convention:
-#   file name conversion function    : func_convert_file_X_to_Y ()
-#   path conversion function         : func_convert_path_X_to_Y ()
-# where, for any given $build/$host combination the 'X_to_Y' value is the
-# same.  If conversion functions are added for new $build/$host combinations,
-# the two new functions must follow this pattern, or func_init_to_host_path_cmd
-# will break.
-
-
-# func_init_to_host_path_cmd
-# Ensures that function "pointer" variable $to_host_path_cmd is set to the
-# appropriate value, based on the value of $to_host_file_cmd.
-to_host_path_cmd=
-func_init_to_host_path_cmd ()
-{
-  $opt_debug
-  if test -z "$to_host_path_cmd"; then
-    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
-    to_host_path_cmd="func_convert_path_${func_stripname_result}"
-  fi
-}
-
-
-# func_to_host_path ARG
-# Converts the path ARG from $build format to $host format. Return result
-# in func_to_host_path_result.
-func_to_host_path ()
-{
-  $opt_debug
-  func_init_to_host_path_cmd
-  $to_host_path_cmd "$1"
-}
-# end func_to_host_path
-
-
-# func_convert_path_noop ARG
-# Copy ARG to func_to_host_path_result.
-func_convert_path_noop ()
-{
-  func_to_host_path_result="$1"
-}
-# end func_convert_path_noop
-
-
-# func_convert_path_msys_to_w32 ARG
-# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_path_result.
-func_convert_path_msys_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from ARG.  MSYS
-    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
-    # and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_msys_to_w32
-
-
-# func_convert_path_cygwin_to_w32 ARG
-# Convert path ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_path_cygwin_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_cygwin_to_w32
-
-
-# func_convert_path_nix_to_w32 ARG
-# Convert path ARG from *nix to w32 format.  Requires a wine environment and
-# a working winepath.  Returns result in func_to_host_file_result.
-func_convert_path_nix_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_nix_to_w32
-
-
-# func_convert_path_msys_to_cygwin ARG
-# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_path_msys_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_msys_to_cygwin
-
-
-# func_convert_path_nix_to_cygwin ARG
-# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
-# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
-# func_to_host_file_result.
-func_convert_path_nix_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from
-    # ARG. msys behavior is inconsistent here, cygpath turns them
-    # into '.;' and ';.', and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_nix_to_cygwin
-
-
-# func_mode_compile arg...
-func_mode_compile ()
-{
-    $opt_debug
-    # Get the compilation command and the source file.
-    base_compile=
-    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
-    suppress_opt=yes
-    suppress_output=
-    arg_mode=normal
-    libobj=
-    later=
-    pie_flag=
-
-    for arg
-    do
-      case $arg_mode in
-      arg  )
-       # do not "continue".  Instead, add this to base_compile
-       lastarg="$arg"
-       arg_mode=normal
-       ;;
-
-      target )
-       libobj="$arg"
-       arg_mode=normal
-       continue
-       ;;
-
-      normal )
-       # Accept any command-line options.
-       case $arg in
-       -o)
-         test -n "$libobj" && \
-           func_fatal_error "you cannot specify \`-o' more than once"
-         arg_mode=target
-         continue
-         ;;
-
-       -pie | -fpie | -fPIE)
-          func_append pie_flag " $arg"
-         continue
-         ;;
-
-       -shared | -static | -prefer-pic | -prefer-non-pic)
-         func_append later " $arg"
-         continue
-         ;;
-
-       -no-suppress)
-         suppress_opt=no
-         continue
-         ;;
-
-       -Xcompiler)
-         arg_mode=arg  #  the next one goes into the "base_compile" arg list
-         continue      #  The current "srcfile" will either be retained or
-         ;;            #  replaced later.  I would guess that would be a bug.
-
-       -Wc,*)
-         func_stripname '-Wc,' '' "$arg"
-         args=$func_stripname_result
-         lastarg=
-         save_ifs="$IFS"; IFS=','
-         for arg in $args; do
-           IFS="$save_ifs"
-           func_append_quoted lastarg "$arg"
-         done
-         IFS="$save_ifs"
-         func_stripname ' ' '' "$lastarg"
-         lastarg=$func_stripname_result
-
-         # Add the arguments to base_compile.
-         func_append base_compile " $lastarg"
-         continue
-         ;;
-
-       *)
-         # Accept the current argument as the source file.
-         # The previous "srcfile" becomes the current argument.
-         #
-         lastarg="$srcfile"
-         srcfile="$arg"
-         ;;
-       esac  #  case $arg
-       ;;
-      esac    #  case $arg_mode
-
-      # Aesthetically quote the previous argument.
-      func_append_quoted base_compile "$lastarg"
-    done # for arg
-
-    case $arg_mode in
-    arg)
-      func_fatal_error "you must specify an argument for -Xcompile"
-      ;;
-    target)
-      func_fatal_error "you must specify a target with \`-o'"
-      ;;
-    *)
-      # Get the name of the library object.
-      test -z "$libobj" && {
-       func_basename "$srcfile"
-       libobj="$func_basename_result"
-      }
-      ;;
-    esac
-
-    # Recognize several different file suffixes.
-    # If the user specifies -o file.o, it is replaced with file.lo
-    case $libobj in
-    *.[cCFSifmso] | \
-    *.ada | *.adb | *.ads | *.asm | \
-    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
-      func_xform "$libobj"
-      libobj=$func_xform_result
-      ;;
-    esac
-
-    case $libobj in
-    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
-    *)
-      func_fatal_error "cannot determine name of library object from \`$libobj'"
-      ;;
-    esac
-
-    func_infer_tag $base_compile
-
-    for arg in $later; do
-      case $arg in
-      -shared)
-       test "$build_libtool_libs" != yes && \
-         func_fatal_configuration "can not build a shared library"
-       build_old_libs=no
-       continue
-       ;;
-
-      -static)
-       build_libtool_libs=no
-       build_old_libs=yes
-       continue
-       ;;
-
-      -prefer-pic)
-       pic_mode=yes
-       continue
-       ;;
-
-      -prefer-non-pic)
-       pic_mode=no
-       continue
-       ;;
-      esac
-    done
-
-    func_quote_for_eval "$libobj"
-    test "X$libobj" != "X$func_quote_for_eval_result" \
-      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'   &()|`$[]' \
-      && func_warning "libobj name \`$libobj' may not contain shell special characters."
-    func_dirname_and_basename "$obj" "/" ""
-    objname="$func_basename_result"
-    xdir="$func_dirname_result"
-    lobj=${xdir}$objdir/$objname
-
-    test -z "$base_compile" && \
-      func_fatal_help "you must specify a compilation command"
-
-    # Delete any leftover library objects.
-    if test "$build_old_libs" = yes; then
-      removelist="$obj $lobj $libobj ${libobj}T"
-    else
-      removelist="$lobj $libobj ${libobj}T"
-    fi
-
-    # On Cygwin there's no "real" PIC flag so we must build both object types
-    case $host_os in
-    cygwin* | mingw* | pw32* | os2* | cegcc*)
-      pic_mode=default
-      ;;
-    esac
-    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
-      # non-PIC code in shared libraries is not supported
-      pic_mode=default
-    fi
-
-    # Calculate the filename of the output object if compiler does
-    # not support -o with -c
-    if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
-      lockfile="$output_obj.lock"
-    else
-      output_obj=
-      need_locks=no
-      lockfile=
-    fi
-
-    # Lock this critical section if it is needed
-    # We use this script file to make the link, it avoids creating a new file
-    if test "$need_locks" = yes; then
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-       func_echo "Waiting for $lockfile to be removed"
-       sleep 2
-      done
-    elif test "$need_locks" = warn; then
-      if test -f "$lockfile"; then
-       $ECHO "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-       $opt_dry_run || $RM $removelist
-       exit $EXIT_FAILURE
-      fi
-      func_append removelist " $output_obj"
-      $ECHO "$srcfile" > "$lockfile"
-    fi
-
-    $opt_dry_run || $RM $removelist
-    func_append removelist " $lockfile"
-    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
-    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
-    srcfile=$func_to_tool_file_result
-    func_quote_for_eval "$srcfile"
-    qsrcfile=$func_quote_for_eval_result
-
-    # Only build a PIC object if we are building libtool libraries.
-    if test "$build_libtool_libs" = yes; then
-      # Without this assignment, base_compile gets emptied.
-      fbsd_hideous_sh_bug=$base_compile
-
-      if test "$pic_mode" != no; then
-       command="$base_compile $qsrcfile $pic_flag"
-      else
-       # Don't build PIC code
-       command="$base_compile $qsrcfile"
-      fi
-
-      func_mkdir_p "$xdir$objdir"
-
-      if test -z "$output_obj"; then
-       # Place PIC objects in $objdir
-       func_append command " -o $lobj"
-      fi
-
-      func_show_eval_locale "$command" \
-          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-       $ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-       $opt_dry_run || $RM $removelist
-       exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed, then go on to compile the next one
-      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
-       func_show_eval '$MV "$output_obj" "$lobj"' \
-         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-
-      # Allow error messages only from the first compilation.
-      if test "$suppress_opt" = yes; then
-       suppress_output=' >/dev/null 2>&1'
-      fi
-    fi
-
-    # Only build a position-dependent object if we build old libraries.
-    if test "$build_old_libs" = yes; then
-      if test "$pic_mode" != yes; then
-       # Don't build PIC code
-       command="$base_compile $qsrcfile$pie_flag"
-      else
-       command="$base_compile $qsrcfile $pic_flag"
-      fi
-      if test "$compiler_c_o" = yes; then
-       func_append command " -o $obj"
-      fi
-
-      # Suppress compiler output if we already did a PIC compilation.
-      func_append command "$suppress_output"
-      func_show_eval_locale "$command" \
-        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-       $ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-       $opt_dry_run || $RM $removelist
-       exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed
-      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
-       func_show_eval '$MV "$output_obj" "$obj"' \
-         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-    fi
-
-    $opt_dry_run || {
-      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
-
-      # Unlock the critical section if it was locked
-      if test "$need_locks" != no; then
-       removelist=$lockfile
-        $RM "$lockfile"
-      fi
-    }
-
-    exit $EXIT_SUCCESS
-}
-
-$opt_help || {
-  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
-    # We need to display help for each of the modes.
-    case $opt_mode in
-      "")
-        # Generic help is extracted from the usage comments
-        # at the start of this file.
-        func_help
-        ;;
-
-      clean)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      compile)
-      $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
-  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-  -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to build PIC objects only
-  -prefer-non-pic   try to build non-PIC objects only
-  -shared           do not build a \`.o' file suitable for static linking
-  -static           only build a \`.o' file suitable for static linking
-  -Wc,FLAG          pass FLAG directly to the compiler
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
-        ;;
-
-      execute)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
-  -dlopen FILE      add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
-        ;;
-
-      finish)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
-        ;;
-
-      install)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
-  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
-        ;;
-
-      link)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
-  -all-static       do not do any dynamic linking at all
-  -avoid-version    do not add a version suffix if possible
-  -bindir BINDIR    specify path to binaries directory (for systems where
-                    libraries must be found in the PATH setting at runtime)
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
-  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-  -export-symbols SYMFILE
-                    try to export only the symbols listed in SYMFILE
-  -export-symbols-regex REGEX
-                    try to export only the symbols matching REGEX
-  -LLIBDIR          search LIBDIR for required installed libraries
-  -lNAME            OUTPUT-FILE requires the installed library libNAME
-  -module           build a library that can dlopened
-  -no-fast-install  disable the fast-install mode
-  -no-install       link a not-installable executable
-  -no-undefined     declare that a library does not refer to external symbols
-  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
-  -precious-files-regex REGEX
-                    don't remove output files matching REGEX
-  -release RELEASE  specify package release information
-  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -shared           only do dynamic linking of libtool libraries
-  -shrext SUFFIX    override the standard shared library file extension
-  -static           do not do any dynamic linking of uninstalled libtool libraries
-  -static-libtool-libs
-                    do not do any dynamic linking of libtool libraries
-  -version-info CURRENT[:REVISION[:AGE]]
-                    specify library version info [each variable defaults to 0]
-  -weak LIBNAME     declare that the target provides the LIBNAME interface
-  -Wc,FLAG
-  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
-  -Wl,FLAG
-  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
-  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename.  Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
-        ;;
-
-      uninstall)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      *)
-        func_fatal_help "invalid operation mode \`$opt_mode'"
-        ;;
-    esac
-
-    echo
-    $ECHO "Try \`$progname --help' for more information about other modes."
-}
-
-# Now that we've collected a possible --mode arg, show help if necessary
-if $opt_help; then
-  if test "$opt_help" = :; then
-    func_mode_help
-  else
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-       func_mode_help
-      done
-    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-       echo
-       func_mode_help
-      done
-    } |
-    sed '1d
-      /^When reporting/,/^Report/{
-       H
-       d
-      }
-      $x
-      /information about other modes/d
-      /more detailed .*MODE/d
-      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
-  fi
-  exit $?
-fi
-
-
-# func_mode_execute arg...
-func_mode_execute ()
-{
-    $opt_debug
-    # The first argument is the command name.
-    cmd="$nonopt"
-    test -z "$cmd" && \
-      func_fatal_help "you must specify a COMMAND"
-
-    # Handle -dlopen flags immediately.
-    for file in $opt_dlopen; do
-      test -f "$file" \
-       || func_fatal_help "\`$file' is not a file"
-
-      dir=
-      case $file in
-      *.la)
-       func_resolve_sysroot "$file"
-       file=$func_resolve_sysroot_result
-
-       # Check to see that this really is a libtool archive.
-       func_lalib_unsafe_p "$file" \
-         || func_fatal_help "\`$lib' is not a valid libtool archive"
-
-       # Read the libtool library.
-       dlname=
-       library_names=
-       func_source "$file"
-
-       # Skip this library if it cannot be dlopened.
-       if test -z "$dlname"; then
-         # Warn if it was a shared library.
-         test -n "$library_names" && \
-           func_warning "\`$file' was not linked with \`-export-dynamic'"
-         continue
-       fi
-
-       func_dirname "$file" "" "."
-       dir="$func_dirname_result"
-
-       if test -f "$dir/$objdir/$dlname"; then
-         func_append dir "/$objdir"
-       else
-         if test ! -f "$dir/$dlname"; then
-           func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
-         fi
-       fi
-       ;;
-
-      *.lo)
-       # Just add the directory containing the .lo file.
-       func_dirname "$file" "" "."
-       dir="$func_dirname_result"
-       ;;
-
-      *)
-       func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
-       continue
-       ;;
-      esac
-
-      # Get the absolute pathname.
-      absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
-
-      # Now add the directory to shlibpath_var.
-      if eval "test -z \"\$$shlibpath_var\""; then
-       eval "$shlibpath_var=\"\$dir\""
-      else
-       eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
-      fi
-    done
-
-    # This variable tells wrapper scripts just to set shlibpath_var
-    # rather than running their programs.
-    libtool_execute_magic="$magic"
-
-    # Check if any of the arguments is a wrapper script.
-    args=
-    for file
-    do
-      case $file in
-      -* | *.la | *.lo ) ;;
-      *)
-       # Do a test to see if this is really a libtool program.
-       if func_ltwrapper_script_p "$file"; then
-         func_source "$file"
-         # Transform arg to wrapped name.
-         file="$progdir/$program"
-       elif func_ltwrapper_executable_p "$file"; then
-         func_ltwrapper_scriptname "$file"
-         func_source "$func_ltwrapper_scriptname_result"
-         # Transform arg to wrapped name.
-         file="$progdir/$program"
-       fi
-       ;;
-      esac
-      # Quote arguments (to preserve shell metacharacters).
-      func_append_quoted args "$file"
-    done
-
-    if test "X$opt_dry_run" = Xfalse; then
-      if test -n "$shlibpath_var"; then
-       # Export the shlibpath_var.
-       eval "export $shlibpath_var"
-      fi
-
-      # Restore saved environment variables
-      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-      do
-       eval "if test \"\${save_$lt_var+set}\" = set; then
-                $lt_var=\$save_$lt_var; export $lt_var
-             else
-               $lt_unset $lt_var
-             fi"
-      done
-
-      # Now prepare to actually exec the command.
-      exec_cmd="\$cmd$args"
-    else
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-       eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-       echo "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
-    $opt_debug
-    libs=
-    libdirs=
-    admincmds=
-
-    for opt in "$nonopt" ${1+"$@"}
-    do
-      if test -d "$opt"; then
-       func_append libdirs " $opt"
-
-      elif test -f "$opt"; then
-       if func_lalib_unsafe_p "$opt"; then
-         func_append libs " $opt"
-       else
-         func_warning "\`$opt' is not a valid libtool archive"
-       fi
-
-      else
-       func_fatal_error "invalid argument \`$opt'"
-      fi
-    done
-
-    if test -n "$libs"; then
-      if test -n "$lt_sysroot"; then
-        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
-        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
-      else
-        sysroot_cmd=
-      fi
-
-      # Remove sysroot references
-      if $opt_dry_run; then
-        for lib in $libs; do
-          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
-        done
-      else
-        tmpdir=`func_mktempdir`
-        for lib in $libs; do
-         sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
-           > $tmpdir/tmp-la
-         mv -f $tmpdir/tmp-la $lib
-       done
-        ${RM}r "$tmpdir"
-      fi
-    fi
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for libdir in $libdirs; do
-       if test -n "$finish_cmds"; then
-         # Do each command in the finish commands.
-         func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
-'"$cmd"'"'
-       fi
-       if test -n "$finish_eval"; then
-         # Do the single finish_eval.
-         eval cmds=\"$finish_eval\"
-         $opt_dry_run || eval "$cmds" || func_append admincmds "
-       $cmds"
-       fi
-      done
-    fi
-
-    # Exit here if they wanted silent mode.
-    $opt_silent && exit $EXIT_SUCCESS
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      echo "----------------------------------------------------------------------"
-      echo "Libraries have been installed in:"
-      for libdir in $libdirs; do
-       $ECHO "   $libdir"
-      done
-      echo
-      echo "If you ever happen to want to link against installed libraries"
-      echo "in a given directory, LIBDIR, you must either use libtool, and"
-      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
-      echo "flag during linking and do at least one of the following:"
-      if test -n "$shlibpath_var"; then
-       echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-       echo "     during execution"
-      fi
-      if test -n "$runpath_var"; then
-       echo "   - add LIBDIR to the \`$runpath_var' environment variable"
-       echo "     during linking"
-      fi
-      if test -n "$hardcode_libdir_flag_spec"; then
-       libdir=LIBDIR
-       eval flag=\"$hardcode_libdir_flag_spec\"
-
-       $ECHO "   - use the \`$flag' linker flag"
-      fi
-      if test -n "$admincmds"; then
-       $ECHO "   - have your system administrator run these commands:$admincmds"
-      fi
-      if test -f /etc/ld.so.conf; then
-       echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-      fi
-      echo
-
-      echo "See any operating system documentation about shared libraries for"
-      case $host in
-       solaris2.[6789]|solaris2.1[0-9])
-         echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-         echo "pages."
-         ;;
-       *)
-         echo "more information, such as the ld(1) and ld.so(8) manual pages."
-         ;;
-      esac
-      echo "----------------------------------------------------------------------"
-    fi
-    exit $EXIT_SUCCESS
-}
-
-test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
-
-
-# func_mode_install arg...
-func_mode_install ()
-{
-    $opt_debug
-    # There may be an optional sh(1) argument at the beginning of
-    # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
-       # Allow the use of GNU shtool's install command.
-       case $nonopt in *shtool*) :;; *) false;; esac; then
-      # Aesthetically quote it.
-      func_quote_for_eval "$nonopt"
-      install_prog="$func_quote_for_eval_result "
-      arg=$1
-      shift
-    else
-      install_prog=
-      arg=$nonopt
-    fi
-
-    # The real first argument should be the name of the installation program.
-    # Aesthetically quote it.
-    func_quote_for_eval "$arg"
-    func_append install_prog "$func_quote_for_eval_result"
-    install_shared_prog=$install_prog
-    case " $install_prog " in
-      *[\\\ /]cp\ *) install_cp=: ;;
-      *) install_cp=false ;;
-    esac
-
-    # We need to accept at least all the BSD install flags.
-    dest=
-    files=
-    opts=
-    prev=
-    install_type=
-    isdir=no
-    stripme=
-    no_mode=:
-    for arg
-    do
-      arg2=
-      if test -n "$dest"; then
-       func_append files " $dest"
-       dest=$arg
-       continue
-      fi
-
-      case $arg in
-      -d) isdir=yes ;;
-      -f)
-       if $install_cp; then :; else
-         prev=$arg
-       fi
-       ;;
-      -g | -m | -o)
-       prev=$arg
-       ;;
-      -s)
-       stripme=" -s"
-       continue
-       ;;
-      -*)
-       ;;
-      *)
-       # If the previous option needed an argument, then skip it.
-       if test -n "$prev"; then
-         if test "x$prev" = x-m && test -n "$install_override_mode"; then
-           arg2=$install_override_mode
-           no_mode=false
-         fi
-         prev=
-       else
-         dest=$arg
-         continue
-       fi
-       ;;
-      esac
-
-      # Aesthetically quote the argument.
-      func_quote_for_eval "$arg"
-      func_append install_prog " $func_quote_for_eval_result"
-      if test -n "$arg2"; then
-       func_quote_for_eval "$arg2"
-      fi
-      func_append install_shared_prog " $func_quote_for_eval_result"
-    done
-
-    test -z "$install_prog" && \
-      func_fatal_help "you must specify an install program"
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prev' option requires an argument"
-
-    if test -n "$install_override_mode" && $no_mode; then
-      if $install_cp; then :; else
-       func_quote_for_eval "$install_override_mode"
-       func_append install_shared_prog " -m $func_quote_for_eval_result"
-      fi
-    fi
-
-    if test -z "$files"; then
-      if test -z "$dest"; then
-       func_fatal_help "no file or destination specified"
-      else
-       func_fatal_help "you must specify a destination"
-      fi
-    fi
-
-    # Strip any trailing slash from the destination.
-    func_stripname '' '/' "$dest"
-    dest=$func_stripname_result
-
-    # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=yes
-    if test "$isdir" = yes; then
-      destdir="$dest"
-      destname=
-    else
-      func_dirname_and_basename "$dest" "" "."
-      destdir="$func_dirname_result"
-      destname="$func_basename_result"
-
-      # Not a directory, so check to see that there is only one file specified.
-      set dummy $files; shift
-      test "$#" -gt 1 && \
-       func_fatal_help "\`$dest' is not a directory"
-    fi
-    case $destdir in
-    [\\/]* | [A-Za-z]:[\\/]*) ;;
-    *)
-      for file in $files; do
-       case $file in
-       *.lo) ;;
-       *)
-         func_fatal_help "\`$destdir' must be an absolute directory name"
-         ;;
-       esac
-      done
-      ;;
-    esac
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    staticlibs=
-    future_libdirs=
-    current_libdirs=
-    for file in $files; do
-
-      # Do each installation.
-      case $file in
-      *.$libext)
-       # Do the static libraries later.
-       func_append staticlibs " $file"
-       ;;
-
-      *.la)
-       func_resolve_sysroot "$file"
-       file=$func_resolve_sysroot_result
-
-       # Check to see that this really is a libtool archive.
-       func_lalib_unsafe_p "$file" \
-         || func_fatal_help "\`$file' is not a valid libtool archive"
-
-       library_names=
-       old_library=
-       relink_command=
-       func_source "$file"
-
-       # Add the libdir to current_libdirs if it is the destination.
-       if test "X$destdir" = "X$libdir"; then
-         case "$current_libdirs " in
-         *" $libdir "*) ;;
-         *) func_append current_libdirs " $libdir" ;;
-         esac
-       else
-         # Note the libdir as a future libdir.
-         case "$future_libdirs " in
-         *" $libdir "*) ;;
-         *) func_append future_libdirs " $libdir" ;;
-         esac
-       fi
-
-       func_dirname "$file" "/" ""
-       dir="$func_dirname_result"
-       func_append dir "$objdir"
-
-       if test -n "$relink_command"; then
-         # Determine the prefix the user has applied to our future dir.
-         inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
-
-         # Don't allow the user to place us outside of our expected
-         # location b/c this prevents finding dependent libraries that
-         # are installed to the same prefix.
-         # At present, this check doesn't affect windows .dll's that
-         # are installed into $libdir/../bin (currently, that works fine)
-         # but it's something to keep an eye on.
-         test "$inst_prefix_dir" = "$destdir" && \
-           func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
-
-         if test -n "$inst_prefix_dir"; then
-           # Stick the inst_prefix_dir data into the link command.
-           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-         else
-           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
-         fi
-
-         func_warning "relinking \`$file'"
-         func_show_eval "$relink_command" \
-           'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
-       fi
-
-       # See the names of the shared library.
-       set dummy $library_names; shift
-       if test -n "$1"; then
-         realname="$1"
-         shift
-
-         srcname="$realname"
-         test -n "$relink_command" && srcname="$realname"T
-
-         # Install the shared library and build the symlinks.
-         func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
-             'exit $?'
-         tstripme="$stripme"
-         case $host_os in
-         cygwin* | mingw* | pw32* | cegcc*)
-           case $realname in
-           *.dll.a)
-             tstripme=""
-             ;;
-           esac
-           ;;
-         esac
-         if test -n "$tstripme" && test -n "$striplib"; then
-           func_show_eval "$striplib $destdir/$realname" 'exit $?'
-         fi
-
-         if test "$#" -gt 0; then
-           # Delete the old symlinks, and create new ones.
-           # Try `ln -sf' first, because the `ln' binary might depend on
-           # the symlink we replace!  Solaris /bin/ln does not understand -f,
-           # so we also need to try rm && ln -s.
-           for linkname
-           do
-             test "$linkname" != "$realname" \
-               && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
-           done
-         fi
-
-         # Do each command in the postinstall commands.
-         lib="$destdir/$realname"
-         func_execute_cmds "$postinstall_cmds" 'exit $?'
-       fi
-
-       # Install the pseudo-library for information purposes.
-       func_basename "$file"
-       name="$func_basename_result"
-       instname="$dir/$name"i
-       func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
-       # Maybe install the static library, too.
-       test -n "$old_library" && func_append staticlibs " $dir/$old_library"
-       ;;
-
-      *.lo)
-       # Install (i.e. copy) a libtool object.
-
-       # Figure out destination file name, if it wasn't already specified.
-       if test -n "$destname"; then
-         destfile="$destdir/$destname"
-       else
-         func_basename "$file"
-         destfile="$func_basename_result"
-         destfile="$destdir/$destfile"
-       fi
-
-       # Deduce the name of the destination old-style object file.
-       case $destfile in
-       *.lo)
-         func_lo2o "$destfile"
-         staticdest=$func_lo2o_result
-         ;;
-       *.$objext)
-         staticdest="$destfile"
-         destfile=
-         ;;
-       *)
-         func_fatal_help "cannot copy a libtool object to \`$destfile'"
-         ;;
-       esac
-
-       # Install the libtool object if requested.
-       test -n "$destfile" && \
-         func_show_eval "$install_prog $file $destfile" 'exit $?'
-
-       # Install the old object if enabled.
-       if test "$build_old_libs" = yes; then
-         # Deduce the name of the old-style object file.
-         func_lo2o "$file"
-         staticobj=$func_lo2o_result
-         func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
-       fi
-       exit $EXIT_SUCCESS
-       ;;
-
-      *)
-       # Figure out destination file name, if it wasn't already specified.
-       if test -n "$destname"; then
-         destfile="$destdir/$destname"
-       else
-         func_basename "$file"
-         destfile="$func_basename_result"
-         destfile="$destdir/$destfile"
-       fi
-
-       # If the file is missing, and there is a .exe on the end, strip it
-       # because it is most likely a libtool script we actually want to
-       # install
-       stripped_ext=""
-       case $file in
-         *.exe)
-           if test ! -f "$file"; then
-             func_stripname '' '.exe' "$file"
-             file=$func_stripname_result
-             stripped_ext=".exe"
-           fi
-           ;;
-       esac
-
-       # Do a test to see if this is really a libtool program.
-       case $host in
-       *cygwin* | *mingw*)
-           if func_ltwrapper_executable_p "$file"; then
-             func_ltwrapper_scriptname "$file"
-             wrapper=$func_ltwrapper_scriptname_result
-           else
-             func_stripname '' '.exe' "$file"
-             wrapper=$func_stripname_result
-           fi
-           ;;
-       *)
-           wrapper=$file
-           ;;
-       esac
-       if func_ltwrapper_script_p "$wrapper"; then
-         notinst_deplibs=
-         relink_command=
-
-         func_source "$wrapper"
-
-         # Check the variables that should have been set.
-         test -z "$generated_by_libtool_version" && \
-           func_fatal_error "invalid libtool wrapper script \`$wrapper'"
-
-         finalize=yes
-         for lib in $notinst_deplibs; do
-           # Check to see that each library is installed.
-           libdir=
-           if test -f "$lib"; then
-             func_source "$lib"
-           fi
-           libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
-           if test -n "$libdir" && test ! -f "$libfile"; then
-             func_warning "\`$lib' has not been installed in \`$libdir'"
-             finalize=no
-           fi
-         done
-
-         relink_command=
-         func_source "$wrapper"
-
-         outputname=
-         if test "$fast_install" = no && test -n "$relink_command"; then
-           $opt_dry_run || {
-             if test "$finalize" = yes; then
-               tmpdir=`func_mktempdir`
-               func_basename "$file$stripped_ext"
-               file="$func_basename_result"
-               outputname="$tmpdir/$file"
-               # Replace the output file specification.
-               relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
-
-               $opt_silent || {
-                 func_quote_for_expand "$relink_command"
-                 eval "func_echo $func_quote_for_expand_result"
-               }
-               if eval "$relink_command"; then :
-                 else
-                 func_error "error: relink \`$file' with the above command before installing it"
-                 $opt_dry_run || ${RM}r "$tmpdir"
-                 continue
-               fi
-               file="$outputname"
-             else
-               func_warning "cannot relink \`$file'"
-             fi
-           }
-         else
-           # Install the binary that we compiled earlier.
-           file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
-         fi
-       fi
-
-       # remove .exe since cygwin /usr/bin/install will append another
-       # one anyway
-       case $install_prog,$host in
-       */usr/bin/install*,*cygwin*)
-         case $file:$destfile in
-         *.exe:*.exe)
-           # this is ok
-           ;;
-         *.exe:*)
-           destfile=$destfile.exe
-           ;;
-         *:*.exe)
-           func_stripname '' '.exe' "$destfile"
-           destfile=$func_stripname_result
-           ;;
-         esac
-         ;;
-       esac
-       func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
-       $opt_dry_run || if test -n "$outputname"; then
-         ${RM}r "$tmpdir"
-       fi
-       ;;
-      esac
-    done
-
-    for file in $staticlibs; do
-      func_basename "$file"
-      name="$func_basename_result"
-
-      # Set up the ranlib parameters.
-      oldlib="$destdir/$name"
-      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-      tool_oldlib=$func_to_tool_file_result
-
-      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-       func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
-      fi
-
-      # Do each command in the postinstall commands.
-      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
-    done
-
-    test -n "$future_libdirs" && \
-      func_warning "remember to run \`$progname --finish$future_libdirs'"
-
-    if test -n "$current_libdirs"; then
-      # Maybe just do a dry run.
-      $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
-    else
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$opt_mode" = install && func_mode_install ${1+"$@"}
-
-
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
-{
-    $opt_debug
-    my_outputname="$1"
-    my_originator="$2"
-    my_pic_p="${3-no}"
-    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
-    my_dlsyms=
-
-    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-      if test -n "$NM" && test -n "$global_symbol_pipe"; then
-       my_dlsyms="${my_outputname}S.c"
-      else
-       func_error "not configured to extract global symbols from dlpreopened files"
-      fi
-    fi
-
-    if test -n "$my_dlsyms"; then
-      case $my_dlsyms in
-      "") ;;
-      *.c)
-       # Discover the nlist of each of the dlfiles.
-       nlist="$output_objdir/${my_outputname}.nm"
-
-       func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
-
-       # Parse the name list into a source file.
-       func_verbose "creating $output_objdir/$my_dlsyms"
-
-       $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
-#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
-#endif
-
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-/* External symbol declarations for the compiler. */\
-"
-
-       if test "$dlself" = yes; then
-         func_verbose "generating symbol list for \`$output'"
-
-         $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
-
-         # Add our own program objects to the symbol list.
-         progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-         for progfile in $progfiles; do
-           func_to_tool_file "$progfile" func_convert_file_msys_to_w32
-           func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
-           $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
-         done
-
-         if test -n "$exclude_expsyms"; then
-           $opt_dry_run || {
-             eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-           }
-         fi
-
-         if test -n "$export_symbols_regex"; then
-           $opt_dry_run || {
-             eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-           }
-         fi
-
-         # Prepare the list of exported symbols
-         if test -z "$export_symbols"; then
-           export_symbols="$output_objdir/$outputname.exp"
-           $opt_dry_run || {
-             $RM $export_symbols
-             eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-             case $host in
-             *cygwin* | *mingw* | *cegcc* )
-                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
-               ;;
-             esac
-           }
-         else
-           $opt_dry_run || {
-             eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-             eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-             case $host in
-               *cygwin* | *mingw* | *cegcc* )
-                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
-                 ;;
-             esac
-           }
-         fi
-       fi
-
-       for dlprefile in $dlprefiles; do
-         func_verbose "extracting global C symbols from \`$dlprefile'"
-         func_basename "$dlprefile"
-         name="$func_basename_result"
-          case $host in
-           *cygwin* | *mingw* | *cegcc* )
-             # if an import library, we need to obtain dlname
-             if func_win32_import_lib_p "$dlprefile"; then
-               func_tr_sh "$dlprefile"
-               eval "curr_lafile=\$libfile_$func_tr_sh_result"
-               dlprefile_dlbasename=""
-               if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
-                 # Use subshell, to avoid clobbering current variable values
-                 dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
-                 if test -n "$dlprefile_dlname" ; then
-                   func_basename "$dlprefile_dlname"
-                   dlprefile_dlbasename="$func_basename_result"
-                 else
-                   # no lafile. user explicitly requested -dlpreopen <import library>.
-                   $sharedlib_from_linklib_cmd "$dlprefile"
-                   dlprefile_dlbasename=$sharedlib_from_linklib_result
-                 fi
-               fi
-               $opt_dry_run || {
-                 if test -n "$dlprefile_dlbasename" ; then
-                   eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
-                 else
-                   func_warning "Could not compute DLL name from $name"
-                   eval '$ECHO ": $name " >> "$nlist"'
-                 fi
-                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
-                   $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
-               }
-             else # not an import lib
-               $opt_dry_run || {
-                 eval '$ECHO ": $name " >> "$nlist"'
-                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-               }
-             fi
-           ;;
-           *)
-             $opt_dry_run || {
-               eval '$ECHO ": $name " >> "$nlist"'
-               func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-               eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-             }
-           ;;
-          esac
-       done
-
-       $opt_dry_run || {
-         # Make sure we have at least an empty file.
-         test -f "$nlist" || : > "$nlist"
-
-         if test -n "$exclude_expsyms"; then
-           $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-           $MV "$nlist"T "$nlist"
-         fi
-
-         # Try sorting and uniquifying the output.
-         if $GREP -v "^: " < "$nlist" |
-             if sort -k 3 </dev/null >/dev/null 2>&1; then
-               sort -k 3
-             else
-               sort +2
-             fi |
-             uniq > "$nlist"S; then
-           :
-         else
-           $GREP -v "^: " < "$nlist" > "$nlist"S
-         fi
-
-         if test -f "$nlist"S; then
-           eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
-         else
-           echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
-         fi
-
-         echo >> "$output_objdir/$my_dlsyms" "\
-
-/* The mapping between symbol names and symbols.  */
-typedef struct {
-  const char *name;
-  void *address;
-} lt_dlsymlist;
-extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
-LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
-  { \"$my_originator\", (void *) 0 },"
-
-         case $need_lib_prefix in
-         no)
-           eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
-           ;;
-         *)
-           eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
-           ;;
-         esac
-         echo >> "$output_objdir/$my_dlsyms" "\
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt_${my_prefix}_LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
-       } # !$opt_dry_run
-
-       pic_flag_for_symtable=
-       case "$compile_command " in
-       *" -static "*) ;;
-       *)
-         case $host in
-         # compiling the symbol table file with pic_flag works around
-         # a FreeBSD bug that causes programs to crash when -lm is
-         # linked before any other PIC object.  But we must not use
-         # pic_flag when linking with -static.  The problem exists in
-         # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-         *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-           pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
-         *-*-hpux*)
-           pic_flag_for_symtable=" $pic_flag"  ;;
-         *)
-           if test "X$my_pic_p" != Xno; then
-             pic_flag_for_symtable=" $pic_flag"
-           fi
-           ;;
-         esac
-         ;;
-       esac
-       symtab_cflags=
-       for arg in $LTCFLAGS; do
-         case $arg in
-         -pie | -fpie | -fPIE) ;;
-         *) func_append symtab_cflags " $arg" ;;
-         esac
-       done
-
-       # Now compile the dynamic symbol file.
-       func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
-
-       # Clean up the generated files.
-       func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
-
-       # Transform the symbol file into the correct name.
-       symfileobj="$output_objdir/${my_outputname}S.$objext"
-       case $host in
-       *cygwin* | *mingw* | *cegcc* )
-         if test -f "$output_objdir/$my_outputname.def"; then
-           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-         else
-           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-         fi
-         ;;
-       *)
-         compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-         finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-         ;;
-       esac
-       ;;
-      *)
-       func_fatal_error "unknown suffix for \`$my_dlsyms'"
-       ;;
-      esac
-    else
-      # We keep going just in case the user didn't refer to
-      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-      # really was required.
-
-      # Nullify the symbol file.
-      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
-    fi
-}
-
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-# Despite the name, also deal with 64 bit binaries.
-func_win32_libid ()
-{
-  $opt_debug
-  win32_libid_type="unknown"
-  win32_fileres=`file -L $1 2>/dev/null`
-  case $win32_fileres in
-  *ar\ archive\ import\ library*) # definitely import
-    win32_libid_type="x86 archive import"
-    ;;
-  *ar\ archive*) # could be an import, or static
-    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-      func_to_tool_file "$1" func_convert_file_msys_to_w32
-      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
-       $SED -n -e '
-           1,100{
-               / I /{
-                   s,.*,import,
-                   p
-                   q
-               }
-           }'`
-      case $win32_nmres in
-      import*)  win32_libid_type="x86 archive import";;
-      *)        win32_libid_type="x86 archive static";;
-      esac
-    fi
-    ;;
-  *DLL*)
-    win32_libid_type="x86 DLL"
-    ;;
-  *executable*) # but shell scripts are "executable" too...
-    case $win32_fileres in
-    *MS\ Windows\ PE\ Intel*)
-      win32_libid_type="x86 DLL"
-      ;;
-    esac
-    ;;
-  esac
-  $ECHO "$win32_libid_type"
-}
-
-# func_cygming_dll_for_implib ARG
-#
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib ()
-{
-  $opt_debug
-  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
-}
-
-# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
-#
-# The is the core of a fallback implementation of a
-# platform-specific function to extract the name of the
-# DLL associated with the specified import library LIBNAME.
-#
-# SECTION_NAME is either .idata$6 or .idata$7, depending
-# on the platform and compiler that created the implib.
-#
-# Echos the name of the DLL associated with the
-# specified import library.
-func_cygming_dll_for_implib_fallback_core ()
-{
-  $opt_debug
-  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
-  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
-    $SED '/^Contents of section '"$match_literal"':/{
-      # Place marker at beginning of archive member dllname section
-      s/.*/====MARK====/
-      p
-      d
-    }
-    # These lines can sometimes be longer than 43 characters, but
-    # are always uninteresting
-    /:[         ]*file format pe[i]\{,1\}-/d
-    /^In archive [^:]*:/d
-    # Ensure marker is printed
-    /^====MARK====/p
-    # Remove all lines with less than 43 characters
-    /^.\{43\}/!d
-    # From remaining lines, remove first 43 characters
-    s/^.\{43\}//' |
-    $SED -n '
-      # Join marker and all lines until next marker into a single line
-      /^====MARK====/ b para
-      H
-      $ b para
-      b
-      :para
-      x
-      s/\n//g
-      # Remove the marker
-      s/^====MARK====//
-      # Remove trailing dots and whitespace
-      s/[\. \t]*$//
-      # Print
-      /./p' |
-    # we now have a list, one entry per line, of the stringified
-    # contents of the appropriate section of all members of the
-    # archive which possess that section. Heuristic: eliminate
-    # all those which have a first or second character that is
-    # a '.' (that is, objdump's representation of an unprintable
-    # character.) This should work for all archives with less than
-    # 0x302f exports -- but will fail for DLLs whose name actually
-    # begins with a literal '.' or a single character followed by
-    # a '.'.
-    #
-    # Of those that remain, print the first one.
-    $SED -e '/^\./d;/^.\./d;q'
-}
-
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
-  test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
-  test -n "$func_cygming_ms_implib_tmp"
-}
-
-# func_cygming_dll_for_implib_fallback ARG
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-#
-# This fallback implementation is for use when $DLLTOOL
-# does not support the --identify-strict option.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib_fallback ()
-{
-  $opt_debug
-  if func_cygming_gnu_implib_p "$1" ; then
-    # binutils import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
-  elif func_cygming_ms_implib_p "$1" ; then
-    # ms-generated import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
-  else
-    # unknown
-    sharedlib_from_linklib_result=""
-  fi
-}
-
-
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    if test "$lock_old_archive_extraction" = yes; then
-      lockfile=$f_ex_an_ar_oldlib.lock
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-       func_echo "Waiting for $lockfile to be removed"
-       sleep 2
-      done
-    fi
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
-                  'stat=$?; rm -f "$lockfile"; exit $stat'
-    if test "$lock_old_archive_extraction" = yes; then
-      $opt_dry_run || rm -f "$lockfile"
-    fi
-    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-     :
-    else
-      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
-    fi
-}
-
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
-    $opt_debug
-    my_gentop="$1"; shift
-    my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
-
-    for my_xlib in $my_oldlibs; do
-      # Extract the objects.
-      case $my_xlib in
-       [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
-       *) my_xabs=`pwd`"/$my_xlib" ;;
-      esac
-      func_basename "$my_xlib"
-      my_xlib="$func_basename_result"
-      my_xlib_u=$my_xlib
-      while :; do
-        case " $extracted_archives " in
-       *" $my_xlib_u "*)
-         func_arith $extracted_serial + 1
-         extracted_serial=$func_arith_result
-         my_xlib_u=lt$extracted_serial-$my_xlib ;;
-       *) break ;;
-       esac
-      done
-      extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir="$my_gentop/$my_xlib_u"
-
-      func_mkdir_p "$my_xdir"
-
-      case $host in
-      *-darwin*)
-       func_verbose "Extracting $my_xabs"
-       # Do not bother doing anything if just a dry run
-       $opt_dry_run || {
-         darwin_orig_dir=`pwd`
-         cd $my_xdir || exit $?
-         darwin_archive=$my_xabs
-         darwin_curdir=`pwd`
-         darwin_base_archive=`basename "$darwin_archive"`
-         darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
-         if test -n "$darwin_arches"; then
-           darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
-           darwin_arch=
-           func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-           for darwin_arch in  $darwin_arches ; do
-             func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-             $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-             cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-             func_extract_an_archive "`pwd`" "${darwin_base_archive}"
-             cd "$darwin_curdir"
-             $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
-           done # $darwin_arches
-            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-           darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
-           darwin_file=
-           darwin_files=
-           for darwin_file in $darwin_filelist; do
-             darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
-             $LIPO -create -output "$darwin_file" $darwin_files
-           done # $darwin_filelist
-           $RM -rf unfat-$$
-           cd "$darwin_orig_dir"
-         else
-           cd $darwin_orig_dir
-           func_extract_an_archive "$my_xdir" "$my_xabs"
-         fi # $darwin_arches
-       } # !$opt_dry_run
-       ;;
-      *)
-        func_extract_an_archive "$my_xdir" "$my_xabs"
-       ;;
-      esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
-    done
-
-    func_extract_archives_result="$my_oldobjs"
-}
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable.  Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take.  If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
-# the $objdir directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
-       func_emit_wrapper_arg1=${1-no}
-
-       $ECHO "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
-  # install mode needs the following variables:
-  generated_by_libtool_version='$macro_version'
-  notinst_deplibs='$notinst_deplibs'
-else
-  # When we are sourced in execute mode, \$file and \$ECHO are already set.
-  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    file=\"\$0\""
-
-    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
-    $ECHO "\
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-    ECHO=\"$qECHO\"
-  fi
-
-# Very basic option parsing. These options are (a) specific to
-# the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ which is used only on
-# windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options which match
-# this pattern).
-#
-# There are only two supported options: --lt-debug and
-# --lt-dump-script. There is, deliberately, no --lt-help.
-#
-# The first argument to this parsing function should be the
-# script's $0 value, followed by "$@".
-lt_option_debug=
-func_parse_lt_options ()
-{
-  lt_script_arg0=\$0
-  shift
-  for lt_opt
-  do
-    case \"\$lt_opt\" in
-    --lt-debug) lt_option_debug=1 ;;
-    --lt-dump-script)
-        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
-        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
-        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
-        cat \"\$lt_dump_D/\$lt_dump_F\"
-        exit 0
-      ;;
-    --lt-*)
-        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
-        exit 1
-      ;;
-    esac
-  done
-
-  # Print the debug banner immediately:
-  if test -n \"\$lt_option_debug\"; then
-    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
-  fi
-}
-
-# Used when --lt-debug. Prints its arguments to stdout
-# (redirection is the responsibility of the caller)
-func_lt_dump_args ()
-{
-  lt_dump_args_N=1;
-  for lt_arg
-  do
-    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
-    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
-  done
-}
-
-# Core function for launching the target application
-func_exec_program_core ()
-{
-"
-  case $host in
-  # Backslashes separate directories on plain windows
-  *-*-mingw | *-*-os2* | *-cegcc*)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-    ;;
-
-  *)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-    ;;
-  esac
-  $ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 1
-}
-
-# A function to encapsulate launching the target application
-# Strips options in the --lt-* namespace from \$@ and
-# launches target application with the remaining arguments.
-func_exec_program ()
-{
-  case \" \$* \" in
-  *\\ --lt-*)
-    for lt_wr_arg
-    do
-      case \$lt_wr_arg in
-      --lt-*) ;;
-      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-      esac
-      shift
-    done ;;
-  esac
-  func_exec_program_core \${1+\"\$@\"}
-}
-
-  # Parse options
-  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
-
-  # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
-  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
-  # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
-  while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
-
-    # If there was a directory component, then change thisdir.
-    if test \"x\$destdir\" != \"x\$file\"; then
-      case \"\$destdir\" in
-      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-      *) thisdir=\"\$thisdir/\$destdir\" ;;
-      esac
-    fi
-
-    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
-  done
-
-  # Usually 'no', except on cygwin/mingw when embedded into
-  # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
-  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
-    # special case for '.'
-    if test \"\$thisdir\" = \".\"; then
-      thisdir=\`pwd\`
-    fi
-    # remove .libs from thisdir
-    case \"\$thisdir\" in
-    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
-    $objdir )   thisdir=. ;;
-    esac
-  fi
-
-  # Try to get the absolute directory name.
-  absdir=\`cd \"\$thisdir\" && pwd\`
-  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
-       if test "$fast_install" = yes; then
-         $ECHO "\
-  program=lt-'$outputname'$exeext
-  progdir=\"\$thisdir/$objdir\"
-
-  if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
-       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
-    file=\"\$\$-\$program\"
-
-    if test ! -d \"\$progdir\"; then
-      $MKDIR \"\$progdir\"
-    else
-      $RM \"\$progdir/\$file\"
-    fi"
-
-         $ECHO "\
-
-    # relink executable if necessary
-    if test -n \"\$relink_command\"; then
-      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-      else
-       $ECHO \"\$relink_command_output\" >&2
-       $RM \"\$progdir/\$file\"
-       exit 1
-      fi
-    fi
-
-    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-    { $RM \"\$progdir/\$program\";
-      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-    $RM \"\$progdir/\$file\"
-  fi"
-       else
-         $ECHO "\
-  program='$outputname'
-  progdir=\"\$thisdir/$objdir\"
-"
-       fi
-
-       $ECHO "\
-
-  if test -f \"\$progdir/\$program\"; then"
-
-       # fixup the dll searchpath if we need to.
-       #
-       # Fix the DLL searchpath if we need to.  Do this before prepending
-       # to shlibpath, because on Windows, both are PATH and uninstalled
-       # libraries must come first.
-       if test -n "$dllsearchpath"; then
-         $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-       fi
-
-       # Export our shlibpath_var if we have one.
-       if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-         $ECHO "\
-    # Add our own library path to $shlibpath_var
-    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
-    # Some systems cannot cope with colon-terminated $shlibpath_var
-    # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
-
-    export $shlibpath_var
-"
-       fi
-
-       $ECHO "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-      func_exec_program \${1+\"\$@\"}
-    fi
-  else
-    # The program doesn't exist.
-    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
-    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
-    exit 1
-  fi
-fi\
-"
-}
-
-
-# func_emit_cwrapperexe_src
-# emit the source code for a wrapper executable on stdout
-# Must ONLY be called from within func_mode_link because
-# it depends on a number of variable set therein.
-func_emit_cwrapperexe_src ()
-{
-       cat <<EOF
-
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-
-   The $output program cannot be directly executed until all the libtool
-   libraries that it depends on are installed.
-
-   This wrapper executable should never be moved out of the build directory.
-   If it is, it will not operate correctly.
-*/
-EOF
-           cat <<"EOF"
-#ifdef _MSC_VER
-# define _CRT_SECURE_NO_DEPRECATE 1
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-#  include <io.h>
-# endif
-#endif
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-/* declarations of non-ANSI functions */
-#if defined(__MINGW32__)
-# ifdef __STRICT_ANSI__
-int _putenv (const char *);
-# endif
-#elif defined(__CYGWIN__)
-# ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-# endif
-/* #elif defined (other platforms) ... */
-#endif
-
-/* portability defines, excluding path handling macros */
-#if defined(_MSC_VER)
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-# define S_IXUSR _S_IEXEC
-# ifndef _INTPTR_T_DEFINED
-#  define _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#elif defined(__MINGW32__)
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-#elif defined(__CYGWIN__)
-# define HAVE_SETENV
-# define FOPEN_WB "wb"
-/* #elif defined (other platforms) ... */
-#endif
-
-#if defined(PATH_MAX)
-# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-
-/* path handling portability macros */
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# define FOPEN_WB "wb"
-# ifndef DIR_SEPARATOR_2
-#  define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-#  define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
-       (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#ifndef FOPEN_WB
-# define FOPEN_WB "w"
-#endif
-#ifndef _O_BINARY
-# define _O_BINARY 0
-#endif
-
-#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
-} while (0)
-
-#if defined(LT_DEBUGWRAPPER)
-static int lt_debug = 1;
-#else
-static int lt_debug = 0;
-#endif
-
-const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
-
-void *xmalloc (size_t num);
-char *xstrdup (const char *string);
-const char *base_name (const char *name);
-char *find_executable (const char *wrapper);
-char *chase_symlinks (const char *pathspec);
-int make_executable (const char *path);
-int check_executable (const char *path);
-char *strendzap (char *str, const char *pat);
-void lt_debugprintf (const char *file, int line, const char *fmt, ...);
-void lt_fatal (const char *file, int line, const char *message, ...);
-static const char *nonnull (const char *s);
-static const char *nonempty (const char *s);
-void lt_setenv (const char *name, const char *value);
-char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-char **prepare_spawn (char **argv);
-void lt_dump_script (FILE *f);
-EOF
-
-           cat <<EOF
-volatile const char * MAGIC_EXE = "$magic_exe";
-const char * LIB_PATH_VARNAME = "$shlibpath_var";
-EOF
-
-           if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-              func_to_host_path "$temp_rpath"
-             cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-           else
-             cat <<"EOF"
-const char * LIB_PATH_VALUE   = "";
-EOF
-           fi
-
-           if test -n "$dllsearchpath"; then
-              func_to_host_path "$dllsearchpath:"
-             cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-           else
-             cat <<"EOF"
-const char * EXE_PATH_VARNAME = "";
-const char * EXE_PATH_VALUE   = "";
-EOF
-           fi
-
-           if test "$fast_install" = yes; then
-             cat <<EOF
-const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
-EOF
-           else
-             cat <<EOF
-const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
-EOF
-           fi
-
-
-           cat <<"EOF"
-
-#define LTWRAPPER_OPTION_PREFIX         "--lt-"
-
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
-
-int
-main (int argc, char *argv[])
-{
-  char **newargz;
-  int  newargc;
-  char *tmp_pathspec;
-  char *actual_cwrapper_path;
-  char *actual_cwrapper_name;
-  char *target_name;
-  char *lt_argv_zero;
-  intptr_t rval = 127;
-
-  int i;
-
-  program_name = (char *) xstrdup (base_name (argv[0]));
-  newargz = XMALLOC (char *, argc + 1);
-
-  /* very simple arg parsing; don't want to rely on getopt
-   * also, copy all non cwrapper options to newargz, except
-   * argz[0], which is handled differently
-   */
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (strcmp (argv[i], dumpscript_opt) == 0)
-       {
-EOF
-           case "$host" in
-             *mingw* | *cygwin* )
-               # make stdout use "unix" line endings
-               echo "          setmode(1,_O_BINARY);"
-               ;;
-             esac
-
-           cat <<"EOF"
-         lt_dump_script (stdout);
-         return 0;
-       }
-      if (strcmp (argv[i], debug_opt) == 0)
-       {
-          lt_debug = 1;
-          continue;
-       }
-      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
-        {
-          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-             namespace, but it is not one of the ones we know about and
-             have already dealt with, above (inluding dump-script), then
-             report an error. Otherwise, targets might begin to believe
-             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-             namespace. The first time any user complains about this, we'll
-             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-             or a configure.ac-settable value.
-           */
-          lt_fatal (__FILE__, __LINE__,
-                   "unrecognized %s option: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-EOF
-           cat <<EOF
-  /* The GNU banner must be the first non-error debug message */
-  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
-EOF
-           cat <<"EOF"
-  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
-
-  tmp_pathspec = find_executable (argv[0]);
-  if (tmp_pathspec == NULL)
-    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (before symlink chase) at: %s\n",
-                 tmp_pathspec);
-
-  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (after symlink chase) at: %s\n",
-                 actual_cwrapper_path);
-  XFREE (tmp_pathspec);
-
-  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
-  strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
-  /* wrapper name transforms */
-  strendzap (actual_cwrapper_name, ".exe");
-  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
-  XFREE (actual_cwrapper_name);
-  actual_cwrapper_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  /* target_name transforms -- use actual target program name; might have lt- prefix */
-  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
-  strendzap (target_name, ".exe");
-  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
-  XFREE (target_name);
-  target_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(main) libtool target name: %s\n",
-                 target_name);
-EOF
-
-           cat <<EOF
-  newargz[0] =
-    XMALLOC (char, (strlen (actual_cwrapper_path) +
-                   strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
-  strcpy (newargz[0], actual_cwrapper_path);
-  strcat (newargz[0], "$objdir");
-  strcat (newargz[0], "/");
-EOF
-
-           cat <<"EOF"
-  /* stop here, and copy so we don't have to do this twice */
-  tmp_pathspec = xstrdup (newargz[0]);
-
-  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
-  strcat (newargz[0], actual_cwrapper_name);
-
-  /* DO want the lt- prefix here if it exists, so use target_name */
-  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
-  XFREE (tmp_pathspec);
-  tmp_pathspec = NULL;
-EOF
-
-           case $host_os in
-             mingw*)
-           cat <<"EOF"
-  {
-    char* p;
-    while ((p = strchr (newargz[0], '\\')) != NULL)
-      {
-       *p = '/';
-      }
-    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
-      {
-       *p = '/';
-      }
-  }
-EOF
-           ;;
-           esac
-
-           cat <<"EOF"
-  XFREE (target_name);
-  XFREE (actual_cwrapper_path);
-  XFREE (actual_cwrapper_name);
-
-  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
-  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
-     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
-     because on Windows, both *_VARNAMEs are PATH but uninstalled
-     libraries must come first. */
-  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-
-  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
-                 nonnull (lt_argv_zero));
-  for (i = 0; i < newargc; i++)
-    {
-      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
-                     i, nonnull (newargz[i]));
-    }
-
-EOF
-
-           case $host_os in
-             mingw*)
-               cat <<"EOF"
-  /* execv doesn't actually work on mingw as expected on unix */
-  newargz = prepare_spawn (newargz);
-  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
-  if (rval == -1)
-    {
-      /* failed to start process */
-      lt_debugprintf (__FILE__, __LINE__,
-                     "(main) failed to launch target \"%s\": %s\n",
-                     lt_argv_zero, nonnull (strerror (errno)));
-      return 127;
-    }
-  return rval;
-EOF
-               ;;
-             *)
-               cat <<"EOF"
-  execv (lt_argv_zero, newargz);
-  return rval; /* =127, but avoids unused variable warning */
-EOF
-               ;;
-           esac
-
-           cat <<"EOF"
-}
-
-void *
-xmalloc (size_t num)
-{
-  void *p = (void *) malloc (num);
-  if (!p)
-    lt_fatal (__FILE__, __LINE__, "memory exhausted");
-
-  return p;
-}
-
-char *
-xstrdup (const char *string)
-{
-  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
-                         string) : NULL;
-}
-
-const char *
-base_name (const char *name)
-{
-  const char *base;
-
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
-    name += 2;
-#endif
-
-  for (base = name; *name; name++)
-    if (IS_DIR_SEPARATOR (*name))
-      base = name + 1;
-  return base;
-}
-
-int
-check_executable (const char *path)
-{
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if ((stat (path, &st) >= 0)
-      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
-    return 1;
-  else
-    return 0;
-}
-
-int
-make_executable (const char *path)
-{
-  int rval = 0;
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if (stat (path, &st) >= 0)
-    {
-      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
-    }
-  return rval;
-}
-
-/* Searches for the full path of the wrapper.  Returns
-   newly allocated full path name if found, NULL otherwise
-   Does not chase symlinks, even on platforms that support them.
-*/
-char *
-find_executable (const char *wrapper)
-{
-  int has_slash = 0;
-  const char *p;
-  const char *p_next;
-  /* static buffer for getcwd */
-  char tmp[LT_PATHMAX + 1];
-  int tmp_len;
-  char *concat_name;
-
-  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
-                  nonempty (wrapper));
-
-  if ((wrapper == NULL) || (*wrapper == '\0'))
-    return NULL;
-
-  /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
-    {
-      concat_name = xstrdup (wrapper);
-      if (check_executable (concat_name))
-       return concat_name;
-      XFREE (concat_name);
-    }
-  else
-    {
-#endif
-      if (IS_DIR_SEPARATOR (wrapper[0]))
-       {
-         concat_name = xstrdup (wrapper);
-         if (check_executable (concat_name))
-           return concat_name;
-         XFREE (concat_name);
-       }
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-    }
-#endif
-
-  for (p = wrapper; *p; p++)
-    if (*p == '/')
-      {
-       has_slash = 1;
-       break;
-      }
-  if (!has_slash)
-    {
-      /* no slashes; search PATH */
-      const char *path = getenv ("PATH");
-      if (path != NULL)
-       {
-         for (p = path; *p; p = p_next)
-           {
-             const char *q;
-             size_t p_len;
-             for (q = p; *q; q++)
-               if (IS_PATH_SEPARATOR (*q))
-                 break;
-             p_len = q - p;
-             p_next = (*q == '\0' ? q : q + 1);
-             if (p_len == 0)
-               {
-                 /* empty path: current directory */
-                 if (getcwd (tmp, LT_PATHMAX) == NULL)
-                   lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-                              nonnull (strerror (errno)));
-                 tmp_len = strlen (tmp);
-                 concat_name =
-                   XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-                 memcpy (concat_name, tmp, tmp_len);
-                 concat_name[tmp_len] = '/';
-                 strcpy (concat_name + tmp_len + 1, wrapper);
-               }
-             else
-               {
-                 concat_name =
-                   XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
-                 memcpy (concat_name, p, p_len);
-                 concat_name[p_len] = '/';
-                 strcpy (concat_name + p_len + 1, wrapper);
-               }
-             if (check_executable (concat_name))
-               return concat_name;
-             XFREE (concat_name);
-           }
-       }
-      /* not found in PATH; assume curdir */
-    }
-  /* Relative path | not found in path: prepend cwd */
-  if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-              nonnull (strerror (errno)));
-  tmp_len = strlen (tmp);
-  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-  memcpy (concat_name, tmp, tmp_len);
-  concat_name[tmp_len] = '/';
-  strcpy (concat_name + tmp_len + 1, wrapper);
-
-  if (check_executable (concat_name))
-    return concat_name;
-  XFREE (concat_name);
-  return NULL;
-}
-
-char *
-chase_symlinks (const char *pathspec)
-{
-#ifndef S_ISLNK
-  return xstrdup (pathspec);
-#else
-  char buf[LT_PATHMAX];
-  struct stat s;
-  char *tmp_pathspec = xstrdup (pathspec);
-  char *p;
-  int has_symlinks = 0;
-  while (strlen (tmp_pathspec) && !has_symlinks)
-    {
-      lt_debugprintf (__FILE__, __LINE__,
-                     "checking path component for symlinks: %s\n",
-                     tmp_pathspec);
-      if (lstat (tmp_pathspec, &s) == 0)
-       {
-         if (S_ISLNK (s.st_mode) != 0)
-           {
-             has_symlinks = 1;
-             break;
-           }
-
-         /* search backwards for last DIR_SEPARATOR */
-         p = tmp_pathspec + strlen (tmp_pathspec) - 1;
-         while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-           p--;
-         if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-           {
-             /* no more DIR_SEPARATORS left */
-             break;
-           }
-         *p = '\0';
-       }
-      else
-       {
-         lt_fatal (__FILE__, __LINE__,
-                   "error accessing file \"%s\": %s",
-                   tmp_pathspec, nonnull (strerror (errno)));
-       }
-    }
-  XFREE (tmp_pathspec);
-
-  if (!has_symlinks)
-    {
-      return xstrdup (pathspec);
-    }
-
-  tmp_pathspec = realpath (pathspec, buf);
-  if (tmp_pathspec == 0)
-    {
-      lt_fatal (__FILE__, __LINE__,
-               "could not follow symlinks for %s", pathspec);
-    }
-  return xstrdup (tmp_pathspec);
-#endif
-}
-
-char *
-strendzap (char *str, const char *pat)
-{
-  size_t len, patlen;
-
-  assert (str != NULL);
-  assert (pat != NULL);
-
-  len = strlen (str);
-  patlen = strlen (pat);
-
-  if (patlen <= len)
-    {
-      str += len - patlen;
-      if (strcmp (str, pat) == 0)
-       *str = '\0';
-    }
-  return str;
-}
-
-void
-lt_debugprintf (const char *file, int line, const char *fmt, ...)
-{
-  va_list args;
-  if (lt_debug)
-    {
-      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
-      va_start (args, fmt);
-      (void) vfprintf (stderr, fmt, args);
-      va_end (args);
-    }
-}
-
-static void
-lt_error_core (int exit_status, const char *file,
-              int line, const char *mode,
-              const char *message, va_list ap)
-{
-  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
-
-  if (exit_status >= 0)
-    exit (exit_status);
-}
-
-void
-lt_fatal (const char *file, int line, const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
-  va_end (ap);
-}
-
-static const char *
-nonnull (const char *s)
-{
-  return s ? s : "(null)";
-}
-
-static const char *
-nonempty (const char *s)
-{
-  return (s && !*s) ? "(empty)" : nonnull (s);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(lt_setenv) setting '%s' to '%s'\n",
-                  nonnull (name), nonnull (value));
-  {
-#ifdef HAVE_SETENV
-    /* always make a copy, for consistency with !HAVE_SETENV */
-    char *str = xstrdup (value);
-    setenv (name, str, 1);
-#else
-    int len = strlen (name) + 1 + strlen (value) + 1;
-    char *str = XMALLOC (char, len);
-    sprintf (str, "%s=%s", name, value);
-    if (putenv (str) != EXIT_SUCCESS)
-      {
-        XFREE (str);
-      }
-#endif
-  }
-}
-
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
-  char *new_value;
-  if (orig_value && *orig_value)
-    {
-      int orig_value_len = strlen (orig_value);
-      int add_len = strlen (add);
-      new_value = XMALLOC (char, add_len + orig_value_len + 1);
-      if (to_end)
-        {
-          strcpy (new_value, orig_value);
-          strcpy (new_value + orig_value_len, add);
-        }
-      else
-        {
-          strcpy (new_value, add);
-          strcpy (new_value + add_len, orig_value);
-        }
-    }
-  else
-    {
-      new_value = xstrdup (add);
-    }
-  return new_value;
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      /* some systems can't cope with a ':'-terminated path #' */
-      int len = strlen (new_value);
-      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
-        {
-          new_value[len-1] = '\0';
-        }
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-void
-lt_update_lib_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-                 "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-EOF
-           case $host_os in
-             mingw*)
-               cat <<"EOF"
-
-/* Prepares an argument vector before calling spawn().
-   Note that spawn() does not by itself call the command interpreter
-     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
-      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-         GetVersionEx(&v);
-         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
-      }) ? "cmd.exe" : "command.com").
-   Instead it simply concatenates the arguments, separated by ' ', and calls
-   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
-   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
-   special way:
-   - Space and tab are interpreted as delimiters. They are not treated as
-     delimiters if they are surrounded by double quotes: "...".
-   - Unescaped double quotes are removed from the input. Their only effect is
-     that within double quotes, space and tab are treated like normal
-     characters.
-   - Backslashes not followed by double quotes are not special.
-   - But 2*n+1 backslashes followed by a double quote become
-     n backslashes followed by a double quote (n >= 0):
-       \" -> "
-       \\\" -> \"
-       \\\\\" -> \\"
- */
-#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-char **
-prepare_spawn (char **argv)
-{
-  size_t argc;
-  char **new_argv;
-  size_t i;
-
-  /* Count number of arguments.  */
-  for (argc = 0; argv[argc] != NULL; argc++)
-    ;
-
-  /* Allocate new argument vector.  */
-  new_argv = XMALLOC (char *, argc + 1);
-
-  /* Put quoted arguments into the new argument vector.  */
-  for (i = 0; i < argc; i++)
-    {
-      const char *string = argv[i];
-
-      if (string[0] == '\0')
-       new_argv[i] = xstrdup ("\"\"");
-      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
-       {
-         int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
-         size_t length;
-         unsigned int backslashes;
-         const char *s;
-         char *quoted_string;
-         char *p;
-
-         length = 0;
-         backslashes = 0;
-         if (quote_around)
-           length++;
-         for (s = string; *s != '\0'; s++)
-           {
-             char c = *s;
-             if (c == '"')
-               length += backslashes + 1;
-             length++;
-             if (c == '\\')
-               backslashes++;
-             else
-               backslashes = 0;
-           }
-         if (quote_around)
-           length += backslashes + 1;
-
-         quoted_string = XMALLOC (char, length + 1);
-
-         p = quoted_string;
-         backslashes = 0;
-         if (quote_around)
-           *p++ = '"';
-         for (s = string; *s != '\0'; s++)
-           {
-             char c = *s;
-             if (c == '"')
-               {
-                 unsigned int j;
-                 for (j = backslashes + 1; j > 0; j--)
-                   *p++ = '\\';
-               }
-             *p++ = c;
-             if (c == '\\')
-               backslashes++;
-             else
-               backslashes = 0;
-           }
-         if (quote_around)
-           {
-             unsigned int j;
-             for (j = backslashes; j > 0; j--)
-               *p++ = '\\';
-             *p++ = '"';
-           }
-         *p = '\0';
-
-         new_argv[i] = quoted_string;
-       }
-      else
-       new_argv[i] = (char *) string;
-    }
-  new_argv[argc] = NULL;
-
-  return new_argv;
-}
-EOF
-               ;;
-           esac
-
-            cat <<"EOF"
-void lt_dump_script (FILE* f)
-{
-EOF
-           func_emit_wrapper yes |
-             $SED -n -e '
-s/^\(.\{79\}\)\(..*\)/\1\
-\2/
-h
-s/\([\\"]\)/\\\1/g
-s/$/\\n/
-s/\([^\n]*\).*/  fputs ("\1", f);/p
-g
-D'
-            cat <<"EOF"
-}
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# func_win32_import_lib_p ARG
-# True if ARG is an import lib, as indicated by $file_magic_cmd
-func_win32_import_lib_p ()
-{
-    $opt_debug
-    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
-    *import*) : ;;
-    *) false ;;
-    esac
-}
-
-# func_mode_link arg...
-func_mode_link ()
-{
-    $opt_debug
-    case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-      # It is impossible to link a dll without this setting, and
-      # we shouldn't force the makefile maintainer to figure out
-      # which system we are compiling for in order to pass an extra
-      # flag for every libtool invocation.
-      # allow_undefined=no
-
-      # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll which has undefined symbols, in which case not
-      # even a static library is built.  For now, we need to specify
-      # -no-undefined on the libtool link line when we can be certain
-      # that all symbols are satisfied, otherwise we get a static library.
-      allow_undefined=yes
-      ;;
-    *)
-      allow_undefined=yes
-      ;;
-    esac
-    libtool_args=$nonopt
-    base_compile="$nonopt $@"
-    compile_command=$nonopt
-    finalize_command=$nonopt
-
-    compile_rpath=
-    finalize_rpath=
-    compile_shlibpath=
-    finalize_shlibpath=
-    convenience=
-    old_convenience=
-    deplibs=
-    old_deplibs=
-    compiler_flags=
-    linker_flags=
-    dllsearchpath=
-    lib_search_path=`pwd`
-    inst_prefix_dir=
-    new_inherited_linker_flags=
-
-    avoid_version=no
-    bindir=
-    dlfiles=
-    dlprefiles=
-    dlself=no
-    export_dynamic=no
-    export_symbols=
-    export_symbols_regex=
-    generated=
-    libobjs=
-    ltlibs=
-    module=no
-    no_install=no
-    objs=
-    non_pic_objects=
-    precious_files_regex=
-    prefer_static_libs=no
-    preload=no
-    prev=
-    prevarg=
-    release=
-    rpath=
-    xrpath=
-    perm_rpath=
-    temp_rpath=
-    thread_safe=no
-    vinfo=
-    vinfo_number=no
-    weak_libs=
-    single_module="${wl}-single_module"
-    func_infer_tag $base_compile
-
-    # We need to know -static, to get the right output filenames.
-    for arg
-    do
-      case $arg in
-      -shared)
-       test "$build_libtool_libs" != yes && \
-         func_fatal_configuration "can not build a shared library"
-       build_old_libs=no
-       break
-       ;;
-      -all-static | -static | -static-libtool-libs)
-       case $arg in
-       -all-static)
-         if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
-           func_warning "complete static linking is impossible in this configuration"
-         fi
-         if test -n "$link_static_flag"; then
-           dlopen_self=$dlopen_self_static
-         fi
-         prefer_static_libs=yes
-         ;;
-       -static)
-         if test -z "$pic_flag" && test -n "$link_static_flag"; then
-           dlopen_self=$dlopen_self_static
-         fi
-         prefer_static_libs=built
-         ;;
-       -static-libtool-libs)
-         if test -z "$pic_flag" && test -n "$link_static_flag"; then
-           dlopen_self=$dlopen_self_static
-         fi
-         prefer_static_libs=yes
-         ;;
-       esac
-       build_libtool_libs=no
-       build_old_libs=yes
-       break
-       ;;
-      esac
-    done
-
-    # See if our shared archives depend on static archives.
-    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
-    # Go through the arguments, transforming them on the way.
-    while test "$#" -gt 0; do
-      arg="$1"
-      shift
-      func_quote_for_eval "$arg"
-      qarg=$func_quote_for_eval_unquoted_result
-      func_append libtool_args " $func_quote_for_eval_result"
-
-      # If the previous option needs an argument, assign it.
-      if test -n "$prev"; then
-       case $prev in
-       output)
-         func_append compile_command " @OUTPUT@"
-         func_append finalize_command " @OUTPUT@"
-         ;;
-       esac
-
-       case $prev in
-       bindir)
-         bindir="$arg"
-         prev=
-         continue
-         ;;
-       dlfiles|dlprefiles)
-         if test "$preload" = no; then
-           # Add the symbol object into the linking commands.
-           func_append compile_command " @SYMFILE@"
-           func_append finalize_command " @SYMFILE@"
-           preload=yes
-         fi
-         case $arg in
-         *.la | *.lo) ;;  # We handle these cases below.
-         force)
-           if test "$dlself" = no; then
-             dlself=needless
-             export_dynamic=yes
-           fi
-           prev=
-           continue
-           ;;
-         self)
-           if test "$prev" = dlprefiles; then
-             dlself=yes
-           elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
-             dlself=yes
-           else
-             dlself=needless
-             export_dynamic=yes
-           fi
-           prev=
-           continue
-           ;;
-         *)
-           if test "$prev" = dlfiles; then
-             func_append dlfiles " $arg"
-           else
-             func_append dlprefiles " $arg"
-           fi
-           prev=
-           continue
-           ;;
-         esac
-         ;;
-       expsyms)
-         export_symbols="$arg"
-         test -f "$arg" \
-           || func_fatal_error "symbol file \`$arg' does not exist"
-         prev=
-         continue
-         ;;
-       expsyms_regex)
-         export_symbols_regex="$arg"
-         prev=
-         continue
-         ;;
-       framework)
-         case $host in
-           *-*-darwin*)
-             case "$deplibs " in
-               *" $qarg.ltframework "*) ;;
-               *) func_append deplibs " $qarg.ltframework" # this is fixed later
-                  ;;
-             esac
-             ;;
-         esac
-         prev=
-         continue
-         ;;
-       inst_prefix)
-         inst_prefix_dir="$arg"
-         prev=
-         continue
-         ;;
-       objectlist)
-         if test -f "$arg"; then
-           save_arg=$arg
-           moreargs=
-           for fil in `cat "$save_arg"`
-           do
-#            func_append moreargs " $fil"
-             arg=$fil
-             # A libtool-controlled object.
-
-             # Check to see that this really is a libtool object.
-             if func_lalib_unsafe_p "$arg"; then
-               pic_object=
-               non_pic_object=
-
-               # Read the .lo file
-               func_source "$arg"
-
-               if test -z "$pic_object" ||
-                  test -z "$non_pic_object" ||
-                  test "$pic_object" = none &&
-                  test "$non_pic_object" = none; then
-                 func_fatal_error "cannot find name of object for \`$arg'"
-               fi
-
-               # Extract subdirectory from the argument.
-               func_dirname "$arg" "/" ""
-               xdir="$func_dirname_result"
-
-               if test "$pic_object" != none; then
-                 # Prepend the subdirectory the object is found in.
-                 pic_object="$xdir$pic_object"
-
-                 if test "$prev" = dlfiles; then
-                   if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-                     func_append dlfiles " $pic_object"
-                     prev=
-                     continue
-                   else
-                     # If libtool objects are unsupported, then we need to preload.
-                     prev=dlprefiles
-                   fi
-                 fi
-
-                 # CHECK ME:  I think I busted this.  -Ossama
-                 if test "$prev" = dlprefiles; then
-                   # Preload the old-style object.
-                   func_append dlprefiles " $pic_object"
-                   prev=
-                 fi
-
-                 # A PIC object.
-                 func_append libobjs " $pic_object"
-                 arg="$pic_object"
-               fi
-
-               # Non-PIC object.
-               if test "$non_pic_object" != none; then
-                 # Prepend the subdirectory the object is found in.
-                 non_pic_object="$xdir$non_pic_object"
-
-                 # A standard non-PIC object
-                 func_append non_pic_objects " $non_pic_object"
-                 if test -z "$pic_object" || test "$pic_object" = none ; then
-                   arg="$non_pic_object"
-                 fi
-               else
-                 # If the PIC object exists, use it instead.
-                 # $xdir was prepended to $pic_object above.
-                 non_pic_object="$pic_object"
-                 func_append non_pic_objects " $non_pic_object"
-               fi
-             else
-               # Only an error if not doing a dry-run.
-               if $opt_dry_run; then
-                 # Extract subdirectory from the argument.
-                 func_dirname "$arg" "/" ""
-                 xdir="$func_dirname_result"
-
-                 func_lo2o "$arg"
-                 pic_object=$xdir$objdir/$func_lo2o_result
-                 non_pic_object=$xdir$func_lo2o_result
-                 func_append libobjs " $pic_object"
-                 func_append non_pic_objects " $non_pic_object"
-               else
-                 func_fatal_error "\`$arg' is not a valid libtool object"
-               fi
-             fi
-           done
-         else
-           func_fatal_error "link input file \`$arg' does not exist"
-         fi
-         arg=$save_arg
-         prev=
-         continue
-         ;;
-       precious_regex)
-         precious_files_regex="$arg"
-         prev=
-         continue
-         ;;
-       release)
-         release="-$arg"
-         prev=
-         continue
-         ;;
-       rpath | xrpath)
-         # We need an absolute path.
-         case $arg in
-         [\\/]* | [A-Za-z]:[\\/]*) ;;
-         *)
-           func_fatal_error "only absolute run-paths are allowed"
-           ;;
-         esac
-         if test "$prev" = rpath; then
-           case "$rpath " in
-           *" $arg "*) ;;
-           *) func_append rpath " $arg" ;;
-           esac
-         else
-           case "$xrpath " in
-           *" $arg "*) ;;
-           *) func_append xrpath " $arg" ;;
-           esac
-         fi
-         prev=
-         continue
-         ;;
-       shrext)
-         shrext_cmds="$arg"
-         prev=
-         continue
-         ;;
-       weak)
-         func_append weak_libs " $arg"
-         prev=
-         continue
-         ;;
-       xcclinker)
-         func_append linker_flags " $qarg"
-         func_append compiler_flags " $qarg"
-         prev=
-         func_append compile_command " $qarg"
-         func_append finalize_command " $qarg"
-         continue
-         ;;
-       xcompiler)
-         func_append compiler_flags " $qarg"
-         prev=
-         func_append compile_command " $qarg"
-         func_append finalize_command " $qarg"
-         continue
-         ;;
-       xlinker)
-         func_append linker_flags " $qarg"
-         func_append compiler_flags " $wl$qarg"
-         prev=
-         func_append compile_command " $wl$qarg"
-         func_append finalize_command " $wl$qarg"
-         continue
-         ;;
-       *)
-         eval "$prev=\"\$arg\""
-         prev=
-         continue
-         ;;
-       esac
-      fi # test -n "$prev"
-
-      prevarg="$arg"
-
-      case $arg in
-      -all-static)
-       if test -n "$link_static_flag"; then
-         # See comment for -static flag below, for more details.
-         func_append compile_command " $link_static_flag"
-         func_append finalize_command " $link_static_flag"
-       fi
-       continue
-       ;;
-
-      -allow-undefined)
-       # FIXME: remove this flag sometime in the future.
-       func_fatal_error "\`-allow-undefined' must not be used because it is the default"
-       ;;
-
-      -avoid-version)
-       avoid_version=yes
-       continue
-       ;;
-
-      -bindir)
-       prev=bindir
-       continue
-       ;;
-
-      -dlopen)
-       prev=dlfiles
-       continue
-       ;;
-
-      -dlpreopen)
-       prev=dlprefiles
-       continue
-       ;;
-
-      -export-dynamic)
-       export_dynamic=yes
-       continue
-       ;;
-
-      -export-symbols | -export-symbols-regex)
-       if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-         func_fatal_error "more than one -exported-symbols argument is not allowed"
-       fi
-       if test "X$arg" = "X-export-symbols"; then
-         prev=expsyms
-       else
-         prev=expsyms_regex
-       fi
-       continue
-       ;;
-
-      -framework)
-       prev=framework
-       continue
-       ;;
-
-      -inst-prefix-dir)
-       prev=inst_prefix
-       continue
-       ;;
-
-      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
-      # so, if we see these flags be careful not to treat them like -L
-      -L[A-Z][A-Z]*:*)
-       case $with_gcc/$host in
-       no/*-*-irix* | /*-*-irix*)
-         func_append compile_command " $arg"
-         func_append finalize_command " $arg"
-         ;;
-       esac
-       continue
-       ;;
-
-      -L*)
-       func_stripname "-L" '' "$arg"
-       if test -z "$func_stripname_result"; then
-         if test "$#" -gt 0; then
-           func_fatal_error "require no space between \`-L' and \`$1'"
-         else
-           func_fatal_error "need path for \`-L' option"
-         fi
-       fi
-       func_resolve_sysroot "$func_stripname_result"
-       dir=$func_resolve_sysroot_result
-       # We need an absolute path.
-       case $dir in
-       [\\/]* | [A-Za-z]:[\\/]*) ;;
-       *)
-         absdir=`cd "$dir" && pwd`
-         test -z "$absdir" && \
-           func_fatal_error "cannot determine absolute directory name of \`$dir'"
-         dir="$absdir"
-         ;;
-       esac
-       case "$deplibs " in
-       *" -L$dir "* | *" $arg "*)
-         # Will only happen for absolute or sysroot arguments
-         ;;
-       *)
-         # Preserve sysroot, but never include relative directories
-         case $dir in
-           [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
-           *) func_append deplibs " -L$dir" ;;
-         esac
-         func_append lib_search_path " $dir"
-         ;;
-       esac
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-         testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
-         case :$dllsearchpath: in
-         *":$dir:"*) ;;
-         ::) dllsearchpath=$dir;;
-         *) func_append dllsearchpath ":$dir";;
-         esac
-         case :$dllsearchpath: in
-         *":$testbindir:"*) ;;
-         ::) dllsearchpath=$testbindir;;
-         *) func_append dllsearchpath ":$testbindir";;
-         esac
-         ;;
-       esac
-       continue
-       ;;
-
-      -l*)
-       if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
-         case $host in
-         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
-           # These systems don't actually have a C or math library (as such)
-           continue
-           ;;
-         *-*-os2*)
-           # These systems don't actually have a C library (as such)
-           test "X$arg" = "X-lc" && continue
-           ;;
-         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-           # Do not include libc due to us having libc/libc_r.
-           test "X$arg" = "X-lc" && continue
-           ;;
-         *-*-rhapsody* | *-*-darwin1.[012])
-           # Rhapsody C and math libraries are in the System framework
-           func_append deplibs " System.ltframework"
-           continue
-           ;;
-         *-*-sco3.2v5* | *-*-sco5v6*)
-           # Causes problems with __ctype
-           test "X$arg" = "X-lc" && continue
-           ;;
-         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-           # Compiler inserts libc in the correct place for threads to work
-           test "X$arg" = "X-lc" && continue
-           ;;
-         esac
-       elif test "X$arg" = "X-lc_r"; then
-        case $host in
-        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-          # Do not include libc_r directly, use -pthread flag.
-          continue
-          ;;
-        esac
-       fi
-       func_append deplibs " $arg"
-       continue
-       ;;
-
-      -module)
-       module=yes
-       continue
-       ;;
-
-      # Tru64 UNIX uses -model [arg] to determine the layout of C++
-      # classes, name mangling, and exception handling.
-      # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot|--sysroot)
-       func_append compiler_flags " $arg"
-       func_append compile_command " $arg"
-       func_append finalize_command " $arg"
-       prev=xcompiler
-       continue
-       ;;
-
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-       func_append compiler_flags " $arg"
-       func_append compile_command " $arg"
-       func_append finalize_command " $arg"
-       case "$new_inherited_linker_flags " in
-           *" $arg "*) ;;
-           * ) func_append new_inherited_linker_flags " $arg" ;;
-       esac
-       continue
-       ;;
-
-      -multi_module)
-       single_module="${wl}-multi_module"
-       continue
-       ;;
-
-      -no-fast-install)
-       fast_install=no
-       continue
-       ;;
-
-      -no-install)
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
-         # The PATH hackery in wrapper scripts is required on Windows
-         # and Darwin in order for the loader to find any dlls it needs.
-         func_warning "\`-no-install' is ignored for $host"
-         func_warning "assuming \`-no-fast-install' instead"
-         fast_install=no
-         ;;
-       *) no_install=yes ;;
-       esac
-       continue
-       ;;
-
-      -no-undefined)
-       allow_undefined=no
-       continue
-       ;;
-
-      -objectlist)
-       prev=objectlist
-       continue
-       ;;
-
-      -o) prev=output ;;
-
-      -precious-files-regex)
-       prev=precious_regex
-       continue
-       ;;
-
-      -release)
-       prev=release
-       continue
-       ;;
-
-      -rpath)
-       prev=rpath
-       continue
-       ;;
-
-      -R)
-       prev=xrpath
-       continue
-       ;;
-
-      -R*)
-       func_stripname '-R' '' "$arg"
-       dir=$func_stripname_result
-       # We need an absolute path.
-       case $dir in
-       [\\/]* | [A-Za-z]:[\\/]*) ;;
-       =*)
-         func_stripname '=' '' "$dir"
-         dir=$lt_sysroot$func_stripname_result
-         ;;
-       *)
-         func_fatal_error "only absolute run-paths are allowed"
-         ;;
-       esac
-       case "$xrpath " in
-       *" $dir "*) ;;
-       *) func_append xrpath " $dir" ;;
-       esac
-       continue
-       ;;
-
-      -shared)
-       # The effects of -shared are defined in a previous loop.
-       continue
-       ;;
-
-      -shrext)
-       prev=shrext
-       continue
-       ;;
-
-      -static | -static-libtool-libs)
-       # The effects of -static are defined in a previous loop.
-       # We used to do the same as -all-static on platforms that
-       # didn't have a PIC flag, but the assumption that the effects
-       # would be equivalent was wrong.  It would break on at least
-       # Digital Unix and AIX.
-       continue
-       ;;
-
-      -thread-safe)
-       thread_safe=yes
-       continue
-       ;;
-
-      -version-info)
-       prev=vinfo
-       continue
-       ;;
-
-      -version-number)
-       prev=vinfo
-       vinfo_number=yes
-       continue
-       ;;
-
-      -weak)
-        prev=weak
-       continue
-       ;;
-
-      -Wc,*)
-       func_stripname '-Wc,' '' "$arg"
-       args=$func_stripname_result
-       arg=
-       save_ifs="$IFS"; IFS=','
-       for flag in $args; do
-         IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-         func_append arg " $func_quote_for_eval_result"
-         func_append compiler_flags " $func_quote_for_eval_result"
-       done
-       IFS="$save_ifs"
-       func_stripname ' ' '' "$arg"
-       arg=$func_stripname_result
-       ;;
-
-      -Wl,*)
-       func_stripname '-Wl,' '' "$arg"
-       args=$func_stripname_result
-       arg=
-       save_ifs="$IFS"; IFS=','
-       for flag in $args; do
-         IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-         func_append arg " $wl$func_quote_for_eval_result"
-         func_append compiler_flags " $wl$func_quote_for_eval_result"
-         func_append linker_flags " $func_quote_for_eval_result"
-       done
-       IFS="$save_ifs"
-       func_stripname ' ' '' "$arg"
-       arg=$func_stripname_result
-       ;;
-
-      -Xcompiler)
-       prev=xcompiler
-       continue
-       ;;
-
-      -Xlinker)
-       prev=xlinker
-       continue
-       ;;
-
-      -XCClinker)
-       prev=xcclinker
-       continue
-       ;;
-
-      # -msg_* for osf cc
-      -msg_*)
-       func_quote_for_eval "$arg"
-       arg="$func_quote_for_eval_result"
-       ;;
-
-      # Flags to be passed through unchanged, with rationale:
-      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
-      # -r[0-9][0-9]*        specify processor for the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
-      # +DA*, +DD*           enable 64-bit mode for the HP compiler
-      # -q*                  compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
-      # -F/path              path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
-      # @file                GCC response files
-      # -tp=*                Portland pgcc target processor selection
-      # --sysroot=*          for sysroot support
-      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
-        func_quote_for_eval "$arg"
-       arg="$func_quote_for_eval_result"
-        func_append compile_command " $arg"
-        func_append finalize_command " $arg"
-        func_append compiler_flags " $arg"
-        continue
-        ;;
-
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_for_eval "$arg"
-       arg="$func_quote_for_eval_result"
-       ;;
-
-      *.$objext)
-       # A standard object.
-       func_append objs " $arg"
-       ;;
-
-      *.lo)
-       # A libtool-controlled object.
-
-       # Check to see that this really is a libtool object.
-       if func_lalib_unsafe_p "$arg"; then
-         pic_object=
-         non_pic_object=
-
-         # Read the .lo file
-         func_source "$arg"
-
-         if test -z "$pic_object" ||
-            test -z "$non_pic_object" ||
-            test "$pic_object" = none &&
-            test "$non_pic_object" = none; then
-           func_fatal_error "cannot find name of object for \`$arg'"
-         fi
-
-         # Extract subdirectory from the argument.
-         func_dirname "$arg" "/" ""
-         xdir="$func_dirname_result"
-
-         if test "$pic_object" != none; then
-           # Prepend the subdirectory the object is found in.
-           pic_object="$xdir$pic_object"
-
-           if test "$prev" = dlfiles; then
-             if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-               func_append dlfiles " $pic_object"
-               prev=
-               continue
-             else
-               # If libtool objects are unsupported, then we need to preload.
-               prev=dlprefiles
-             fi
-           fi
-
-           # CHECK ME:  I think I busted this.  -Ossama
-           if test "$prev" = dlprefiles; then
-             # Preload the old-style object.
-             func_append dlprefiles " $pic_object"
-             prev=
-           fi
-
-           # A PIC object.
-           func_append libobjs " $pic_object"
-           arg="$pic_object"
-         fi
-
-         # Non-PIC object.
-         if test "$non_pic_object" != none; then
-           # Prepend the subdirectory the object is found in.
-           non_pic_object="$xdir$non_pic_object"
-
-           # A standard non-PIC object
-           func_append non_pic_objects " $non_pic_object"
-           if test -z "$pic_object" || test "$pic_object" = none ; then
-             arg="$non_pic_object"
-           fi
-         else
-           # If the PIC object exists, use it instead.
-           # $xdir was prepended to $pic_object above.
-           non_pic_object="$pic_object"
-           func_append non_pic_objects " $non_pic_object"
-         fi
-       else
-         # Only an error if not doing a dry-run.
-         if $opt_dry_run; then
-           # Extract subdirectory from the argument.
-           func_dirname "$arg" "/" ""
-           xdir="$func_dirname_result"
-
-           func_lo2o "$arg"
-           pic_object=$xdir$objdir/$func_lo2o_result
-           non_pic_object=$xdir$func_lo2o_result
-           func_append libobjs " $pic_object"
-           func_append non_pic_objects " $non_pic_object"
-         else
-           func_fatal_error "\`$arg' is not a valid libtool object"
-         fi
-       fi
-       ;;
-
-      *.$libext)
-       # An archive.
-       func_append deplibs " $arg"
-       func_append old_deplibs " $arg"
-       continue
-       ;;
-
-      *.la)
-       # A libtool-controlled library.
-
-       func_resolve_sysroot "$arg"
-       if test "$prev" = dlfiles; then
-         # This library was specified with -dlopen.
-         func_append dlfiles " $func_resolve_sysroot_result"
-         prev=
-       elif test "$prev" = dlprefiles; then
-         # The library was specified with -dlpreopen.
-         func_append dlprefiles " $func_resolve_sysroot_result"
-         prev=
-       else
-         func_append deplibs " $func_resolve_sysroot_result"
-       fi
-       continue
-       ;;
-
-      # Some other compiler argument.
-      *)
-       # Unknown arguments in both finalize_command and compile_command need
-       # to be aesthetically quoted because they are evaled later.
-       func_quote_for_eval "$arg"
-       arg="$func_quote_for_eval_result"
-       ;;
-      esac # arg
-
-      # Now actually substitute the argument into the commands.
-      if test -n "$arg"; then
-       func_append compile_command " $arg"
-       func_append finalize_command " $arg"
-      fi
-    done # argument parsing loop
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prevarg' option requires an argument"
-
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-      eval arg=\"$export_dynamic_flag_spec\"
-      func_append compile_command " $arg"
-      func_append finalize_command " $arg"
-    fi
-
-    oldlibs=
-    # calculate the name of the file, without its directory
-    func_basename "$output"
-    outputname="$func_basename_result"
-    libobjs_save="$libobjs"
-
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
-    else
-      shlib_search_path=
-    fi
-    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
-    func_dirname "$output" "/" ""
-    output_objdir="$func_dirname_result$objdir"
-    func_to_tool_file "$output_objdir/"
-    tool_output_objdir=$func_to_tool_file_result
-    # Create the object directory.
-    func_mkdir_p "$output_objdir"
-
-    # Determine the type of output
-    case $output in
-    "")
-      func_fatal_help "you must specify an output file"
-      ;;
-    *.$libext) linkmode=oldlib ;;
-    *.lo | *.$objext) linkmode=obj ;;
-    *.la) linkmode=lib ;;
-    *) linkmode=prog ;; # Anything else should be a program.
-    esac
-
-    specialdeplibs=
-
-    libs=
-    # Find all interdependent deplibs by searching for libraries
-    # that are linked more than once (e.g. -la -lb -la)
-    for deplib in $deplibs; do
-      if $opt_preserve_dup_deps ; then
-       case "$libs " in
-       *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-       esac
-      fi
-      func_append libs " $deplib"
-    done
-
-    if test "$linkmode" = lib; then
-      libs="$predeps $libs $compiler_lib_search_path $postdeps"
-
-      # Compute libraries that are listed more than once in $predeps
-      # $postdeps and mark them as special (i.e., whose duplicates are
-      # not to be eliminated).
-      pre_post_deps=
-      if $opt_duplicate_compiler_generated_deps; then
-       for pre_post_dep in $predeps $postdeps; do
-         case "$pre_post_deps " in
-         *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
-         esac
-         func_append pre_post_deps " $pre_post_dep"
-       done
-      fi
-      pre_post_deps=
-    fi
-
-    deplibs=
-    newdependency_libs=
-    newlib_search_path=
-    need_relink=no # whether we're linking any uninstalled libtool libraries
-    notinst_deplibs= # not-installed libtool libraries
-    notinst_path= # paths that contain not-installed libtool libraries
-
-    case $linkmode in
-    lib)
-       passes="conv dlpreopen link"
-       for file in $dlfiles $dlprefiles; do
-         case $file in
-         *.la) ;;
-         *)
-           func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
-           ;;
-         esac
-       done
-       ;;
-    prog)
-       compile_deplibs=
-       finalize_deplibs=
-       alldeplibs=no
-       newdlfiles=
-       newdlprefiles=
-       passes="conv scan dlopen dlpreopen link"
-       ;;
-    *)  passes="conv"
-       ;;
-    esac
-
-    for pass in $passes; do
-      # The preopen pass in lib mode reverses $deplibs; put it back here
-      # so that -L comes before libs that need it for instance...
-      if test "$linkmode,$pass" = "lib,link"; then
-       ## FIXME: Find the place where the list is rebuilt in the wrong
-       ##        order, and fix it there properly
-        tmp_deplibs=
-       for deplib in $deplibs; do
-         tmp_deplibs="$deplib $tmp_deplibs"
-       done
-       deplibs="$tmp_deplibs"
-      fi
-
-      if test "$linkmode,$pass" = "lib,link" ||
-        test "$linkmode,$pass" = "prog,scan"; then
-       libs="$deplibs"
-       deplibs=
-      fi
-      if test "$linkmode" = prog; then
-       case $pass in
-       dlopen) libs="$dlfiles" ;;
-       dlpreopen) libs="$dlprefiles" ;;
-       link)
-         libs="$deplibs %DEPLIBS%"
-         test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
-         ;;
-       esac
-      fi
-      if test "$linkmode,$pass" = "lib,dlpreopen"; then
-       # Collect and forward deplibs of preopened libtool libs
-       for lib in $dlprefiles; do
-         # Ignore non-libtool-libs
-         dependency_libs=
-         func_resolve_sysroot "$lib"
-         case $lib in
-         *.la) func_source "$func_resolve_sysroot_result" ;;
-         esac
-
-         # Collect preopened libtool deplibs, except any this library
-         # has declared as weak libs
-         for deplib in $dependency_libs; do
-           func_basename "$deplib"
-            deplib_base=$func_basename_result
-           case " $weak_libs " in
-           *" $deplib_base "*) ;;
-           *) func_append deplibs " $deplib" ;;
-           esac
-         done
-       done
-       libs="$dlprefiles"
-      fi
-      if test "$pass" = dlopen; then
-       # Collect dlpreopened libraries
-       save_deplibs="$deplibs"
-       deplibs=
-      fi
-
-      for deplib in $libs; do
-       lib=
-       found=no
-       case $deplib in
-       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-         if test "$linkmode,$pass" = "prog,link"; then
-           compile_deplibs="$deplib $compile_deplibs"
-           finalize_deplibs="$deplib $finalize_deplibs"
-         else
-           func_append compiler_flags " $deplib"
-           if test "$linkmode" = lib ; then
-               case "$new_inherited_linker_flags " in
-                   *" $deplib "*) ;;
-                   * ) func_append new_inherited_linker_flags " $deplib" ;;
-               esac
-           fi
-         fi
-         continue
-         ;;
-       -l*)
-         if test "$linkmode" != lib && test "$linkmode" != prog; then
-           func_warning "\`-l' is ignored for archives/objects"
-           continue
-         fi
-         func_stripname '-l' '' "$deplib"
-         name=$func_stripname_result
-         if test "$linkmode" = lib; then
-           searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
-         else
-           searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
-         fi
-         for searchdir in $searchdirs; do
-           for search_ext in .la $std_shrext .so .a; do
-             # Search the libtool library
-             lib="$searchdir/lib${name}${search_ext}"
-             if test -f "$lib"; then
-               if test "$search_ext" = ".la"; then
-                 found=yes
-               else
-                 found=no
-               fi
-               break 2
-             fi
-           done
-         done
-         if test "$found" != yes; then
-           # deplib doesn't seem to be a libtool library
-           if test "$linkmode,$pass" = "prog,link"; then
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           else
-             deplibs="$deplib $deplibs"
-             test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-           fi
-           continue
-         else # deplib is a libtool library
-           # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
-           # We need to do some special things here, and not later.
-           if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-             case " $predeps $postdeps " in
-             *" $deplib "*)
-               if func_lalib_p "$lib"; then
-                 library_names=
-                 old_library=
-                 func_source "$lib"
-                 for l in $old_library $library_names; do
-                   ll="$l"
-                 done
-                 if test "X$ll" = "X$old_library" ; then # only static version available
-                   found=no
-                   func_dirname "$lib" "" "."
-                   ladir="$func_dirname_result"
-                   lib=$ladir/$old_library
-                   if test "$linkmode,$pass" = "prog,link"; then
-                     compile_deplibs="$deplib $compile_deplibs"
-                     finalize_deplibs="$deplib $finalize_deplibs"
-                   else
-                     deplibs="$deplib $deplibs"
-                     test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-                   fi
-                   continue
-                 fi
-               fi
-               ;;
-             *) ;;
-             esac
-           fi
-         fi
-         ;; # -l
-       *.ltframework)
-         if test "$linkmode,$pass" = "prog,link"; then
-           compile_deplibs="$deplib $compile_deplibs"
-           finalize_deplibs="$deplib $finalize_deplibs"
-         else
-           deplibs="$deplib $deplibs"
-           if test "$linkmode" = lib ; then
-               case "$new_inherited_linker_flags " in
-                   *" $deplib "*) ;;
-                   * ) func_append new_inherited_linker_flags " $deplib" ;;
-               esac
-           fi
-         fi
-         continue
-         ;;
-       -L*)
-         case $linkmode in
-         lib)
-           deplibs="$deplib $deplibs"
-           test "$pass" = conv && continue
-           newdependency_libs="$deplib $newdependency_libs"
-           func_stripname '-L' '' "$deplib"
-           func_resolve_sysroot "$func_stripname_result"
-           func_append newlib_search_path " $func_resolve_sysroot_result"
-           ;;
-         prog)
-           if test "$pass" = conv; then
-             deplibs="$deplib $deplibs"
-             continue
-           fi
-           if test "$pass" = scan; then
-             deplibs="$deplib $deplibs"
-           else
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           fi
-           func_stripname '-L' '' "$deplib"
-           func_resolve_sysroot "$func_stripname_result"
-           func_append newlib_search_path " $func_resolve_sysroot_result"
-           ;;
-         *)
-           func_warning "\`-L' is ignored for archives/objects"
-           ;;
-         esac # linkmode
-         continue
-         ;; # -L
-       -R*)
-         if test "$pass" = link; then
-           func_stripname '-R' '' "$deplib"
-           func_resolve_sysroot "$func_stripname_result"
-           dir=$func_resolve_sysroot_result
-           # Make sure the xrpath contains only unique directories.
-           case "$xrpath " in
-           *" $dir "*) ;;
-           *) func_append xrpath " $dir" ;;
-           esac
-         fi
-         deplibs="$deplib $deplibs"
-         continue
-         ;;
-       *.la)
-         func_resolve_sysroot "$deplib"
-         lib=$func_resolve_sysroot_result
-         ;;
-       *.$libext)
-         if test "$pass" = conv; then
-           deplibs="$deplib $deplibs"
-           continue
-         fi
-         case $linkmode in
-         lib)
-           # Linking convenience modules into shared libraries is allowed,
-           # but linking other static libraries is non-portable.
-           case " $dlpreconveniencelibs " in
-           *" $deplib "*) ;;
-           *)
-             valid_a_lib=no
-             case $deplibs_check_method in
-               match_pattern*)
-                 set dummy $deplibs_check_method; shift
-                 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-                 if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
-                   | $EGREP "$match_pattern_regex" > /dev/null; then
-                   valid_a_lib=yes
-                 fi
-               ;;
-               pass_all)
-                 valid_a_lib=yes
-               ;;
-             esac
-             if test "$valid_a_lib" != yes; then
-               echo
-               $ECHO "*** Warning: Trying to link with static lib archive $deplib."
-               echo "*** I have the capability to make that library automatically link in when"
-               echo "*** you link to this library.  But I can only do this if you have a"
-               echo "*** shared version of the library, which you do not appear to have"
-               echo "*** because the file extensions .$libext of this argument makes me believe"
-               echo "*** that it is just a static archive that I should not use here."
-             else
-               echo
-               $ECHO "*** Warning: Linking the shared library $output against the"
-               $ECHO "*** static library $deplib is not portable!"
-               deplibs="$deplib $deplibs"
-             fi
-             ;;
-           esac
-           continue
-           ;;
-         prog)
-           if test "$pass" != link; then
-             deplibs="$deplib $deplibs"
-           else
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           fi
-           continue
-           ;;
-         esac # linkmode
-         ;; # *.$libext
-       *.lo | *.$objext)
-         if test "$pass" = conv; then
-           deplibs="$deplib $deplibs"
-         elif test "$linkmode" = prog; then
-           if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
-             # If there is no dlopen support or we're linking statically,
-             # we need to preload.
-             func_append newdlprefiles " $deplib"
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           else
-             func_append newdlfiles " $deplib"
-           fi
-         fi
-         continue
-         ;;
-       %DEPLIBS%)
-         alldeplibs=yes
-         continue
-         ;;
-       esac # case $deplib
-
-       if test "$found" = yes || test -f "$lib"; then :
-       else
-         func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
-       fi
-
-       # Check to see that this really is a libtool archive.
-       func_lalib_unsafe_p "$lib" \
-         || func_fatal_error "\`$lib' is not a valid libtool archive"
-
-       func_dirname "$lib" "" "."
-       ladir="$func_dirname_result"
-
-       dlname=
-       dlopen=
-       dlpreopen=
-       libdir=
-       library_names=
-       old_library=
-       inherited_linker_flags=
-       # If the library was installed with an old release of libtool,
-       # it will not redefine variables installed, or shouldnotlink
-       installed=yes
-       shouldnotlink=no
-       avoidtemprpath=
-
-
-       # Read the .la file
-       func_source "$lib"
-
-       # Convert "-framework foo" to "foo.ltframework"
-       if test -n "$inherited_linker_flags"; then
-         tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
-         for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
-           case " $new_inherited_linker_flags " in
-             *" $tmp_inherited_linker_flag "*) ;;
-             *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
-           esac
-         done
-       fi
-       dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       if test "$linkmode,$pass" = "lib,link" ||
-          test "$linkmode,$pass" = "prog,scan" ||
-          { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-         test -n "$dlopen" && func_append dlfiles " $dlopen"
-         test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
-       fi
-
-       if test "$pass" = conv; then
-         # Only check for convenience libraries
-         deplibs="$lib $deplibs"
-         if test -z "$libdir"; then
-           if test -z "$old_library"; then
-             func_fatal_error "cannot find name of link library for \`$lib'"
-           fi
-           # It is a libtool convenience library, so add in its objects.
-           func_append convenience " $ladir/$objdir/$old_library"
-           func_append old_convenience " $ladir/$objdir/$old_library"
-           tmp_libs=
-           for deplib in $dependency_libs; do
-             deplibs="$deplib $deplibs"
-             if $opt_preserve_dup_deps ; then
-               case "$tmp_libs " in
-               *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-               esac
-             fi
-             func_append tmp_libs " $deplib"
-           done
-         elif test "$linkmode" != prog && test "$linkmode" != lib; then
-           func_fatal_error "\`$lib' is not a convenience library"
-         fi
-         continue
-       fi # $pass = conv
-
-
-       # Get the name of the library we link against.
-       linklib=
-       if test -n "$old_library" &&
-          { test "$prefer_static_libs" = yes ||
-            test "$prefer_static_libs,$installed" = "built,no"; }; then
-         linklib=$old_library
-       else
-         for l in $old_library $library_names; do
-           linklib="$l"
-         done
-       fi
-       if test -z "$linklib"; then
-         func_fatal_error "cannot find name of link library for \`$lib'"
-       fi
-
-       # This library was specified with -dlopen.
-       if test "$pass" = dlopen; then
-         if test -z "$libdir"; then
-           func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
-         fi
-         if test -z "$dlname" ||
-            test "$dlopen_support" != yes ||
-            test "$build_libtool_libs" = no; then
-           # If there is no dlname, no dlopen support or we're linking
-           # statically, we need to preload.  We also need to preload any
-           # dependent libraries so libltdl's deplib preloader doesn't
-           # bomb out in the load deplibs phase.
-           func_append dlprefiles " $lib $dependency_libs"
-         else
-           func_append newdlfiles " $lib"
-         fi
-         continue
-       fi # $pass = dlopen
-
-       # We need an absolute path.
-       case $ladir in
-       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
-       *)
-         abs_ladir=`cd "$ladir" && pwd`
-         if test -z "$abs_ladir"; then
-           func_warning "cannot determine absolute directory name of \`$ladir'"
-           func_warning "passing it literally to the linker, although it might fail"
-           abs_ladir="$ladir"
-         fi
-         ;;
-       esac
-       func_basename "$lib"
-       laname="$func_basename_result"
-
-       # Find the relevant object directory and library name.
-       if test "X$installed" = Xyes; then
-         if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-           func_warning "library \`$lib' was moved."
-           dir="$ladir"
-           absdir="$abs_ladir"
-           libdir="$abs_ladir"
-         else
-           dir="$lt_sysroot$libdir"
-           absdir="$lt_sysroot$libdir"
-         fi
-         test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
-       else
-         if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-           dir="$ladir"
-           absdir="$abs_ladir"
-           # Remove this search path later
-           func_append notinst_path " $abs_ladir"
-         else
-           dir="$ladir/$objdir"
-           absdir="$abs_ladir/$objdir"
-           # Remove this search path later
-           func_append notinst_path " $abs_ladir"
-         fi
-       fi # $installed = yes
-       func_stripname 'lib' '.la' "$laname"
-       name=$func_stripname_result
-
-       # This library was specified with -dlpreopen.
-       if test "$pass" = dlpreopen; then
-         if test -z "$libdir" && test "$linkmode" = prog; then
-           func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
-         fi
-         case "$host" in
-           # special handling for platforms with PE-DLLs.
-           *cygwin* | *mingw* | *cegcc* )
-             # Linker will automatically link against shared library if both
-             # static and shared are present.  Therefore, ensure we extract
-             # symbols from the import library if a shared library is present
-             # (otherwise, the dlopen module name will be incorrect).  We do
-             # this by putting the import library name into $newdlprefiles.
-             # We recover the dlopen module name by 'saving' the la file
-             # name in a special purpose variable, and (later) extracting the
-             # dlname from the la file.
-             if test -n "$dlname"; then
-               func_tr_sh "$dir/$linklib"
-               eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
-               func_append newdlprefiles " $dir/$linklib"
-             else
-               func_append newdlprefiles " $dir/$old_library"
-               # Keep a list of preopened convenience libraries to check
-               # that they are being used correctly in the link pass.
-               test -z "$libdir" && \
-                 func_append dlpreconveniencelibs " $dir/$old_library"
-             fi
-           ;;
-           * )
-             # Prefer using a static library (so that no silly _DYNAMIC symbols
-             # are required to link).
-             if test -n "$old_library"; then
-               func_append newdlprefiles " $dir/$old_library"
-               # Keep a list of preopened convenience libraries to check
-               # that they are being used correctly in the link pass.
-               test -z "$libdir" && \
-                 func_append dlpreconveniencelibs " $dir/$old_library"
-             # Otherwise, use the dlname, so that lt_dlopen finds it.
-             elif test -n "$dlname"; then
-               func_append newdlprefiles " $dir/$dlname"
-             else
-               func_append newdlprefiles " $dir/$linklib"
-             fi
-           ;;
-         esac
-       fi # $pass = dlpreopen
-
-       if test -z "$libdir"; then
-         # Link the convenience library
-         if test "$linkmode" = lib; then
-           deplibs="$dir/$old_library $deplibs"
-         elif test "$linkmode,$pass" = "prog,link"; then
-           compile_deplibs="$dir/$old_library $compile_deplibs"
-           finalize_deplibs="$dir/$old_library $finalize_deplibs"
-         else
-           deplibs="$lib $deplibs" # used for prog,scan pass
-         fi
-         continue
-       fi
-
-
-       if test "$linkmode" = prog && test "$pass" != link; then
-         func_append newlib_search_path " $ladir"
-         deplibs="$lib $deplibs"
-
-         linkalldeplibs=no
-         if test "$link_all_deplibs" != no || test -z "$library_names" ||
-            test "$build_libtool_libs" = no; then
-           linkalldeplibs=yes
-         fi
-
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           case $deplib in
-           -L*) func_stripname '-L' '' "$deplib"
-                func_resolve_sysroot "$func_stripname_result"
-                func_append newlib_search_path " $func_resolve_sysroot_result"
-                ;;
-           esac
-           # Need to link against all dependency_libs?
-           if test "$linkalldeplibs" = yes; then
-             deplibs="$deplib $deplibs"
-           else
-             # Need to hardcode shared library paths
-             # or/and link against static libraries
-             newdependency_libs="$deplib $newdependency_libs"
-           fi
-           if $opt_preserve_dup_deps ; then
-             case "$tmp_libs " in
-             *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-             esac
-           fi
-           func_append tmp_libs " $deplib"
-         done # for deplib
-         continue
-       fi # $linkmode = prog...
-
-       if test "$linkmode,$pass" = "prog,link"; then
-         if test -n "$library_names" &&
-            { { test "$prefer_static_libs" = no ||
-                test "$prefer_static_libs,$installed" = "built,yes"; } ||
-              test -z "$old_library"; }; then
-           # We need to hardcode the library path
-           if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
-             # Make sure the rpath contains only unique directories.
-             case "$temp_rpath:" in
-             *"$absdir:"*) ;;
-             *) func_append temp_rpath "$absdir:" ;;
-             esac
-           fi
-
-           # Hardcode the library path.
-           # Skip directories that are in the system default run-time
-           # search path.
-           case " $sys_lib_dlsearch_path " in
-           *" $absdir "*) ;;
-           *)
-             case "$compile_rpath " in
-             *" $absdir "*) ;;
-             *) func_append compile_rpath " $absdir" ;;
-             esac
-             ;;
-           esac
-           case " $sys_lib_dlsearch_path " in
-           *" $libdir "*) ;;
-           *)
-             case "$finalize_rpath " in
-             *" $libdir "*) ;;
-             *) func_append finalize_rpath " $libdir" ;;
-             esac
-             ;;
-           esac
-         fi # $linkmode,$pass = prog,link...
-
-         if test "$alldeplibs" = yes &&
-            { test "$deplibs_check_method" = pass_all ||
-              { test "$build_libtool_libs" = yes &&
-                test -n "$library_names"; }; }; then
-           # We only need to search for static libraries
-           continue
-         fi
-       fi
-
-       link_static=no # Whether the deplib will be linked statically
-       use_static_libs=$prefer_static_libs
-       if test "$use_static_libs" = built && test "$installed" = yes; then
-         use_static_libs=no
-       fi
-       if test -n "$library_names" &&
-          { test "$use_static_libs" = no || test -z "$old_library"; }; then
-         case $host in
-         *cygwin* | *mingw* | *cegcc*)
-             # No point in relinking DLLs because paths are not encoded
-             func_append notinst_deplibs " $lib"
-             need_relink=no
-           ;;
-         *)
-           if test "$installed" = no; then
-             func_append notinst_deplibs " $lib"
-             need_relink=yes
-           fi
-           ;;
-         esac
-         # This is a shared library
-
-         # Warn about portability, can't link against -module's on some
-         # systems (darwin).  Don't bleat about dlopened modules though!
-         dlopenmodule=""
-         for dlpremoduletest in $dlprefiles; do
-           if test "X$dlpremoduletest" = "X$lib"; then
-             dlopenmodule="$dlpremoduletest"
-             break
-           fi
-         done
-         if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
-           echo
-           if test "$linkmode" = prog; then
-             $ECHO "*** Warning: Linking the executable $output against the loadable module"
-           else
-             $ECHO "*** Warning: Linking the shared library $output against the loadable module"
-           fi
-           $ECHO "*** $linklib is not portable!"
-         fi
-         if test "$linkmode" = lib &&
-            test "$hardcode_into_libs" = yes; then
-           # Hardcode the library path.
-           # Skip directories that are in the system default run-time
-           # search path.
-           case " $sys_lib_dlsearch_path " in
-           *" $absdir "*) ;;
-           *)
-             case "$compile_rpath " in
-             *" $absdir "*) ;;
-             *) func_append compile_rpath " $absdir" ;;
-             esac
-             ;;
-           esac
-           case " $sys_lib_dlsearch_path " in
-           *" $libdir "*) ;;
-           *)
-             case "$finalize_rpath " in
-             *" $libdir "*) ;;
-             *) func_append finalize_rpath " $libdir" ;;
-             esac
-             ;;
-           esac
-         fi
-
-         if test -n "$old_archive_from_expsyms_cmds"; then
-           # figure out the soname
-           set dummy $library_names
-           shift
-           realname="$1"
-           shift
-           libname=`eval "\\$ECHO \"$libname_spec\""`
-           # use dlname if we got it. it's perfectly good, no?
-           if test -n "$dlname"; then
-             soname="$dlname"
-           elif test -n "$soname_spec"; then
-             # bleh windows
-             case $host in
-             *cygwin* | mingw* | *cegcc*)
-               func_arith $current - $age
-               major=$func_arith_result
-               versuffix="-$major"
-               ;;
-             esac
-             eval soname=\"$soname_spec\"
-           else
-             soname="$realname"
-           fi
-
-           # Make a new name for the extract_expsyms_cmds to use
-           soroot="$soname"
-           func_basename "$soroot"
-           soname="$func_basename_result"
-           func_stripname 'lib' '.dll' "$soname"
-           newlib=libimp-$func_stripname_result.a
-
-           # If the library has no export list, then create one now
-           if test -f "$output_objdir/$soname-def"; then :
-           else
-             func_verbose "extracting exported symbol list from \`$soname'"
-             func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
-           fi
-
-           # Create $newlib
-           if test -f "$output_objdir/$newlib"; then :; else
-             func_verbose "generating import library for \`$soname'"
-             func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
-           fi
-           # make sure the library variables are pointing to the new library
-           dir=$output_objdir
-           linklib=$newlib
-         fi # test -n "$old_archive_from_expsyms_cmds"
-
-         if test "$linkmode" = prog || test "$opt_mode" != relink; then
-           add_shlibpath=
-           add_dir=
-           add=
-           lib_linked=yes
-           case $hardcode_action in
-           immediate | unsupported)
-             if test "$hardcode_direct" = no; then
-               add="$dir/$linklib"
-               case $host in
-                 *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
-                 *-*-sysv4*uw2*) add_dir="-L$dir" ;;
-                 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-                   *-*-unixware7*) add_dir="-L$dir" ;;
-                 *-*-darwin* )
-                   # if the lib is a (non-dlopened) module then we can not
-                   # link against it, someone is ignoring the earlier warnings
-                   if /usr/bin/file -L $add 2> /dev/null |
-                        $GREP ": [^:]* bundle" >/dev/null ; then
-                     if test "X$dlopenmodule" != "X$lib"; then
-                       $ECHO "*** Warning: lib $linklib is a module, not a shared library"
-                       if test -z "$old_library" ; then
-                         echo
-                         echo "*** And there doesn't seem to be a static archive available"
-                         echo "*** The link will probably fail, sorry"
-                       else
-                         add="$dir/$old_library"
-                       fi
-                     elif test -n "$old_library"; then
-                       add="$dir/$old_library"
-                     fi
-                   fi
-               esac
-             elif test "$hardcode_minus_L" = no; then
-               case $host in
-               *-*-sunos*) add_shlibpath="$dir" ;;
-               esac
-               add_dir="-L$dir"
-               add="-l$name"
-             elif test "$hardcode_shlibpath_var" = no; then
-               add_shlibpath="$dir"
-               add="-l$name"
-             else
-               lib_linked=no
-             fi
-             ;;
-           relink)
-             if test "$hardcode_direct" = yes &&
-                test "$hardcode_direct_absolute" = no; then
-               add="$dir/$linklib"
-             elif test "$hardcode_minus_L" = yes; then
-               add_dir="-L$absdir"
-               # Try looking first in the location we're being installed to.
-               if test -n "$inst_prefix_dir"; then
-                 case $libdir in
-                   [\\/]*)
-                     func_append add_dir " -L$inst_prefix_dir$libdir"
-                     ;;
-                 esac
-               fi
-               add="-l$name"
-             elif test "$hardcode_shlibpath_var" = yes; then
-               add_shlibpath="$dir"
-               add="-l$name"
-             else
-               lib_linked=no
-             fi
-             ;;
-           *) lib_linked=no ;;
-           esac
-
-           if test "$lib_linked" != yes; then
-             func_fatal_configuration "unsupported hardcode properties"
-           fi
-
-           if test -n "$add_shlibpath"; then
-             case :$compile_shlibpath: in
-             *":$add_shlibpath:"*) ;;
-             *) func_append compile_shlibpath "$add_shlibpath:" ;;
-             esac
-           fi
-           if test "$linkmode" = prog; then
-             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-             test -n "$add" && compile_deplibs="$add $compile_deplibs"
-           else
-             test -n "$add_dir" && deplibs="$add_dir $deplibs"
-             test -n "$add" && deplibs="$add $deplibs"
-             if test "$hardcode_direct" != yes &&
-                test "$hardcode_minus_L" != yes &&
-                test "$hardcode_shlibpath_var" = yes; then
-               case :$finalize_shlibpath: in
-               *":$libdir:"*) ;;
-               *) func_append finalize_shlibpath "$libdir:" ;;
-               esac
-             fi
-           fi
-         fi
-
-         if test "$linkmode" = prog || test "$opt_mode" = relink; then
-           add_shlibpath=
-           add_dir=
-           add=
-           # Finalize command for both is simple: just hardcode it.
-           if test "$hardcode_direct" = yes &&
-              test "$hardcode_direct_absolute" = no; then
-             add="$libdir/$linklib"
-           elif test "$hardcode_minus_L" = yes; then
-             add_dir="-L$libdir"
-             add="-l$name"
-           elif test "$hardcode_shlibpath_var" = yes; then
-             case :$finalize_shlibpath: in
-             *":$libdir:"*) ;;
-             *) func_append finalize_shlibpath "$libdir:" ;;
-             esac
-             add="-l$name"
-           elif test "$hardcode_automatic" = yes; then
-             if test -n "$inst_prefix_dir" &&
-                test -f "$inst_prefix_dir$libdir/$linklib" ; then
-               add="$inst_prefix_dir$libdir/$linklib"
-             else
-               add="$libdir/$linklib"
-             fi
-           else
-             # We cannot seem to hardcode it, guess we'll fake it.
-             add_dir="-L$libdir"
-             # Try looking first in the location we're being installed to.
-             if test -n "$inst_prefix_dir"; then
-               case $libdir in
-                 [\\/]*)
-                   func_append add_dir " -L$inst_prefix_dir$libdir"
-                   ;;
-               esac
-             fi
-             add="-l$name"
-           fi
-
-           if test "$linkmode" = prog; then
-             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
-           else
-             test -n "$add_dir" && deplibs="$add_dir $deplibs"
-             test -n "$add" && deplibs="$add $deplibs"
-           fi
-         fi
-       elif test "$linkmode" = prog; then
-         # Here we assume that one of hardcode_direct or hardcode_minus_L
-         # is not unsupported.  This is valid on all known static and
-         # shared platforms.
-         if test "$hardcode_direct" != unsupported; then
-           test -n "$old_library" && linklib="$old_library"
-           compile_deplibs="$dir/$linklib $compile_deplibs"
-           finalize_deplibs="$dir/$linklib $finalize_deplibs"
-         else
-           compile_deplibs="-l$name -L$dir $compile_deplibs"
-           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
-         fi
-       elif test "$build_libtool_libs" = yes; then
-         # Not a shared library
-         if test "$deplibs_check_method" != pass_all; then
-           # We're trying link a shared library against a static one
-           # but the system doesn't support it.
-
-           # Just print a warning and add the library to dependency_libs so
-           # that the program can be linked against the static library.
-           echo
-           $ECHO "*** Warning: This system can not link to static lib archive $lib."
-           echo "*** I have the capability to make that library automatically link in when"
-           echo "*** you link to this library.  But I can only do this if you have a"
-           echo "*** shared version of the library, which you do not appear to have."
-           if test "$module" = yes; then
-             echo "*** But as you try to build a module library, libtool will still create "
-             echo "*** a static module, that should work as long as the dlopening application"
-             echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
-             if test -z "$global_symbol_pipe"; then
-               echo
-               echo "*** However, this would only work if libtool was able to extract symbol"
-               echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-               echo "*** not find such a program.  So, this module is probably useless."
-               echo "*** \`nm' from GNU binutils and a full rebuild may help."
-             fi
-             if test "$build_old_libs" = no; then
-               build_libtool_libs=module
-               build_old_libs=yes
-             else
-               build_libtool_libs=no
-             fi
-           fi
-         else
-           deplibs="$dir/$old_library $deplibs"
-           link_static=yes
-         fi
-       fi # link shared/static library?
-
-       if test "$linkmode" = lib; then
-         if test -n "$dependency_libs" &&
-            { test "$hardcode_into_libs" != yes ||
-              test "$build_old_libs" = yes ||
-              test "$link_static" = yes; }; then
-           # Extract -R from dependency_libs
-           temp_deplibs=
-           for libdir in $dependency_libs; do
-             case $libdir in
-             -R*) func_stripname '-R' '' "$libdir"
-                  temp_xrpath=$func_stripname_result
-                  case " $xrpath " in
-                  *" $temp_xrpath "*) ;;
-                  *) func_append xrpath " $temp_xrpath";;
-                  esac;;
-             *) func_append temp_deplibs " $libdir";;
-             esac
-           done
-           dependency_libs="$temp_deplibs"
-         fi
-
-         func_append newlib_search_path " $absdir"
-         # Link against this library
-         test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
-         # ... and its dependency_libs
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           newdependency_libs="$deplib $newdependency_libs"
-           case $deplib in
-              -L*) func_stripname '-L' '' "$deplib"
-                   func_resolve_sysroot "$func_stripname_result";;
-              *) func_resolve_sysroot "$deplib" ;;
-            esac
-           if $opt_preserve_dup_deps ; then
-             case "$tmp_libs " in
-             *" $func_resolve_sysroot_result "*)
-                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
-             esac
-           fi
-           func_append tmp_libs " $func_resolve_sysroot_result"
-         done
-
-         if test "$link_all_deplibs" != no; then
-           # Add the search paths of all dependency libraries
-           for deplib in $dependency_libs; do
-             path=
-             case $deplib in
-             -L*) path="$deplib" ;;
-             *.la)
-               func_resolve_sysroot "$deplib"
-               deplib=$func_resolve_sysroot_result
-               func_dirname "$deplib" "" "."
-               dir=$func_dirname_result
-               # We need an absolute path.
-               case $dir in
-               [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-               *)
-                 absdir=`cd "$dir" && pwd`
-                 if test -z "$absdir"; then
-                   func_warning "cannot determine absolute directory name of \`$dir'"
-                   absdir="$dir"
-                 fi
-                 ;;
-               esac
-               if $GREP "^installed=no" $deplib > /dev/null; then
-               case $host in
-               *-*-darwin*)
-                 depdepl=
-                 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-                 if test -n "$deplibrary_names" ; then
-                   for tmp in $deplibrary_names ; do
-                     depdepl=$tmp
-                   done
-                   if test -f "$absdir/$objdir/$depdepl" ; then
-                     depdepl="$absdir/$objdir/$depdepl"
-                     darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
-                      if test -z "$darwin_install_name"; then
-                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
-                      fi
-                     func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-                     func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
-                     path=
-                   fi
-                 fi
-                 ;;
-               *)
-                 path="-L$absdir/$objdir"
-                 ;;
-               esac
-               else
-                 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-                 test -z "$libdir" && \
-                   func_fatal_error "\`$deplib' is not a valid libtool archive"
-                 test "$absdir" != "$libdir" && \
-                   func_warning "\`$deplib' seems to be moved"
-
-                 path="-L$absdir"
-               fi
-               ;;
-             esac
-             case " $deplibs " in
-             *" $path "*) ;;
-             *) deplibs="$path $deplibs" ;;
-             esac
-           done
-         fi # link_all_deplibs != no
-       fi # linkmode = lib
-      done # for deplib in $libs
-      if test "$pass" = link; then
-       if test "$linkmode" = "prog"; then
-         compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
-         finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
-       else
-         compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       fi
-      fi
-      dependency_libs="$newdependency_libs"
-      if test "$pass" = dlpreopen; then
-       # Link the dlpreopened libraries before other libraries
-       for deplib in $save_deplibs; do
-         deplibs="$deplib $deplibs"
-       done
-      fi
-      if test "$pass" != dlopen; then
-       if test "$pass" != conv; then
-         # Make sure lib_search_path contains only unique directories.
-         lib_search_path=
-         for dir in $newlib_search_path; do
-           case "$lib_search_path " in
-           *" $dir "*) ;;
-           *) func_append lib_search_path " $dir" ;;
-           esac
-         done
-         newlib_search_path=
-       fi
-
-       if test "$linkmode,$pass" != "prog,link"; then
-         vars="deplibs"
-       else
-         vars="compile_deplibs finalize_deplibs"
-       fi
-       for var in $vars dependency_libs; do
-         # Add libraries to $var in reverse order
-         eval tmp_libs=\"\$$var\"
-         new_libs=
-         for deplib in $tmp_libs; do
-           # FIXME: Pedantically, this is the right thing to do, so
-           #        that some nasty dependency loop isn't accidentally
-           #        broken:
-           #new_libs="$deplib $new_libs"
-           # Pragmatically, this seems to cause very few problems in
-           # practice:
-           case $deplib in
-           -L*) new_libs="$deplib $new_libs" ;;
-           -R*) ;;
-           *)
-             # And here is the reason: when a library appears more
-             # than once as an explicit dependence of a library, or
-             # is implicitly linked in more than once by the
-             # compiler, it is considered special, and multiple
-             # occurrences thereof are not removed.  Compare this
-             # with having the same library being listed as a
-             # dependency of multiple other libraries: in this case,
-             # we know (pedantically, we assume) the library does not
-             # need to be listed more than once, so we keep only the
-             # last copy.  This is not always right, but it is rare
-             # enough that we require users that really mean to play
-             # such unportable linking tricks to link the library
-             # using -Wl,-lname, so that libtool does not consider it
-             # for duplicate removal.
-             case " $specialdeplibs " in
-             *" $deplib "*) new_libs="$deplib $new_libs" ;;
-             *)
-               case " $new_libs " in
-               *" $deplib "*) ;;
-               *) new_libs="$deplib $new_libs" ;;
-               esac
-               ;;
-             esac
-             ;;
-           esac
-         done
-         tmp_libs=
-         for deplib in $new_libs; do
-           case $deplib in
-           -L*)
-             case " $tmp_libs " in
-             *" $deplib "*) ;;
-             *) func_append tmp_libs " $deplib" ;;
-             esac
-             ;;
-           *) func_append tmp_libs " $deplib" ;;
-           esac
-         done
-         eval $var=\"$tmp_libs\"
-       done # for var
-      fi
-      # Last step: remove runtime libs from dependency_libs
-      # (they stay in deplibs)
-      tmp_libs=
-      for i in $dependency_libs ; do
-       case " $predeps $postdeps $compiler_lib_search_path " in
-       *" $i "*)
-         i=""
-         ;;
-       esac
-       if test -n "$i" ; then
-         func_append tmp_libs " $i"
-       fi
-      done
-      dependency_libs=$tmp_libs
-    done # for pass
-    if test "$linkmode" = prog; then
-      dlfiles="$newdlfiles"
-    fi
-    if test "$linkmode" = prog || test "$linkmode" = lib; then
-      dlprefiles="$newdlprefiles"
-    fi
-
-    case $linkmode in
-    oldlib)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-       func_warning "\`-dlopen' is ignored for archives"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-       func_warning "\`-l' and \`-L' are ignored for archives" ;;
-      esac
-
-      test -n "$rpath" && \
-       func_warning "\`-rpath' is ignored for archives"
-
-      test -n "$xrpath" && \
-       func_warning "\`-R' is ignored for archives"
-
-      test -n "$vinfo" && \
-       func_warning "\`-version-info/-version-number' is ignored for archives"
-
-      test -n "$release" && \
-       func_warning "\`-release' is ignored for archives"
-
-      test -n "$export_symbols$export_symbols_regex" && \
-       func_warning "\`-export-symbols' is ignored for archives"
-
-      # Now set the variables for building old libraries.
-      build_libtool_libs=no
-      oldlibs="$output"
-      func_append objs "$old_deplibs"
-      ;;
-
-    lib)
-      # Make sure we only generate libraries of the form `libNAME.la'.
-      case $outputname in
-      lib*)
-       func_stripname 'lib' '.la' "$outputname"
-       name=$func_stripname_result
-       eval shared_ext=\"$shrext_cmds\"
-       eval libname=\"$libname_spec\"
-       ;;
-      *)
-       test "$module" = no && \
-         func_fatal_help "libtool library \`$output' must begin with \`lib'"
-
-       if test "$need_lib_prefix" != no; then
-         # Add the "lib" prefix for modules if required
-         func_stripname '' '.la' "$outputname"
-         name=$func_stripname_result
-         eval shared_ext=\"$shrext_cmds\"
-         eval libname=\"$libname_spec\"
-       else
-         func_stripname '' '.la' "$outputname"
-         libname=$func_stripname_result
-       fi
-       ;;
-      esac
-
-      if test -n "$objs"; then
-       if test "$deplibs_check_method" != pass_all; then
-         func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
-       else
-         echo
-         $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
-         $ECHO "*** objects $objs is not portable!"
-         func_append libobjs " $objs"
-       fi
-      fi
-
-      test "$dlself" != no && \
-       func_warning "\`-dlopen self' is ignored for libtool libraries"
-
-      set dummy $rpath
-      shift
-      test "$#" -gt 1 && \
-       func_warning "ignoring multiple \`-rpath's for a libtool library"
-
-      install_libdir="$1"
-
-      oldlibs=
-      if test -z "$rpath"; then
-       if test "$build_libtool_libs" = yes; then
-         # Building a libtool convenience library.
-         # Some compilers have problems with a `.al' extension so
-         # convenience libraries should have the same extension an
-         # archive normally would.
-         oldlibs="$output_objdir/$libname.$libext $oldlibs"
-         build_libtool_libs=convenience
-         build_old_libs=yes
-       fi
-
-       test -n "$vinfo" && \
-         func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
-
-       test -n "$release" && \
-         func_warning "\`-release' is ignored for convenience libraries"
-      else
-
-       # Parse the version information argument.
-       save_ifs="$IFS"; IFS=':'
-       set dummy $vinfo 0 0 0
-       shift
-       IFS="$save_ifs"
-
-       test -n "$7" && \
-         func_fatal_help "too many parameters to \`-version-info'"
-
-       # convert absolute version numbers to libtool ages
-       # this retains compatibility with .la files and attempts
-       # to make the code below a bit more comprehensible
-
-       case $vinfo_number in
-       yes)
-         number_major="$1"
-         number_minor="$2"
-         number_revision="$3"
-         #
-         # There are really only two kinds -- those that
-         # use the current revision as the major version
-         # and those that subtract age and use age as
-         # a minor version.  But, then there is irix
-         # which has an extra 1 added just for fun
-         #
-         case $version_type in
-         # correct linux to gnu/linux during the next big refactor
-         darwin|linux|osf|windows|none)
-           func_arith $number_major + $number_minor
-           current=$func_arith_result
-           age="$number_minor"
-           revision="$number_revision"
-           ;;
-         freebsd-aout|freebsd-elf|qnx|sunos)
-           current="$number_major"
-           revision="$number_minor"
-           age="0"
-           ;;
-         irix|nonstopux)
-           func_arith $number_major + $number_minor
-           current=$func_arith_result
-           age="$number_minor"
-           revision="$number_minor"
-           lt_irix_increment=no
-           ;;
-         *)
-           func_fatal_configuration "$modename: unknown library version type \`$version_type'"
-           ;;
-         esac
-         ;;
-       no)
-         current="$1"
-         revision="$2"
-         age="$3"
-         ;;
-       esac
-
-       # Check that each of the things are valid numbers.
-       case $current in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "CURRENT \`$current' must be a nonnegative integer"
-         func_fatal_error "\`$vinfo' is not valid version information"
-         ;;
-       esac
-
-       case $revision in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "REVISION \`$revision' must be a nonnegative integer"
-         func_fatal_error "\`$vinfo' is not valid version information"
-         ;;
-       esac
-
-       case $age in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "AGE \`$age' must be a nonnegative integer"
-         func_fatal_error "\`$vinfo' is not valid version information"
-         ;;
-       esac
-
-       if test "$age" -gt "$current"; then
-         func_error "AGE \`$age' is greater than the current interface number \`$current'"
-         func_fatal_error "\`$vinfo' is not valid version information"
-       fi
-
-       # Calculate the version variables.
-       major=
-       versuffix=
-       verstring=
-       case $version_type in
-       none) ;;
-
-       darwin)
-         # Like Linux, but with the current version available in
-         # verstring for coding it into the library header
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix="$major.$age.$revision"
-         # Darwin ld doesn't like 0 for these options...
-         func_arith $current + 1
-         minor_current=$func_arith_result
-         xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
-         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-         ;;
-
-       freebsd-aout)
-         major=".$current"
-         versuffix=".$current.$revision";
-         ;;
-
-       freebsd-elf)
-         major=".$current"
-         versuffix=".$current"
-         ;;
-
-       irix | nonstopux)
-         if test "X$lt_irix_increment" = "Xno"; then
-           func_arith $current - $age
-         else
-           func_arith $current - $age + 1
-         fi
-         major=$func_arith_result
-
-         case $version_type in
-           nonstopux) verstring_prefix=nonstopux ;;
-           *)         verstring_prefix=sgi ;;
-         esac
-         verstring="$verstring_prefix$major.$revision"
-
-         # Add in all the interfaces that we are compatible with.
-         loop=$revision
-         while test "$loop" -ne 0; do
-           func_arith $revision - $loop
-           iface=$func_arith_result
-           func_arith $loop - 1
-           loop=$func_arith_result
-           verstring="$verstring_prefix$major.$iface:$verstring"
-         done
-
-         # Before this point, $major must not contain `.'.
-         major=.$major
-         versuffix="$major.$revision"
-         ;;
-
-       linux) # correct to gnu/linux during the next big refactor
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix="$major.$age.$revision"
-         ;;
-
-       osf)
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix=".$current.$age.$revision"
-         verstring="$current.$age.$revision"
-
-         # Add in all the interfaces that we are compatible with.
-         loop=$age
-         while test "$loop" -ne 0; do
-           func_arith $current - $loop
-           iface=$func_arith_result
-           func_arith $loop - 1
-           loop=$func_arith_result
-           verstring="$verstring:${iface}.0"
-         done
-
-         # Make executables depend on our current version.
-         func_append verstring ":${current}.0"
-         ;;
-
-       qnx)
-         major=".$current"
-         versuffix=".$current"
-         ;;
-
-       sunos)
-         major=".$current"
-         versuffix=".$current.$revision"
-         ;;
-
-       windows)
-         # Use '-' rather than '.', since we only want one
-         # extension on DOS 8.3 filesystems.
-         func_arith $current - $age
-         major=$func_arith_result
-         versuffix="-$major"
-         ;;
-
-       *)
-         func_fatal_configuration "unknown library version type \`$version_type'"
-         ;;
-       esac
-
-       # Clear the version info if we defaulted, and they specified a release.
-       if test -z "$vinfo" && test -n "$release"; then
-         major=
-         case $version_type in
-         darwin)
-           # we can't check for "0.0" in archive_cmds due to quoting
-           # problems, so we reset it completely
-           verstring=
-           ;;
-         *)
-           verstring="0.0"
-           ;;
-         esac
-         if test "$need_version" = no; then
-           versuffix=
-         else
-           versuffix=".0.0"
-         fi
-       fi
-
-       # Remove version info from name if versioning should be avoided
-       if test "$avoid_version" = yes && test "$need_version" = no; then
-         major=
-         versuffix=
-         verstring=""
-       fi
-
-       # Check to see if the archive will have undefined symbols.
-       if test "$allow_undefined" = yes; then
-         if test "$allow_undefined_flag" = unsupported; then
-           func_warning "undefined symbols not allowed in $host shared libraries"
-           build_libtool_libs=no
-           build_old_libs=yes
-         fi
-       else
-         # Don't allow undefined symbols.
-         allow_undefined_flag="$no_undefined_flag"
-       fi
-
-      fi
-
-      func_generate_dlsyms "$libname" "$libname" "yes"
-      func_append libobjs " $symfileobj"
-      test "X$libobjs" = "X " && libobjs=
-
-      if test "$opt_mode" != relink; then
-       # Remove our outputs, but don't remove object files since they
-       # may have been created when compiling PIC objects.
-       removelist=
-       tempremovelist=`$ECHO "$output_objdir/*"`
-       for p in $tempremovelist; do
-         case $p in
-           *.$objext | *.gcno)
-              ;;
-           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-              if test "X$precious_files_regex" != "X"; then
-                if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
-                then
-                  continue
-                fi
-              fi
-              func_append removelist " $p"
-              ;;
-           *) ;;
-         esac
-       done
-       test -n "$removelist" && \
-         func_show_eval "${RM}r \$removelist"
-      fi
-
-      # Now set the variables for building old libraries.
-      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-       func_append oldlibs " $output_objdir/$libname.$libext"
-
-       # Transform .lo files to .o files.
-       oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
-      fi
-
-      # Eliminate all temporary directories.
-      #for path in $notinst_path; do
-      #        lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
-      #        deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
-      #        dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
-      #done
-
-      if test -n "$xrpath"; then
-       # If the user specified any rpath flags, then add them.
-       temp_xrpath=
-       for libdir in $xrpath; do
-         func_replace_sysroot "$libdir"
-         func_append temp_xrpath " -R$func_replace_sysroot_result"
-         case "$finalize_rpath " in
-         *" $libdir "*) ;;
-         *) func_append finalize_rpath " $libdir" ;;
-         esac
-       done
-       if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
-         dependency_libs="$temp_xrpath $dependency_libs"
-       fi
-      fi
-
-      # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
-      dlfiles=
-      for lib in $old_dlfiles; do
-       case " $dlprefiles $dlfiles " in
-       *" $lib "*) ;;
-       *) func_append dlfiles " $lib" ;;
-       esac
-      done
-
-      # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
-      dlprefiles=
-      for lib in $old_dlprefiles; do
-       case "$dlprefiles " in
-       *" $lib "*) ;;
-       *) func_append dlprefiles " $lib" ;;
-       esac
-      done
-
-      if test "$build_libtool_libs" = yes; then
-       if test -n "$rpath"; then
-         case $host in
-         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
-           # these systems don't actually have a c library (as such)!
-           ;;
-         *-*-rhapsody* | *-*-darwin1.[012])
-           # Rhapsody C library is in the System framework
-           func_append deplibs " System.ltframework"
-           ;;
-         *-*-netbsd*)
-           # Don't link with libc until the a.out ld.so is fixed.
-           ;;
-         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-           # Do not include libc due to us having libc/libc_r.
-           ;;
-         *-*-sco3.2v5* | *-*-sco5v6*)
-           # Causes problems with __ctype
-           ;;
-         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-           # Compiler inserts libc in the correct place for threads to work
-           ;;
-         *)
-           # Add libc to deplibs on all other systems if necessary.
-           if test "$build_libtool_need_lc" = "yes"; then
-             func_append deplibs " -lc"
-           fi
-           ;;
-         esac
-       fi
-
-       # Transform deplibs into only deplibs that can be linked in shared.
-       name_save=$name
-       libname_save=$libname
-       release_save=$release
-       versuffix_save=$versuffix
-       major_save=$major
-       # I'm not sure if I'm treating the release correctly.  I think
-       # release should show up in the -l (ie -lgmp5) so we don't want to
-       # add it in twice.  Is that correct?
-       release=""
-       versuffix=""
-       major=""
-       newdeplibs=
-       droppeddeps=no
-       case $deplibs_check_method in
-       pass_all)
-         # Don't check for shared/static.  Everything works.
-         # This might be a little naive.  We might want to check
-         # whether the library exists or not.  But this is on
-         # osf3 & osf4 and I'm not really sure... Just
-         # implementing what was already the behavior.
-         newdeplibs=$deplibs
-         ;;
-       test_compile)
-         # This code stresses the "libraries are programs" paradigm to its
-         # limits. Maybe even breaks it.  We compile a program, linking it
-         # against the deplibs as a proxy for the library.  Then we can check
-         # whether they linked in statically or dynamically with ldd.
-         $opt_dry_run || $RM conftest.c
-         cat > conftest.c <<EOF
-         int main() { return 0; }
-EOF
-         $opt_dry_run || $RM conftest
-         if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
-           ldd_output=`ldd conftest`
-           for i in $deplibs; do
-             case $i in
-             -l*)
-               func_stripname -l '' "$i"
-               name=$func_stripname_result
-               if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-                 case " $predeps $postdeps " in
-                 *" $i "*)
-                   func_append newdeplibs " $i"
-                   i=""
-                   ;;
-                 esac
-               fi
-               if test -n "$i" ; then
-                 libname=`eval "\\$ECHO \"$libname_spec\""`
-                 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-                 set dummy $deplib_matches; shift
-                 deplib_match=$1
-                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-                   func_append newdeplibs " $i"
-                 else
-                   droppeddeps=yes
-                   echo
-                   $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-                   echo "*** I have the capability to make that library automatically link in when"
-                   echo "*** you link to this library.  But I can only do this if you have a"
-                   echo "*** shared version of the library, which I believe you do not have"
-                   echo "*** because a test_compile did reveal that the linker did not use it for"
-                   echo "*** its dynamic dependency list that programs get resolved with at runtime."
-                 fi
-               fi
-               ;;
-             *)
-               func_append newdeplibs " $i"
-               ;;
-             esac
-           done
-         else
-           # Error occurred in the first compile.  Let's try to salvage
-           # the situation: Compile a separate program for each library.
-           for i in $deplibs; do
-             case $i in
-             -l*)
-               func_stripname -l '' "$i"
-               name=$func_stripname_result
-               $opt_dry_run || $RM conftest
-               if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
-                 ldd_output=`ldd conftest`
-                 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-                   case " $predeps $postdeps " in
-                   *" $i "*)
-                     func_append newdeplibs " $i"
-                     i=""
-                     ;;
-                   esac
-                 fi
-                 if test -n "$i" ; then
-                   libname=`eval "\\$ECHO \"$libname_spec\""`
-                   deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-                   set dummy $deplib_matches; shift
-                   deplib_match=$1
-                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-                     func_append newdeplibs " $i"
-                   else
-                     droppeddeps=yes
-                     echo
-                     $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-                     echo "*** I have the capability to make that library automatically link in when"
-                     echo "*** you link to this library.  But I can only do this if you have a"
-                     echo "*** shared version of the library, which you do not appear to have"
-                     echo "*** because a test_compile did reveal that the linker did not use this one"
-                     echo "*** as a dynamic dependency that programs can get resolved with at runtime."
-                   fi
-                 fi
-               else
-                 droppeddeps=yes
-                 echo
-                 $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-                 echo "*** make it link in!  You will probably need to install it or some"
-                 echo "*** library that it depends on before this library will be fully"
-                 echo "*** functional.  Installing it before continuing would be even better."
-               fi
-               ;;
-             *)
-               func_append newdeplibs " $i"
-               ;;
-             esac
-           done
-         fi
-         ;;
-       file_magic*)
-         set dummy $deplibs_check_method; shift
-         file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-         for a_deplib in $deplibs; do
-           case $a_deplib in
-           -l*)
-             func_stripname -l '' "$a_deplib"
-             name=$func_stripname_result
-             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-               case " $predeps $postdeps " in
-               *" $a_deplib "*)
-                 func_append newdeplibs " $a_deplib"
-                 a_deplib=""
-                 ;;
-               esac
-             fi
-             if test -n "$a_deplib" ; then
-               libname=`eval "\\$ECHO \"$libname_spec\""`
-               if test -n "$file_magic_glob"; then
-                 libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
-               else
-                 libnameglob=$libname
-               fi
-               test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
-               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-                 if test "$want_nocaseglob" = yes; then
-                   shopt -s nocaseglob
-                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-                   $nocaseglob
-                 else
-                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-                 fi
-                 for potent_lib in $potential_libs; do
-                     # Follow soft links.
-                     if ls -lLd "$potent_lib" 2>/dev/null |
-                        $GREP " -> " >/dev/null; then
-                       continue
-                     fi
-                     # The statement above tries to avoid entering an
-                     # endless loop below, in case of cyclic links.
-                     # We might still enter an endless loop, since a link
-                     # loop can be closed while we follow links,
-                     # but so what?
-                     potlib="$potent_lib"
-                     while test -h "$potlib" 2>/dev/null; do
-                       potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
-                       case $potliblink in
-                       [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-                       *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
-                       esac
-                     done
-                     if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
-                        $SED -e 10q |
-                        $EGREP "$file_magic_regex" > /dev/null; then
-                       func_append newdeplibs " $a_deplib"
-                       a_deplib=""
-                       break 2
-                     fi
-                 done
-               done
-             fi
-             if test -n "$a_deplib" ; then
-               droppeddeps=yes
-               echo
-               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-               echo "*** I have the capability to make that library automatically link in when"
-               echo "*** you link to this library.  But I can only do this if you have a"
-               echo "*** shared version of the library, which you do not appear to have"
-               echo "*** because I did check the linker path looking for a file starting"
-               if test -z "$potlib" ; then
-                 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
-               else
-                 $ECHO "*** with $libname and none of the candidates passed a file format test"
-                 $ECHO "*** using a file magic. Last file checked: $potlib"
-               fi
-             fi
-             ;;
-           *)
-             # Add a -L argument.
-             func_append newdeplibs " $a_deplib"
-             ;;
-           esac
-         done # Gone through all deplibs.
-         ;;
-       match_pattern*)
-         set dummy $deplibs_check_method; shift
-         match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-         for a_deplib in $deplibs; do
-           case $a_deplib in
-           -l*)
-             func_stripname -l '' "$a_deplib"
-             name=$func_stripname_result
-             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-               case " $predeps $postdeps " in
-               *" $a_deplib "*)
-                 func_append newdeplibs " $a_deplib"
-                 a_deplib=""
-                 ;;
-               esac
-             fi
-             if test -n "$a_deplib" ; then
-               libname=`eval "\\$ECHO \"$libname_spec\""`
-               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-                 for potent_lib in $potential_libs; do
-                   potlib="$potent_lib" # see symlink-check above in file_magic test
-                   if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
-                      $EGREP "$match_pattern_regex" > /dev/null; then
-                     func_append newdeplibs " $a_deplib"
-                     a_deplib=""
-                     break 2
-                   fi
-                 done
-               done
-             fi
-             if test -n "$a_deplib" ; then
-               droppeddeps=yes
-               echo
-               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-               echo "*** I have the capability to make that library automatically link in when"
-               echo "*** you link to this library.  But I can only do this if you have a"
-               echo "*** shared version of the library, which you do not appear to have"
-               echo "*** because I did check the linker path looking for a file starting"
-               if test -z "$potlib" ; then
-                 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
-               else
-                 $ECHO "*** with $libname and none of the candidates passed a file format test"
-                 $ECHO "*** using a regex pattern. Last file checked: $potlib"
-               fi
-             fi
-             ;;
-           *)
-             # Add a -L argument.
-             func_append newdeplibs " $a_deplib"
-             ;;
-           esac
-         done # Gone through all deplibs.
-         ;;
-       none | unknown | *)
-         newdeplibs=""
-         tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
-         if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-           for i in $predeps $postdeps ; do
-             # can't use Xsed below, because $i might contain '/'
-             tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
-           done
-         fi
-         case $tmp_deplibs in
-         *[!\  \ ]*)
-           echo
-           if test "X$deplibs_check_method" = "Xnone"; then
-             echo "*** Warning: inter-library dependencies are not supported in this platform."
-           else
-             echo "*** Warning: inter-library dependencies are not known to be supported."
-           fi
-           echo "*** All declared inter-library dependencies are being dropped."
-           droppeddeps=yes
-           ;;
-         esac
-         ;;
-       esac
-       versuffix=$versuffix_save
-       major=$major_save
-       release=$release_save
-       libname=$libname_save
-       name=$name_save
-
-       case $host in
-       *-*-rhapsody* | *-*-darwin1.[012])
-         # On Rhapsody replace the C library with the System framework
-         newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
-         ;;
-       esac
-
-       if test "$droppeddeps" = yes; then
-         if test "$module" = yes; then
-           echo
-           echo "*** Warning: libtool could not satisfy all declared inter-library"
-           $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-           echo "*** a static module, that should work as long as the dlopening"
-           echo "*** application is linked with the -dlopen flag."
-           if test -z "$global_symbol_pipe"; then
-             echo
-             echo "*** However, this would only work if libtool was able to extract symbol"
-             echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-             echo "*** not find such a program.  So, this module is probably useless."
-             echo "*** \`nm' from GNU binutils and a full rebuild may help."
-           fi
-           if test "$build_old_libs" = no; then
-             oldlibs="$output_objdir/$libname.$libext"
-             build_libtool_libs=module
-             build_old_libs=yes
-           else
-             build_libtool_libs=no
-           fi
-         else
-           echo "*** The inter-library dependencies that have been dropped here will be"
-           echo "*** automatically added whenever a program is linked with this library"
-           echo "*** or is declared to -dlopen it."
-
-           if test "$allow_undefined" = no; then
-             echo
-             echo "*** Since this library must not contain undefined symbols,"
-             echo "*** because either the platform does not support them or"
-             echo "*** it was explicitly requested with -no-undefined,"
-             echo "*** libtool will only create a static version of it."
-             if test "$build_old_libs" = no; then
-               oldlibs="$output_objdir/$libname.$libext"
-               build_libtool_libs=module
-               build_old_libs=yes
-             else
-               build_libtool_libs=no
-             fi
-           fi
-         fi
-       fi
-       # Done checking deplibs!
-       deplibs=$newdeplibs
-      fi
-      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-      case $host in
-       *-*-darwin*)
-         newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-         new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-         deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-         ;;
-      esac
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-       case " $new_libs " in
-       *" -L$path/$objdir "*) ;;
-       *)
-         case " $deplibs " in
-         *" -L$path/$objdir "*)
-           func_append new_libs " -L$path/$objdir" ;;
-         esac
-         ;;
-       esac
-      done
-      for deplib in $deplibs; do
-       case $deplib in
-       -L*)
-         case " $new_libs " in
-         *" $deplib "*) ;;
-         *) func_append new_libs " $deplib" ;;
-         esac
-         ;;
-       *) func_append new_libs " $deplib" ;;
-       esac
-      done
-      deplibs="$new_libs"
-
-      # All the library-specific variables (install_libdir is set above).
-      library_names=
-      old_library=
-      dlname=
-
-      # Test again, we may have decided not to build it any more
-      if test "$build_libtool_libs" = yes; then
-       # Remove ${wl} instances when linking with ld.
-       # FIXME: should test the right _cmds variable.
-       case $archive_cmds in
-         *\$LD\ *) wl= ;;
-        esac
-       if test "$hardcode_into_libs" = yes; then
-         # Hardcode the library paths
-         hardcode_libdirs=
-         dep_rpath=
-         rpath="$finalize_rpath"
-         test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
-         for libdir in $rpath; do
-           if test -n "$hardcode_libdir_flag_spec"; then
-             if test -n "$hardcode_libdir_separator"; then
-               func_replace_sysroot "$libdir"
-               libdir=$func_replace_sysroot_result
-               if test -z "$hardcode_libdirs"; then
-                 hardcode_libdirs="$libdir"
-               else
-                 # Just accumulate the unique libdirs.
-                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-                   ;;
-                 *)
-                   func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-                   ;;
-                 esac
-               fi
-             else
-               eval flag=\"$hardcode_libdir_flag_spec\"
-               func_append dep_rpath " $flag"
-             fi
-           elif test -n "$runpath_var"; then
-             case "$perm_rpath " in
-             *" $libdir "*) ;;
-             *) func_append perm_rpath " $libdir" ;;
-             esac
-           fi
-         done
-         # Substitute the hardcoded libdirs into the rpath.
-         if test -n "$hardcode_libdir_separator" &&
-            test -n "$hardcode_libdirs"; then
-           libdir="$hardcode_libdirs"
-           eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
-         fi
-         if test -n "$runpath_var" && test -n "$perm_rpath"; then
-           # We should set the runpath_var.
-           rpath=
-           for dir in $perm_rpath; do
-             func_append rpath "$dir:"
-           done
-           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
-         fi
-         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
-       fi
-
-       shlibpath="$finalize_shlibpath"
-       test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
-       if test -n "$shlibpath"; then
-         eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
-       fi
-
-       # Get the real and link names of the library.
-       eval shared_ext=\"$shrext_cmds\"
-       eval library_names=\"$library_names_spec\"
-       set dummy $library_names
-       shift
-       realname="$1"
-       shift
-
-       if test -n "$soname_spec"; then
-         eval soname=\"$soname_spec\"
-       else
-         soname="$realname"
-       fi
-       if test -z "$dlname"; then
-         dlname=$soname
-       fi
-
-       lib="$output_objdir/$realname"
-       linknames=
-       for link
-       do
-         func_append linknames " $link"
-       done
-
-       # Use standard objects if they are pic
-       test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-       test "X$libobjs" = "X " && libobjs=
-
-       delfiles=
-       if test -n "$export_symbols" && test -n "$include_expsyms"; then
-         $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-         export_symbols="$output_objdir/$libname.uexp"
-         func_append delfiles " $export_symbols"
-       fi
-
-       orig_export_symbols=
-       case $host_os in
-       cygwin* | mingw* | cegcc*)
-         if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
-           # exporting using user supplied symfile
-           if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
-             # and it's NOT already a .def file. Must figure out
-             # which of the given symbols are data symbols and tag
-             # them as such. So, trigger use of export_symbols_cmds.
-             # export_symbols gets reassigned inside the "prepare
-             # the list of exported symbols" if statement, so the
-             # include_expsyms logic still works.
-             orig_export_symbols="$export_symbols"
-             export_symbols=
-             always_export_symbols=yes
-           fi
-         fi
-         ;;
-       esac
-
-       # Prepare the list of exported symbols
-       if test -z "$export_symbols"; then
-         if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-           func_verbose "generating symbol list for \`$libname.la'"
-           export_symbols="$output_objdir/$libname.exp"
-           $opt_dry_run || $RM $export_symbols
-           cmds=$export_symbols_cmds
-           save_ifs="$IFS"; IFS='~'
-           for cmd1 in $cmds; do
-             IFS="$save_ifs"
-             # Take the normal branch if the nm_file_list_spec branch
-             # doesn't work or if tool conversion is not needed.
-             case $nm_file_list_spec~$to_tool_file_cmd in
-               *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
-                 try_normal_branch=yes
-                 eval cmd=\"$cmd1\"
-                 func_len " $cmd"
-                 len=$func_len_result
-                 ;;
-               *)
-                 try_normal_branch=no
-                 ;;
-             esac
-             if test "$try_normal_branch" = yes \
-                && { test "$len" -lt "$max_cmd_len" \
-                     || test "$max_cmd_len" -le -1; }
-             then
-               func_show_eval "$cmd" 'exit $?'
-               skipped_export=false
-             elif test -n "$nm_file_list_spec"; then
-               func_basename "$output"
-               output_la=$func_basename_result
-               save_libobjs=$libobjs
-               save_output=$output
-               output=${output_objdir}/${output_la}.nm
-               func_to_tool_file "$output"
-               libobjs=$nm_file_list_spec$func_to_tool_file_result
-               func_append delfiles " $output"
-               func_verbose "creating $NM input file list: $output"
-               for obj in $save_libobjs; do
-                 func_to_tool_file "$obj"
-                 $ECHO "$func_to_tool_file_result"
-               done > "$output"
-               eval cmd=\"$cmd1\"
-               func_show_eval "$cmd" 'exit $?'
-               output=$save_output
-               libobjs=$save_libobjs
-               skipped_export=false
-             else
-               # The command line is too long to execute in one step.
-               func_verbose "using reloadable object file for export list..."
-               skipped_export=:
-               # Break out early, otherwise skipped_export may be
-               # set to false by a later but shorter cmd.
-               break
-             fi
-           done
-           IFS="$save_ifs"
-           if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
-             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-           fi
-         fi
-       fi
-
-       if test -n "$export_symbols" && test -n "$include_expsyms"; then
-         tmp_export_symbols="$export_symbols"
-         test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-         $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-       fi
-
-       if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
-         # The given exports_symbols file has to be filtered, so filter it.
-         func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-         # FIXME: $output_objdir/$libname.filter potentially contains lots of
-         # 's' commands which not all seds can handle. GNU sed should be fine
-         # though. Also, the filter scales superlinearly with the number of
-         # global variables. join(1) would be nice here, but unfortunately
-         # isn't a blessed tool.
-         $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-         func_append delfiles " $export_symbols $output_objdir/$libname.filter"
-         export_symbols=$output_objdir/$libname.def
-         $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-       fi
-
-       tmp_deplibs=
-       for test_deplib in $deplibs; do
-         case " $convenience " in
-         *" $test_deplib "*) ;;
-         *)
-           func_append tmp_deplibs " $test_deplib"
-           ;;
-         esac
-       done
-       deplibs="$tmp_deplibs"
-
-       if test -n "$convenience"; then
-         if test -n "$whole_archive_flag_spec" &&
-           test "$compiler_needs_object" = yes &&
-           test -z "$libobjs"; then
-           # extract the archives, so we have objects to list.
-           # TODO: could optimize this to just extract one archive.
-           whole_archive_flag_spec=
-         fi
-         if test -n "$whole_archive_flag_spec"; then
-           save_libobjs=$libobjs
-           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-           test "X$libobjs" = "X " && libobjs=
-         else
-           gentop="$output_objdir/${outputname}x"
-           func_append generated " $gentop"
-
-           func_extract_archives $gentop $convenience
-           func_append libobjs " $func_extract_archives_result"
-           test "X$libobjs" = "X " && libobjs=
-         fi
-       fi
-
-       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
-         eval flag=\"$thread_safe_flag_spec\"
-         func_append linker_flags " $flag"
-       fi
-
-       # Make a backup of the uninstalled library when relinking
-       if test "$opt_mode" = relink; then
-         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
-       fi
-
-       # Do each of the archive commands.
-       if test "$module" = yes && test -n "$module_cmds" ; then
-         if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-           eval test_cmds=\"$module_expsym_cmds\"
-           cmds=$module_expsym_cmds
-         else
-           eval test_cmds=\"$module_cmds\"
-           cmds=$module_cmds
-         fi
-       else
-         if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-           eval test_cmds=\"$archive_expsym_cmds\"
-           cmds=$archive_expsym_cmds
-         else
-           eval test_cmds=\"$archive_cmds\"
-           cmds=$archive_cmds
-         fi
-       fi
-
-       if test "X$skipped_export" != "X:" &&
-          func_len " $test_cmds" &&
-          len=$func_len_result &&
-          test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-         :
-       else
-         # The command line is too long to link in one step, link piecewise
-         # or, if using GNU ld and skipped_export is not :, use a linker
-         # script.
-
-         # Save the value of $output and $libobjs because we want to
-         # use them later.  If we have whole_archive_flag_spec, we
-         # want to use save_libobjs as it was before
-         # whole_archive_flag_spec was expanded, because we can't
-         # assume the linker understands whole_archive_flag_spec.
-         # This may have to be revisited, in case too many
-         # convenience libraries get linked in and end up exceeding
-         # the spec.
-         if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
-           save_libobjs=$libobjs
-         fi
-         save_output=$output
-         func_basename "$output"
-         output_la=$func_basename_result
-
-         # Clear the reloadable object creation command queue and
-         # initialize k to one.
-         test_cmds=
-         concat_cmds=
-         objlist=
-         last_robj=
-         k=1
-
-         if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
-           output=${output_objdir}/${output_la}.lnkscript
-           func_verbose "creating GNU ld script: $output"
-           echo 'INPUT (' > $output
-           for obj in $save_libobjs
-           do
-             func_to_tool_file "$obj"
-             $ECHO "$func_to_tool_file_result" >> $output
-           done
-           echo ')' >> $output
-           func_append delfiles " $output"
-           func_to_tool_file "$output"
-           output=$func_to_tool_file_result
-         elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
-           output=${output_objdir}/${output_la}.lnk
-           func_verbose "creating linker input file list: $output"
-           : > $output
-           set x $save_libobjs
-           shift
-           firstobj=
-           if test "$compiler_needs_object" = yes; then
-             firstobj="$1 "
-             shift
-           fi
-           for obj
-           do
-             func_to_tool_file "$obj"
-             $ECHO "$func_to_tool_file_result" >> $output
-           done
-           func_append delfiles " $output"
-           func_to_tool_file "$output"
-           output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
-         else
-           if test -n "$save_libobjs"; then
-             func_verbose "creating reloadable object files..."
-             output=$output_objdir/$output_la-${k}.$objext
-             eval test_cmds=\"$reload_cmds\"
-             func_len " $test_cmds"
-             len0=$func_len_result
-             len=$len0
-
-             # Loop over the list of objects to be linked.
-             for obj in $save_libobjs
-             do
-               func_len " $obj"
-               func_arith $len + $func_len_result
-               len=$func_arith_result
-               if test "X$objlist" = X ||
-                  test "$len" -lt "$max_cmd_len"; then
-                 func_append objlist " $obj"
-               else
-                 # The command $test_cmds is almost too long, add a
-                 # command to the queue.
-                 if test "$k" -eq 1 ; then
-                   # The first file doesn't have a previous command to add.
-                   reload_objs=$objlist
-                   eval concat_cmds=\"$reload_cmds\"
-                 else
-                   # All subsequent reloadable object files will link in
-                   # the last one created.
-                   reload_objs="$objlist $last_robj"
-                   eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
-                 fi
-                 last_robj=$output_objdir/$output_la-${k}.$objext
-                 func_arith $k + 1
-                 k=$func_arith_result
-                 output=$output_objdir/$output_la-${k}.$objext
-                 objlist=" $obj"
-                 func_len " $last_robj"
-                 func_arith $len0 + $func_len_result
-                 len=$func_arith_result
-               fi
-             done
-             # Handle the remaining objects by creating one last
-             # reloadable object file.  All subsequent reloadable object
-             # files will link in the last one created.
-             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-             reload_objs="$objlist $last_robj"
-             eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
-             if test -n "$last_robj"; then
-               eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
-             fi
-             func_append delfiles " $output"
-
-           else
-             output=
-           fi
-
-           if ${skipped_export-false}; then
-             func_verbose "generating symbol list for \`$libname.la'"
-             export_symbols="$output_objdir/$libname.exp"
-             $opt_dry_run || $RM $export_symbols
-             libobjs=$output
-             # Append the command to create the export file.
-             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-             eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
-             if test -n "$last_robj"; then
-               eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
-             fi
-           fi
-
-           test -n "$save_libobjs" &&
-             func_verbose "creating a temporary reloadable object file: $output"
-
-           # Loop through the commands generated above and execute them.
-           save_ifs="$IFS"; IFS='~'
-           for cmd in $concat_cmds; do
-             IFS="$save_ifs"
-             $opt_silent || {
-                 func_quote_for_expand "$cmd"
-                 eval "func_echo $func_quote_for_expand_result"
-             }
-             $opt_dry_run || eval "$cmd" || {
-               lt_exit=$?
-
-               # Restore the uninstalled library and exit
-               if test "$opt_mode" = relink; then
-                 ( cd "$output_objdir" && \
-                   $RM "${realname}T" && \
-                   $MV "${realname}U" "$realname" )
-               fi
-
-               exit $lt_exit
-             }
-           done
-           IFS="$save_ifs"
-
-           if test -n "$export_symbols_regex" && ${skipped_export-false}; then
-             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-           fi
-         fi
-
-          if ${skipped_export-false}; then
-           if test -n "$export_symbols" && test -n "$include_expsyms"; then
-             tmp_export_symbols="$export_symbols"
-             test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-             $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-           fi
-
-           if test -n "$orig_export_symbols"; then
-             # The given exports_symbols file has to be filtered, so filter it.
-             func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-             # FIXME: $output_objdir/$libname.filter potentially contains lots of
-             # 's' commands which not all seds can handle. GNU sed should be fine
-             # though. Also, the filter scales superlinearly with the number of
-             # global variables. join(1) would be nice here, but unfortunately
-             # isn't a blessed tool.
-             $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-             func_append delfiles " $export_symbols $output_objdir/$libname.filter"
-             export_symbols=$output_objdir/$libname.def
-             $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-           fi
-         fi
-
-         libobjs=$output
-         # Restore the value of output.
-         output=$save_output
-
-         if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
-           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-           test "X$libobjs" = "X " && libobjs=
-         fi
-         # Expand the library linking commands again to reset the
-         # value of $libobjs for piecewise linking.
-
-         # Do each of the archive commands.
-         if test "$module" = yes && test -n "$module_cmds" ; then
-           if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-             cmds=$module_expsym_cmds
-           else
-             cmds=$module_cmds
-           fi
-         else
-           if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-             cmds=$archive_expsym_cmds
-           else
-             cmds=$archive_cmds
-           fi
-         fi
-       fi
-
-       if test -n "$delfiles"; then
-         # Append the command to remove temporary files to $cmds.
-         eval cmds=\"\$cmds~\$RM $delfiles\"
-       fi
-
-       # Add any objects from preloaded convenience libraries
-       if test -n "$dlprefiles"; then
-         gentop="$output_objdir/${outputname}x"
-         func_append generated " $gentop"
-
-         func_extract_archives $gentop $dlprefiles
-         func_append libobjs " $func_extract_archives_result"
-         test "X$libobjs" = "X " && libobjs=
-       fi
-
-       save_ifs="$IFS"; IFS='~'
-       for cmd in $cmds; do
-         IFS="$save_ifs"
-         eval cmd=\"$cmd\"
-         $opt_silent || {
-           func_quote_for_expand "$cmd"
-           eval "func_echo $func_quote_for_expand_result"
-         }
-         $opt_dry_run || eval "$cmd" || {
-           lt_exit=$?
-
-           # Restore the uninstalled library and exit
-           if test "$opt_mode" = relink; then
-             ( cd "$output_objdir" && \
-               $RM "${realname}T" && \
-               $MV "${realname}U" "$realname" )
-           fi
-
-           exit $lt_exit
-         }
-       done
-       IFS="$save_ifs"
-
-       # Restore the uninstalled library and exit
-       if test "$opt_mode" = relink; then
-         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
-         if test -n "$convenience"; then
-           if test -z "$whole_archive_flag_spec"; then
-             func_show_eval '${RM}r "$gentop"'
-           fi
-         fi
-
-         exit $EXIT_SUCCESS
-       fi
-
-       # Create links to the real library.
-       for linkname in $linknames; do
-         if test "$realname" != "$linkname"; then
-           func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
-         fi
-       done
-
-       # If -module or -export-dynamic was specified, set the dlname.
-       if test "$module" = yes || test "$export_dynamic" = yes; then
-         # On all known operating systems, these are identical.
-         dlname="$soname"
-       fi
-      fi
-      ;;
-
-    obj)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-       func_warning "\`-dlopen' is ignored for objects"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-       func_warning "\`-l' and \`-L' are ignored for objects" ;;
-      esac
-
-      test -n "$rpath" && \
-       func_warning "\`-rpath' is ignored for objects"
-
-      test -n "$xrpath" && \
-       func_warning "\`-R' is ignored for objects"
-
-      test -n "$vinfo" && \
-       func_warning "\`-version-info' is ignored for objects"
-
-      test -n "$release" && \
-       func_warning "\`-release' is ignored for objects"
-
-      case $output in
-      *.lo)
-       test -n "$objs$old_deplibs" && \
-         func_fatal_error "cannot build library object \`$output' from non-libtool objects"
-
-       libobj=$output
-       func_lo2o "$libobj"
-       obj=$func_lo2o_result
-       ;;
-      *)
-       libobj=
-       obj="$output"
-       ;;
-      esac
-
-      # Delete the old objects.
-      $opt_dry_run || $RM $obj $libobj
-
-      # Objects from convenience libraries.  This assumes
-      # single-version convenience libraries.  Whenever we create
-      # different ones for PIC/non-PIC, this we'll have to duplicate
-      # the extraction.
-      reload_conv_objs=
-      gentop=
-      # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec and hope we can get by with
-      # turning comma into space..
-      wl=
-
-      if test -n "$convenience"; then
-       if test -n "$whole_archive_flag_spec"; then
-         eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-         reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
-       else
-         gentop="$output_objdir/${obj}x"
-         func_append generated " $gentop"
-
-         func_extract_archives $gentop $convenience
-         reload_conv_objs="$reload_objs $func_extract_archives_result"
-       fi
-      fi
-
-      # If we're not building shared, we need to use non_pic_objs
-      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
-
-      # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
-      output="$obj"
-      func_execute_cmds "$reload_cmds" 'exit $?'
-
-      # Exit if we aren't doing a library object file.
-      if test -z "$libobj"; then
-       if test -n "$gentop"; then
-         func_show_eval '${RM}r "$gentop"'
-       fi
-
-       exit $EXIT_SUCCESS
-      fi
-
-      if test "$build_libtool_libs" != yes; then
-       if test -n "$gentop"; then
-         func_show_eval '${RM}r "$gentop"'
-       fi
-
-       # Create an invalid libtool object if no PIC, so that we don't
-       # accidentally link it into a program.
-       # $show "echo timestamp > $libobj"
-       # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
-       exit $EXIT_SUCCESS
-      fi
-
-      if test -n "$pic_flag" || test "$pic_mode" != default; then
-       # Only do commands if we really have different PIC objects.
-       reload_objs="$libobjs $reload_conv_objs"
-       output="$libobj"
-       func_execute_cmds "$reload_cmds" 'exit $?'
-      fi
-
-      if test -n "$gentop"; then
-       func_show_eval '${RM}r "$gentop"'
-      fi
-
-      exit $EXIT_SUCCESS
-      ;;
-
-    prog)
-      case $host in
-       *cygwin*) func_stripname '' '.exe' "$output"
-                 output=$func_stripname_result.exe;;
-      esac
-      test -n "$vinfo" && \
-       func_warning "\`-version-info' is ignored for programs"
-
-      test -n "$release" && \
-       func_warning "\`-release' is ignored for programs"
-
-      test "$preload" = yes \
-        && test "$dlopen_support" = unknown \
-       && test "$dlopen_self" = unknown \
-       && test "$dlopen_self_static" = unknown && \
-         func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
-
-      case $host in
-      *-*-rhapsody* | *-*-darwin1.[012])
-       # On Rhapsody replace the C library is the System framework
-       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
-       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
-       ;;
-      esac
-
-      case $host in
-      *-*-darwin*)
-       # Don't allow lazy linking, it breaks C++ global constructors
-       # But is supposedly fixed on 10.4 or later (yay!).
-       if test "$tagname" = CXX ; then
-         case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-           10.[0123])
-             func_append compile_command " ${wl}-bind_at_load"
-             func_append finalize_command " ${wl}-bind_at_load"
-           ;;
-         esac
-       fi
-       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       ;;
-      esac
-
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-       case " $new_libs " in
-       *" -L$path/$objdir "*) ;;
-       *)
-         case " $compile_deplibs " in
-         *" -L$path/$objdir "*)
-           func_append new_libs " -L$path/$objdir" ;;
-         esac
-         ;;
-       esac
-      done
-      for deplib in $compile_deplibs; do
-       case $deplib in
-       -L*)
-         case " $new_libs " in
-         *" $deplib "*) ;;
-         *) func_append new_libs " $deplib" ;;
-         esac
-         ;;
-       *) func_append new_libs " $deplib" ;;
-       esac
-      done
-      compile_deplibs="$new_libs"
-
-
-      func_append compile_command " $compile_deplibs"
-      func_append finalize_command " $finalize_deplibs"
-
-      if test -n "$rpath$xrpath"; then
-       # If the user specified any rpath flags, then add them.
-       for libdir in $rpath $xrpath; do
-         # This is the magic to use -rpath.
-         case "$finalize_rpath " in
-         *" $libdir "*) ;;
-         *) func_append finalize_rpath " $libdir" ;;
-         esac
-       done
-      fi
-
-      # Now hardcode the library paths
-      rpath=
-      hardcode_libdirs=
-      for libdir in $compile_rpath $finalize_rpath; do
-       if test -n "$hardcode_libdir_flag_spec"; then
-         if test -n "$hardcode_libdir_separator"; then
-           if test -z "$hardcode_libdirs"; then
-             hardcode_libdirs="$libdir"
-           else
-             # Just accumulate the unique libdirs.
-             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-               ;;
-             *)
-               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-               ;;
-             esac
-           fi
-         else
-           eval flag=\"$hardcode_libdir_flag_spec\"
-           func_append rpath " $flag"
-         fi
-       elif test -n "$runpath_var"; then
-         case "$perm_rpath " in
-         *" $libdir "*) ;;
-         *) func_append perm_rpath " $libdir" ;;
-         esac
-       fi
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-         testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
-         case :$dllsearchpath: in
-         *":$libdir:"*) ;;
-         ::) dllsearchpath=$libdir;;
-         *) func_append dllsearchpath ":$libdir";;
-         esac
-         case :$dllsearchpath: in
-         *":$testbindir:"*) ;;
-         ::) dllsearchpath=$testbindir;;
-         *) func_append dllsearchpath ":$testbindir";;
-         esac
-         ;;
-       esac
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-        test -n "$hardcode_libdirs"; then
-       libdir="$hardcode_libdirs"
-       eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      compile_rpath="$rpath"
-
-      rpath=
-      hardcode_libdirs=
-      for libdir in $finalize_rpath; do
-       if test -n "$hardcode_libdir_flag_spec"; then
-         if test -n "$hardcode_libdir_separator"; then
-           if test -z "$hardcode_libdirs"; then
-             hardcode_libdirs="$libdir"
-           else
-             # Just accumulate the unique libdirs.
-             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-               ;;
-             *)
-               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-               ;;
-             esac
-           fi
-         else
-           eval flag=\"$hardcode_libdir_flag_spec\"
-           func_append rpath " $flag"
-         fi
-       elif test -n "$runpath_var"; then
-         case "$finalize_perm_rpath " in
-         *" $libdir "*) ;;
-         *) func_append finalize_perm_rpath " $libdir" ;;
-         esac
-       fi
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-        test -n "$hardcode_libdirs"; then
-       libdir="$hardcode_libdirs"
-       eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      finalize_rpath="$rpath"
-
-      if test -n "$libobjs" && test "$build_old_libs" = yes; then
-       # Transform all the library objects into standard objects.
-       compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-       finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-      fi
-
-      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
-
-      # template prelinking step
-      if test -n "$prelink_cmds"; then
-       func_execute_cmds "$prelink_cmds" 'exit $?'
-      fi
-
-      wrappers_required=yes
-      case $host in
-      *cegcc* | *mingw32ce*)
-        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
-        wrappers_required=no
-        ;;
-      *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      *)
-        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      esac
-      if test "$wrappers_required" = no; then
-       # Replace the output file specification.
-       compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-       link_command="$compile_command$compile_rpath"
-
-       # We have no uninstalled library dependencies, so finalize right now.
-       exit_status=0
-       func_show_eval "$link_command" 'exit_status=$?'
-
-       if test -n "$postlink_cmds"; then
-         func_to_tool_file "$output"
-         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-         func_execute_cmds "$postlink_cmds" 'exit $?'
-       fi
-
-       # Delete the generated files.
-       if test -f "$output_objdir/${outputname}S.${objext}"; then
-         func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
-       fi
-
-       exit $exit_status
-      fi
-
-      if test -n "$compile_shlibpath$finalize_shlibpath"; then
-       compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
-      fi
-      if test -n "$finalize_shlibpath"; then
-       finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
-      fi
-
-      compile_var=
-      finalize_var=
-      if test -n "$runpath_var"; then
-       if test -n "$perm_rpath"; then
-         # We should set the runpath_var.
-         rpath=
-         for dir in $perm_rpath; do
-           func_append rpath "$dir:"
-         done
-         compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
-       fi
-       if test -n "$finalize_perm_rpath"; then
-         # We should set the runpath_var.
-         rpath=
-         for dir in $finalize_perm_rpath; do
-           func_append rpath "$dir:"
-         done
-         finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
-       fi
-      fi
-
-      if test "$no_install" = yes; then
-       # We don't need to create a wrapper script.
-       link_command="$compile_var$compile_command$compile_rpath"
-       # Replace the output file specification.
-       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-       # Delete the old output file.
-       $opt_dry_run || $RM $output
-       # Link the executable and exit
-       func_show_eval "$link_command" 'exit $?'
-
-       if test -n "$postlink_cmds"; then
-         func_to_tool_file "$output"
-         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-         func_execute_cmds "$postlink_cmds" 'exit $?'
-       fi
-
-       exit $EXIT_SUCCESS
-      fi
-
-      if test "$hardcode_action" = relink; then
-       # Fast installation is not supported
-       link_command="$compile_var$compile_command$compile_rpath"
-       relink_command="$finalize_var$finalize_command$finalize_rpath"
-
-       func_warning "this platform does not like uninstalled shared libraries"
-       func_warning "\`$output' will be relinked during installation"
-      else
-       if test "$fast_install" != no; then
-         link_command="$finalize_var$compile_command$finalize_rpath"
-         if test "$fast_install" = yes; then
-           relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
-         else
-           # fast_install is set to needless
-           relink_command=
-         fi
-       else
-         link_command="$compile_var$compile_command$compile_rpath"
-         relink_command="$finalize_var$finalize_command$finalize_rpath"
-       fi
-      fi
-
-      # Replace the output file specification.
-      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
-      # Delete the old output files.
-      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
-      func_show_eval "$link_command" 'exit $?'
-
-      if test -n "$postlink_cmds"; then
-       func_to_tool_file "$output_objdir/$outputname"
-       postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-       func_execute_cmds "$postlink_cmds" 'exit $?'
-      fi
-
-      # Now create the wrapper script.
-      func_verbose "creating $output"
-
-      # Quote the relink command for shipping.
-      if test -n "$relink_command"; then
-       # Preserve any variables that may affect compiler behavior
-       for var in $variables_saved_for_relink; do
-         if eval test -z \"\${$var+set}\"; then
-           relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-         elif eval var_value=\$$var; test -z "$var_value"; then
-           relink_command="$var=; export $var; $relink_command"
-         else
-           func_quote_for_eval "$var_value"
-           relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-         fi
-       done
-       relink_command="(cd `pwd`; $relink_command)"
-       relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-      fi
-
-      # Only actually do things if not in dry run mode.
-      $opt_dry_run || {
-       # win32 will think the script is a binary if it has
-       # a .exe suffix, so we strip it off here.
-       case $output in
-         *.exe) func_stripname '' '.exe' "$output"
-                output=$func_stripname_result ;;
-       esac
-       # test for cygwin because mv fails w/o .exe extensions
-       case $host in
-         *cygwin*)
-           exeext=.exe
-           func_stripname '' '.exe' "$outputname"
-           outputname=$func_stripname_result ;;
-         *) exeext= ;;
-       esac
-       case $host in
-         *cygwin* | *mingw* )
-           func_dirname_and_basename "$output" "" "."
-           output_name=$func_basename_result
-           output_path=$func_dirname_result
-           cwrappersource="$output_path/$objdir/lt-$output_name.c"
-           cwrapper="$output_path/$output_name.exe"
-           $RM $cwrappersource $cwrapper
-           trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
-
-           func_emit_cwrapperexe_src > $cwrappersource
-
-           # The wrapper executable is built using the $host compiler,
-           # because it contains $host paths and files. If cross-
-           # compiling, it, like the target executable, must be
-           # executed on the $host or under an emulation environment.
-           $opt_dry_run || {
-             $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
-             $STRIP $cwrapper
-           }
-
-           # Now, create the wrapper script for func_source use:
-           func_ltwrapper_scriptname $cwrapper
-           $RM $func_ltwrapper_scriptname_result
-           trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
-           $opt_dry_run || {
-             # note: this script will not be executed, so do not chmod.
-             if test "x$build" = "x$host" ; then
-               $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
-             else
-               func_emit_wrapper no > $func_ltwrapper_scriptname_result
-             fi
-           }
-         ;;
-         * )
-           $RM $output
-           trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
-           func_emit_wrapper no > $output
-           chmod +x $output
-         ;;
-       esac
-      }
-      exit $EXIT_SUCCESS
-      ;;
-    esac
-
-    # See if we need to build an old-fashioned archive.
-    for oldlib in $oldlibs; do
-
-      if test "$build_libtool_libs" = convenience; then
-       oldobjs="$libobjs_save $symfileobj"
-       addlibs="$convenience"
-       build_libtool_libs=no
-      else
-       if test "$build_libtool_libs" = module; then
-         oldobjs="$libobjs_save"
-         build_libtool_libs=no
-       else
-         oldobjs="$old_deplibs $non_pic_objects"
-         if test "$preload" = yes && test -f "$symfileobj"; then
-           func_append oldobjs " $symfileobj"
-         fi
-       fi
-       addlibs="$old_convenience"
-      fi
-
-      if test -n "$addlibs"; then
-       gentop="$output_objdir/${outputname}x"
-       func_append generated " $gentop"
-
-       func_extract_archives $gentop $addlibs
-       func_append oldobjs " $func_extract_archives_result"
-      fi
-
-      # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
-       cmds=$old_archive_from_new_cmds
-      else
-
-       # Add any objects from preloaded convenience libraries
-       if test -n "$dlprefiles"; then
-         gentop="$output_objdir/${outputname}x"
-         func_append generated " $gentop"
-
-         func_extract_archives $gentop $dlprefiles
-         func_append oldobjs " $func_extract_archives_result"
-       fi
-
-       # POSIX demands no paths to be encoded in archives.  We have
-       # to avoid creating archives with duplicate basenames if we
-       # might have to extract them afterwards, e.g., when creating a
-       # static archive out of a convenience library, or when linking
-       # the entirety of a libtool archive into another (currently
-       # not supported by libtool).
-       if (for obj in $oldobjs
-           do
-             func_basename "$obj"
-             $ECHO "$func_basename_result"
-           done | sort | sort -uc >/dev/null 2>&1); then
-         :
-       else
-         echo "copying selected object files to avoid basename conflicts..."
-         gentop="$output_objdir/${outputname}x"
-         func_append generated " $gentop"
-         func_mkdir_p "$gentop"
-         save_oldobjs=$oldobjs
-         oldobjs=
-         counter=1
-         for obj in $save_oldobjs
-         do
-           func_basename "$obj"
-           objbase="$func_basename_result"
-           case " $oldobjs " in
-           " ") oldobjs=$obj ;;
-           *[\ /]"$objbase "*)
-             while :; do
-               # Make sure we don't pick an alternate name that also
-               # overlaps.
-               newobj=lt$counter-$objbase
-               func_arith $counter + 1
-               counter=$func_arith_result
-               case " $oldobjs " in
-               *[\ /]"$newobj "*) ;;
-               *) if test ! -f "$gentop/$newobj"; then break; fi ;;
-               esac
-             done
-             func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-             func_append oldobjs " $gentop/$newobj"
-             ;;
-           *) func_append oldobjs " $obj" ;;
-           esac
-         done
-       fi
-       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-       tool_oldlib=$func_to_tool_file_result
-       eval cmds=\"$old_archive_cmds\"
-
-       func_len " $cmds"
-       len=$func_len_result
-       if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-         cmds=$old_archive_cmds
-       elif test -n "$archiver_list_spec"; then
-         func_verbose "using command file archive linking..."
-         for obj in $oldobjs
-         do
-           func_to_tool_file "$obj"
-           $ECHO "$func_to_tool_file_result"
-         done > $output_objdir/$libname.libcmd
-         func_to_tool_file "$output_objdir/$libname.libcmd"
-         oldobjs=" $archiver_list_spec$func_to_tool_file_result"
-         cmds=$old_archive_cmds
-       else
-         # the command line is too long to link in one step, link in parts
-         func_verbose "using piecewise archive linking..."
-         save_RANLIB=$RANLIB
-         RANLIB=:
-         objlist=
-         concat_cmds=
-         save_oldobjs=$oldobjs
-         oldobjs=
-         # Is there a better way of finding the last object in the list?
-         for obj in $save_oldobjs
-         do
-           last_oldobj=$obj
-         done
-         eval test_cmds=\"$old_archive_cmds\"
-         func_len " $test_cmds"
-         len0=$func_len_result
-         len=$len0
-         for obj in $save_oldobjs
-         do
-           func_len " $obj"
-           func_arith $len + $func_len_result
-           len=$func_arith_result
-           func_append objlist " $obj"
-           if test "$len" -lt "$max_cmd_len"; then
-             :
-           else
-             # the above command should be used before it gets too long
-             oldobjs=$objlist
-             if test "$obj" = "$last_oldobj" ; then
-               RANLIB=$save_RANLIB
-             fi
-             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-             eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
-             objlist=
-             len=$len0
-           fi
-         done
-         RANLIB=$save_RANLIB
-         oldobjs=$objlist
-         if test "X$oldobjs" = "X" ; then
-           eval cmds=\"\$concat_cmds\"
-         else
-           eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
-         fi
-       fi
-      fi
-      func_execute_cmds "$cmds" 'exit $?'
-    done
-
-    test -n "$generated" && \
-      func_show_eval "${RM}r$generated"
-
-    # Now create the libtool archive.
-    case $output in
-    *.la)
-      old_library=
-      test "$build_old_libs" = yes && old_library="$libname.$libext"
-      func_verbose "creating $output"
-
-      # Preserve any variables that may affect compiler behavior
-      for var in $variables_saved_for_relink; do
-       if eval test -z \"\${$var+set}\"; then
-         relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-       elif eval var_value=\$$var; test -z "$var_value"; then
-         relink_command="$var=; export $var; $relink_command"
-       else
-         func_quote_for_eval "$var_value"
-         relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-       fi
-      done
-      # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-      if test "$hardcode_automatic" = yes ; then
-       relink_command=
-      fi
-
-      # Only create the output if not a dry run.
-      $opt_dry_run || {
-       for installed in no yes; do
-         if test "$installed" = yes; then
-           if test -z "$install_libdir"; then
-             break
-           fi
-           output="$output_objdir/$outputname"i
-           # Replace all uninstalled libtool libraries with the installed ones
-           newdependency_libs=
-           for deplib in $dependency_libs; do
-             case $deplib in
-             *.la)
-               func_basename "$deplib"
-               name="$func_basename_result"
-               func_resolve_sysroot "$deplib"
-               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
-               test -z "$libdir" && \
-                 func_fatal_error "\`$deplib' is not a valid libtool archive"
-               func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
-               ;;
-             -L*)
-               func_stripname -L '' "$deplib"
-               func_replace_sysroot "$func_stripname_result"
-               func_append newdependency_libs " -L$func_replace_sysroot_result"
-               ;;
-             -R*)
-               func_stripname -R '' "$deplib"
-               func_replace_sysroot "$func_stripname_result"
-               func_append newdependency_libs " -R$func_replace_sysroot_result"
-               ;;
-             *) func_append newdependency_libs " $deplib" ;;
-             esac
-           done
-           dependency_libs="$newdependency_libs"
-           newdlfiles=
-
-           for lib in $dlfiles; do
-             case $lib in
-             *.la)
-               func_basename "$lib"
-               name="$func_basename_result"
-               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-               test -z "$libdir" && \
-                 func_fatal_error "\`$lib' is not a valid libtool archive"
-               func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
-               ;;
-             *) func_append newdlfiles " $lib" ;;
-             esac
-           done
-           dlfiles="$newdlfiles"
-           newdlprefiles=
-           for lib in $dlprefiles; do
-             case $lib in
-             *.la)
-               # Only pass preopened files to the pseudo-archive (for
-               # eventual linking with the app. that links it) if we
-               # didn't already link the preopened objects directly into
-               # the library:
-               func_basename "$lib"
-               name="$func_basename_result"
-               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-               test -z "$libdir" && \
-                 func_fatal_error "\`$lib' is not a valid libtool archive"
-               func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
-               ;;
-             esac
-           done
-           dlprefiles="$newdlprefiles"
-         else
-           newdlfiles=
-           for lib in $dlfiles; do
-             case $lib in
-               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-               *) abs=`pwd`"/$lib" ;;
-             esac
-             func_append newdlfiles " $abs"
-           done
-           dlfiles="$newdlfiles"
-           newdlprefiles=
-           for lib in $dlprefiles; do
-             case $lib in
-               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-               *) abs=`pwd`"/$lib" ;;
-             esac
-             func_append newdlprefiles " $abs"
-           done
-           dlprefiles="$newdlprefiles"
-         fi
-         $RM $output
-         # place dlname in correct position for cygwin
-         # In fact, it would be nice if we could use this code for all target
-         # systems that can't hard-code library paths into their executables
-         # and that have no shared library path variable independent of PATH,
-         # but it turns out we can't easily determine that from inspecting
-         # libtool variables, so we have to hard-code the OSs to which it
-         # applies here; at the moment, that means platforms that use the PE
-         # object format with DLL files.  See the long comment at the top of
-         # tests/bindir.at for full details.
-         tdlname=$dlname
-         case $host,$output,$installed,$module,$dlname in
-           *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
-             # If a -bindir argument was supplied, place the dll there.
-             if test "x$bindir" != x ;
-             then
-               func_relative_path "$install_libdir" "$bindir"
-               tdlname=$func_relative_path_result$dlname
-             else
-               # Otherwise fall back on heuristic.
-               tdlname=../bin/$dlname
-             fi
-             ;;
-         esac
-         $ECHO > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags='$new_inherited_linker_flags'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Names of additional weak libraries provided by this library
-weak_library_names='$weak_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=$module
-
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
-         if test "$installed" = no && test "$need_relink" = yes; then
-           $ECHO >> $output "\
-relink_command=\"$relink_command\""
-         fi
-       done
-      }
-
-      # Do a symbolic link so that the libtool archive can be found in
-      # LD_LIBRARY_PATH before the program is installed.
-      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
-      ;;
-    esac
-    exit $EXIT_SUCCESS
-}
-
-{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
-    func_mode_link ${1+"$@"}
-
-
-# func_mode_uninstall arg...
-func_mode_uninstall ()
-{
-    $opt_debug
-    RM="$nonopt"
-    files=
-    rmforce=
-    exit_status=0
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    for arg
-    do
-      case $arg in
-      -f) func_append RM " $arg"; rmforce=yes ;;
-      -*) func_append RM " $arg" ;;
-      *) func_append files " $arg" ;;
-      esac
-    done
-
-    test -z "$RM" && \
-      func_fatal_help "you must specify an RM program"
-
-    rmdirs=
-
-    for file in $files; do
-      func_dirname "$file" "" "."
-      dir="$func_dirname_result"
-      if test "X$dir" = X.; then
-       odir="$objdir"
-      else
-       odir="$dir/$objdir"
-      fi
-      func_basename "$file"
-      name="$func_basename_result"
-      test "$opt_mode" = uninstall && odir="$dir"
-
-      # Remember odir for removal later, being careful to avoid duplicates
-      if test "$opt_mode" = clean; then
-       case " $rmdirs " in
-         *" $odir "*) ;;
-         *) func_append rmdirs " $odir" ;;
-       esac
-      fi
-
-      # Don't error if the file doesn't exist and rm -f was used.
-      if { test -L "$file"; } >/dev/null 2>&1 ||
-        { test -h "$file"; } >/dev/null 2>&1 ||
-        test -f "$file"; then
-       :
-      elif test -d "$file"; then
-       exit_status=1
-       continue
-      elif test "$rmforce" = yes; then
-       continue
-      fi
-
-      rmfiles="$file"
-
-      case $name in
-      *.la)
-       # Possibly a libtool archive, so verify it.
-       if func_lalib_p "$file"; then
-         func_source $dir/$name
-
-         # Delete the libtool libraries and symlinks.
-         for n in $library_names; do
-           func_append rmfiles " $odir/$n"
-         done
-         test -n "$old_library" && func_append rmfiles " $odir/$old_library"
-
-         case "$opt_mode" in
-         clean)
-           case " $library_names " in
-           *" $dlname "*) ;;
-           *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
-           esac
-           test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
-           ;;
-         uninstall)
-           if test -n "$library_names"; then
-             # Do each command in the postuninstall commands.
-             func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-           fi
-
-           if test -n "$old_library"; then
-             # Do each command in the old_postuninstall commands.
-             func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-           fi
-           # FIXME: should reinstall the best remaining shared library.
-           ;;
-         esac
-       fi
-       ;;
-
-      *.lo)
-       # Possibly a libtool object, so verify it.
-       if func_lalib_p "$file"; then
-
-         # Read the .lo file
-         func_source $dir/$name
-
-         # Add PIC object to the list of files to remove.
-         if test -n "$pic_object" &&
-            test "$pic_object" != none; then
-           func_append rmfiles " $dir/$pic_object"
-         fi
-
-         # Add non-PIC object to the list of files to remove.
-         if test -n "$non_pic_object" &&
-            test "$non_pic_object" != none; then
-           func_append rmfiles " $dir/$non_pic_object"
-         fi
-       fi
-       ;;
-
-      *)
-       if test "$opt_mode" = clean ; then
-         noexename=$name
-         case $file in
-         *.exe)
-           func_stripname '' '.exe' "$file"
-           file=$func_stripname_result
-           func_stripname '' '.exe' "$name"
-           noexename=$func_stripname_result
-           # $file with .exe has already been added to rmfiles,
-           # add $file without .exe
-           func_append rmfiles " $file"
-           ;;
-         esac
-         # Do a test to see if this is a libtool program.
-         if func_ltwrapper_p "$file"; then
-           if func_ltwrapper_executable_p "$file"; then
-             func_ltwrapper_scriptname "$file"
-             relink_command=
-             func_source $func_ltwrapper_scriptname_result
-             func_append rmfiles " $func_ltwrapper_scriptname_result"
-           else
-             relink_command=
-             func_source $dir/$noexename
-           fi
-
-           # note $name still contains .exe if it was in $file originally
-           # as does the version of $file that was added into $rmfiles
-           func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
-           if test "$fast_install" = yes && test -n "$relink_command"; then
-             func_append rmfiles " $odir/lt-$name"
-           fi
-           if test "X$noexename" != "X$name" ; then
-             func_append rmfiles " $odir/lt-${noexename}.c"
-           fi
-         fi
-       fi
-       ;;
-      esac
-      func_show_eval "$RM $rmfiles" 'exit_status=1'
-    done
-
-    # Try to remove the ${objdir}s in the directories where we deleted files
-    for dir in $rmdirs; do
-      if test -d "$dir"; then
-       func_show_eval "rmdir $dir >/dev/null 2>&1"
-      fi
-    done
-
-    exit $exit_status
-}
-
-{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
-    func_mode_uninstall ${1+"$@"}
-
-test -z "$opt_mode" && {
-  help="$generic_help"
-  func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$opt_mode'"
-
-if test -n "$exec_cmd"; then
-  eval exec "$exec_cmd"
-  exit $EXIT_FAILURE
-fi
-
-exit $exit_status
-
-
-# The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries.  Given conflicting
-# choices, we go for a static library, that is the most portable,
-# since we can't tell whether shared libraries were disabled because
-# the user asked for that or because the platform doesn't support
-# them.  This is particularly important on AIX, because we don't
-# support having both static and shared libraries enabled at the same
-# time on that platform, so we default to a shared-only configuration.
-# If a disable-shared tag is given, we'll fallback to a static-only
-# configuration.  But we'll never go from static-only to shared-only.
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
-# ### END LIBTOOL TAG CONFIG: disable-shared
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-# ### END LIBTOOL TAG CONFIG: disable-static
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
-# vi:sw=2
-
diff --git a/polly/lib/External/ppcg/m4/ax_check_opencl.m4 b/polly/lib/External/ppcg/m4/ax_check_opencl.m4
deleted file mode 100644 (file)
index 814bbb6..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# Check if OpenCL is available and that it supports a CPU device.
-# The check for a CPU device is the same check that is performed
-# by opencl_create_device in ocl_utilities.c
-AC_DEFUN([AX_CHECK_OPENCL], [
-       AC_SUBST(HAVE_OPENCL)
-       HAVE_OPENCL=no
-       AC_CHECK_HEADER([CL/opencl.h], [
-               AC_CHECK_LIB([OpenCL], [clGetPlatformIDs], [
-                       SAVE_LIBS=$LIBS
-                       LIBS="$LIBS -lOpenCL"
-                       AC_MSG_CHECKING([for OpenCL CPU device])
-                       AC_RUN_IFELSE([AC_LANG_PROGRAM(
-                               [[#include <CL/opencl.h>]], [[
-       cl_platform_id platform;
-       cl_device_id dev;
-
-       if (clGetPlatformIDs(1, &platform, NULL) < 0)
-               return 1;
-       if (clGetDeviceIDs(platform, CL_DEVICE_TYPE_CPU, 1, &dev, NULL) < 0)
-               return 1;
-                               ]])], [HAVE_OPENCL=yes])
-                       AC_MSG_RESULT($HAVE_OPENCL)
-                       LIBS=$SAVE_LIBS
-                       ])])
-])
diff --git a/polly/lib/External/ppcg/m4/ax_check_openmp.m4 b/polly/lib/External/ppcg/m4/ax_check_openmp.m4
deleted file mode 100644 (file)
index 509861e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# Check if $CC supports openmp.
-AC_DEFUN([AX_CHECK_OPENMP], [
-       AC_SUBST(HAVE_OPENMP)
-       HAVE_OPENMP=no
-       AC_MSG_CHECKING([for OpenMP support by $CC])
-       echo | $CC -x c - -fsyntax-only -fopenmp -Werror >/dev/null 2>/dev/null
-       if test $? -eq 0; then
-               HAVE_OPENMP=yes
-       fi
-])
diff --git a/polly/lib/External/ppcg/m4/ax_detect_git_head.m4 b/polly/lib/External/ppcg/m4/ax_detect_git_head.m4
deleted file mode 100644 (file)
index 5657da8..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-AC_DEFUN([AX_DETECT_GIT_HEAD], [
-       AC_SUBST(GIT_HEAD_ID)
-       AC_SUBST(GIT_HEAD)
-       AC_SUBST(GIT_HEAD_VERSION)
-       if test -f $srcdir/.git/HEAD; then
-               GIT_HEAD="$srcdir/.git/index"
-               GIT_REPO="$srcdir/.git"
-               GIT_HEAD_ID=`GIT_DIR=$GIT_REPO git describe --always`
-       elif test -f $srcdir/GIT_HEAD_ID; then
-               GIT_HEAD_ID=`cat $srcdir/GIT_HEAD_ID`
-       else
-               mysrcdir=`(cd $srcdir; pwd)`
-               head=`basename $mysrcdir | sed -e 's/.*-//'`
-               head2=`echo $head | sed -e 's/[^0-9a-f]//'`
-               head3=`echo $head2 | sed -e 's/........................................//'`
-               if test "x$head3" = "x" -a "x$head" = "x$head2"; then
-                       GIT_HEAD_ID="$head"
-               else
-                       GIT_HEAD_ID="UNKNOWN"
-               fi
-       fi
-       if test -z "$GIT_REPO" ; then
-               GIT_HEAD_VERSION="$GIT_HEAD_ID"
-       else
-               GIT_HEAD_VERSION="\`GIT_DIR=$GIT_REPO git describe --always\`"
-       fi
-])
diff --git a/polly/lib/External/ppcg/m4/ax_submodule.m4 b/polly/lib/External/ppcg/m4/ax_submodule.m4
deleted file mode 100644 (file)
index 8129312..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-AC_DEFUN([_AX_SUBMODULE],
-[
-
-m4_if(m4_bregexp($3,|,choice),choice,
-       [AC_ARG_WITH($2,
-               [AS_HELP_STRING([--with-$1=$3],
-                               [Which $1 to use [default=$4]])])])
-case "system" in
-$3)
-       AC_ARG_WITH($2_prefix,
-                   [AS_HELP_STRING([--with-$1-prefix=DIR],
-                                   [Prefix of $1 installation])])
-       AC_ARG_WITH($2_exec_prefix,
-                   [AS_HELP_STRING([--with-$1-exec-prefix=DIR],
-                                   [Exec prefix of $1 installation])])
-esac
-m4_if(m4_bregexp($3,build,build),build,
-       [AC_ARG_WITH($2_builddir,
-               [AS_HELP_STRING([--with-$1-builddir=DIR],
-                               [Location of $1 builddir])])])
-if test "x$with_$2_prefix" != "x" -a "x$with_$2_exec_prefix" = "x"; then
-       with_$2_exec_prefix=$with_$2_prefix
-fi
-if test "x$with_$2_prefix" != "x" -o "x$with_$2_exec_prefix" != "x"; then
-       if test "x$with_$2" != "x" -a "x$with_$2" != "xsystem"; then
-               AC_MSG_ERROR([Setting $with_$2_prefix implies use of system $1])
-       fi
-       with_$2="system"
-fi
-if test "x$with_$2_builddir" != "x"; then
-       if test "x$with_$2" != "x" -a "x$with_$2" != "xbuild"; then
-               AC_MSG_ERROR([Setting $with_$2_builddir implies use of build $1])
-       fi
-       with_$2="build"
-       $2_srcdir=`echo @abs_srcdir@ | $with_$2_builddir/config.status --file=-`
-       AC_MSG_NOTICE($1 sources in $$2_srcdir)
-fi
-if test "x$with_$2_exec_prefix" != "x"; then
-       export PKG_CONFIG_PATH="$with_$2_exec_prefix/lib/pkgconfig${PKG_CONFIG_PATH+:$PKG_CONFIG_PATH}"
-fi
-case "$with_$2" in
-$3)
-       ;;
-*)
-       case "$4" in
-       bundled)
-               if test -d $srcdir/.git -a \
-                       -d $srcdir/$1 -a \
-                       "`cd $srcdir; git submodule status $1 | cut -c1`" = '-'; then
-                       AC_MSG_WARN([git repo detected, but submodule $1 not initialized])
-                       AC_MSG_WARN([You may want to run])
-                       AC_MSG_WARN([   git submodule init])
-                       AC_MSG_WARN([   git submodule update])
-                       AC_MSG_WARN([   sh autogen.sh])
-               fi
-               if test -f $srcdir/$1/configure; then
-                       with_$2="bundled"
-               else
-                       case "system" in
-                       $3)
-                               with_$2="system"
-                               ;;
-                       *)
-                               with_$2="no"
-                               ;;
-                       esac
-               fi
-               ;;
-       *)
-               with_$2="$4"
-               ;;
-       esac
-       ;;
-esac
-AC_MSG_CHECKING([which $1 to use])
-AC_MSG_RESULT($with_$2)
-
-])
-
-AC_DEFUN([AX_SUBMODULE], [
-       _AX_SUBMODULE($1, m4_bpatsubst([$1],
-                       [[^_abcdefghijklmnopqrstuvwxyz0123456789]],[_]), $2, $3)
-])
diff --git a/polly/lib/External/ppcg/m4/libtool.m4 b/polly/lib/External/ppcg/m4/libtool.m4
deleted file mode 100644 (file)
index 02b4bbe..0000000
+++ /dev/null
@@ -1,7991 +0,0 @@
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-m4_define([_LT_COPYING], [dnl
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that 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 GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-])
-
-# serial 57 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-m4_defun([LT_PREREQ],
-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
-       [m4_default([$3],
-                  [m4_fatal([Libtool version $1 or higher is required],
-                            63)])],
-       [$2])])
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-m4_defun([_LT_CHECK_BUILDDIR],
-[case `pwd` in
-  *\ * | *\    *)
-    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
-esac
-])
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])# LT_INIT
-
-# Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-])
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
-m4_defun([_LT_FILEUTILS_DEFAULTS],
-[: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-])# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-m4_defun([_LT_SETUP],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
-
-_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
-dnl
-_LT_DECL([], [host_alias], [0], [The host system])dnl
-_LT_DECL([], [host], [0])dnl
-_LT_DECL([], [host_os], [0])dnl
-dnl
-_LT_DECL([], [build_alias], [0], [The build system])dnl
-_LT_DECL([], [build], [0])dnl
-_LT_DECL([], [build_os], [0])dnl
-dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-test -z "$LN_S" && LN_S="ln -s"
-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
-dnl
-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
-dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
-m4_require([_LT_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_WITH_SYSROOT])dnl
-
-_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-])
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-_LT_CHECK_OBJDIR
-
-m4_require([_LT_TAG_COMPILER])dnl
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    _LT_PATH_MAGIC
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-LT_SUPPORTED_TAG([CC])
-_LT_LANG_C_CONFIG
-_LT_LANG_DEFAULT_CONFIG
-_LT_CONFIG_COMMANDS
-])# _LT_SETUP
-
-
-# _LT_PREPARE_SED_QUOTE_VARS
-# --------------------------
-# Define a few sed substitution that help us do robust quoting.
-m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
-[# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-])
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from `configure', and `config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-m4_defun([_LT_PROG_LTMAIN],
-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
-])# _LT_PROG_LTMAIN
-
-
-## ------------------------------------- ##
-## Accumulate code for creating libtool. ##
-## ------------------------------------- ##
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL_INIT],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
-[_LT_CONFIG_LIBTOOL([$1])
-_LT_CONFIG_LIBTOOL_INIT([$2])
-])
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-m4_define([_LT_FORMAT_COMMENT],
-[m4_ifval([$1], [
-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
-              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
-)])
-
-
-
-## ------------------------ ##
-## FIXME: Eliminate VARNAME ##
-## ------------------------ ##
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME.  Any other value will be used directly.
-m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
-    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
-       [m4_ifval([$1], [$1], [$2])])
-    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
-    m4_ifval([$4],
-       [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
-    lt_dict_add_subkey([lt_decl_dict], [$2],
-       [tagged?], [m4_ifval([$5], [yes], [no])])])
-])
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_tag_varnames],
-[_lt_decl_filter([tagged?], [yes], $@)])
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-m4_define([_lt_decl_filter],
-[m4_case([$#],
-  [0], [m4_fatal([$0: too few arguments: $#])],
-  [1], [m4_fatal([$0: too few arguments: $#: $1])],
-  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
-  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
-  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
-])
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-m4_define([lt_decl_quote_varnames],
-[_lt_decl_filter([value], [1], $@)])
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_dquote_varnames],
-[_lt_decl_filter([value], [2], $@)])
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_varnames_tagged],
-[m4_assert([$# <= 2])dnl
-_$0(m4_quote(m4_default([$1], [[, ]])),
-    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
-    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
-m4_define([_lt_decl_varnames_tagged],
-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_all_varnames],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
-     m4_if([$2], [],
-          m4_quote(lt_decl_varnames),
-       m4_quote(m4_shift($@))))[]dnl
-])
-m4_define([_lt_decl_all_varnames],
-[lt_join($@, lt_decl_varnames_tagged([$1],
-                       lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
-])
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'.  VARNAME
-# must have a single quote delimited value for this to work.
-m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly.  In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
-    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-m4_defun([_LT_LIBTOOL_TAGS],
-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
-])
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-#    # Some comment about what VAR is for.
-#    visible_name=$lt_internal_name
-m4_define([_LT_LIBTOOL_DECLARE],
-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
-                                          [description])))[]dnl
-m4_pushdef([_libtool_name],
-    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
-    [0], [_libtool_name=[$]$1],
-    [1], [_libtool_name=$lt_[]$1],
-    [2], [_libtool_name=$lt_[]$1],
-    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
-])
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
-# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
-[m4_foreach([_lt_var],
-    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-m4_define([_LT_LIBTOOL_TAG_VARS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'.  Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-m4_defun([_LT_CONFIG_COMMANDS],
-[AC_PROVIDE_IFELSE([LT_OUTPUT],
-       dnl If the libtool generation code has been placed in $CONFIG_LT,
-       dnl instead of duplicating it all over again into config.status,
-       dnl then we will have config.status run $CONFIG_LT later, so it
-       dnl needs to know what name is stored there:
-        [AC_CONFIG_COMMANDS([libtool],
-            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
-    dnl If the libtool generation code is destined for config.status,
-    dnl expand the accumulated commands and init code now:
-    [AC_CONFIG_COMMANDS([libtool],
-        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
-])#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
-[
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-_LT_CONFIG_STATUS_DECLARATIONS
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$[]1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-_LT_OUTPUT_LIBTOOL_INIT
-])
-
-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
-# ------------------------------------
-# Generate a child script FILE with all initialization necessary to
-# reuse the environment learned by the parent script, and make the
-# file executable.  If COMMENT is supplied, it is inserted after the
-# `#!' sequence but before initialization text begins.  After this
-# macro, additional text can be appended to FILE to form the body of
-# the child script.  The macro ends with non-zero status if the
-# file could not be fully written (such as if the disk is full).
-m4_ifdef([AS_INIT_GENERATED],
-[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
-[m4_defun([_LT_GENERATED_FILE_INIT],
-[m4_require([AS_PREPARE])]dnl
-[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
-[lt_write_fail=0
-cat >$1 <<_ASEOF || lt_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-$2
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$1 <<\_ASEOF || lt_write_fail=1
-AS_SHELL_SANITIZE
-_AS_PREPARE
-exec AS_MESSAGE_FD>&1
-_ASEOF
-test $lt_write_fail = 0 && chmod +x $1[]dnl
-m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-AC_DEFUN([LT_OUTPUT],
-[: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
-[# Run this file to recreate a libtool stub with the current configuration.])
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-lt_cl_silent=false
-exec AS_MESSAGE_LOG_FD>>config.log
-{
-  echo
-  AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool@gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2011 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
-  case $[1] in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
-    *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-lt_cl_success=:
-test "$silent" = yes &&
-  lt_config_lt_args="$lt_config_lt_args --quiet"
-exec AS_MESSAGE_LOG_FD>/dev/null
-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-exec AS_MESSAGE_LOG_FD>>config.log
-$lt_cl_success || AS_EXIT(1)
-])# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars.  Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-m4_defun([_LT_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_CONFIG_SAVE_COMMANDS([
-  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
-  m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-_LT_COPYING
-_LT_LIBTOOL_TAGS
-
-# ### BEGIN LIBTOOL CONFIG
-_LT_LIBTOOL_CONFIG_VARS
-_LT_LIBTOOL_TAG_VARS
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  _LT_PROG_LTMAIN
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  _LT_PROG_REPLACE_SHELLFNS
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-],
-[cat <<_LT_EOF >> "$ofile"
-
-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
-dnl in a comment (ie after a #).
-# ### BEGIN LIBTOOL TAG CONFIG: $1
-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
-# ### END LIBTOOL TAG CONFIG: $1
-_LT_EOF
-])dnl /m4_if
-],
-[m4_if([$1], [], [
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'], [])
-])dnl /_LT_CONFIG_SAVE_COMMANDS
-])# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
-AC_DEFUN([LT_SUPPORTED_TAG], [])
-
-
-# C support is built-in for now
-m4_define([_LT_LANG_C_enabled], [])
-m4_define([_LT_TAGS], [])
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-AC_DEFUN([LT_LANG],
-[AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
-  [C],                 [_LT_LANG(C)],
-  [C++],               [_LT_LANG(CXX)],
-  [Go],                        [_LT_LANG(GO)],
-  [Java],              [_LT_LANG(GCJ)],
-  [Fortran 77],                [_LT_LANG(F77)],
-  [Fortran],           [_LT_LANG(FC)],
-  [Windows Resource],  [_LT_LANG(RC)],
-  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-    [_LT_LANG($1)],
-    [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-m4_defun([_LT_LANG],
-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
-  [LT_SUPPORTED_TAG([$1])dnl
-  m4_append([_LT_TAGS], [$1 ])dnl
-  m4_define([_LT_LANG_]$1[_enabled], [])dnl
-  _LT_LANG_$1_CONFIG($1)])dnl
-])# _LT_LANG
-
-
-m4_ifndef([AC_PROG_GO], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-############################################################
-m4_defun([AC_PROG_GO],
-[AC_LANG_PUSH(Go)dnl
-AC_ARG_VAR([GOC],     [Go compiler command])dnl
-AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
-_AC_ARG_VAR_LDFLAGS()dnl
-AC_CHECK_TOOL(GOC, gccgo)
-if test -z "$GOC"; then
-  if test -n "$ac_tool_prefix"; then
-    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
-  fi
-fi
-if test -z "$GOC"; then
-  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
-fi
-])#m4_defun
-])#m4_ifndef
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-m4_defun([_LT_LANG_DEFAULT_CONFIG],
-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
-  [LT_LANG(CXX)],
-  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_F77],
-  [LT_LANG(F77)],
-  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_FC],
-  [LT_LANG(FC)],
-  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
-
-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
-dnl pulling things in needlessly.
-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-  [LT_LANG(GCJ)],
-  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-    [LT_LANG(GCJ)],
-    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
-      [LT_LANG(GCJ)],
-      [m4_ifdef([AC_PROG_GCJ],
-       [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([A][M_PROG_GCJ],
-       [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([LT_PROG_GCJ],
-       [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
-
-AC_PROVIDE_IFELSE([AC_PROG_GO],
-  [LT_LANG(GO)],
-  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
-
-AC_PROVIDE_IFELSE([LT_PROG_RC],
-  [LT_LANG(RC)],
-  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
-])# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-dnl AC_DEFUN([AC_LIBTOOL_RC], [])
-
-
-# _LT_TAG_COMPILER
-# ----------------
-m4_defun([_LT_TAG_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-m4_defun([_LT_COMPILER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-m4_defun([_LT_LINKER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
-  case $host_os in
-    rhapsody* | darwin*)
-    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
-    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
-    AC_CHECK_TOOL([LIPO], [lipo], [:])
-    AC_CHECK_TOOL([OTOOL], [otool], [:])
-    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
-    _LT_DECL([], [DSYMUTIL], [1],
-      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
-    _LT_DECL([], [NMEDIT], [1],
-      [Tool to change global to local symbols on Mac OS X])
-    _LT_DECL([], [LIPO], [1],
-      [Tool to manipulate fat objects and archives on Mac OS X])
-    _LT_DECL([], [OTOOL], [1],
-      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
-    _LT_DECL([], [OTOOL64], [1],
-      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
-
-    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
-      [lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-       # By default we will add the -single_module flag. You can override
-       # by either setting the environment variable LT_MULTI_MODULE
-       # non-empty at configure time, or by adding -multi_module to the
-       # link flags.
-       rm -rf libconftest.dylib*
-       echo "int foo(void){return 1;}" > conftest.c
-       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
-       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-       # If there is a non-empty error log, and "single_module"
-       # appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-         cat conftest.err >&AS_MESSAGE_LOG_FD
-       # Otherwise, if the output was created with a 0 exit code from
-       # the compiler, it worked.
-       elif test -f libconftest.dylib && test $_lt_result -eq 0; then
-         lt_cv_apple_cc_single_mod=yes
-       else
-         cat conftest.err >&AS_MESSAGE_LOG_FD
-       fi
-       rm -rf libconftest.dylib*
-       rm -f conftest.*
-      fi])
-
-    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
-      [lt_cv_ld_exported_symbols_list],
-      [lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-       [lt_cv_ld_exported_symbols_list=yes],
-       [lt_cv_ld_exported_symbols_list=no])
-       LDFLAGS="$save_LDFLAGS"
-    ])
-
-    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
-      [lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
-      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
-      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
-      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
-      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-       cat conftest.err >&AS_MESSAGE_LOG_FD
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-       lt_cv_ld_force_load=yes
-      else
-       cat conftest.err >&AS_MESSAGE_LOG_FD
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-    ])
-    case $host_os in
-    rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-       10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-       10.[[012]]*)
-         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-       10.*)
-         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES([TAG])
-# ---------------------------------
-# Checks for linker and compiler features on darwin
-m4_defun([_LT_DARWIN_LINKER_FEATURES],
-[
-  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_automatic, $1)=yes
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
-                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
-  else
-    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-  fi
-  _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    m4_if([$1], [CXX],
-[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-    fi
-],[])
-  else
-  _LT_TAGVAR(ld_shlibs, $1)=no
-  fi
-])
-
-# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
-# ----------------------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-# Store the results from the different compilers for each TAGNAME.
-# Allow to override them for all tags through lt_cv_aix_libpath.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
-  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
-  lt_aix_libpath_sed='[
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }]'
-  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi],[])
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
-  fi
-  ])
-  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
-fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[m4_divert_text([M4SH-INIT], [$1
-])])# _LT_SHELL_INIT
-
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Find how we can fake an echo command that does not interpret backslash.
-# In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script which will find a shell with a builtin
-# printf (which we can use as an echo command).
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-AC_MSG_CHECKING([how to print strings])
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$[]1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*" 
-}
-
-case "$ECHO" in
-  printf*) AC_MSG_RESULT([printf]) ;;
-  print*) AC_MSG_RESULT([print -r]) ;;
-  *) AC_MSG_RESULT([cat]) ;;
-esac
-
-m4_ifdef([_AS_DETECT_SUGGESTED],
-[_AS_DETECT_SUGGESTED([
-  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test "X`printf %s $ECHO`" = "X$ECHO" \
-      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
-
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_WITH_SYSROOT
-# ----------------
-AC_DEFUN([_LT_WITH_SYSROOT],
-[AC_MSG_CHECKING([for sysroot])
-AC_ARG_WITH([sysroot],
-[  --with-sysroot[=DIR] Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).],
-[], [with_sysroot=no])
-
-dnl lt_sysroot will always be passed unquoted.  We quote it here
-dnl in case the user passed a directory name.
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   AC_MSG_RESULT([${with_sysroot}])
-   AC_MSG_ERROR([The sysroot must be an absolute path.])
-   ;;
-esac
-
- AC_MSG_RESULT([${lt_sysroot:-no}])
-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and in which our libraries should be installed.])])
-
-# _LT_ENABLE_LOCK
-# ---------------
-m4_defun([_LT_ENABLE_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
-  [AS_HELP_STRING([--disable-libtool-lock],
-    [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-       HPUX_IA64_MODE="32"
-       ;;
-      *ELF-64*)
-       HPUX_IA64_MODE="64"
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -melf32bsmip"
-         ;;
-       *N32*)
-         LD="${LD-ld} -melf32bmipn32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -melf64bmip"
-       ;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -32"
-         ;;
-       *N32*)
-         LD="${LD-ld} -n32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -64"
-         ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_i386_fbsd"
-           ;;
-         x86_64-*linux*)
-           case `/usr/bin/file conftest.o` in
-             *x86-64*)
-               LD="${LD-ld} -m elf32_x86_64"
-               ;;
-             *)
-               LD="${LD-ld} -m elf_i386"
-               ;;
-           esac
-           ;;
-         ppc64-*linux*|powerpc64-*linux*)
-           LD="${LD-ld} -m elf32ppclinux"
-           ;;
-         s390x-*linux*)
-           LD="${LD-ld} -m elf_s390"
-           ;;
-         sparc64-*linux*)
-           LD="${LD-ld} -m elf32_sparc"
-           ;;
-       esac
-       ;;
-      *64-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_x86_64_fbsd"
-           ;;
-         x86_64-*linux*)
-           LD="${LD-ld} -m elf_x86_64"
-           ;;
-         ppc*-*linux*|powerpc*-*linux*)
-           LD="${LD-ld} -m elf64ppc"
-           ;;
-         s390*-*linux*|s390*-*tpf*)
-           LD="${LD-ld} -m elf64_s390"
-           ;;
-         sparc*-*linux*)
-           LD="${LD-ld} -m elf64_sparc"
-           ;;
-       esac
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_LANG_PUSH(C)
-     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-     AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-         LD="${LD-ld} -64"
-       fi
-       ;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-])# _LT_ENABLE_LOCK
-
-
-# _LT_PROG_AR
-# -----------
-m4_defun([_LT_PROG_AR],
-[AC_CHECK_TOOLS(AR, [ar], false)
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
-
-AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
-  [lt_cv_ar_at_file=no
-   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
-     [echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
-      AC_TRY_EVAL([lt_ar_try])
-      if test "$ac_status" -eq 0; then
-       # Ensure the archiver fails upon bogus file names.
-       rm -f conftest.$ac_objext libconftest.a
-       AC_TRY_EVAL([lt_ar_try])
-       if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-     ])
-  ])
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-_LT_DECL([], [archiver_list_spec], [1],
-  [How to feed a file listing to the archiver])
-])# _LT_PROG_AR
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[_LT_PROG_AR
-
-AC_CHECK_TOOL(STRIP, strip, :)
-test -z "$STRIP" && STRIP=:
-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
-
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-test -z "$RANLIB" && RANLIB=:
-_LT_DECL([], [RANLIB], [1],
-    [Commands used to install an old-style archive])
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-_LT_DECL([], [old_postinstall_cmds], [2])
-_LT_DECL([], [old_postuninstall_cmds], [2])
-_LT_TAGDECL([], [old_archive_cmds], [2],
-    [Commands used to build an old-style archive])
-_LT_DECL([], [lock_old_archive_extraction], [0],
-    [Whether to use a lock for old archive extraction])
-])# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#              [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([_LT_COMPILER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$5], , :, [$5])
-else
-    m4_if([$6], , :, [$6])
-fi
-])# _LT_COMPILER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                  [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-AC_DEFUN([_LT_LINKER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$4], , :, [$4])
-else
-    m4_if([$5], , :, [$5])
-fi
-])# _LT_LINKER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
-
-
-# LT_CMD_MAX_LEN
-#---------------
-AC_DEFUN([LT_CMD_MAX_LEN],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[        ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len" && \
-       test undefined != "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-             test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
-    [What is the maximum length of a command?])
-])# LT_CMD_MAX_LEN
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-m4_defun([_LT_HEADER_DLFCN],
-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
-])# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-m4_defun([_LT_TRY_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
-  [$4]
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-[#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}]
-_LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) $1 ;;
-      x$lt_dlneed_uscore) $2 ;;
-      x$lt_dlunknown|x*) $3 ;;
-    esac
-  else :
-    # compilation failed
-    $3
-  fi
-fi
-rm -fr conftest*
-])# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-AC_DEFUN([LT_SYS_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-    ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-         [lt_cv_dlopen="shl_load"],
-      [AC_CHECK_LIB([dld], [shl_load],
-           [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
-       [AC_CHECK_FUNC([dlopen],
-             [lt_cv_dlopen="dlopen"],
-         [AC_CHECK_LIB([dl], [dlopen],
-               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-           [AC_CHECK_LIB([svld], [dlopen],
-                 [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-             [AC_CHECK_LIB([dld], [dld_link],
-                   [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
-             ])
-           ])
-         ])
-       ])
-      ])
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-         lt_cv_dlopen_self, [dnl
-         _LT_TRY_DLOPEN_SELF(
-           lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-           lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-         lt_cv_dlopen_self_static, [dnl
-         _LT_TRY_DLOPEN_SELF(
-           lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-           lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
-        [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
-        [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
-        [Whether dlopen of statically linked programs is supported])
-])# LT_SYS_DLOPEN_SELF
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-m4_defun([_LT_COMPILER_C_O],
-[m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-     fi
-   fi
-   chmod u+w . 2>&AS_MESSAGE_LOG_FD
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-])
-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
-       [Does compiler simultaneously support -c and -o options?])
-])# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-m4_defun([_LT_COMPILER_FILE_LOCKS],
-[m4_require([_LT_ENABLE_LOCK])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_COMPILER_C_O([$1])
-
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  AC_MSG_CHECKING([if we can lock with hard links])
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
-])# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-m4_defun([_LT_CHECK_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-_LT_DECL([], [objdir], [0],
-         [The name of the directory that contains temporary libtool files])dnl
-m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
-  [Define to the sub-directory in which libtool stores uninstalled libraries.])
-])# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
-   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
-    # Linking always hardcodes the temporary library directory.
-    _LT_TAGVAR(hardcode_action, $1)=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    _LT_TAGVAR(hardcode_action, $1)=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  _LT_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
-   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-_LT_TAGDECL([], [hardcode_action], [0],
-    [How to hardcode a shared library path into an executable])
-])# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-m4_defun([_LT_CMD_STRIPLIB],
-[m4_require([_LT_DECL_EGREP])
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      AC_MSG_RESULT([yes])
-    else
-      AC_MSG_RESULT([no])
-    fi
-    ;;
-  *)
-    AC_MSG_RESULT([no])
-    ;;
-  esac
-fi
-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
-_LT_DECL([], [striplib], [1])
-])# _LT_CMD_STRIPLIB
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-m4_defun([_LT_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_OBJDUMP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-m4_if([$1],
-       [], [
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
-  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[[4-9]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[[01]] | aix4.[[01]].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-          echo ' yes '
-          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-       :
-      else
-       can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[[45]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-m4_if([$1], [],[
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-m4_if([$1], [],[
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[[23]].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[[3-9]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-       if test "$lt_cv_prog_gnu_ld" = yes; then
-               version_type=linux # correct to gnu/linux during the next big refactor
-       else
-               version_type=irix
-       fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
-    [lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-        LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-        [lt_cv_shlibpath_overrides_runpath=yes])])
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    ])
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-       shlibpath_overrides_runpath=no
-       ;;
-      *)
-       shlibpath_overrides_runpath=yes
-       ;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-       ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-_LT_DECL([], [variables_saved_for_relink], [1],
-    [Variables whose values should be saved in libtool wrapper scripts and
-    restored at link time])
-_LT_DECL([], [need_lib_prefix], [0],
-    [Do we need the "lib" prefix for modules?])
-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
-_LT_DECL([], [version_type], [0], [Library versioning type])
-_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
-_LT_DECL([], [shlibpath_overrides_runpath], [0],
-    [Is shlibpath searched before the hard-coded library search path?])
-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
-_LT_DECL([], [library_names_spec], [1],
-    [[List of archive names.  First name is the real one, the rest are links.
-    The last name is the one that the linker finds with -lNAME]])
-_LT_DECL([], [soname_spec], [1],
-    [[The coded name of the library, if different from the real name]])
-_LT_DECL([], [install_override_mode], [1],
-    [Permission mode override for installation of shared libraries])
-_LT_DECL([], [postinstall_cmds], [2],
-    [Command to use after installation of a shared archive])
-_LT_DECL([], [postuninstall_cmds], [2],
-    [Command to use after uninstallation of a shared archive])
-_LT_DECL([], [finish_cmds], [2],
-    [Commands used to finish a libtool library installation in a directory])
-_LT_DECL([], [finish_eval], [1],
-    [[As "finish_cmds", except a single script fragment to be evaled but
-    not shown]])
-_LT_DECL([], [hardcode_into_libs], [0],
-    [Whether we should hardcode library paths into libraries])
-_LT_DECL([], [sys_lib_search_path_spec], [2],
-    [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
-])# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program which can recognize shared library
-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
-[m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="m4_if([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
-        [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program which can recognize a shared library
-m4_defun([_LT_PATH_MAGIC],
-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-  else
-    MAGIC_CMD=:
-  fi
-fi
-])# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([LT_PATH_LD],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
-
-AC_ARG_WITH([gnu-ld],
-    [AS_HELP_STRING([--with-gnu-ld],
-       [assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
-    [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-       test "$with_gnu_ld" != no && break
-       ;;
-      *)
-       test "$with_gnu_ld" != yes && break
-       ;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])# LT_PATH_LD
-
-# Old names:
-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_LD], [])
-dnl AC_DEFUN([AC_PROG_LD], [])
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-m4_defun([_LT_PATH_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-m4_defun([_LT_CMD_RELOAD],
-[AC_CACHE_CHECK([for $LD option to reload object files],
-  lt_cv_ld_reload_flag,
-  [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_TAGDECL([], [reload_cmds], [2])dnl
-])# _LT_CMD_RELOAD
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_MAGIC_METHOD],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[[45]]*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[[3-9]]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-])
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-_LT_DECL([], [deplibs_check_method], [1],
-    [Method to check whether dependent libraries are shared objects])
-_LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method = "file_magic"])
-_LT_DECL([], [file_magic_glob], [1],
-    [How to find potential files when deplibs_check_method = "file_magic"])
-_LT_DECL([], [want_nocaseglob], [1],
-    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
-])# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-AC_DEFUN([LT_PATH_NM],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-       # Check to see if the nm accepts a BSD-compat flag.
-       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-       #   nm: unknown option "B" ignored
-       # Tru64's nm complains that /dev/null is an invalid object file
-       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-       */dev/null* | *'Invalid file or object type'*)
-         lt_cv_path_NM="$tmp_nm -B"
-         break
-         ;;
-       *)
-         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-         */dev/null*)
-           lt_cv_path_NM="$tmp_nm -p"
-           break
-           ;;
-         *)
-           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-           continue # so that we can try to find one that supports BSD flags
-           ;;
-         esac
-         ;;
-       esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-  AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-  [lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
-  cat conftest.out >&AS_MESSAGE_LOG_FD
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*])
-])# LT_PATH_NM
-
-# Old names:
-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_NM], [])
-dnl AC_DEFUN([AC_PROG_NM], [])
-
-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-# --------------------------------
-# how to determine the name of the shared library
-# associated with a specific link library.
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-m4_require([_LT_DECL_DLLTOOL])
-AC_CACHE_CHECK([how to associate runtime and link libraries],
-lt_cv_sharedlib_from_linklib_cmd,
-[lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-])
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
-    [Command to associate shared and link libraries])
-])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-
-
-# _LT_PATH_MANIFEST_TOOL
-# ----------------------
-# locate the manifest tool
-m4_defun([_LT_PATH_MANIFEST_TOOL],
-[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
-  [lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*])
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
-])# _LT_PATH_MANIFEST_TOOL
-
-
-# LT_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
-  ;;
-esac
-AC_SUBST([LIBM])
-])# LT_LIB_M
-
-# Old name:
-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_CHECK_LIBM], [])
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-m4_defun([_LT_COMPILER_NO_RTTI],
-[m4_require([_LT_TAG_COMPILER])dnl
-
-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
-  esac
-
-  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-    lt_cv_prog_compiler_rtti_exceptions,
-    [-fno-rtti -fno-exceptions], [],
-    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
-       [Compiler flag to turn off builtin functions])
-])# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[[BCDT]]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[[ABCDGISTW]]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDEGRST]]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[[BCDEGRST]]'
-  ;;
-osf*)
-  symcode='[[BCDEGQRST]]'
-  ;;
-solaris*)
-  symcode='[[BDRT]]'
-  ;;
-sco3.2v5*)
-  symcode='[[DT]]'
-  ;;
-sysv4.2uw2*)
-  symcode='[[DT]]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[[ABDT]]'
-  ;;
-sysv4)
-  symcode='[[DFNSTU]]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK ['"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx]"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[    ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-       mv -f "$nlist"T "$nlist"
-      else
-       rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-         cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT@&t@_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT@&t@_DLSYM_CONST
-#else
-# define LT@&t@_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-         # Now generate the symbol file.
-         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-         cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT@&t@_DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[[]] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-         cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-         # Now try linking the two files.
-         mv conftest.$ac_objext conftstm.$ac_objext
-         lt_globsym_save_LIBS=$LIBS
-         lt_globsym_save_CFLAGS=$CFLAGS
-         LIBS="conftstm.$ac_objext"
-         CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-         if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
-           pipe_works=yes
-         fi
-         LIBS=$lt_globsym_save_LIBS
-         CFLAGS=$lt_globsym_save_CFLAGS
-       else
-         echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-       fi
-      else
-       echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  AC_MSG_RESULT(failed)
-else
-  AC_MSG_RESULT(ok)
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
-    [Take the output of nm and produce a listing of raw symbols and C names])
-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-    [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_c_name_address],
-    [lt_cv_sys_global_symbol_to_c_name_address], [1],
-    [Transform the output of nm in a C name address pair])
-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
-    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
-    [Transform the output of nm in a C name address pair when lib prefix is needed])
-_LT_DECL([], [nm_file_list_spec], [1],
-    [Specify filename containing input files for $NM])
-]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-m4_defun([_LT_COMPILER_PIC],
-[m4_require([_LT_TAG_COMPILER])dnl
-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_TAGVAR(lt_prog_compiler_static, $1)=
-
-m4_if([$1], [CXX], [
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-       # AIX 5 now supports IA64 processor
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-       ;;
-      *)
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-       ;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[[4-9]]*)
-       # All AIX code is PIC.
-       if test "$host_cpu" = ia64; then
-         # AIX 5 now supports IA64 processor
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-       else
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-       fi
-       ;;
-      chorus*)
-       case $cc_basename in
-       cxch68*)
-         # Green Hills C++ Compiler
-         # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-         ;;
-       esac
-       ;;
-      mingw* | cygwin* | os2* | pw32* | cegcc*)
-       # This hack is so that the source file can tell whether it is being
-       # built for inclusion in a dll (and should export symbols for example).
-       m4_if([$1], [GCJ], [],
-         [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-       ;;
-      dgux*)
-       case $cc_basename in
-         ec++*)
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           ;;
-         ghcx*)
-           # Green Hills C++ Compiler
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      freebsd* | dragonfly*)
-       # FreeBSD uses GNU C++
-       ;;
-      hpux9* | hpux10* | hpux11*)
-       case $cc_basename in
-         CC*)
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-           if test "$host_cpu" != ia64; then
-             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-           fi
-           ;;
-         aCC*)
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-           case $host_cpu in
-           hppa*64*|ia64*)
-             # +Z the default
-             ;;
-           *)
-             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-             ;;
-           esac
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      interix*)
-       # This is c89, which is MS Visual C++ (no shared libs)
-       # Anyone wants to do a port?
-       ;;
-      irix5* | irix6* | nonstopux*)
-       case $cc_basename in
-         CC*)
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-           # CC pic flag -KPIC is the default.
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-       case $cc_basename in
-         KCC*)
-           # KAI C++ Compiler
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-           ;;
-         ecpc* )
-           # old Intel C++ for x86_64 which still supported -KPIC.
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-           ;;
-         icpc* )
-           # Intel C++, used to be incompatible with GCC.
-           # ICC 10 doesn't accept -KPIC any more.
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-           ;;
-         pgCC* | pgcpp*)
-           # Portland Group C++ compiler
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-           ;;
-         cxx*)
-           # Compaq C++
-           # Make sure the PIC flag is empty.  It appears that all Alpha
-           # Linux and Compaq Tru64 Unix objects are PIC.
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-           ;;
-         xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
-           # IBM XL 8.0, 9.0 on PPC and BlueGene
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-           ;;
-         *)
-           case `$CC -V 2>&1 | sed 5q` in
-           *Sun\ C*)
-             # Sun C++ 5.9
-             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-             _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-             _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-             ;;
-           esac
-           ;;
-       esac
-       ;;
-      lynxos*)
-       ;;
-      m88k*)
-       ;;
-      mvs*)
-       case $cc_basename in
-         cxx*)
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      netbsd* | netbsdelf*-gnu)
-       ;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-       case $cc_basename in
-         KCC*)
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-           ;;
-         RCC*)
-           # Rational C++ 2.4.1
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-           ;;
-         cxx*)
-           # Digital/Compaq C++
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           # Make sure the PIC flag is empty.  It appears that all Alpha
-           # Linux and Compaq Tru64 Unix objects are PIC.
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      psos*)
-       ;;
-      solaris*)
-       case $cc_basename in
-         CC* | sunCC*)
-           # Sun C++ 4.2, 5.x and Centerline C++
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-           ;;
-         gcx*)
-           # Green Hills C++ Compiler
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      sunos4*)
-       case $cc_basename in
-         CC*)
-           # Sun C++ 4.x
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-           ;;
-         lcc*)
-           # Lucid
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-       case $cc_basename in
-         CC*)
-           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-           ;;
-       esac
-       ;;
-      tandem*)
-       case $cc_basename in
-         NCC*)
-           # NonStop-UX NCC 3.20
-           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      vxworks*)
-       ;;
-      *)
-       _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-       ;;
-    esac
-  fi
-],
-[
-  if test "$GCC" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-       # AIX 5 now supports IA64 processor
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-       # +Z the default
-       ;;
-      *)
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-       ;;
-      esac
-      ;;
-
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
-       # AIX 5 now supports IA64 processor
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      else
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      m4_if([$1], [GCJ], [],
-       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       # +Z the default
-       ;;
-      *)
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-       ;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
-       ;;
-      nagfor*)
-       # NAG Fortran compiler
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-       ;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-       # which looks to be a dead project)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      ccc*)
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-        # All Alpha code is PIC.
-        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-       ;;
-      *)
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
-         # Sun Fortran 8.3 passes all unrecognized flags to the linker
-         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-         _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
-         ;;
-       *Sun\ F* | *Sun*Fortran*)
-         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-         ;;
-       *Sun\ C*)
-         # Sun C 5.9
-         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-         ;;
-        *Intel*\ [[CF]]*Compiler*)
-         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-         ;;
-       *Portland\ Group*)
-         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-         ;;
-       esac
-       ;;
-      esac
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # All OSF/1 code is PIC.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    rdos*)
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-      *)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    unicos*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-    esac
-  fi
-])
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-    ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
-    ;;
-esac
-
-AC_CACHE_CHECK([for $compiler option to produce PIC],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
-    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
-    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
-    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-     esac],
-    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
-       [Additional compiler flags for building library objects])
-
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-       [How to pass a linker flag through the compiler])
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
-  $lt_tmp_static_flag,
-  [],
-  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
-       [Compiler flag to prevent dynamic linking])
-])# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-m4_defun([_LT_LINKER_SHLIBS],
-[AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-m4_if([$1], [CXX], [
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  case $host_os in
-  aix[[4-9]]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    # Also, AIX nm treats weak defined symbols like other global defined
-    # symbols, whereas GNU nm marks them as "W".
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl*)
-      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-      ;;
-    *)
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-      ;;
-    esac
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-    ;;
-  *)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
-], [
-  runpath_var=
-  _LT_TAGVAR(allow_undefined_flag, $1)=
-  _LT_TAGVAR(always_export_symbols, $1)=no
-  _LT_TAGVAR(archive_cmds, $1)=
-  _LT_TAGVAR(archive_expsym_cmds, $1)=
-  _LT_TAGVAR(compiler_needs_object, $1)=no
-  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(hardcode_automatic, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-  _LT_TAGVAR(hardcode_minus_L, $1)=no
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(inherit_rpath, $1)=no
-  _LT_TAGVAR(link_all_deplibs, $1)=unknown
-  _LT_TAGVAR(module_cmds, $1)=
-  _LT_TAGVAR(module_expsym_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-  _LT_TAGVAR(thread_safe_flag_spec, $1)=
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  _LT_TAGVAR(include_expsyms, $1)=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-    ;;
-  esac
-
-  _LT_TAGVAR(ld_shlibs, $1)=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-       # The AIX port of GNU ld has always aspired to compatibility
-       # with the native linker.  However, as the warning in the GNU ld
-       # block says, versions before 2.19.5* couldn't really create working
-       # shared libraries, regardless of the interface used.
-       case `$LD -v 2>&1` in
-         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-         *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
-         *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
-         *)
-           lt_use_gnu_ld_interface=yes
-           ;;
-       esac
-       ;;
-      *)
-       lt_use_gnu_ld_interface=yes
-       ;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[[3-9]]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-       _LT_TAGVAR(ld_shlibs, $1)=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-       # support --undefined.  This deserves some investigation.  FIXME
-       _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-       _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-      # as there is no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=no
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-       # If the export-symbols file already is a .def file (1st line
-       # is EXPORTS), use it as is; otherwise, prepend...
-       _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-         cp $export_symbols $output_objdir/$soname.def;
-       else
-         echo EXPORTS > $output_objdir/$soname.def;
-         cat $export_symbols >> $output_objdir/$soname.def;
-       fi~
-       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-       _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    haiku*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    interix[[3-9]]*)
-      _LT_TAGVAR(hardcode_direct, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-       case $cc_basename in
-         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
-       esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-        && test "$tmp_diet" = no
-      then
-       tmp_addflag=' $pic_flag'
-       tmp_sharedflag='-shared'
-       case $cc_basename,$host_cpu in
-        pgcc*)                         # Portland Group C compiler
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-         tmp_addflag=' $pic_flag'
-         ;;
-       pgf77* | pgf90* | pgf95* | pgfortran*)
-                                       # Portland Group f77 and f90 compilers
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-         tmp_addflag=' $pic_flag -Mnomain' ;;
-       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
-         tmp_addflag=' -i_dynamic' ;;
-       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
-         tmp_addflag=' -i_dynamic -nofor_main' ;;
-       ifc* | ifort*)                  # Intel Fortran compiler
-         tmp_addflag=' -nofor_main' ;;
-       lf95*)                          # Lahey Fortran 8.1
-         _LT_TAGVAR(whole_archive_flag_spec, $1)=
-         tmp_sharedflag='--shared' ;;
-       xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-         tmp_sharedflag='-qmkshrobj'
-         tmp_addflag= ;;
-       nvcc*)  # Cuda Compiler Driver 2.2
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-         _LT_TAGVAR(compiler_needs_object, $1)=yes
-         ;;
-       esac
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ C*)                       # Sun C 5.9
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-         _LT_TAGVAR(compiler_needs_object, $1)=yes
-         tmp_sharedflag='-G' ;;
-       *Sun\ F*)                       # Sun Fortran 8.3
-         tmp_sharedflag='-G' ;;
-       esac
-       _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-           echo "local: *; };" >> $output_objdir/$libname.ver~
-           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-       case $cc_basename in
-       xlf* | bgf* | bgxlf* | mpixlf*)
-         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-         _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-         if test "x$supports_anon_versioning" = xyes; then
-           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-             echo "local: *; };" >> $output_objdir/$libname.ver~
-             $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-         fi
-         ;;
-       esac
-      else
-        _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-       wlarc=
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-       _LT_TAGVAR(ld_shlibs, $1)=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
-       _LT_TAGVAR(ld_shlibs, $1)=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-       ;;
-       *)
-         # For security reasons, it is highly recommended that you always
-         # use absolute paths for naming shared libraries, and exclude the
-         # DT_RUNPATH tag from executables and libraries.  But doing so
-         # requires that you compile everything twice, which is a pain.
-         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-         else
-           _LT_TAGVAR(ld_shlibs, $1)=no
-         fi
-       ;;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-
-    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
-      runpath_var=
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-       # Neither direct hardcoding nor static linking is supported with a
-       # broken collect2.
-       _LT_TAGVAR(hardcode_direct, $1)=unsupported
-      fi
-      ;;
-
-    aix[[4-9]]*)
-      if test "$host_cpu" = ia64; then
-       # On IA64, the linker does run time linking by default, so we don't
-       # have to do anything special.
-       aix_use_runtimelinking=no
-       exp_sym_flag='-Bexport'
-       no_entry_flag=""
-      else
-       # If we're using GNU nm, then we don't want the "-C" option.
-       # -C means demangle to AIX nm, but means don't demangle with GNU nm
-       # Also, AIX nm treats weak defined symbols like other global
-       # defined symbols, whereas GNU nm marks them as "W".
-       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-       else
-         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-       fi
-       aix_use_runtimelinking=no
-
-       # Test if we are trying to use run time linking or normal
-       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-       # need to do runtime linking.
-       case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-         for ld_flag in $LDFLAGS; do
-         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-           aix_use_runtimelinking=yes
-           break
-         fi
-         done
-         ;;
-       esac
-
-       exp_sym_flag='-bexport'
-       no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      _LT_TAGVAR(archive_cmds, $1)=''
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-      if test "$GCC" = yes; then
-       case $host_os in aix4.[[012]]|aix4.[[012]].*)
-       # We only want to do this on AIX 4.2 and lower, the check
-       # below for broken collect2 doesn't work under 4.3+
-         collect2name=`${CC} -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-         # We have reworked collect2
-         :
-         else
-         # We have old collect2
-         _LT_TAGVAR(hardcode_direct, $1)=unsupported
-         # It fails to find uninstalled libraries when the uninstalled
-         # path is not listed in the libpath.  Setting hardcode_minus_L
-         # to unsupported forces relinking
-         _LT_TAGVAR(hardcode_minus_L, $1)=yes
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-         _LT_TAGVAR(hardcode_libdir_separator, $1)=
-         fi
-         ;;
-       esac
-       shared_flag='-shared'
-       if test "$aix_use_runtimelinking" = yes; then
-         shared_flag="$shared_flag "'${wl}-G'
-       fi
-       _LT_TAGVAR(link_all_deplibs, $1)=no
-      else
-       # not using gcc
-       if test "$host_cpu" = ia64; then
-       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-       # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-       else
-         if test "$aix_use_runtimelinking" = yes; then
-           shared_flag='${wl}-G'
-         else
-           shared_flag='${wl}-bM:SRE'
-         fi
-       fi
-      fi
-
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
-       # Warning - without using the other runtime loading flags (-brtl),
-       # -berok will link without error, but may produce a broken library.
-       _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        _LT_SYS_MODULE_PATH_AIX([$1])
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-       if test "$host_cpu" = ia64; then
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-         _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-       else
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        _LT_SYS_MODULE_PATH_AIX([$1])
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-         # Warning - without using the other run time loading flags,
-         # -berok will link without error, but may produce a broken library.
-         _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-         _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-         if test "$with_gnu_ld" = yes; then
-           # We only use this code for GNU lds that support --whole-archive.
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-         else
-           # Exported symbols can be pulled into shared objects from archives
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-         fi
-         _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-         # This is similar to how AIX traditionally builds its shared libraries.
-         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-       fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[[45]]*)
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-       # Native MSVC
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-       _LT_TAGVAR(always_export_symbols, $1)=yes
-       _LT_TAGVAR(file_list_spec, $1)='@'
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=".dll"
-       # FIXME: Setting linknames here is a bad hack.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-       _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-           sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-         else
-           sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-         fi~
-         $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-         linknames='
-       # The linker will not automatically build a static lib if we build a DLL.
-       # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-       _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-       _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-       # Don't use ranlib
-       _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-       _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-         lt_tool_outputfile="@TOOL_OUTPUT@"~
-         case $lt_outputfile in
-           *.exe|*.EXE) ;;
-           *)
-             lt_outputfile="$lt_outputfile.exe"
-             lt_tool_outputfile="$lt_tool_outputfile.exe"
-             ;;
-         esac~
-         if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-           $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-           $RM "$lt_outputfile.manifest";
-         fi'
-       ;;
-      *)
-       # Assume MSVC wrapper
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=".dll"
-       # FIXME: Setting linknames here is a bad hack.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-       # The linker will automatically build a .lib file if we build a DLL.
-       _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-       # FIXME: Should let the user specify the lib program.
-       _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-       ;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      _LT_DARWIN_LINKER_FEATURES($1)
-      ;;
-
-    dgux*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-       _LT_TAGVAR(hardcode_direct, $1)=yes
-       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-       # hardcode_minus_L: Not really in the search PATH,
-       # but as the default location of the library.
-       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-       case $host_cpu in
-       hppa*64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       esac
-      else
-       case $host_cpu in
-       hppa*64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-       m4_if($1, [], [
-         # Older versions of the 11.00 compiler do not understand -b yet
-         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-         _LT_LINKER_OPTION([if $CC understands -b],
-           _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
-           [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
-           [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
-         [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
-         ;;
-       esac
-      fi
-      if test "$with_gnu_ld" = no; then
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-       case $host_cpu in
-       hppa*64*|ia64*)
-         _LT_TAGVAR(hardcode_direct, $1)=no
-         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-         ;;
-       *)
-         _LT_TAGVAR(hardcode_direct, $1)=yes
-         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
-         # hardcode_minus_L: Not really in the search PATH,
-         # but as the default location of the library.
-         _LT_TAGVAR(hardcode_minus_L, $1)=yes
-         ;;
-       esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-       # Try to use the -exported_symbol ld option, if it does not
-       # work, assume that -exports_file does not work either and
-       # implicitly export all symbols.
-       # This should be the same for all languages, so no per-tag cache variable.
-       AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
-         [lt_cv_irix_exported_symbol],
-         [save_LDFLAGS="$LDFLAGS"
-          LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-          AC_LINK_IFELSE(
-            [AC_LANG_SOURCE(
-               [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
-                             [C++], [[int foo (void) { return 0; }]],
-                             [Fortran 77], [[
-      subroutine foo
-      end]],
-                             [Fortran], [[
-      subroutine foo
-      end]])])],
-             [lt_cv_irix_exported_symbol=yes],
-             [lt_cv_irix_exported_symbol=no])
-           LDFLAGS="$save_LDFLAGS"])
-       if test "$lt_cv_irix_exported_symbol" = yes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-       fi
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(inherit_rpath, $1)=yes
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-       _LT_TAGVAR(hardcode_direct, $1)=yes
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-       else
-         case $host_os in
-          openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-            _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-            ;;
-          *)
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-            ;;
-         esac
-       fi
-      else
-       _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    os2*)
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    osf4* | osf5*)     # as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      else
-       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-       # Both c and cxx compiler support -rpath directly
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test "$GCC" = yes; then
-       wlarc='${wl}'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-         $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-       case `$CC -V 2>&1` in
-       *"Compilers 5.0"*)
-         wlarc=''
-         _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-         ;;
-       *)
-         wlarc='${wl}'
-         _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-         ;;
-       esac
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      case $host_os in
-      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *)
-       # The compiler driver will combine and reorder linker options,
-       # but understands `-z linker_flag'.  GCC discards it without `$wl',
-       # but is careful enough not to reorder.
-       # Supported since Solaris 2.6 (maybe 2.5.1?)
-       if test "$GCC" = yes; then
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-       else
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-       fi
-       ;;
-      esac
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-       # Use $CC to link under sequent, because it throws in some extra .o
-       # files that make .init and .fini sections work.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-       sni)
-         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-       ;;
-       siemens)
-         ## LD is ld it makes a PLAMLIB
-         ## CC just makes a GrossModule.
-         _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-         _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-         _LT_TAGVAR(hardcode_direct, $1)=no
-        ;;
-       motorola)
-         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-       ;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4.3*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       runpath_var=LD_RUN_PATH
-       hardcode_runpath_var=yes
-       _LT_TAGVAR(ld_shlibs, $1)=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
-       ;;
-      esac
-    fi
-  fi
-])
-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
-
-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
-_LT_DECL([], [extract_expsyms_cmds], [2],
-    [The commands to extract the exported symbol list from a shared archive])
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
-  # Assume -lc should be added
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $_LT_TAGVAR(archive_cmds, $1) in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
-       [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
-       [$RM conftest*
-       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-       if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-         soname=conftest
-         lib=conftest
-         libobjs=conftest.$ac_objext
-         deplibs=
-         wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-         pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-         compiler_flags=-v
-         linker_flags=-v
-         verstring=
-         output_objdir=.
-         libname=conftest
-         lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-         _LT_TAGVAR(allow_undefined_flag, $1)=
-         if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-         then
-           lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-         else
-           lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-         fi
-         _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-       else
-         cat conftest.err 1>&5
-       fi
-       $RM conftest*
-       ])
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
-    [Whether or not to add -lc for building shared libraries])
-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
-    [enable_shared_with_static_runtimes], [0],
-    [Whether or not to disallow shared libs when runtime libs are static])
-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
-    [Compiler flag to allow reflexive dlopens])
-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
-    [Compiler flag to generate shared objects directly from archives])
-_LT_TAGDECL([], [compiler_needs_object], [1],
-    [Whether the compiler copes with passing no objects directly])
-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
-    [Create an old-style archive from a shared archive])
-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
-    [Create a temporary old-style archive to link instead of a shared archive])
-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
-_LT_TAGDECL([], [archive_expsym_cmds], [2])
-_LT_TAGDECL([], [module_cmds], [2],
-    [Commands used to build a loadable module if different from building
-    a shared archive.])
-_LT_TAGDECL([], [module_expsym_cmds], [2])
-_LT_TAGDECL([], [with_gnu_ld], [1],
-    [Whether we are building with GNU ld or not])
-_LT_TAGDECL([], [allow_undefined_flag], [1],
-    [Flag that allows shared libraries with undefined symbols to be built])
-_LT_TAGDECL([], [no_undefined_flag], [1],
-    [Flag that enforces no undefined symbols])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
-    [Flag to hardcode $libdir into a binary during linking.
-    This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
-    [Whether we need a single "-rpath" flag with a separated argument])
-_LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary])
-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
-    library is relocated])
-_LT_TAGDECL([], [hardcode_minus_L], [0],
-    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
-    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_automatic], [0],
-    [Set to "yes" if building a shared library automatically hardcodes DIR
-    into the library and all subsequent libraries and executables linked
-    against it])
-_LT_TAGDECL([], [inherit_rpath], [0],
-    [Set to yes if linker adds runtime paths of dependent libraries
-    to runtime path list])
-_LT_TAGDECL([], [link_all_deplibs], [0],
-    [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [always_export_symbols], [0],
-    [Set to "yes" if exported symbols are required])
-_LT_TAGDECL([], [export_symbols_cmds], [2],
-    [The commands to list exported symbols])
-_LT_TAGDECL([], [exclude_expsyms], [1],
-    [Symbols that should not be listed in the preloaded symbols])
-_LT_TAGDECL([], [include_expsyms], [1],
-    [Symbols that must always be exported])
-_LT_TAGDECL([], [prelink_cmds], [2],
-    [Commands necessary for linking programs (against libraries) with templates])
-_LT_TAGDECL([], [postlink_cmds], [2],
-    [Commands necessary for finishing linking programs])
-_LT_TAGDECL([], [file_list_spec], [1],
-    [Specify filename containing input files])
-dnl FIXME: Not yet implemented
-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
-dnl    [Compiler flag to generate thread safe objects])
-])# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_C_CONFIG],
-[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_TAG_COMPILER
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_SYS_DYNAMIC_LINKER($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-  LT_SYS_DLOPEN_SELF
-  _LT_CMD_STRIPLIB
-
-  # Report which library types will actually be built
-  AC_MSG_CHECKING([if libtool supports shared libraries])
-  AC_MSG_RESULT([$can_build_shared])
-
-  AC_MSG_CHECKING([whether to build shared libraries])
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[[4-9]]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  AC_MSG_RESULT([$enable_shared])
-
-  AC_MSG_CHECKING([whether to build static libraries])
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  AC_MSG_RESULT([$enable_static])
-
-  _LT_CONFIG($1)
-fi
-AC_LANG_POP
-CC="$lt_save_CC"
-])# _LT_LANG_C_CONFIG
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-
-AC_LANG_PUSH(C++)
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(compiler_needs_object, $1)=no
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_CFLAGS=$CFLAGS
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  CFLAGS=$CXXFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-    else
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-      LT_PATH_LD
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-         $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          _LT_TAGVAR(whole_archive_flag_spec, $1)=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-    _LT_TAGVAR(ld_shlibs, $1)=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-      aix[[4-9]]*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-           for ld_flag in $LDFLAGS; do
-             case $ld_flag in
-             *-brtl*)
-               aix_use_runtimelinking=yes
-               break
-               ;;
-             esac
-           done
-           ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        _LT_TAGVAR(archive_cmds, $1)=''
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[[012]]|aix4.[[012]].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-         collect2name=`${CC} -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-            strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-           # We have reworked collect2
-           :
-         else
-           # We have old collect2
-           _LT_TAGVAR(hardcode_direct, $1)=unsupported
-           # It fails to find uninstalled libraries when the uninstalled
-           # path is not listed in the libpath.  Setting hardcode_minus_L
-           # to unsupported forces relinking
-           _LT_TAGVAR(hardcode_minus_L, $1)=yes
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-           _LT_TAGVAR(hardcode_libdir_separator, $1)=
-         fi
-          esac
-          shared_flag='-shared'
-         if test "$aix_use_runtimelinking" = yes; then
-           shared_flag="$shared_flag "'${wl}-G'
-         fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-         # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-         # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-          else
-           if test "$aix_use_runtimelinking" = yes; then
-             shared_flag='${wl}-G'
-           else
-             shared_flag='${wl}-bM:SRE'
-           fi
-          fi
-        fi
-
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-       # export.
-        _LT_TAGVAR(always_export_symbols, $1)=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          _LT_SYS_MODULE_PATH_AIX([$1])
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-           _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-           # Determine the default libpath from the value encoded in an
-           # empty executable.
-           _LT_SYS_MODULE_PATH_AIX([$1])
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-           # Warning - without using the other run time loading flags,
-           # -berok will link without error, but may produce a broken library.
-           _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-           _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-           if test "$with_gnu_ld" = yes; then
-             # We only use this code for GNU lds that support --whole-archive.
-             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-           else
-             # Exported symbols can be pulled into shared objects from archives
-             _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-           fi
-           _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-           # This is similar to how AIX traditionally builds its shared
-           # libraries.
-           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
-
-      beos*)
-       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-         # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-         # support --undefined.  This deserves some investigation.  FIXME
-         _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       else
-         _LT_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-         # FIXME: insert proper C++ library support
-         _LT_TAGVAR(ld_shlibs, $1)=no
-         ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-       case $GXX,$cc_basename in
-       ,cl* | no,cl*)
-         # Native MSVC
-         # hardcode_libdir_flag_spec is actually meaningless, as there is
-         # no search path for DLLs.
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-         _LT_TAGVAR(always_export_symbols, $1)=yes
-         _LT_TAGVAR(file_list_spec, $1)='@'
-         # Tell ltmain to make .lib files, not .a files.
-         libext=lib
-         # Tell ltmain to make .dll files, not .so files.
-         shrext_cmds=".dll"
-         # FIXME: Setting linknames here is a bad hack.
-         _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-         _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-             $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-           else
-             $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-           fi~
-           $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-           linknames='
-         # The linker will not automatically build a static lib if we build a DLL.
-         # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-         _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-         # Don't use ranlib
-         _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-         _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-           lt_tool_outputfile="@TOOL_OUTPUT@"~
-           case $lt_outputfile in
-             *.exe|*.EXE) ;;
-             *)
-               lt_outputfile="$lt_outputfile.exe"
-               lt_tool_outputfile="$lt_tool_outputfile.exe"
-               ;;
-           esac~
-           func_to_tool_file "$lt_outputfile"~
-           if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-             $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-             $RM "$lt_outputfile.manifest";
-           fi'
-         ;;
-       *)
-         # g++
-         # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-         # as there is no search path for DLLs.
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-         _LT_TAGVAR(always_export_symbols, $1)=no
-         _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-         if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-           # If the export-symbols file already is a .def file (1st line
-           # is EXPORTS), use it as is; otherwise, prepend...
-           _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-             cp $export_symbols $output_objdir/$soname.def;
-           else
-             echo EXPORTS > $output_objdir/$soname.def;
-             cat $export_symbols >> $output_objdir/$soname.def;
-           fi~
-           $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-         else
-           _LT_TAGVAR(ld_shlibs, $1)=no
-         fi
-         ;;
-       esac
-       ;;
-      darwin* | rhapsody*)
-        _LT_DARWIN_LINKER_FEATURES($1)
-       ;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          ghcx*)
-           # Green Hills C++ Compiler
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-        esac
-        ;;
-
-      freebsd2.*)
-        # C++ shared libraries reported to be fairly broken before
-       # switch to ELF
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      freebsd-elf*)
-        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-        ;;
-
-      haiku*)
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        ;;
-
-      hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-                                            # but as the default
-                                            # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            _LT_TAGVAR(ld_shlibs, $1)=no
-            ;;
-          aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              _LT_TAGVAR(ld_shlibs, $1)=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-             _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            _LT_TAGVAR(hardcode_direct, $1)=no
-            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-            ;;
-          *)
-            _LT_TAGVAR(hardcode_direct, $1)=yes
-            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-                                                # but as the default
-                                                # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          aCC*)
-           case $host_cpu in
-             hppa*64*)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             ia64*)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             *)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-           esac
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-           ;;
-          *)
-           if test "$GXX" = yes; then
-             if test $with_gnu_ld = no; then
-               case $host_cpu in
-                 hppa*64*)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 ia64*)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 *)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-               esac
-             fi
-           else
-             # FIXME: insert proper C++ library support
-             _LT_TAGVAR(ld_shlibs, $1)=no
-           fi
-           ;;
-        esac
-        ;;
-
-      interix[[3-9]]*)
-       _LT_TAGVAR(hardcode_direct, $1)=no
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-       # Instead, shared libraries are loaded at an image base (0x10000000 by
-       # default) and relocated if they conflict, which is a slow very memory
-       # consuming and fragmenting process.  To avoid this, we pick a random,
-       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       ;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-           # SGI C++
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-
-           # Archives containing C++ object files must be created using
-           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-           ;;
-          *)
-           if test "$GXX" = yes; then
-             if test "$with_gnu_ld" = no; then
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-             else
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
-             fi
-           fi
-           _LT_TAGVAR(link_all_deplibs, $1)=yes
-           ;;
-        esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(inherit_rpath, $1)=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-        case $cc_basename in
-          KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-           # KCC will only create a shared library if the output file
-           # ends with ".so" (or ".sl" for HP-UX), so rename the library
-           # to its proper name (with version) after linking.
-           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-           # Archives containing C++ object files must be created using
-           # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-           ;;
-         icpc* | ecpc* )
-           # Intel C++
-           with_gnu_ld=yes
-           # version 8.0 and above of icpc choke on multiply defined symbols
-           # if we add $predep_objects and $postdep_objects, however 7.1 and
-           # earlier do not add the objects themselves.
-           case `$CC -V 2>&1` in
-             *"Version 7."*)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-               ;;
-             *)  # Version 8.0 or newer
-               tmp_idyn=
-               case $host_cpu in
-                 ia64*) tmp_idyn=' -i_dynamic';;
-               esac
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-               ;;
-           esac
-           _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-           ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-           case `$CC -V` in
-           *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
-             _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
-             _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-               $RANLIB $oldlib'
-             _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-             _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-             ;;
-           *) # Version 6 and above use weak symbols
-             _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-             ;;
-           esac
-
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-         cxx*)
-           # Compaq C++
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-           runpath_var=LD_RUN_PATH
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
-           ;;
-         xl* | mpixl* | bgxl*)
-           # IBM XL 8.0 on PPC, with GNU ld
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-           _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-           if test "x$supports_anon_versioning" = xyes; then
-             _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-               cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-               echo "local: *; };" >> $output_objdir/$libname.ver~
-               $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-           fi
-           ;;
-         *)
-           case `$CC -V 2>&1 | sed 5q` in
-           *Sun\ C*)
-             # Sun C++ 5.9
-             _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-             _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-             _LT_TAGVAR(compiler_needs_object, $1)=yes
-
-             # Not sure whether something based on
-             # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-             # would be better.
-             output_verbose_link_cmd='func_echo_all'
-
-             # Archives containing C++ object files must be created using
-             # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-             # necessary to make sure instantiated templates are included
-             # in the archive.
-             _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-             ;;
-           esac
-           ;;
-       esac
-       ;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-       _LT_TAGVAR(ld_shlibs, $1)=no
-       ;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-       ;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-         *)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-       esac
-       ;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-         _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-         wlarc=
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-         _LT_TAGVAR(hardcode_direct, $1)=yes
-         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       fi
-       # Workaround some broken pre-1.5 toolchains
-       output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-       ;;
-
-      *nto* | *qnx*)
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-       ;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-       _LT_TAGVAR(ld_shlibs, $1)=no
-       ;;
-
-      openbsd*)
-       if test -f /usr/libexec/ld.so; then
-         _LT_TAGVAR(hardcode_direct, $1)=yes
-         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-           _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-         fi
-         output_verbose_link_cmd=func_echo_all
-       else
-         _LT_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-           # KCC will only create a shared library if the output file
-           # ends with ".so" (or ".sl" for HP-UX), so rename the library
-           # to its proper name (with version) after linking.
-           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-           # Archives containing C++ object files must be created using
-           # the KAI C++ compiler.
-           case $host in
-             osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
-             *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
-           esac
-           ;;
-          RCC*)
-           # Rational C++ 2.4.1
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          cxx*)
-           case $host in
-             osf3*)
-               _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-               ;;
-             *)
-               _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-                 echo "-hidden">> $lib.exp~
-                 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
-                 $RM $lib.exp'
-               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-               ;;
-           esac
-
-           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-           ;;
-         *)
-           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-             _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-             case $host in
-               osf3*)
-                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-                 ;;
-               *)
-                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-                 ;;
-             esac
-
-             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-             _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-             # Commands to make compiler produce verbose output that lists
-             # what "hidden" libraries, object files and flags are used when
-             # linking a shared library.
-             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-           else
-             # FIXME: insert proper C++ library support
-             _LT_TAGVAR(ld_shlibs, $1)=no
-           fi
-           ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-           # Sun C++ 4.x
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          lcc*)
-           # Lucid
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-           # Sun C++ 4.2, 5.x and Centerline C++
-            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
-           _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-           _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-             $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-           _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-           case $host_os in
-             solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-             *)
-               # The compiler driver will combine and reorder linker options,
-               # but understands `-z linker_flag'.
-               # Supported since Solaris 2.6 (maybe 2.5.1?)
-               _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-               ;;
-           esac
-           _LT_TAGVAR(link_all_deplibs, $1)=yes
-
-           output_verbose_link_cmd='func_echo_all'
-
-           # Archives containing C++ object files must be created using
-           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-           ;;
-          gcx*)
-           # Green Hills C++ Compiler
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-           # The C++ compiler must be used to create the archive.
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-           ;;
-          *)
-           # GNU C++ compiler with Solaris linker
-           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-             _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                 $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-             else
-               # g++ 2.7 appears to require `-G' NOT `-shared' on this
-               # platform.
-               _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-             fi
-
-             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-             case $host_os in
-               solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-               *)
-                 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-                 ;;
-             esac
-           fi
-           ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-       # Note: We can NOT use -z defs as we might desire, because we do not
-       # link with -lc, and that would cause any symbols used from libc to
-       # always be unresolved, which means just about no library would
-       # ever link correctly.  If we're not using GNU ld we use -z text
-       # though, which does catch some bad symbols but isn't as heavy-handed
-       # as -z defs.
-       _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-       _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-       _LT_TAGVAR(link_all_deplibs, $1)=yes
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-       runpath_var='LD_RUN_PATH'
-
-       case $cc_basename in
-          CC*)
-           _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
-             '"$_LT_TAGVAR(old_archive_cmds, $1)"
-           _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
-             '"$_LT_TAGVAR(reload_cmds, $1)"
-           ;;
-         *)
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           ;;
-       esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-           # NonStop-UX NCC 3.20
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-    esac
-
-    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-    _LT_TAGVAR(GCC, $1)="$GXX"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-AC_LANG_POP
-])# _LT_LANG_CXX_CONFIG
-
-
-# _LT_FUNC_STRIPNAME_CNF
-# ----------------------
-# func_stripname_cnf prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-#
-# This function is identical to the (non-XSI) version of func_stripname,
-# except this one can be used by m4 code that may be executed by configure,
-# rather than the libtool script.
-m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
-AC_REQUIRE([_LT_DECL_SED])
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
-])# _LT_FUNC_STRIPNAME_CNF
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
-# Dependencies to place before and after the object being linked:
-_LT_TAGVAR(predep_objects, $1)=
-_LT_TAGVAR(postdep_objects, $1)=
-_LT_TAGVAR(predeps, $1)=
-_LT_TAGVAR(postdeps, $1)=
-_LT_TAGVAR(compiler_lib_search_path, $1)=
-
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library.  It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
-int a;
-void foo (void) { a = 0; }
-_LT_EOF
-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer*4 a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
-public class foo {
-  private int a;
-  public void bar (void) {
-    a = 0;
-  }
-};
-_LT_EOF
-], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
-package foo
-func foo() {
-}
-_LT_EOF
-])
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-        prev=$p
-        continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-        case ${prev} in
-        -L | -R)
-          # Internal compiler library paths should come after those
-          # provided the user.  The postdeps already come after the
-          # user supplied libs so there is no need to process them.
-          if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-            _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-          else
-            _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-          fi
-          ;;
-        # The "-l" case would never come before the object being
-        # linked, so don't bother handling this case.
-        esac
-       else
-        if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-          _LT_TAGVAR(postdeps, $1)="${prev}${p}"
-        else
-          _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
-        fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-        pre_test_object_deps_done=yes
-        continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-        if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-          _LT_TAGVAR(predep_objects, $1)="$p"
-        else
-          _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
-        fi
-       else
-        if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-          _LT_TAGVAR(postdep_objects, $1)="$p"
-        else
-          _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
-        fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-m4_if([$1], [CXX],
-[case $host_os in
-interix[[3-9]]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  _LT_TAGVAR(predep_objects,$1)=
-  _LT_TAGVAR(postdep_objects,$1)=
-  _LT_TAGVAR(postdeps,$1)=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-])
-
-case " $_LT_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
-    [The directories searched by this compiler when creating a shared library])
-_LT_TAGDECL([], [predep_objects], [1],
-    [Dependencies to place before and after the objects being linked to
-    create a shared library])
-_LT_TAGDECL([], [postdep_objects], [1])
-_LT_TAGDECL([], [predeps], [1])
-_LT_TAGDECL([], [postdeps], [1])
-_LT_TAGDECL([], [compiler_lib_search_path], [1],
-    [The library search path used internally by the compiler when linking
-    a shared library])
-])# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_F77_CONFIG],
-[AC_LANG_PUSH(Fortran 77)
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${F77-"f77"}
-  CFLAGS=$FFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-  GCC=$G77
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-         test "$enable_shared" = yes && enable_static=no
-       fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$G77"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-  CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_FC_CONFIG],
-[AC_LANG_PUSH(Fortran)
-
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${FC-"f95"}
-  CFLAGS=$FCFLAGS
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-         test "$enable_shared" = yes && enable_static=no
-       fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
-
-AC_LANG_POP
-])# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GCJ_CONFIG],
-[AC_REQUIRE([LT_PROG_GCJ])dnl
-AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-CFLAGS=$GCJFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_GO_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Go compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GO_CONFIG],
-[AC_REQUIRE([LT_PROG_GO])dnl
-AC_LANG_SAVE
-
-# Source file extension for Go test sources.
-ac_ext=go
-
-# Object file extension for compiled Go test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="package main; func main() { }"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='package main; func main() { }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GOC-"gccgo"}
-CFLAGS=$GOFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# Go did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GO_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_RC_CONFIG],
-[AC_REQUIRE([LT_PROG_RC])dnl
-AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-CFLAGS=
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-if test -n "$compiler"; then
-  :
-  _LT_CONFIG($1)
-fi
-
-GCC=$lt_save_GCC
-AC_LANG_RESTORE
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-AC_DEFUN([LT_PROG_GCJ],
-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-    [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])[]dnl
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
-
-
-# LT_PROG_GO
-# ----------
-AC_DEFUN([LT_PROG_GO],
-[AC_CHECK_TOOL(GOC, gccgo,)
-])
-
-
-# LT_PROG_RC
-# ----------
-AC_DEFUN([LT_PROG_RC],
-[AC_CHECK_TOOL(RC, windres,)
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_RC], [])
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_EGREP],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_REQUIRE([AC_PROG_FGREP])dnl
-test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
-AC_SUBST([GREP])
-])
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_OBJDUMP],
-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
-AC_SUBST([OBJDUMP])
-])
-
-# _LT_DECL_DLLTOOL
-# ----------------
-# Ensure DLLTOOL variable is set.
-m4_defun([_LT_DECL_DLLTOOL],
-[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
-AC_SUBST([DLLTOOL])
-])
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-m4_defun([_LT_DECL_SED],
-[AC_PROG_SED
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
-    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
-])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-############################################################
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
-    done
-  done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
-  done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_SED], [])
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
-])# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-# ------------------------------------------------------
-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-m4_defun([_LT_PROG_FUNCTION_REPLACE],
-[dnl {
-sed -e '/^$1 ()$/,/^} # $1 /c\
-$1 ()\
-{\
-m4_bpatsubsts([$2], [$], [\\], [^\([    ]\)], [\\\1])
-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-])
-
-
-# _LT_PROG_REPLACE_SHELLFNS
-# -------------------------
-# Replace existing portable implementations of several shell functions with
-# equivalent extended shell implementations where those features are available..
-m4_defun([_LT_PROG_REPLACE_SHELLFNS],
-[if test x"$xsi_shell" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
-    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-    # positional parameters, so assign one to ordinary parameter first.
-    func_stripname_result=${3}
-    func_stripname_result=${func_stripname_result#"${1}"}
-    func_stripname_result=${func_stripname_result%"${2}"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
-    func_split_long_opt_name=${1%%=*}
-    func_split_long_opt_arg=${1#*=}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
-    func_split_short_opt_arg=${1#??}
-    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
-    case ${1} in
-      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-      *)    func_lo2o_result=${1} ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
-
-  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
-
-  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
-    func_quote_for_eval "${2}"
-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
-    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
-fi
-])
-
-# _LT_PATH_CONVERSION_FUNCTIONS
-# -----------------------------
-# Determine which file name conversion functions should be used by
-# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
-# for certain cross-compile configurations and native mingw.
-m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_MSG_CHECKING([how to convert $build file names to $host format])
-AC_CACHE_VAL(lt_cv_to_host_file_cmd,
-[case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-])
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
-_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
-         [0], [convert $build file names to $host format])dnl
-
-AC_MSG_CHECKING([how to convert $build file names to toolchain format])
-AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
-[#assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-])
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
-_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
-         [0], [convert $build files to toolchain format])dnl
-])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/polly/lib/External/ppcg/m4/ltoptions.m4 b/polly/lib/External/ppcg/m4/ltoptions.m4
deleted file mode 100644 (file)
index 5d9acd8..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-# Helper functions for option handling.                    -*- Autoconf -*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-#   Inc.
-#   Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 7 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
-        _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-           [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
-                     [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME.  If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-    [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
-  dnl
-  dnl Simply set some default values (i.e off) if boolean options were not
-  dnl specified:
-  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
-  ])
-  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
-  ])
-  dnl
-  dnl If no reference was made to various pairs of opposing options, then
-  dnl we run the default mode handler for the pair.  For example, if neither
-  dnl `shared' nor `disable-shared' was passed, we enable building of shared
-  dnl archives by default:
-  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
-  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-                  [_LT_ENABLE_FAST_INSTALL])
-  ])
-])# _LT_SET_OPTIONS
-
-
-## --------------------------------- ##
-## Macros to handle LT_INIT options. ##
-## --------------------------------- ##
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-  AC_CHECK_TOOL(AS, as, false)
-  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-  AC_CHECK_TOOL(OBJDUMP, objdump, false)
-  ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [1], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
-    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-       [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_shared=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
-    _LT_DECL([build_libtool_libs], [enable_shared], [0],
-       [Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
-    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-       [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_static=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
-    _LT_DECL([build_old_libs], [enable_static], [0],
-       [Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
-    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_fast_install=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
-        [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
-       [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-       IFS="$lt_save_ifs"
-       if test "X$lt_pkg" = "X$lt_p"; then
-         pic_mode=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-## ----------------- ##
-## LTDL_INIT Options ##
-## ----------------- ##
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
-                [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
-                [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
-                [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
-                [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
-                [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/polly/lib/External/ppcg/m4/ltsugar.m4 b/polly/lib/External/ppcg/m4/ltsugar.m4
deleted file mode 100644 (file)
index 9000a05..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
-       [$#], [2], [[$2]],
-       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
-       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
-       [$#], 1, [],
-       [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
-          m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
-       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
-            [m4_foreach([_Lt_suffix],
-               ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
-       [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
-         [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
-                [lt_append([$1], [$2], [$3])$4],
-                [$5])],
-         [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
-       m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
-    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
-       [$5],
-    [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
-  [lt_join(m4_quote(m4_default([$4], [[, ]])),
-           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
-                     [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
diff --git a/polly/lib/External/ppcg/m4/ltversion.m4 b/polly/lib/External/ppcg/m4/ltversion.m4
deleted file mode 100644 (file)
index 07a8602..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# ltversion.m4 -- version numbers                      -*- Autoconf -*-
-#
-#   Copyright (C) 2004 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# @configure_input@
-
-# serial 3337 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.4.2])
-m4_define([LT_PACKAGE_REVISION], [1.3337])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.2'
-macro_revision='1.3337'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
diff --git a/polly/lib/External/ppcg/m4/lt~obsolete.m4 b/polly/lib/External/ppcg/m4/lt~obsolete.m4
deleted file mode 100644 (file)
index c573da9..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 5 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else.  This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION],  [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP],             [AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],        [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT],         [AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],    [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN],           [AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR],             [AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL],    [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN],           [AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER],       [AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK],               [AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],        [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],    [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],    [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR],         [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR],            [AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],  [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC],             [AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU],            [AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG],    [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD],   [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP],          [AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED],            [AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME],           [AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE],  [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE],    [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL],          [AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP],          [AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN],                [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],     [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG],          [AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL],   [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX],           [AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77],           [AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ],           [AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],  [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG],      [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG],    [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG],    [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],    [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG],     [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG],         [AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C],       [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
-m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],        [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
-m4_ifndef([_LT_AC_PROG_CXXCPP],                [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
-m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],        [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
-m4_ifndef([_LT_PROG_ECHO_BACKSLASH],   [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_PROG_F77],              [AC_DEFUN([_LT_PROG_F77])])
-m4_ifndef([_LT_PROG_FC],               [AC_DEFUN([_LT_PROG_FC])])
-m4_ifndef([_LT_PROG_CXX],              [AC_DEFUN([_LT_PROG_CXX])])
diff --git a/polly/lib/External/ppcg/missing b/polly/lib/External/ppcg/missing
deleted file mode 100644 (file)
index 86a8fc3..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2012-01-06.13; # UTC
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
-  exit 1
-fi
-
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
-
-Send bug reports to <bug-automake@gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-          sed 's/\.am$/.in/' |
-          while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo "#! /bin/sh"
-       echo "# Created by GNU Automake missing as a replacement of"
-       echo "#  $ $@"
-       echo "exit 0"
-       chmod +x $file
-       exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.y)
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.c
-           fi
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.h
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f y.tab.h; then
-       echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-       echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.l)
-           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" lex.yy.c
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f lex.yy.c; then
-       echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-        you modified a dependency of a manual page.  You may need the
-        \`Help2man' package in order for those modifications to take
-        effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo ".ab help2man is required to generate this page"
-       exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-       /^@setfilename/{
-         s/.* \([^ ]*\) *$/\1/
-         p
-         q
-       }' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/polly/lib/External/ppcg/test-driver b/polly/lib/External/ppcg/test-driver
deleted file mode 100755 (executable)
index d306056..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-#! /bin/sh
-# test-driver - basic testsuite driver script.
-
-scriptversion=2013-07-13.22; # UTC
-
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-# Make unconditional expansion of undefined variables an error.  This
-# helps a lot in preventing typo-related bugs.
-set -u
-
-usage_error ()
-{
-  echo "$0: $*" >&2
-  print_usage >&2
-  exit 2
-}
-
-print_usage ()
-{
-  cat <<END
-Usage:
-  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
-              [--expect-failure={yes|no}] [--color-tests={yes|no}]
-              [--enable-hard-errors={yes|no}] [--]
-              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
-The '--test-name', '--log-file' and '--trs-file' options are mandatory.
-END
-}
-
-test_name= # Used for reporting.
-log_file=  # Where to save the output of the test script.
-trs_file=  # Where to save the metadata of the test run.
-expect_failure=no
-color_tests=no
-enable_hard_errors=yes
-while test $# -gt 0; do
-  case $1 in
-  --help) print_usage; exit $?;;
-  --version) echo "test-driver $scriptversion"; exit $?;;
-  --test-name) test_name=$2; shift;;
-  --log-file) log_file=$2; shift;;
-  --trs-file) trs_file=$2; shift;;
-  --color-tests) color_tests=$2; shift;;
-  --expect-failure) expect_failure=$2; shift;;
-  --enable-hard-errors) enable_hard_errors=$2; shift;;
-  --) shift; break;;
-  -*) usage_error "invalid option: '$1'";;
-   *) break;;
-  esac
-  shift
-done
-
-missing_opts=
-test x"$test_name" = x && missing_opts="$missing_opts --test-name"
-test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
-test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
-if test x"$missing_opts" != x; then
-  usage_error "the following mandatory options are missing:$missing_opts"
-fi
-
-if test $# -eq 0; then
-  usage_error "missing argument"
-fi
-
-if test $color_tests = yes; then
-  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
-  red='\e[0;31m' # Red.
-  grn='\e[0;32m' # Green.
-  lgn='\e[1;32m' # Light green.
-  blu='\e[1;34m' # Blue.
-  mgn='\e[0;35m' # Magenta.
-  std='\e[m'     # No color.
-else
-  red= grn= lgn= blu= mgn= std=
-fi
-
-do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
-trap "st=129; $do_exit" 1
-trap "st=130; $do_exit" 2
-trap "st=141; $do_exit" 13
-trap "st=143; $do_exit" 15
-
-# Test script is run here.
-"$@" >$log_file 2>&1
-estatus=$?
-if test $enable_hard_errors = no && test $estatus -eq 99; then
-  estatus=1
-fi
-
-case $estatus:$expect_failure in
-  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
-  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
-  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
-  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
-  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
-  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
-esac
-
-# Report outcome to console.
-echo "${col}${res}${std}: $test_name"
-
-# Register the test result, and other relevant metadata.
-echo ":test-result: $res" > $trs_file
-echo ":global-test-result: $res" >> $trs_file
-echo ":recheck: $recheck" >> $trs_file
-echo ":copy-in-global-log: $gcopy" >> $trs_file
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
index e588fa5..a2b989b 100755 (executable)
@@ -6,29 +6,33 @@ set -e
 
 SCRIPTPATH=`realpath --no-symlinks $(dirname $0)`
 ISL_SOURCE_DIR="${SCRIPTPATH}/isl"
+GITDIR=`mktemp -d --tmpdir isl-XXX`
 
-TMPDIR=`mktemp -d --tmpdir isl-XXX`
-GITDIR=$TMPDIR/src
-BUILDDIR=$TMPDIR/build
-
+# Checkout isl source code
 git clone --recursive http://repo.or.cz/isl.git $GITDIR
 if [ -n "$1" ]; then
-  (cd $GITDIR && git checkout $1)
+  (cd $GITDIR && git checkout --detach $1)
   (cd $GITDIR && git submodule update --recursive)
 fi
-(cd $GITDIR && ./autogen.sh)
-mkdir -p $BUILDDIR
-(cd $BUILDDIR && $GITDIR/configure --with-int=imath-32 --with-clang=system)
-echo "#define GIT_HEAD_ID \"\"" > $GITDIR/gitversion.h
-(cd $BUILDDIR && make -j dist)
-
-for DISTFILE in "$BUILDDIR/isl*.tar.gz"; do break; done
-
-cp $ISL_SOURCE_DIR/include/isl/isl-noexceptions.h $TMPDIR/isl-noexceptions.h
 
+# Customize the source directory for Polly:
+# - Remove the autotools build system to avoid including GPL source into
+#   the LLVM repository, even if covered by the autotools exception
+# - Create files that the autotools would have created
+# - Save the custom isl C++ binding
+# - Strip git source versioning
+(cd $GITDIR && rm -rf m4 autogen.sh configure.ac)
+(cd $GITDIR && find -name "Makefile.am" -execdir rm -f '{}' \;)
+(cd $GITDIR && git describe > $GITDIR/GIT_HEAD_ID)
+cp $ISL_SOURCE_DIR/include/isl/isl-noexceptions.h $GITDIR/include/isl/isl-noexceptions.h
+rm -rf $GITDIR/.git
+rm -rf $GITDIR/imath/.git
+
+# Replace the current isl source
+# IMPORTANT: Remember to `git add` any new files in LLVM's versioning
+#            and add them to its CMakeLists.txt if necessary.
 rm -rf $ISL_SOURCE_DIR
-mkdir -p $ISL_SOURCE_DIR
-tar -xf $DISTFILE --strip-components=1 --directory $ISL_SOURCE_DIR
-cp $TMPDIR/isl-noexceptions.h $ISL_SOURCE_DIR/include/isl
+mv -T $GITDIR $ISL_SOURCE_DIR
 
+# Cleanup script temporaries
 rm -rf $TMPDIR